Compare commits

...

751 Commits

Author SHA1 Message Date
renovate[bot]
9d240c8afe Update dependency wxt to v0.20.24 2026-04-21 02:05:34 +00:00
Adorian Doran
ca52fabb8a Merge branch 'main' of https://github.com/TriliumNext/Trilium 2026-04-21 01:31:45 +03:00
Adorian Doran
cbeb539c69 style/about dialog: tweak the background color for the nightly channel 2026-04-21 01:31:42 +03:00
Elian Doran
a988543487 fix(share): unchecked TODOs not visible in dark theme (closes #8944) 2026-04-20 08:56:44 +03:00
Elian Doran
d625565830 Update Node.js to v24.15.0 (#9505) 2026-04-20 08:22:34 +03:00
Elian Doran
ef7facc3f0 Update dependency force-graph to v1.51.4 (#9499) 2026-04-20 08:21:49 +03:00
Elian Doran
b20d2436fa Update dependency @types/express-session to v1.19.0 (#9503) 2026-04-20 08:20:00 +03:00
Elian Doran
516a177bfb Update actions/checkout action to v6 (#9506) 2026-04-20 08:19:27 +03:00
Elian Doran
26efc3a8ff Update dependency wxt to v0.20.23 (#9502) 2026-04-20 08:18:11 +03:00
Elian Doran
91e989719b Update dependency typescript to v6.0.3 (#9501) 2026-04-20 08:17:15 +03:00
renovate[bot]
390877931b Update actions/checkout action to v6 2026-04-20 01:09:06 +00:00
renovate[bot]
f794a34132 Update Node.js to v24.15.0 2026-04-20 01:08:59 +00:00
renovate[bot]
67f5fc3dbc Update dependency @types/express-session to v1.19.0 2026-04-20 01:08:10 +00:00
renovate[bot]
753475ee46 Update dependency wxt to v0.20.23 2026-04-20 01:07:31 +00:00
renovate[bot]
90e4e73316 Update dependency typescript to v6.0.3 2026-04-20 01:06:55 +00:00
renovate[bot]
b5a4956188 Update dependency force-graph to v1.51.4 2026-04-20 01:05:37 +00:00
Elian Doran
f48509ea2f Translations update from Hosted Weblate (#9493) 2026-04-19 19:53:53 +03:00
Hosted Weblate
1d0bc138fd Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2026-04-19 16:01:26 +00:00
Abi Quinn
326c0234ff Translated using Weblate (English (United Kingdom))
Currently translated at 8.5% (170 of 1999 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/en_GB/
2026-04-19 16:01:24 +00:00
Abi Quinn
bbbacf7f78 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (116 of 116 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/en_GB/
2026-04-19 16:01:23 +00:00
Abi Quinn
fd428a81e0 Translated using Weblate (English (United Kingdom))
Currently translated at 91.1% (144 of 158 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/en_GB/
2026-04-19 16:01:22 +00:00
green
ba0e9e2eaa Translated using Weblate (Japanese)
Currently translated at 99.9% (1998 of 1999 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2026-04-19 16:01:22 +00:00
Abi Quinn
286f412906 Translated using Weblate (English (United Kingdom))
Currently translated at 35.4% (144 of 406 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/en_GB/
2026-04-19 16:01:21 +00:00
Francis C.
4708d55a99 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 90.1% (1803 of 1999 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2026-04-19 16:01:21 +00:00
Aindriú Mac Giolla Eoin
5952d13498 Translated using Weblate (Irish)
Currently translated at 99.9% (1998 of 1999 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ga/
2026-04-19 16:01:20 +00:00
passkal4
6d39bd91d9 Translated using Weblate (Uyghur)
Currently translated at 17.7% (355 of 1999 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ug/
2026-04-19 16:01:20 +00:00
green
b97fd784ea Translated using Weblate (Japanese)
Currently translated at 100.0% (406 of 406 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2026-04-19 16:01:19 +00:00
Aindriú Mac Giolla Eoin
e7bbdf8cc1 Translated using Weblate (Irish)
Currently translated at 100.0% (406 of 406 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ga/
2026-04-19 16:01:19 +00:00
Adorian Doran
fe334ca8eb contributor list: fix broken list 2026-04-19 19:01:04 +03:00
Adorian Doran
9e37a803f7 A new about dialog (#9151) 2026-04-19 18:44:44 +03:00
Adorian Doran
c4d832eebc contributor list: update script name, change a comment 2026-04-19 18:33:35 +03:00
Adorian Doran
5921d1f1a6 client/about dialog: fix some issues 2026-04-19 18:21:33 +03:00
Elian Doran
b04945e793 chore(client): remove limit on contributors 2026-04-19 15:47:13 +03:00
Elian Doran
2c744122ca chore: update contributors list 2026-04-19 15:44:52 +03:00
Elian Doran
adc648d277 chore(scripts): tweak criteria for contributors 2026-04-19 15:34:14 +03:00
Elian Doran
a403aca054 chore(scripts): group translators separately 2026-04-19 13:16:08 +03:00
Elian Doran
e7f85bb447 chore(scripts): filter contributors by minimum commits 2026-04-19 13:12:41 +03:00
Elian Doran
e6e6c1feff chore(scripts): filter contributors by role 2026-04-19 13:03:57 +03:00
Elian Doran
415d9364de Merge remote-tracking branch 'origin/main' into feat/about-dialog-overhaul 2026-04-19 12:49:46 +03:00
Elian Doran
8a2b649714 Print collection - add missing link/titles for reference-link links (#9489) 2026-04-19 12:41:03 +03:00
Elian Doran
9c655baab9 Update softprops/action-gh-release action to v3 (#9470) 2026-04-19 12:37:21 +03:00
Elian Doran
ae6f5fad3b chore(deps): update dependency officeparser to v6.1.0 (#9482) 2026-04-19 12:36:47 +03:00
Elian Doran
f9baac34cc fix(ocr): use correct officeparser v6.1.0 API
v6.1.0 renamed parseOfficeAsync to OfficeParser.parseOffice (static
method) and returns an AST object with toText() instead of a plain
string.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 12:10:08 +03:00
Elian Doran
9d1f831737 chore(ci): disable signing for nightlies temporarily 2026-04-19 11:15:40 +03:00
Elian Doran
3839dad55d fix(print): margins not taken into consideration 2026-04-19 11:11:56 +03:00
Adorian Doran
900f308349 contributor list: switch to manual update, add a tool for a reference list (local Git + GitHub listing) 2026-04-19 11:10:45 +03:00
Elian Doran
4ae3a00464 chore: remove Electron repro project 2026-04-19 10:55:29 +03:00
Elian Doran
bc21fd560f fix(server): increase sync version to match new DB schema 2026-04-19 10:18:44 +03:00
Elian Doran
ab1d1f97c8 Translations update from Hosted Weblate (#9487) 2026-04-19 00:10:37 +03:00
noobhjy
9a85d7ec26 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 92.5% (1818 of 1965 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2026-04-18 19:57:01 +00:00
noobhjy
f702930731 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (404 of 404 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hans/
2026-04-18 19:57:00 +00:00
passkal4
f449fffaf5 Translated using Weblate (Uyghur)
Currently translated at 44.5% (180 of 404 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ug/
2026-04-18 19:57:00 +00:00
passkal4
78777e69fc Translated using Weblate (Uyghur)
Currently translated at 9.2% (182 of 1965 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ug/
2026-04-18 19:56:59 +00:00
passkal4
2d7df2d079 Translated using Weblate (Uyghur)
Currently translated at 93.6% (148 of 158 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ug/
2026-04-18 19:56:59 +00:00
passkal4
fbbdb6e6e6 Translated using Weblate (Uyghur)
Currently translated at 95.7% (114 of 119 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ug/
2026-04-18 19:56:58 +00:00
passkal4
797b5ffd80 Translated using Weblate (Uyghur)
Currently translated at 43.8% (177 of 404 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ug/
2026-04-18 19:56:57 +00:00
passkal4
04954a46d0 Translated using Weblate (Uyghur)
Currently translated at 9.0% (178 of 1965 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ug/
2026-04-18 19:56:57 +00:00
Hosted Weblate
fafa080cfc Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2026-04-18 19:56:56 +00:00
passkal4
62e30d76fb Translated using Weblate (Uyghur)
Currently translated at 42.8% (173 of 404 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ug/
2026-04-18 19:56:55 +00:00
passkal4
ca78285fea Translated using Weblate (Uyghur)
Currently translated at 91.1% (144 of 158 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ug/
2026-04-18 19:56:55 +00:00
passkal4
7a47928b82 Translated using Weblate (Uyghur)
Currently translated at 8.9% (175 of 1965 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ug/
2026-04-18 19:56:54 +00:00
Hosted Weblate
63e2a33543 Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2026-04-18 19:56:53 +00:00
Elian Doran
caf53877e3 fix(deps): update dependency @codemirror/language-data to v6.5.2 (#9479) 2026-04-18 22:56:46 +03:00
contributor
e9b1b2de21 chore(print): parallelize loading note reference links 2026-04-18 22:23:53 +03:00
contributor
9d8d7bd496 fix(print): missing note title for reference links 2026-04-18 22:00:04 +03:00
contributor
4579e4d31b Revert "fix(print): add missing note title for links (content renderer aware of printing)"
This reverts commit 62a8fb2228.
2026-04-18 21:59:08 +03:00
Elian Doran
8d41ba85a8 docs(user): add documentation on code & print improvements 2026-04-18 21:35:29 +03:00
Adorian Doran
4e55b29041 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/about-dialog-overhaul 2026-04-18 20:36:13 +03:00
Adorian Doran
ac1bcefe80 client/property sheet component: fix width limit on mobile 2026-04-18 20:31:48 +03:00
Adorian Doran
1d8a8107af style/property sheet component: improve appearance 2026-04-18 20:29:49 +03:00
Adorian Doran
36270397c2 git mailmap: update 2026-04-18 20:21:52 +03:00
Adorian Doran
b349922add client/about dialog: make full page on mobile 2026-04-18 20:20:39 +03:00
Adorian Doran
dbea88fa56 client/modal dialog: add support for full page dialogs on mobile 2026-04-18 20:20:06 +03:00
claude[bot]
b2bcccb4c7 fix(ocr): adapt OfficeProcessor to officeparser v6.1.0 ESM changes
v6.1.0 added native ESM with Node16 resolution and a strict exports
field, breaking deep subpath imports like
officeparser/dist/parsers/ExcelParser.js. Switch to the main package
entry and use parseOfficeAsync(), which accepts a Buffer and
auto-detects the format via magic bytes.

Co-authored-by: Elian Doran <eliandoran@users.noreply.github.com>
2026-04-18 17:07:02 +00:00
Elian Doran
9d60bb804d Named revisions (#9490) 2026-04-18 20:04:54 +03:00
Elian Doran
189867ca03 Merge branch 'main' into renovate/officeparser-6.x 2026-04-18 19:56:55 +03:00
Elian Doran
23cb66bba9 chore(revisions): address requested changes 2026-04-18 19:55:36 +03:00
Elian Doran
10a2e21636 chore(etapi): revert change to revision API 2026-04-18 19:55:36 +03:00
Elian Doran
2fa0a4b35c fix(ci): grant write permissions to interactive Claude workflow
The contents, pull-requests, and issues permissions were set to read, preventing Claude from pushing commits and commenting on PRs/issues.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 19:51:44 +03:00
Elian Doran
8d20fec5b8 Merge branch 'main' into feature/named_revisions 2026-04-18 19:41:14 +03:00
Elian Doran
1d25d79a3f fix(ci): grant write permission to Claude code review workflow
The pull-requests permission was set to read, preventing Claude from posting review comments on PRs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 19:30:32 +03:00
Elian Doran
c61c6ae64c Merge branch 'feature/named_revisions' of github.com:TriliumNext/Trilium into feature/named_revisions 2026-04-18 19:22:05 +03:00
Elian Doran
fb3c487c0d test(server): fix ETAPI related test 2026-04-18 19:22:03 +03:00
Elian Doran
087fc5f2c4 Merge branch 'main' into feature/named_revisions 2026-04-18 19:20:48 +03:00
Elian Doran
e01d835709 feat(revisions): add a shortcut to save named revisions 2026-04-18 19:13:37 +03:00
Elian Doran
662d6fa91c chore(deps): update dependency wxt to v0.20.22 (#9477) 2026-04-18 18:50:45 +03:00
Elian Doran
03a4e1d4c1 fix(deps): update dependency react-i18next to v17.0.3 (#9480) 2026-04-18 18:50:17 +03:00
Elian Doran
9d953ea700 docs(user): update note revisions to new layout 2026-04-18 18:47:21 +03:00
Elian Doran
da96d2bc88 feat(revisions): dedicated no revisions modal 2026-04-18 18:08:11 +03:00
Elian Doran
dabbbbb874 fix(revisions): context menu on mobile + regression in tab switcher 2026-04-18 18:01:34 +03:00
Elian Doran
ffe60580db fix(revisions): layout on mobile 2026-04-18 17:55:03 +03:00
Elian Doran
a2cd75c2c4 feat(revisions): preserve monospace for code notes diff 2026-04-18 17:36:31 +03:00
Elian Doran
f4cf8829f7 feat(revisions): improve the layout even further & rebrand description to name 2026-04-18 17:23:44 +03:00
Elian Doran
fb5520a3c5 feat(revisions): relocate the description 2026-04-18 17:17:02 +03:00
Elian Doran
bd30e9efc1 feat(revisions): declutter the header 2026-04-18 17:11:22 +03:00
Elian Doran
f9310c5cde feat(revisions): improve title display 2026-04-18 17:00:19 +03:00
Elian Doran
01c57fc8db feat(revisions): display sidebar in full-height 2026-04-18 16:48:54 +03:00
Elian Doran
f22eaee4e2 Merge remote-tracking branch 'origin/main' into feature/named_revisions 2026-04-18 16:45:08 +03:00
Adorian Doran
2742df7cd1 client/about dialog: fix a typo 2026-04-18 16:10:00 +03:00
Adorian Doran
c031a99fc0 client/about dialog: update the license URL 2026-04-18 16:07:39 +03:00
Adorian Doran
83d08d890d style/about dialog: improve appearance 2026-04-18 16:05:09 +03:00
Adorian Doran
e2c79ff047 client: refactor 2026-04-18 15:54:10 +03:00
Adorian Doran
e624c204ff client/fluid container: fix a bug 2026-04-18 15:53:08 +03:00
contributor
62a8fb2228 fix(print): add missing note title for links (content renderer aware of printing) 2026-04-18 15:41:44 +03:00
Elian Doran
7473d50711 fix(deps): update ai sdk (#9478) 2026-04-18 15:14:02 +03:00
Elian Doran
41a90f1904 chore(deps): update dependency @redocly/cli to v2.28.0 (#9481) 2026-04-18 15:13:43 +03:00
Elian Doran
ae6803d711 Add Claude Code GitHub Workflow (#9488) 2026-04-18 15:12:53 +03:00
Elian Doran
81dfc59846 "Claude Code Review workflow" 2026-04-18 15:11:00 +03:00
Elian Doran
d1528a2f3a "Claude PR Assistant workflow" 2026-04-18 15:10:58 +03:00
Elian Doran
36f635b7d5 chore(deps): update node.js to v24.15.0 (#9483) 2026-04-18 15:00:10 +03:00
Elian Doran
6278a376b7 Translations update from Hosted Weblate (#9486) 2026-04-18 14:59:37 +03:00
Elian Doran
20fca6c0df feat(revisions): improve layout and highlighting 2026-04-18 14:51:15 +03:00
Elian Doran
1ab04cf951 feat(revisions): improve grouping with smart auto-titles 2026-04-18 14:46:56 +03:00
Elian Doran
3ece5d6213 feat(revisions): group revisions and improve display 2026-04-18 14:39:31 +03:00
Elian Doran
65aba291ca feat(revisions): highlight inserted/removed images 2026-04-18 14:27:07 +03:00
Elian Doran
b3e877f5dd feat(revisions): remove paddings for a smoother display 2026-04-18 14:24:11 +03:00
Elian Doran
066be7fa33 feat(revisions): group less used options into overflow menu 2026-04-18 14:18:29 +03:00
Elian Doran
6390f59fcf feat(revisions): improve header layout 2026-04-18 14:07:38 +03:00
Elian Doran
81ea86100f feat(revisions): add full date in tooltip 2026-04-18 13:52:19 +03:00
Elian Doran
d086c8664b feat(revisions): improve layout of note revision list 2026-04-18 13:51:04 +03:00
Elian Doran
03d6c81659 chore(revisions): get rid of source tag 2026-04-18 13:35:47 +03:00
Elian Doran
270f135632 feat(revisions): add a fall-back title for revisions 2026-04-18 13:33:44 +03:00
Elian Doran
6436e56448 feat(revisions): display date in relative time 2026-04-18 13:30:09 +03:00
Elian Doran
315a97701b feat(revisions): add an icon based on the source 2026-04-18 13:26:38 +03:00
Elian Doran
927c359716 feat(revisions): basic rich diff 2026-04-18 13:22:09 +03:00
Elian Doran
fc5252e6b8 feat(llm): provide description when saving a revision 2026-04-18 12:54:17 +03:00
Elian Doran
69e757459f feat(revisions): improve the list of revisions 2026-04-18 12:53:57 +03:00
Elian Doran
62189cfa04 refactor(revisions): extract inline styles to CSS 2026-04-18 12:48:03 +03:00
Elian Doran
4b35881889 feat(revisions): add a source field 2026-04-18 12:46:13 +03:00
green
1c508b830e Translated using Weblate (Japanese)
Currently translated at 100.0% (404 of 404 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2026-04-18 11:41:53 +02:00
green
e5f97b6fdd Translated using Weblate (Japanese)
Currently translated at 100.0% (116 of 116 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ja/
2026-04-18 11:41:53 +02:00
Francis C.
0bdebca2b6 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 89.7% (1760 of 1962 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2026-04-18 11:41:53 +02:00
passkal4
7dfdc7f31a Translated using Weblate (Uyghur)
Currently translated at 78.9% (94 of 119 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ug/
2026-04-18 11:41:53 +02:00
passkal4
ec7b9e08e3 Translated using Weblate (Uyghur)
Currently translated at 23.0% (93 of 404 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ug/
2026-04-18 11:41:53 +02:00
Francis C.
a915c60c38 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.2% (401 of 404 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hant/
2026-04-18 11:41:53 +02:00
green
676a988433 Translated using Weblate (Japanese)
Currently translated at 99.9% (1961 of 1962 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2026-04-18 11:41:53 +02:00
Elian Doran
15951886bd Bundle of assigned issues (#9476) 2026-04-18 12:41:45 +03:00
Elian Doran
8aaa4d7bde feat(revisions): add a description field 2026-04-18 12:40:33 +03:00
Elian Doran
a439e7c29b docs(user): sync 2026-04-18 12:30:12 +03:00
Elian Doran
85bd4790ac fix(markdown): wrong management of backtick-escaped triple backtips 2026-04-18 12:24:18 +03:00
Elian Doran
4876d4b8c6 chore: address requested changes 2026-04-18 12:21:27 +03:00
Elian Doran
81a54d8398 fix(dialogs): focus on first field in note type chooser (closes #9433) 2026-04-18 12:06:15 +03:00
Elian Doran
8e91a9eb0e chore(desktop): don't use subdirectory when changing electron path 2026-04-18 12:04:02 +03:00
Elian Doran
2a7309477c fix(desktop): handling of electron path not correct for portable installations 2026-04-18 12:01:58 +03:00
Adorian Doran
837cb37642 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/about-dialog-overhaul 2026-04-18 11:58:15 +03:00
renovate[bot]
c69e3b7e14 chore(deps): update dependency @redocly/cli to v2.28.0 2026-04-18 08:42:38 +00:00
Adorian Doran
7c3bb8c589 client: refactor 2026-04-18 11:22:16 +03:00
Adorian Doran
2c6c7cb037 client: create a fluid wrapper component 2026-04-18 11:15:18 +03:00
Elian Doran
8446e98b21 feat(text): add a copy button to bookmarks 2026-04-18 11:14:13 +03:00
Elian Doran
96ddb79d06 fix(text): add link doesn't clear bookmark section when removing the note selection 2026-04-18 11:07:13 +03:00
Elian Doran
4244b66cea feat(text): rebrand bookmarks to anchors 2026-04-18 11:06:50 +03:00
Elian Doran
15c121f950 docs(user): document linking to bookmarks 2026-04-18 10:54:57 +03:00
Adorian Doran
683814c9d2 client/about dialog: refactor 2026-04-18 10:47:20 +03:00
Elian Doran
b01feed4a2 feat(text): add bookmark title for non-mirrored link 2026-04-18 10:45:51 +03:00
Adorian Doran
3ce2af9abe client/property sheet component: add support for CSS class names 2026-04-18 10:44:59 +03:00
Elian Doran
7219fc875d feat(text): improve display of reference links with bookmarks 2026-04-18 10:43:14 +03:00
Elian Doran
131e10f4fe fix(text): clicking on a bookmark link won't scroll properly 2026-04-18 10:35:46 +03:00
Adorian Doran
8cc5e0282e client/about dialog: refactor 2026-04-18 10:35:09 +03:00
Adorian Doran
426d5daf73 client/refactor: create a separate property sheet component 2026-04-18 10:34:47 +03:00
Elian Doran
480da09bcc fix(client): internalBookmark not hidden 2026-04-18 10:30:03 +03:00
Elian Doran
ae004c4334 feat(text): basic insert link with anchors 2026-04-18 10:29:43 +03:00
Elian Doran
4dcbd36b2d feat(text): add a slash command for bookmarks 2026-04-18 10:22:58 +03:00
Adorian Doran
5539c901fe style/about dialog: make the property sheet responsive 2026-04-18 10:20:30 +03:00
Elian Doran
84fff30723 feat(server): mark bookmarks as internal links 2026-04-18 10:17:39 +03:00
Elian Doran
bdf4e40577 fix(server): bookmarks not processed due to self-closing tag 2026-04-18 10:17:28 +03:00
Elian Doran
79d639108b feat(status_bar): display system links in dev mode 2026-04-18 10:12:41 +03:00
Elian Doran
5b957dd111 chore(server): start processing bookmarks 2026-04-18 10:09:41 +03:00
Elian Doran
c0b1ff31e5 fix(server): safe import strips out bookmarks from note 2026-04-18 09:56:41 +03:00
Elian Doran
cc010e1568 chore(desktop/appimage): fix path for packaging 2026-04-18 09:54:19 +03:00
Adorian Doran
d240fb32bb style/about dialog: refactor 2026-04-18 09:49:05 +03:00
Elian Doran
374eeaeb08 feat(print): respect user's detail font when printing 2026-04-18 09:38:21 +03:00
Elian Doran
1674bf0a87 fix(print): wait for custom fonts to be loaded (closes #8097) 2026-04-18 09:28:54 +03:00
Elian Doran
a617b59765 fix(print): text notes would override custom font 2026-04-18 09:26:50 +03:00
renovate[bot]
e5daa75cb4 chore(deps): update node.js to v24.15.0 2026-04-18 02:36:30 +00:00
renovate[bot]
a9e7cd7bfe chore(deps): update dependency officeparser to v6.1.0 2026-04-18 02:36:22 +00:00
renovate[bot]
84d46c0a29 fix(deps): update dependency react-i18next to v17.0.3 2026-04-18 02:34:41 +00:00
renovate[bot]
036d09f99e fix(deps): update dependency @codemirror/language-data to v6.5.2 2026-04-18 02:33:50 +00:00
renovate[bot]
6c2ce8f39c fix(deps): update ai sdk 2026-04-18 02:32:56 +00:00
renovate[bot]
77b89c5a01 chore(deps): update dependency wxt to v0.20.22 2026-04-18 02:32:03 +00:00
Elian Doran
65d3224c1a fix(tree): hidden notes appearing on root import (closes #5520) 2026-04-17 23:47:59 +03:00
Elian Doran
7d6fd54562 chore(client): fix TODO related to hidden node 2026-04-17 23:32:24 +03:00
Elian Doran
1a07dff373 feat(electron): disable terminal from portable mode 2026-04-17 23:29:38 +03:00
Elian Doran
e99cf74988 feat(electron): customizable Electron directory (closes #4192) 2026-04-17 23:29:27 +03:00
Elian Doran
1acbf5ba45 feat(electron): generate appimage (closes #409) 2026-04-17 23:26:24 +03:00
Elian Doran
64bc1271e1 fix(server): prevent NaN potentially corrupting the backup when migrating 2026-04-17 23:03:28 +03:00
Elian Doran
06f7818ee3 Basic Markdown support (#9475) 2026-04-17 22:30:54 +03:00
Elian Doran
a0548e1627 fix(deps): update dependency unpdf to v1.6.0 (#9469) 2026-04-17 22:27:21 +03:00
Elian Doran
2639c5a225 chore: fix typecheck error 2026-04-17 22:22:22 +03:00
Elian Doran
bfc22864f6 Translations update from Hosted Weblate (#9474) 2026-04-17 22:04:05 +03:00
Elian Doran
69763c8b14 feat(markdown): render preview as Markdown 2026-04-17 21:41:35 +03:00
Elian Doran
75b4877c87 fix(import/mime): importing a Markdown file with conversion to text disabled is treated as file instead of code 2026-04-17 21:35:14 +03:00
Elian Doran
9ff466c9f5 docs: add more details to Markdown note type 2026-04-17 21:33:43 +03:00
Elian Doran
5f32d83c79 fix(markdown): always maintain horizontal layout 2026-04-17 21:24:43 +03:00
Elian Doran
eb3adfa733 docs: add documentation on the new Markdown type 2026-04-17 20:59:00 +03:00
Elian Doran
80aac52066 feat(markdown): improve display mode selector on mobile 2026-04-17 20:40:36 +03:00
Elian Doran
0335ece20b fix(markdown): syncing doesn't work on read-only notes 2026-04-17 20:40:36 +03:00
Elian Doran
e2d6fdb09a refactor(markdown): use different mechanism for syncing based on init 2026-04-17 20:40:36 +03:00
Elian Doran
79ea95cb39 Apply suggestions from code review
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-17 20:18:26 +03:00
Elian Doran
84bc385bab chore(markdown): add a small separator between buttons 2026-04-17 19:09:30 +03:00
Elian Doran
1af2a07a57 fix(markdown): align button order between layouts to avoid shifts 2026-04-17 19:09:08 +03:00
Elian Doran
98b92b7220 fix(markdown): read-only code not scrollable 2026-04-17 19:06:50 +03:00
Elian Doran
9b94d232a8 feat(layout): remove lock/unlock buttons in new layout 2026-04-17 18:58:33 +03:00
Elian Doran
fef8b6f58e feat(client): handle editing temporarily mind map, canvas, spreadsheet & mermaid 2026-04-17 18:47:41 +03:00
noobhjy
7bb15029cf Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (403 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hans/
2026-04-17 17:33:49 +02:00
green
c328b858a4 Translated using Weblate (Japanese)
Currently translated at 99.9% (1957 of 1958 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2026-04-17 17:33:48 +02:00
noobhjy
c2d5ba8e52 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 90.7% (1777 of 1958 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2026-04-17 17:33:47 +02:00
Hosted Weblate
aa7615e72e Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2026-04-17 17:33:46 +02:00
Elian Doran
e0c951e758 feat(attachments): display text attachments for file role 2026-04-17 18:31:42 +03:00
Elian Doran
9b1b0c5574 fix(import/enex): attachments were imported as files (closs #9473) 2026-04-17 18:15:52 +03:00
Elian Doran
1b4400db03 feat(split): use grouped buttons for view selectors 2026-04-17 12:20:36 +03:00
Elian Doran
9a3d160c34 chore(split): bring back lazy loading for editor 2026-04-17 12:10:56 +03:00
Elian Doran
8457c22be3 feat(split): smoother switching between view modes 2026-04-17 12:06:57 +03:00
Elian Doran
fb5f89108f fix(split): source view not occupying the right width 2026-04-17 10:47:06 +03:00
Elian Doran
b6144f3d09 chore(mermaid): add view changer 2026-04-17 10:45:54 +03:00
Elian Doran
5fe6611a91 refactor(markdown): handle source view at split editor level 2026-04-17 10:33:21 +03:00
Elian Doran
8760d683a3 feat(markdown): add a display mode switcher 2026-04-17 10:29:21 +03:00
renovate[bot]
07a22722ae chore(deps): update softprops/action-gh-release action to v3 2026-04-17 06:46:59 +00:00
Elian Doran
9565c398f8 chore(deps): update softprops/action-gh-release action to v2.6.2 (#9462) 2026-04-17 09:45:28 +03:00
Elian Doran
d22b0079dc feat(markdown): add read-only toggle button 2026-04-17 08:24:43 +03:00
Elian Doran
dee9959d5b feat(markdown): don't alter h1 and h2 2026-04-17 08:17:48 +03:00
Elian Doran
3f39e6f7f1 feat(client): mark spreadsheet and markdown as new note types 2026-04-17 08:15:23 +03:00
Elian Doran
f03e527cb0 feat(markdown): integrate into note types 2026-04-17 08:14:02 +03:00
Elian Doran
66819cb73f fix(export/markdown): wrong extension (.mkd or .code) 2026-04-17 08:06:26 +03:00
Elian Doran
9f4c3ed35a feat(markdown): basic support hash-based wikilinks 2026-04-17 07:49:38 +03:00
Elian Doran
e33446c219 feat(markdown): flickerless Markdown rendering even when changing it 2026-04-17 07:46:17 +03:00
Elian Doran
daf5740610 feat(markdown): use a Mermaid cache to avoid flicker while editing something else 2026-04-17 07:41:30 +03:00
Elian Doran
9464e2aff5 feat(markdown): respect heading style 2026-04-17 07:39:06 +03:00
Elian Doran
5ef74d5639 fix(markdown): mermaid not rendering 2026-04-17 07:35:17 +03:00
Elian Doran
822e7ffbab feat(markdown): support full feature set (math, admonitions) 2026-04-17 07:32:08 +03:00
Elian Doran
11b0bec47d chore(markdown): improve max width of Mermaid diagrams 2026-04-17 07:15:39 +03:00
Elian Doran
0c051327cf feat(markdown): render with ReadOnlyText 2026-04-17 07:13:46 +03:00
Elian Doran
e943891e2f chore(markdown): improve code margins when scrolling 2026-04-17 07:09:36 +03:00
Elian Doran
438442345e feat(codemirror): enable nested syntax highlighting for MD (closes #9150) 2026-04-17 07:05:01 +03:00
Elian Doran
d2c51d5175 chore(deps): update dependency dotenv to v17.4.2 (#9459) 2026-04-17 07:02:15 +03:00
Elian Doran
12e07dbfcd feat(markdown): basic block highlighting in preview 2026-04-17 07:00:07 +03:00
Elian Doran
dbe37730c3 chore(markdown): make preview selectable 2026-04-17 06:52:01 +03:00
Elian Doran
0dfbfaa61c refactor(markdown): get rid of DOM queries 2026-04-17 06:51:31 +03:00
Elian Doran
f1d557645c fix(deps): update ai sdk (#9464) 2026-04-17 06:50:33 +03:00
Elian Doran
08e3a4aefc chore(deps): update dependency rollup-plugin-webpack-stats to v3.1.1 (#9460) 2026-04-17 06:50:19 +03:00
Elian Doran
ff215bd228 chore(deps): update dependency sanitize-html to v2.17.3 [security] (#9458) 2026-04-17 06:50:00 +03:00
Elian Doran
dc57d6131a refactor(markdown): clean up a bit the sync rendering 2026-04-17 06:46:04 +03:00
Elian Doran
3417f82e27 feat(markdown): basic block-based sync 2026-04-17 06:43:50 +03:00
Elian Doran
1ec270dba2 feat(markdown): basic percentage-based scroll 2026-04-17 06:38:12 +03:00
Elian Doran
6d2496599f feat(markdown): make preview scrollable 2026-04-17 06:35:45 +03:00
Elian Doran
18d69f94d2 feat(markdown): introduce some padding 2026-04-17 06:32:49 +03:00
Elian Doran
b84e50065c feat(markdown): compact title 2026-04-17 06:29:27 +03:00
Elian Doran
81c266f69b fix(markdown): scroll padding affecting height 2026-04-17 06:25:47 +03:00
Elian Doran
e9d8aa82f4 feat(markdown): basic note type integration 2026-04-17 06:20:59 +03:00
renovate[bot]
da76d4c50e chore(deps): update dependency dotenv to v17.4.2 2026-04-17 03:08:59 +00:00
Elian Doran
ec7f6a9325 chore(deps): update dependency wxt to v0.20.21 (#9461) 2026-04-17 06:05:32 +03:00
Elian Doran
28e33e3c58 chore(deps): update typescript-eslint monorepo to v8.58.2 (#9463) 2026-04-17 06:03:12 +03:00
Elian Doran
c6ee5fabee chore(deps): update dependency happy-dom to v20.9.0 (#9465) 2026-04-17 06:02:23 +03:00
Elian Doran
1048ecb7c0 chore(deps): update dependency stylelint to v17.7.0 (#9466) 2026-04-17 06:01:54 +03:00
renovate[bot]
b1af1510f4 fix(deps): update ai sdk 2026-04-17 03:01:17 +00:00
Elian Doran
944d0542b6 fix(deps): update dependency globals to v17.5.0 (#9468) 2026-04-17 06:01:12 +03:00
Elian Doran
cee2338c1b fix(deps): update dependency diff to v9 (#9471) 2026-04-17 06:00:12 +03:00
Elian Doran
93db35518a fix(deps): update dependency better-sqlite3 to v12.9.0 (#9467) 2026-04-17 05:59:06 +03:00
renovate[bot]
63dcdc4e83 fix(deps): update dependency diff to v9 2026-04-17 00:15:19 +00:00
renovate[bot]
5a073398ed fix(deps): update dependency unpdf to v1.6.0 2026-04-17 00:14:36 +00:00
renovate[bot]
6166a8df43 fix(deps): update dependency globals to v17.5.0 2026-04-17 00:13:59 +00:00
renovate[bot]
57c3f2df17 fix(deps): update dependency better-sqlite3 to v12.9.0 2026-04-17 00:13:22 +00:00
renovate[bot]
244d0f5568 chore(deps): update dependency stylelint to v17.7.0 2026-04-17 00:12:43 +00:00
renovate[bot]
eb426ca3a7 chore(deps): update dependency happy-dom to v20.9.0 2026-04-17 00:12:04 +00:00
renovate[bot]
d17634aaa8 chore(deps): update typescript-eslint monorepo to v8.58.2 2026-04-17 00:10:44 +00:00
renovate[bot]
78efebaeea chore(deps): update softprops/action-gh-release action to v2.6.2 2026-04-17 00:10:01 +00:00
renovate[bot]
4357901c24 chore(deps): update dependency wxt to v0.20.21 2026-04-17 00:09:53 +00:00
renovate[bot]
8b8a955782 chore(deps): update dependency rollup-plugin-webpack-stats to v3.1.1 2026-04-17 00:09:11 +00:00
renovate[bot]
5153306a68 chore(deps): update dependency sanitize-html to v2.17.3 [security] 2026-04-16 21:12:03 +00:00
Elian Doran
fc2d171fcf Translations update from Hosted Weblate (#9456) 2026-04-16 23:25:35 +03:00
green
ab10a19932 Translated using Weblate (Japanese)
Currently translated at 99.9% (1956 of 1957 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2026-04-16 22:15:03 +02:00
Elian Doran
3f9b26d42c feat(nix): experiment with reusing deps when source code changes 2026-04-16 23:14:50 +03:00
Elian Doran
bf9ee98406 docs(user): add license 2026-04-16 23:05:01 +03:00
Elian Doran
3dc93fde37 feat(desktop): disable cache in dev mode 2026-04-16 23:00:57 +03:00
Elian Doran
8ec6125ec4 fix(launch_bar): some context menus intercepted by browser 2026-04-16 23:00:41 +03:00
Elian Doran
999bfbc118 feat(launch_bar): add a context menu to every option to easily remove them 2026-04-16 22:52:02 +03:00
Elian Doran
889e44363a feat(client): make view source searchable 2026-04-16 22:26:56 +03:00
Elian Doran
53413be08c fex: UI overlap in attribute editing (#9453) 2026-04-16 21:49:53 +03:00
Adorian Doran
28b1eb71ba Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/about-dialog-overhaul 2026-04-16 21:08:39 +03:00
Adorian Doran
4bc1d93b75 style/about dialog: lower CSS selector specificity 2026-04-16 21:07:47 +03:00
Zaki Ur Rehman
f64b029009 refactor: ensure only the changed lines are shown 2026-04-16 23:04:29 +05:00
Adorian Doran
d65d7dba3f client/about dialog: refactor 2026-04-16 21:04:06 +03:00
Adorian Doran
12a83510ed style/about dialog: add a different background color for nightly builds 2026-04-16 20:59:05 +03:00
Zaki Ur Rehman
b2f02962fc refactor: show only modified lines 2026-04-16 22:54:48 +05:00
Adorian Doran
262c89d252 style/about dialog: tweak the tooltip clues 2026-04-16 20:48:53 +03:00
Adorian Doran
7f75ab0638 client/about dialog: define the strings for a brief history 2026-04-16 20:47:30 +03:00
Elian Doran
30a82f3cfc Translations update from Hosted Weblate (#9455) 2026-04-16 18:45:40 +03:00
Hosted Weblate
011cce05af Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2026-04-16 17:27:19 +02:00
noobhjy
735712123c Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 88.8% (1716 of 1932 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2026-04-16 17:27:17 +02:00
passkal4
603b232d1f Translated using Weblate (Uyghur)
Currently translated at 21.3% (86 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ug/
2026-04-16 17:27:16 +02:00
Elian Doran
ce836bccc2 Translations update from Hosted Weblate (#9454) 2026-04-16 18:26:58 +03:00
Elian Doran
d8db862c22 test(client,server): guard against duplicate JSON keys 2026-04-16 18:25:37 +03:00
Elian Doran
d2836ef84c fix revisions dialog shows translation keys instead of values (#9447) 2026-04-16 18:22:46 +03:00
Hosted Weblate
09d1c85bd3 Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2026-04-16 17:06:46 +02:00
Elian Doran
e88cb60711 Translations update from Hosted Weblate (#9452) 2026-04-16 18:06:28 +03:00
Zaki Ur Rehman
6bc3176251 fix: resolve context menu state reset issue causing UI text overlap 2026-04-16 18:29:57 +05:00
Zaki Ur Rehman
c888826192 fex: UI overlap in attribute editing 2026-04-16 18:06:14 +05:00
Aindriú Mac Giolla Eoin
cd6f63a908 Translated using Weblate (Irish)
Currently translated at 99.9% (1931 of 1932 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ga/
2026-04-16 12:44:52 +02:00
Aindriú Mac Giolla Eoin
c36264203f Translated using Weblate (Irish)
Currently translated at 100.0% (403 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ga/
2026-04-16 12:44:48 +02:00
Elian Doran
1044776218 Translations update from Hosted Weblate (#9448) 2026-04-16 08:57:16 +03:00
passkal4
093e671fb5 Translated using Weblate (Uyghur)
Currently translated at 52.1% (62 of 119 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ug/
2026-04-16 05:50:57 +00:00
passkal4
0e76f412ec Translated using Weblate (Uyghur)
Currently translated at 14.3% (58 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ug/
2026-04-16 05:50:56 +00:00
passkal4
1154a1f7bf Translated using Weblate (Uyghur)
Currently translated at 51.2% (61 of 119 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ug/
2026-04-16 05:50:55 +00:00
green
062d0863a1 Translated using Weblate (Japanese)
Currently translated at 99.9% (1931 of 1932 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2026-04-16 05:50:54 +00:00
passkal4
8b202b6760 Translated using Weblate (Uyghur)
Currently translated at 14.1% (57 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ug/
2026-04-16 05:50:53 +00:00
Ulices
2fc907e756 Translated using Weblate (Spanish)
Currently translated at 85.3% (1649 of 1932 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2026-04-16 05:50:52 +00:00
Hosted Weblate
5218373f3e Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/
2026-04-16 05:50:51 +00:00
Elian Doran
6221f17beb Update dependency ejs to v5.0.2 (#9427) 2026-04-16 08:50:43 +03:00
Elian Doran
f96f64bd84 Update dependency typedoc to v0.28.19 (#9428) 2026-04-16 08:50:12 +03:00
Elian Doran
13cdba199a Update dependency reveal.js to v6.0.1 (#9430) 2026-04-16 08:49:43 +03:00
Elian Doran
4aa4d4880d Update univer monorepo to v0.20.1 (#9431) 2026-04-16 08:49:07 +03:00
Elian Doran
51f1559473 Update dependency @ai-sdk/google to v3.0.62 (#9429) 2026-04-16 08:47:47 +03:00
Elian Doran
ff9f0ad676 Update dependency dompurify to v3.4.0 [SECURITY] (#9445) 2026-04-16 08:47:13 +03:00
contributor
7e3683b8c2 fix revisions dialog shows translation keys instead of values 2026-04-16 08:14:30 +03:00
renovate[bot]
0df186ef7d Update dependency dompurify to v3.4.0 [SECURITY] 2026-04-16 04:07:11 +00:00
renovate[bot]
ff3b6c4011 Update univer monorepo to v0.20.1 2026-04-15 20:51:08 +00:00
renovate[bot]
0b5332fbb3 Update dependency typedoc to v0.28.19 2026-04-15 20:50:32 +00:00
renovate[bot]
f285f7e14f Update dependency reveal.js to v6.0.1 2026-04-15 20:49:57 +00:00
renovate[bot]
794ad9410b Update dependency ejs to v5.0.2 2026-04-15 20:49:25 +00:00
renovate[bot]
60f3ddd354 Update dependency @ai-sdk/google to v3.0.62 2026-04-15 20:48:53 +00:00
Elian Doran
20235509ef Translations update from Hosted Weblate (#9432) 2026-04-15 23:43:47 +03:00
green
0ece1270c7 Translated using Weblate (Japanese)
Currently translated at 99.9% (1919 of 1920 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2026-04-15 22:38:49 +02:00
passkal4
a32eeb27e3 Translated using Weblate (Uyghur)
Currently translated at 87.9% (139 of 158 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ug/
2026-04-15 22:38:48 +02:00
Hosted Weblate
e50ef8552b Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2026-04-15 22:38:48 +02:00
seb2020
c34df3a17a Translated using Weblate (French)
Currently translated at 88.8% (1671 of 1880 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/fr/
2026-04-15 22:38:47 +02:00
passkal4
48e90396bd Translated using Weblate (Uyghur)
Currently translated at 8.4% (159 of 1880 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ug/
2026-04-15 22:38:46 +02:00
passkal4
d147bbe63d Translated using Weblate (Uyghur)
Currently translated at 1.4% (6 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ug/
2026-04-15 22:38:45 +02:00
passkal4
a82d9dad1b Translated using Weblate (Uyghur)
Currently translated at 6.7% (8 of 119 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/ug/
2026-04-15 22:38:45 +02:00
passkal4
5ad0cb2b4b Translated using Weblate (Uyghur)
Currently translated at 3.1% (5 of 158 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/ug/
2026-04-15 22:38:44 +02:00
passkal4
a0e9082364 Translated using Weblate (Uyghur)
Currently translated at 1.4% (28 of 1880 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ug/
2026-04-15 22:38:43 +02:00
passkal4
1442041cda Added translation using Weblate (Uyghur) 2026-04-15 22:38:43 +02:00
passkal4
4b9d253745 Added translation using Weblate (Uyghur) 2026-04-15 22:38:42 +02:00
passkal4
3c0d5b7614 Added translation using Weblate (Uyghur) 2026-04-15 22:38:42 +02:00
passkal4
f0293b7f07 Added translation using Weblate (Uyghur) 2026-04-15 22:38:41 +02:00
green
2bf2d977ad Translated using Weblate (Japanese)
Currently translated at 99.9% (1879 of 1880 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2026-04-15 22:38:41 +02:00
Marcel
7e1090c59d Translated using Weblate (German)
Currently translated at 100.0% (403 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/de/
2026-04-15 22:38:40 +02:00
Ulices
a4c419de6f Translated using Weblate (Spanish)
Currently translated at 87.0% (1637 of 1880 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/es/
2026-04-15 22:38:39 +02:00
green
263479adee Translated using Weblate (Japanese)
Currently translated at 100.0% (403 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2026-04-15 22:38:39 +02:00
Artyom Rybakov
c0c0cea376 Translated using Weblate (Russian)
Currently translated at 100.0% (403 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ru/
2026-04-15 22:38:38 +02:00
Artyom Rybakov
1bf36574e2 Translated using Weblate (Russian)
Currently translated at 91.8% (1726 of 1880 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ru/
2026-04-15 22:38:38 +02:00
Marcel
3ed6297011 Translated using Weblate (German)
Currently translated at 91.8% (1726 of 1880 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/de/
2026-04-15 22:38:37 +02:00
Ulices
3bd98d6a1b Translated using Weblate (Spanish)
Currently translated at 100.0% (403 of 403 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/es/
2026-04-15 22:38:36 +02:00
Elian Doran
ecc872828c Feature/small improvements (#9440) 2026-04-15 23:38:27 +03:00
Elian Doran
9c5d6e0a19 Merge branch 'main' into feature/small_improvements 2026-04-15 22:47:05 +03:00
Elian Doran
98d718031b test(commons): fix failure in locale 2026-04-15 22:46:24 +03:00
Elian Doran
9bd78c5f83 feat(print): display detailed error on print failure 2026-04-15 22:45:23 +03:00
Elian Doran
598317ea6e chore: add reproduction sample for printing issue 2026-04-15 22:43:34 +03:00
Elian Doran
99878a1d48 fix(print): overlapping toasts on error 2026-04-15 22:40:09 +03:00
Elian Doran
264021360a fix(print): infinite re-rendering when changing an option 2026-04-15 22:04:35 +03:00
Elian Doran
ae4dc53647 chore: address requested changes 2026-04-15 21:58:35 +03:00
Elian Doran
6dd51f66ab Merge branch 'main' into feature/small_improvements 2026-04-15 19:07:43 +03:00
Elian Doran
61262e899b chore(commons): fix typecheck 2026-04-15 19:06:24 +03:00
Elian Doran
0ebec2ce5d refactor(print): simplify and modularize 2026-04-15 18:51:20 +03:00
Elian Doran
6225f92a7d feat(print): add printer descriptions 2026-04-15 18:33:18 +03:00
Elian Doran
6c9ffe1d80 feat(print): use dropdown with icons for printers 2026-04-15 18:25:13 +03:00
Elian Doran
9116cbcba4 feat(code): adjust word wrap through note actions 2026-04-15 18:18:37 +03:00
Elian Doran
d0e61e39d0 feat(print): selectable printer 2026-04-15 18:17:28 +03:00
Elian Doran
c691a9c6e6 feat(code): adjustable word wrap at note level 2026-04-15 18:02:54 +03:00
Elian Doran
94e70c0318 feat(print): integrate with print preview and merge with export to PDF 2026-04-15 17:37:27 +03:00
Elian Doran
edb2ec2a6f feat(code): normalize indentation 2026-04-15 17:34:30 +03:00
Elian Doran
f68a481edc feat(print/pdf): disable selection in preview 2026-04-15 17:14:44 +03:00
Elian Doran
3a1f0b2be1 chore(code): fix inconsistency in status bar naming 2026-04-15 17:14:15 +03:00
Elian Doran
bf5d6c4e01 feat(print/pdf): basic support for printing only a subset of pages 2026-04-15 10:26:25 +03:00
Elian Doran
ba13f86f5f feat(print/pdf): improve error management 2026-04-15 10:10:28 +03:00
Elian Doran
e7c30927f7 chore(print/pdf): bring back footers regardless of margin 2026-04-15 10:08:24 +03:00
Elian Doran
634b2b3a84 chore(print/pdf): bring back 2cm as the default margin 2026-04-15 09:59:47 +03:00
Elian Doran
83cb437133 fix(print/pdf): default / none / minimum margins appearing the same 2026-04-15 09:58:36 +03:00
Elian Doran
37e8514400 chore(print/pdf): align margin selector 2026-04-15 09:52:15 +03:00
Elian Doran
341a5310e1 feat(code): basic tabs vs spaces 2026-04-15 09:42:20 +03:00
Elian Doran
9e4a5c892e feat(print/pdf): basic support for margins 2026-04-15 09:41:45 +03:00
Elian Doran
307536b70f feat(code): separate reindentation from display width 2026-04-15 09:33:06 +03:00
Elian Doran
f12d73a5c7 feat(code): reindent on changing tab width 2026-04-15 09:14:55 +03:00
Elian Doran
b20e2459c3 refactor(code): simplify status bar widget 2026-04-15 09:06:47 +03:00
Elian Doran
692a31772d feat(code): status bar indentation selector 2026-04-15 09:01:23 +03:00
Elian Doran
6a05288be4 feat(code): adjustable tab width via attribute 2026-04-14 23:58:01 +03:00
Elian Doran
fc82b9374e feat(print/pdf): debounce rendering when changing scale 2026-04-14 23:51:14 +03:00
Elian Doran
457bba9337 feat(print/pdf): basic support for scale 2026-04-14 23:48:12 +03:00
Elian Doran
249b08f1ce fix(options): code preview doesn't reflect tab width 2026-04-14 23:40:39 +03:00
Elian Doran
54a6e3d9a1 feat(code): adjustable default tab width 2026-04-14 23:33:32 +03:00
Elian Doran
f7a36fc997 feat(print/pdf): adjustable page size 2026-04-14 23:31:05 +03:00
Elian Doran
1952b44141 chore(print/pdf): make use of attribute for adjusting orientation 2026-04-14 23:24:37 +03:00
Elian Doran
cd84e6ba08 fix(text): tab width is reset when component is re-rendered 2026-04-14 23:10:57 +03:00
Elian Doran
454c18ff0e feat(print/pdf): use segmented buttons instead of toggle 2026-04-14 23:10:13 +03:00
Elian Doran
4d4e63998f feat(print/pdf): add toggle for landscape 2026-04-14 22:58:15 +03:00
Elian Doran
2db1e2d750 fix(server): HMR WS port interferes between server & desktop 2026-04-14 22:50:06 +03:00
Elian Doran
cb03f3cec5 chore(text): tab width doesn't adjust when pressing the spinner 2026-04-14 22:33:29 +03:00
Elian Doran
b2ec9a2f47 chore(text): make sure tab size constant is available regardless of theme 2026-04-14 22:30:53 +03:00
Elian Doran
71b3ee143f feat(print): basic PDF preview 2026-04-14 22:30:29 +03:00
Elian Doran
22eb2697d5 feat(text): adjustable tab width (closes #5701) 2026-04-14 22:25:20 +03:00
Elian Doran
59994a5877 feat(find): allow searching in view source 2026-04-14 22:21:29 +03:00
Elian Doran
c35bc6fbd2 feat(options): add tab width selector 2026-04-14 22:15:13 +03:00
Elian Doran
2d6c2b2cd0 test(server): validate tesseract language codes 2026-04-14 21:59:01 +03:00
Elian Doran
6b6573bf02 feat(i18n: set up Uyghur as content language 2026-04-14 21:54:33 +03:00
Elian Doran
278da994ce fix(server): wrong DB version (closes #9418) 2026-04-14 21:43:38 +03:00
Elian Doran
ab00772559 chore(deps): update pnpm/action-setup action to v6 (#9417) 2026-04-14 17:30:47 +03:00
Elian Doran
49e432fb66 fix(deps): update ai sdk (#9416) 2026-04-14 08:32:21 +03:00
renovate[bot]
6f73ea5847 fix(deps): update ai sdk 2026-04-14 04:57:36 +00:00
renovate[bot]
743db3a9cd chore(deps): update pnpm/action-setup action to v6 2026-04-14 00:38:33 +00:00
Elian Doran
b899a0b5f8 fix(link): file URLs not working with Unicode characters on Windows (closes #8973) 2026-04-13 21:06:59 +03:00
Elian Doran
c6ea68c012 feat(link): add an error when link couldn't be opened 2026-04-13 21:06:59 +03:00
Elian Doran
9fc750533c fix(mermaid): nbsp entity causing issues (closes #9413) 2026-04-13 21:06:58 +03:00
Elian Doran
7d52c62155 Translations update from Hosted Weblate (#9414) 2026-04-13 20:00:27 +03:00
Hosted Weblate
27801a859a Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2026-04-13 16:27:14 +00:00
Giovi
25a28abb2d Translated using Weblate (Italian)
Currently translated at 100.0% (402 of 402 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/it/
2026-04-13 16:27:08 +00:00
noobhjy
591a9a6963 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.3% (1819 of 1869 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2026-04-13 16:27:07 +00:00
Giovi
f2815de17e Translated using Weblate (Italian)
Currently translated at 99.9% (1868 of 1869 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/it/
2026-04-13 16:27:07 +00:00
Elian Doran
b61b5100f0 Settings improvements (#9412) 2026-04-13 19:26:53 +03:00
Elian Doran
51f06f064e e2e(options): fix changes to options 2026-04-13 19:17:38 +03:00
Elian Doran
27ed4165dc chore(options): address requested changes 2026-04-13 19:13:10 +03:00
Elian Doran
24167c0691 e2e(options): fix i18n change 2026-04-13 19:12:10 +03:00
Elian Doran
203c725e0c i18n(server): password not correct 2026-04-13 18:21:41 +03:00
Elian Doran
9326751923 feat(options/password): use modals for changing the password 2026-04-13 18:18:04 +03:00
Elian Doran
9ba1eeaf20 feat(options/password): use options row for protected session timeout 2026-04-13 18:14:39 +03:00
Elian Doran
ae676f38d3 fix(options): automatic read-only size confused with OTP by KeepassXC
See https://github.com/keepassxreboot/keepassxc-browser/issues/2282
2026-04-13 18:12:22 +03:00
Elian Doran
1765917393 refactor(options): remove workaround for title sections 2026-04-13 18:10:33 +03:00
Elian Doran
02336f4e53 feat(options/other): improve predefined search engines 2026-04-13 18:02:25 +03:00
Elian Doran
3ce508c5ee feat(options/other): improve descriptions 2026-04-13 17:52:54 +03:00
Elian Doran
266f542028 feat(options/other): improve desktop-specific options 2026-04-13 17:50:37 +03:00
Elian Doran
0f605ba994 feat(options/appearance): improve desktop-specific options 2026-04-13 17:45:23 +03:00
Elian Doran
d4333400c4 refactor(options/appearance): use simpler mechanism for theme note icon 2026-04-13 17:39:57 +03:00
Elian Doran
7180569357 feat(options/appearance): display icon for custom themes 2026-04-13 17:37:39 +03:00
Elian Doran
b88eaaeeec feat(options/appearance): group and add icons to theme selector 2026-04-13 17:34:49 +03:00
Elian Doran
b9e8cd5697 chore(options/appearance): integrate application theme into first section 2026-04-13 17:29:32 +03:00
Elian Doran
92d011503d feat(options/appearance): improve content width section 2026-04-13 17:26:37 +03:00
Elian Doran
a62a7e351e feat(options/appearance): use toggles everywhere 2026-04-13 17:23:25 +03:00
Elian Doran
19e07bc6fd chore(options/appearance): improve font description slightly 2026-04-13 17:21:57 +03:00
Elian Doran
f9b0a88a4e fix(options/appearance): theme defined not previewed correctly 2026-04-13 17:19:40 +03:00
Elian Doran
00b85bb7bd feat(options/appearance): improve font buttons 2026-04-13 17:18:20 +03:00
Elian Doran
17fb3f576d chore(options/appearance): improve font buttons 2026-04-13 17:09:41 +03:00
Elian Doran
49878d64aa chore(options/appearance): integrate font description properly 2026-04-13 17:07:03 +03:00
Elian Doran
368dd1adc4 fix(options/appearance): font modal styles are affected 2026-04-13 17:05:18 +03:00
Elian Doran
2e8f6a495b feat(options/appearance): use modal for font selection 2026-04-13 17:01:46 +03:00
Elian Doran
2a23b8a868 feat(options/appearance): add font preview in dropdown 2026-04-13 16:56:43 +03:00
Elian Doran
8e56585575 feat(options/appearance): improve font selection further 2026-04-13 16:53:45 +03:00
Elian Doran
80f40a439c feat(options/appearance): improve font selection 2026-04-13 16:45:01 +03:00
Elian Doran
9d49324557 feat(options/text): improve formatting toolbar 2026-04-13 16:41:33 +03:00
Elian Doran
85ebe59a3b feat(options/appearance): merge layout style with orientation 2026-04-13 16:38:25 +03:00
Elian Doran
692d33bedf feat(options/appearance): add illustration for vertical/horizontal layout 2026-04-13 16:36:51 +03:00
Elian Doran
cd0763e807 feat(options/text): add visual representation for layout 2026-04-13 16:32:37 +03:00
Elian Doran
93920bdfb4 feat(options/text): add for heading style & formatting toolbar 2026-04-13 16:31:43 +03:00
Elian Doran
09fdcb3839 chore(options/text): merge multiple options into single section 2026-04-13 16:27:48 +03:00
Elian Doran
6ff7219300 chore(options/text): use options row for code blocks 2026-04-13 16:22:06 +03:00
Elian Doran
7e246f599d chore(options/text): use options row for features 2026-04-13 16:20:36 +03:00
Elian Doran
f422155dee chore(options/code): use options row for apperance 2026-04-13 16:18:40 +03:00
Elian Doran
05d4d3a1a2 chore(options/code): merge sections 2026-04-13 16:15:54 +03:00
Elian Doran
d716fec524 chore(options/backup): use action button for download 2026-04-13 16:11:02 +03:00
Elian Doran
66347e4bad chore(options/backup): merge the sections together 2026-04-13 16:09:48 +03:00
Elian Doran
e740e729c3 chore(options/sync): get rid of save button 2026-04-13 16:03:21 +03:00
Elian Doran
4baa22a01a chore(options/sync): floating help button 2026-04-13 16:00:37 +03:00
Elian Doran
7c1f509eca chore(options/sync): merge sections and use options row 2026-04-13 15:56:41 +03:00
Elian Doran
0ead37fd5c chore(options/other): use toggles 2026-04-13 15:48:59 +03:00
Elian Doran
a33de6454f chore(options/other): improve section titles 2026-04-13 15:26:13 +03:00
Elian Doran
4a9e7c843e chore(options/other): merge note revisions 2026-04-13 15:22:52 +03:00
Elian Doran
1f6c88dcc1 chore(options/other): use options row for inputs with unit 2026-04-13 15:21:03 +03:00
Elian Doran
43d9d726f8 chore(options/i18n): simplify first week of the year 2026-04-13 15:15:21 +03:00
Elian Doran
c5667d9141 chore(options/advanced): move sync at the bottom 2026-04-13 15:11:42 +03:00
Elian Doran
7455d235d1 chore(options/advanced): use options row for database anonymization 2026-04-13 15:11:10 +03:00
Elian Doran
3dc0d25c4d chore(options/advanced): merge database-related options 2026-04-13 15:01:51 +03:00
Elian Doran
c352d46a5b chore(options/advanced): use options row for database integrity check 2026-04-13 14:59:31 +03:00
Elian Doran
c262187496 chore(options/advanced): use options row for sync 2026-04-13 14:56:45 +03:00
Elian Doran
0c5a8a24da refactor(options): create OptionsRowWithToggle 2026-04-13 14:40:46 +03:00
Elian Doran
e5a9622720 fix(note_actions): copy reference to clipboard button not working (closes #9406) 2026-04-13 14:21:24 +03:00
Elian Doran
ad864cfe48 feat(search): try to improve search performance through some creative mechanisms... (#9034) 2026-04-13 14:17:24 +03:00
Elian Doran
f58dd12983 chore(search): use loop to prevent nested strip tags injection 2026-04-13 14:03:17 +03:00
Elian Doran
e40504b7f0 chore(search): address requested changes 2026-04-13 13:43:25 +03:00
Elian Doran
301f23cd2d test(server): clean up search scripts 2026-04-13 13:38:06 +03:00
Elian Doran
885e94cf58 test(server): migrate database 2026-04-13 13:30:53 +03:00
Elian Doran
6763f4f403 chore(becca): add log for cache memory consumption 2026-04-13 13:29:58 +03:00
Elian Doran
ead70ad394 fix(autocomplete): fuzzy search not working if the search one was not enabled 2026-04-13 13:20:42 +03:00
Elian Doran
597c6eb15b chore(options): improve descriptions for search 2026-04-13 13:14:45 +03:00
Elian Doran
47ce77e04c refactor(search): simplify branching for autocomplete 2026-04-13 13:05:54 +03:00
Elian Doran
6e90a4168e feat(autocomplete): toggle for fuzzy matching (closes #8360) 2026-04-13 13:03:29 +03:00
Elian Doran
9b2be57365 docs: remove search analysis 2026-04-13 12:56:50 +03:00
Elian Doran
5ba7803ea9 Merge branch 'main' into feat/search-perf-take1
Resolved conflicts:
- search_result.ts: Keep optimized index-based token iteration
- search.ts: Merge OCR text representation support with perf optimizations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-13 12:45:24 +03:00
Elian Doran
88743f158b chore(deps): update dependency vite to v8.0.8 (#9398) 2026-04-13 10:25:30 +03:00
Elian Doran
f360b1fb55 fix(etapi): correct calendar year/month endpoint descriptions and year pattern; docs: add trilium-fastmcp integration (#9383) 2026-04-13 09:59:45 +03:00
Elian Doran
dda9e51a37 Translations update from Hosted Weblate (#9404) 2026-04-13 09:58:37 +03:00
Elian Doran
ef9002dede Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-04-13 09:58:13 +03:00
renovate[bot]
37df2dd9b2 chore(deps): update dependency vite to v8.0.8 2026-04-13 06:57:10 +00:00
green
7ec5945517 Translated using Weblate (Japanese)
Currently translated at 100.0% (402 of 402 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2026-04-13 06:56:53 +00:00
Aindriú Mac Giolla Eoin
0150b5b61e Translated using Weblate (Irish)
Currently translated at 99.9% (1863 of 1864 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ga/
2026-04-13 06:56:53 +00:00
green
d41d727950 Translated using Weblate (Japanese)
Currently translated at 99.9% (1863 of 1864 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2026-04-13 06:56:52 +00:00
Aindriú Mac Giolla Eoin
224c31d16b Translated using Weblate (Irish)
Currently translated at 100.0% (402 of 402 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ga/
2026-04-13 06:56:51 +00:00
noobhjy
b67bd01858 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.5% (1818 of 1864 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2026-04-13 06:56:51 +00:00
Elian Doran
5459ec33df fix(deps): update ai sdk (#9400) 2026-04-13 09:56:43 +03:00
Elian Doran
59999e5adc chore(deps): update vitest monorepo to v4.1.4 (#9399) 2026-04-13 09:54:16 +03:00
Elian Doran
fc009923e5 chore(deps): update ckeditor5 config packages to v14.1.0 (#9401) 2026-04-13 09:53:27 +03:00
Elian Doran
9303f54026 chore(deps): update actions/github-script action to v9 (#9402) 2026-04-13 09:52:32 +03:00
renovate[bot]
7e30b8c029 chore(deps): update actions/github-script action to v9 2026-04-13 01:37:35 +00:00
renovate[bot]
c1596d2a25 chore(deps): update ckeditor5 config packages to v14.1.0 2026-04-13 01:37:28 +00:00
renovate[bot]
2411d7bc76 fix(deps): update ai sdk 2026-04-13 01:36:47 +00:00
renovate[bot]
a44ff4c78b chore(deps): update vitest monorepo to v4.1.4 2026-04-13 01:36:07 +00:00
Elian Doran
f9aaccdfe2 chore(docker): set up tooling for building better-sqlite3 from scratch 2026-04-13 01:06:34 +03:00
Elian Doran
4c02d70dae fix(toc): not rendering math the first time 2026-04-13 00:08:40 +03:00
Adorian Doran
e6db4a51d1 client/about dialog: update the version format 2026-04-12 21:13:00 +03:00
Adorian Doran
d3c927ed88 style/about dialog: exclude the brackets from the contributor role tooltip cue 2026-04-12 20:59:29 +03:00
Adorian Doran
3a8f0e0fcd Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/about-dialog-overhaul 2026-04-12 18:52:49 +03:00
Elian Doran
9a427f4b9f chore(client): dev server not working due to prefresh bug
See https://github.com/preactjs/prefresh/issues/610
2026-04-12 17:32:03 +03:00
Adorian Doran
3720851ff7 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/about-dialog-overhaul 2026-04-12 17:15:40 +03:00
Elian Doran
6a83356cf7 chore(deps): update dependency @lezer/common to v1.5.2 (#9386) 2026-04-12 13:13:51 +03:00
Elian Doran
233c41acc0 fix(deps): update dependency i18next to v26.0.4 (#9388) 2026-04-12 13:13:12 +03:00
Elian Doran
3b0451da9e fix(deps): update dependency ai to v6.0.154 (#9387) 2026-04-12 13:11:26 +03:00
Elian Doran
e217a3146f chore(deps): update dependency @redocly/cli to v2.26.0 (#9389) 2026-04-12 13:10:41 +03:00
Elian Doran
97c42ef1cb fix(deps): update dependency @zumer/snapdom to v2.8.0 (#9391) 2026-04-12 13:09:06 +03:00
Elian Doran
b12a524de8 chore(deps): update dependency electron to v41.2.0 (#9390) 2026-04-12 11:56:45 +03:00
Elian Doran
ee37fee2c0 Revert "Update dependency minimatch@3>brace-expansion to v5" (#9393) 2026-04-12 11:35:35 +03:00
Elian Doran
ef5d9f980e Merge branch 'main' into revert-9307-renovate/minimatch3-brace-expansion-5.x 2026-04-12 11:35:27 +03:00
Elian Doran
fadbc906e2 chore(deps): update dependency @prefresh/vite to v3 (#9392) 2026-04-12 09:39:14 +03:00
Elian Doran
ba816fc132 Revert "Update dependency minimatch@3>brace-expansion to v5" 2026-04-12 09:37:53 +03:00
renovate[bot]
5ea615da1e chore(deps): update dependency @prefresh/vite to v3 2026-04-12 00:47:10 +00:00
renovate[bot]
ceb955b72b fix(deps): update dependency @zumer/snapdom to v2.8.0 2026-04-12 00:46:12 +00:00
renovate[bot]
43823bcb37 chore(deps): update dependency electron to v41.2.0 2026-04-12 00:45:14 +00:00
renovate[bot]
7984ada306 chore(deps): update dependency @redocly/cli to v2.26.0 2026-04-12 00:44:11 +00:00
renovate[bot]
d3e0c8d894 fix(deps): update dependency i18next to v26.0.4 2026-04-12 00:43:10 +00:00
renovate[bot]
cee1be11ab fix(deps): update dependency ai to v6.0.154 2026-04-12 00:42:06 +00:00
renovate[bot]
230b3207a5 chore(deps): update dependency @lezer/common to v1.5.2 2026-04-12 00:41:03 +00:00
Elias Soares
62ff35c080 Merge remote-tracking branch 'origin/fix/etapi-calendar-descriptions-and-mcp-docs' into fix/etapi-calendar-descriptions-and-mcp-docs 2026-04-11 20:41:35 -03:00
Elias Soares
e2043c14f2 improv: applying Gemini's suggestions 2026-04-11 20:41:08 -03:00
Elian Doran
a7f9032347 feat(llm): add note mutation tools (rename, delete, move, clone) (#9339) 2026-04-12 01:32:14 +03:00
Elian Doran
f137868f92 feat(llm): add stop generation button (#9341) 2026-04-12 00:48:55 +03:00
Elian Doran
175e200d88 fix(llm): stopping a tool call leaves an infinite spinner 2026-04-12 00:48:01 +03:00
Elian Doran
74f951023b Merge remote-tracking branch 'origin/main' into feat/llm-stop-generation 2026-04-12 00:37:27 +03:00
Elian Doran
3e697338e1 Translations update from Hosted Weblate (#9381) 2026-04-11 22:18:18 +03:00
Elias Soares
bae77017a9 Merge branch 'main' into fix/etapi-calendar-descriptions-and-mcp-docs 2026-04-11 14:28:57 -03:00
Elias Soares
32a2834bf3 fix(etapi): correct calendar year/month endpoint descriptions and year pattern; docs: add trilium-fastmcp integration 2026-04-11 14:25:49 -03:00
Hosted Weblate
4bffc1c156 Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2026-04-11 16:38:08 +00:00
green
ac4c5f7d8c Translated using Weblate (Japanese)
Currently translated at 99.9% (1851 of 1852 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/ja/
2026-04-11 16:38:04 +00:00
AggelosPnS
8f41e55b3c Translated using Weblate (Greek)
Currently translated at 100.0% (116 of 116 strings)

Translation: Trilium Notes/README
Translate-URL: https://hosted.weblate.org/projects/trilium/readme/el/
2026-04-11 16:38:02 +00:00
AggelosPnS
ad8aab7b15 Translated using Weblate (Greek)
Currently translated at 96.2% (152 of 158 strings)

Translation: Trilium Notes/Website
Translate-URL: https://hosted.weblate.org/projects/trilium/website/el/
2026-04-11 16:38:00 +00:00
AggelosPnS
7e779669ea Translated using Weblate (Greek)
Currently translated at 2.6% (49 of 1852 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/el/
2026-04-11 16:37:58 +00:00
green
5b01791021 Translated using Weblate (Japanese)
Currently translated at 100.0% (401 of 401 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/ja/
2026-04-11 16:37:55 +00:00
Elian Doran
14bb068626 fix(tree): deleting ancestor of the current note doesn't correctly navigate 2026-04-11 19:36:50 +03:00
Elian Doran
1c93636538 fix(tree): navigating to parent note when deleting a non-active note (closes #9380) 2026-04-11 19:31:44 +03:00
Elian Doran
b402a7a32b Easy fixes v2 (#9377) 2026-04-11 19:19:57 +03:00
Elian Doran
3a7167a65d chore: address requested changes 2026-04-11 19:19:32 +03:00
Elian Doran
6dd7e9cb38 chore(delete): address requested changes 2026-04-11 14:30:44 +03:00
Elian Doran
4ffa016045 fix(sidebar): highlights with math split in read-only text 2026-04-11 14:28:58 +03:00
Elian Doran
2d6f1ee9b7 fix(sidebar): editable mode equations sometimes not rendering 2026-04-11 14:26:22 +03:00
Elian Doran
a1f0615afe chore: fix typecheck 2026-04-11 14:25:01 +03:00
Elian Doran
03ff9c4b27 fix(sidebar): highlights not rendering math in read-only text 2026-04-11 14:23:07 +03:00
Elian Doran
67a48bbec7 fix(sidebar): duplicate equations rendering 2026-04-11 14:14:18 +03:00
Elian Doran
2b63af82ec fix(sidebar): equations not rendered for read-only text 2026-04-11 13:53:10 +03:00
Elian Doran
c5ee7083d8 chore(sidebar): deduplicate math rendering 2026-04-11 13:49:13 +03:00
Elian Doran
0696f7724d chore(react): add an option to make options row stacked 2026-04-11 13:43:10 +03:00
Elian Doran
b7231e3464 feat(delete): improve translations 2026-04-11 13:35:27 +03:00
Elian Doran
214c6c93fd feat(similarity): filter out hidden notes (closes #4584) 2026-04-11 13:34:04 +03:00
Elian Doran
7037ae4ba8 feat(delete): hide removal of clones completely if no clones are affected 2026-04-11 13:24:09 +03:00
Elian Doran
46d6d6fdee feat(include_note): remember value of box size (closes #1623) 2026-04-11 13:23:13 +03:00
Elian Doran
ae751bfb91 feat(delete): improve layout of the note path 2026-04-11 13:20:28 +03:00
Elian Doran
bd0117c52f feat(delete): borderless table 2026-04-11 13:10:38 +03:00
Elian Doran
1402695dbe feat(delete): improve table for broken relations 2026-04-11 13:01:18 +03:00
Elian Doran
72c42afb50 feat(delete): use proper note links and show icons 2026-04-11 12:53:36 +03:00
Elian Doran
2752e0998e feat(delete): render broken relations as a table 2026-04-11 12:50:34 +03:00
Elian Doran
52114e08ba chore(delete): remove redundant list of clones 2026-04-11 12:44:28 +03:00
Elian Doran
a98721c016 fix(ckeditor/include_note): changing expandability doesn't refresh 2026-04-11 12:43:34 +03:00
Elian Doran
c3ab2d09d5 feat(ckeditor/include_note): add a new size for expandable items (closes #4134) 2026-04-11 12:43:17 +03:00
Elian Doran
9ef7802651 chore(delete): remove self-descriptive title 2026-04-11 12:35:27 +03:00
Elian Doran
a913d33a9e chore(ckeditor/include_note): remove debug logs 2026-04-11 12:35:01 +03:00
Elian Doran
49dc7135a7 feat(delete): different behavior when only deleted clones 2026-04-11 12:34:34 +03:00
Elian Doran
7e77560d70 fix(ckeditor/include_note): undo not working after select mechanism 2026-04-11 12:23:22 +03:00
Elian Doran
35cb110151 chore(delete): add missing translations 2026-04-11 12:20:06 +03:00
Elian Doran
4e49c2458d refactor(delete): deduplicate form toggle 2026-04-11 12:19:47 +03:00
Elian Doran
755e5fc416 feat(delete): improve dialog slightly by using cards and options rows 2026-04-11 12:17:25 +03:00
Elian Doran
5d4fd0269f refactor(ckeditor/include_note): use different method for intercepting selection 2026-04-11 12:13:24 +03:00
Elian Doran
461abf768c feat(ckeditor/include_note): add a way to change size after creation (closes #3705) 2026-04-11 12:07:16 +03:00
Elian Doran
602bebe498 feat(server): improve note path display to use chevrons instead of slashes to separate notes (closes #762) 2026-04-11 11:43:57 +03:00
Elian Doran
6c31b35f08 refactor(delete): reuse components for delete note list 2026-04-11 11:42:14 +03:00
Elian Doran
ccf95ad885 feat(delete): clarify "Delete also all clones" based on actual number of clones (closes #2362) 2026-04-11 11:39:05 +03:00
Elian Doran
fb33921308 feat(script): add warning if trying to render an unavailable protected server-side note (closes #21) 2026-04-11 11:17:58 +03:00
Elian Doran
1121ee0133 feat(script): add warning if trying to render a protected note without the session active 2026-04-11 11:15:31 +03:00
Elian Doran
77af4bd288 feat(link): allow bookends: and highlights: protocols (closes #2817) 2026-04-11 11:11:43 +03:00
Elian Doran
a1a2119e37 fix(server): indentation in HTML not preserved (closes #3151) 2026-04-11 11:07:59 +03:00
Elian Doran
afd2806a67 feat(script): increase warning toast time 2026-04-11 11:02:56 +03:00
Elian Doran
3410f0f5bc feat(script): warn if user is trying to run the script in a wrong environment (closes #342) 2026-04-11 11:01:04 +03:00
Elian Doran
4ed2226206 fix(script): logging api.startNote not working (closes #3751) 2026-04-11 10:57:05 +03:00
Elian Doran
b8d7277d88 feat(server): remove old keyboard shortcuts from options (closes #4543) 2026-04-11 10:48:09 +03:00
Elian Doran
1becc18354 fix(ckeditor5): internal link enabled in code block (closes #1712) 2026-04-11 10:41:24 +03:00
Elian Doran
9366d351e0 chore(edit-demo): ensure proper tree expansion state 2026-04-11 10:32:27 +03:00
Elian Doran
e27f5cd419 docs(demo): statistics not rendering (closes #4178) 2026-04-11 10:27:49 +03:00
Elian Doran
b7c1116738 chore(deps): update vitest monorepo to v4.1.3 (#9374) 2026-04-11 10:03:26 +03:00
renovate[bot]
a6a3d743f7 chore(deps): update vitest monorepo to v4.1.3 2026-04-11 06:39:38 +00:00
Elian Doran
dd3f3e9e5c fix(deps): update ai sdk (#9375) 2026-04-11 09:34:36 +03:00
Elian Doran
ad2732b249 chore(deps): update typescript-eslint monorepo to v8.58.1 (#9373) 2026-04-11 09:33:57 +03:00
Elian Doran
10c04bdda0 Translations update from Hosted Weblate (#9371) 2026-04-11 09:00:34 +03:00
noobhjy
26d88afeb7 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (401 of 401 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hans/
2026-04-11 07:59:57 +02:00
noobhjy
376d19563d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 98.4% (1823 of 1852 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hans/
2026-04-11 07:59:57 +02:00
Francis C.
d2895f0f42 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.9% (1851 of 1852 strings)

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/zh_Hant/
2026-04-11 07:59:56 +02:00
Francis C.
30310ef2ba Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (401 of 401 strings)

Translation: Trilium Notes/Server
Translate-URL: https://hosted.weblate.org/projects/trilium/server/zh_Hant/
2026-04-11 07:59:56 +02:00
Hosted Weblate
924a9747f1 Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Trilium Notes/Client
Translate-URL: https://hosted.weblate.org/projects/trilium/client/
2026-04-11 07:59:55 +02:00
Elian Doran
f8ed48d2d2 fix(deps): update dependency marked to v18 (#9376) 2026-04-11 08:59:47 +03:00
renovate[bot]
9cdb2a73e3 chore(deps): update typescript-eslint monorepo to v8.58.1 2026-04-11 05:58:20 +00:00
Elian Doran
ad3258b88e chore(deps): update dependency vite to v8.0.7 (#9372) 2026-04-11 08:52:36 +03:00
renovate[bot]
4461ab080a fix(deps): update ai sdk 2026-04-11 05:44:10 +00:00
renovate[bot]
9b07f156b2 fix(deps): update dependency marked to v18 2026-04-11 01:54:33 +00:00
renovate[bot]
94c7967800 chore(deps): update dependency vite to v8.0.7 2026-04-11 01:50:19 +00:00
Elian Doran
a5b248e663 feat(ckeditor): match style for admonitions in floating toolbar 2026-04-11 00:50:20 +03:00
Elian Doran
1ec43722e8 fix(ckeditor): admonitions overshadowing floating toolbar 2026-04-11 00:47:51 +03:00
Elian Doran
88c548cc70 feat(ckeditor): add a toolbar to switch admonition types 2026-04-11 00:47:36 +03:00
Elian Doran
daafe251da feat(text): click to copy inline code in read-only text 2026-04-11 00:40:41 +03:00
Elian Doran
147ecbccda feat(ckeditor): add copy button for inline code 2026-04-11 00:36:43 +03:00
Elian Doran
be5d2d07bc Easy fixes v1 (#9370) 2026-04-11 00:29:15 +03:00
Elian Doran
adbe8f6c42 feat(options/sync): improve timeout layout 2026-04-11 00:16:41 +03:00
Elian Doran
18aec84be5 chore(client): address requested changes 2026-04-11 00:16:20 +03:00
Elian Doran
5f68958aa7 chore(client): address requested changes 2026-04-10 23:54:27 +03:00
Elian Doran
4787f644a6 feat(options): friendlier zoom factor selection (closes #5444) 2026-04-10 23:38:29 +03:00
Elian Doran
524f8df866 feat(search): add an option to open all results (closes #5376) 2026-04-10 23:36:29 +03:00
Elian Doran
bb381c1349 refactor(highlights): remove unnecessary logic in old layout (closes #5375) 2026-04-10 23:21:00 +03:00
Elian Doran
36c31dac14 refactor(client): remove unused translation 2026-04-10 23:20:35 +03:00
Elian Doran
01b6926054 test(server): sync options with various scenarios 2026-04-10 23:20:24 +03:00
Elian Doran
84cfa0a9f7 fix(server): overriding sync_options affected by the timeScale 2026-04-10 23:17:47 +03:00
Elian Doran
cb83c51632 chore(ai): update system prompt regarding tests 2026-04-10 23:17:09 +03:00
Elian Doran
97256ba291 feat(options): add nicer sync timeout selector (closes #5513) 2026-04-10 23:12:07 +03:00
Elian Doran
d3c596aaa0 feat(highlights): render highlighted equations in new layout 2026-04-10 23:03:30 +03:00
Elian Doran
3d2fa57873 fix(toc): equations sometimes duplicated 2026-04-10 23:01:07 +03:00
Elian Doran
c435050018 refactor(client): deduplicate checks for title/icon editability 2026-04-10 22:36:13 +03:00
Elian Doran
14f761de36 fix(options): icons can be modified 2026-04-10 22:35:06 +03:00
Elian Doran
626438d8f5 fix(options): titles can be modified (closes #5371) 2026-04-10 22:33:39 +03:00
Elian Doran
e29555a89b fix(collections/calendar): displaying deep children (closes #7944) 2026-04-10 22:17:55 +03:00
Elian Doran
05da2d7a50 fix(collections/table): unable to set number cell to zero (closes #6555) 2026-04-10 22:11:10 +03:00
Elian Doran
1124533557 fix(edit-docs): wrong starting note 2026-04-10 22:01:41 +03:00
Elian Doran
878603c7b0 fix(jump_to_note): caret at the end when entering command mode (closes #7942) 2026-04-10 21:17:38 +03:00
Elian Doran
19583cd84a fix(edit-demo): cloned notes lost due to async issue 2026-04-10 21:14:39 +03:00
Elian Doran
9f26d6efdc feat(text): render note icons in autocompletion (closes #8188) 2026-04-10 21:11:49 +03:00
Elian Doran
043e620231 fix(setup): trailing slash affects sync (closes #8045) 2026-04-10 21:09:29 +03:00
Elian Doran
d3dbdd4ceb docs(scripting): typos in "Trilium Demo" note (closes #8230) 2026-04-10 21:02:05 +03:00
Elian Doran
0859165072 docs(scripting): missing step in word count widget (closes #8561) 2026-04-10 20:54:13 +03:00
Elian Doran
ca7ab6105d chore(ai): keep system prompts in sync 2026-04-10 20:48:15 +03:00
Elian Doran
3af2b32783 fix(react): workaround for bootstrap tooltip error (closes #8900) 2026-04-10 20:43:41 +03:00
Elian Doran
8d5df7e888 chore(ai): update system prompt for reusing components and using translations 2026-04-10 20:42:33 +03:00
Elian Doran
126ee27505 feat(search): some error messages were not translated (closes #8850) 2026-04-10 20:38:13 +03:00
Elian Doran
fc2d8452b5 feat(search): clarify error message for full-text search after expressions 2026-04-10 20:31:23 +03:00
Elian Doran
1b8c234f30 feat(search): clarify error message for use of unquoted note 2026-04-10 20:28:37 +03:00
Elian Doran
540b607459 fix(note_map): freezing the app if there are too many notes (closes #8916) 2026-04-10 20:13:00 +03:00
Elian Doran
ee229bd0d7 fix(client): note title doesn't get selected anymore when creating new note (closes #8407) 2026-04-10 20:04:23 +03:00
Elian Doran
439d39d8fa Editing quirks (#9362) 2026-04-10 13:42:03 +03:00
Elian Doran
8c379d03a9 Update apps/client/src/widgets/collections/calendar/index.tsx
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-04-10 13:41:25 +03:00
Elian Doran
ff31104b99 fix(collections/calendar): unnecessary start date set when editing a note in quick edit 2026-04-10 13:31:44 +03:00
Elian Doran
dfe6063929 fix(client): spaced update saving more times than necesssary and causing performance issues 2026-04-10 12:00:08 +03:00
Elian Doran
a4b716f8c7 fix(board): clicking on a URL would open th quick edit panel 2026-04-10 11:38:42 +03:00
Elian Doran
7efc36efef fix(collections): not reacting to changes in reordering 2026-04-10 11:35:32 +03:00
Elian Doran
1554c9907e fix(server): not starting due to dependency update 2026-04-10 11:34:46 +03:00
Elian Doran
df46ddcf60 chore(deps): update pnpm lock 2026-04-10 11:28:18 +03:00
Elian Doran
6fb19d0287 feat: add download button for backups (#9190) 2026-04-10 11:00:04 +03:00
Elian Doran
d702f69415 Update dependency minimatch@3>brace-expansion to v5 (#9307) 2026-04-10 10:41:05 +03:00
Elian Doran
eb81e830a1 Update dependency eslint-linter-browserify to v10.2.0 (#9334) 2026-04-10 10:38:45 +03:00
Elian Doran
a24b9d7a38 fix(web-clipper): Remove trailing / from triliumServerUrl (#9344) 2026-04-10 10:37:14 +03:00
Elian Doran
efeaa1e895 chore(deps): audit fix 2026-04-10 10:29:50 +03:00
Elian Doran
a239eba6ce chore(llm): update backend script to be aware of the changes 2026-04-10 10:24:44 +03:00
Elian Doran
d009582252 feat(script): mark cheerio as deprecated and provide alternative 2026-04-10 10:22:15 +03:00
Elian Doran
fe710823c1 docs(user): add breaking change documentation for axios 2026-04-10 10:15:24 +03:00
Elian Doran
bfe593ae52 feat(server): remove axios 2026-04-10 09:59:51 +03:00
Elian Doran
f653a22557 chore(deps): remove upath 2026-04-10 09:51:49 +03:00
Elian Doran
96e7f22520 Update ai sdk (#9357) 2026-04-10 09:49:30 +03:00
Elian Doran
e6d3d22db7 Update dependency fuse.js to v7.3.0 (#9335) 2026-04-10 09:46:01 +03:00
Elian Doran
1258dedab3 Update dependency marked to v17.0.6 (#9348) 2026-04-10 08:18:26 +03:00
Elian Doran
ec15c7e63e Update dependency eslint-plugin-simple-import-sort to v13 (#9359) 2026-04-10 08:17:44 +03:00
Elian Doran
5037eaf205 Update codemirror themes (#9358) 2026-04-10 08:16:43 +03:00
renovate[bot]
cb706453aa Update dependency eslint-plugin-simple-import-sort to v13 2026-04-10 02:14:33 +00:00
renovate[bot]
772ebbf929 Update codemirror themes 2026-04-10 02:13:55 +00:00
renovate[bot]
60e1aca3b1 Update ai sdk 2026-04-10 02:13:17 +00:00
Tomas Adamek
49476d72fc Update apps/server/src/services/llm/tools/hierarchy_tools.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-04-09 20:50:59 +02:00
renovate[bot]
31eaa4181d Update dependency fuse.js to v7.3.0 2026-04-09 15:03:57 +00:00
Lorinc936
9e701645d5 Merge branch 'TriliumNext:main' into main 2026-04-09 11:23:49 +00:00
renovate[bot]
0fa121cdf2 fix(deps): update dependency marked to v17.0.6 2026-04-09 01:14:36 +00:00
renovate[bot]
2316f38978 chore(deps): update dependency minimatch@3>brace-expansion to v5 2026-04-08 21:14:49 +00:00
renovate[bot]
b65bf12247 fix(deps): update dependency eslint-linter-browserify to v10.2.0 2026-04-08 21:13:29 +00:00
Bart Visscher
55291d43a6 fix(web-clipper): Remove trailing / from triliumServerUrl 2026-04-08 16:38:17 +02:00
Tomáš Adámek
01bee95833 fix: extract finalizeStream helper, re-throw non-AbortError exceptions
- Extract duplicated cleanup logic into shared finalizeStream() function
- Add else branch to re-throw non-AbortError exceptions instead of swallowing them
2026-04-08 16:17:37 +02:00
Tomáš Adámek
5938fa6ffb fix: address review — shared PROTECTED_SYSTEM_NOTES, protection checks, soft delete description
- Move PROTECTED_SYSTEM_NOTES to helpers.ts for shared use
- move_note: check against full system notes set, add protected parent check
- clone_note: add source note protection + protected parent checks
- delete_note: fix description to say 'soft delete' (recoverable)
2026-04-08 16:08:02 +02:00
Tomáš Adámek
dc40f6b530 feat(llm): add stop generation button
Allow users to stop an in-progress LLM generation by aborting the
SSE connection. The send button transforms into a red stop button
during streaming.

- AbortController passed to fetch() signal for stream cancellation
- On abort, partial content is finalized and saved as a message
- Stop button replaces send button during streaming with danger color
- Button is always clickable during streaming (not disabled)
2026-04-07 13:28:23 +02:00
Tomáš Adámek
d771454aa5 feat(llm): add note mutation tools (rename, delete, move, clone)
Add four new LLM tools for note management:
- rename_note: Change the title of an existing note
- delete_note: Delete a note with system note protection
- move_note: Move a note to a new parent using branch service
- clone_note: Clone a note to an additional parent

All mutation tools are marked with mutates: true for the tool
approval system. Protected and system notes are guarded against
modification.
2026-04-07 13:19:16 +02:00
Adorian Doran
d61e399c67 style/about dialog: add an animation to the donate button 2026-03-31 21:48:14 +03:00
Adorian Doran
601f246bdc style/about dialog: move the brief history tooltip from the contributor name link to the role string 2026-03-31 21:29:32 +03:00
Adorian Doran
ce4883ea39 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/about-dialog-overhaul 2026-03-31 21:12:12 +03:00
Lorinc936
f8c59a1730 Merge branch 'main' into main 2026-03-28 17:26:36 +00:00
Adorian Doran
2432bb11c7 style/about dialog: allow long directory paths to be wrapped 2026-03-27 19:13:05 +02:00
Adorian Doran
87fb568995 style/about dialog: customize the style of tooltips used for brief history 2026-03-27 18:42:26 +02:00
Adorian Doran
355209769f style/tooltips: use higher contrast on the light theme 2026-03-27 18:30:24 +02:00
Adorian Doran
72cc5cc5ea style/about dialog: update the donate button link on light theme 2026-03-27 18:23:05 +02:00
Adorian Doran
d4552fa075 client/about dialog: refactor 2026-03-27 18:08:36 +02:00
Adorian Doran
8dafd918ed Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/about-dialog-overhaul 2026-03-27 17:29:16 +02:00
Lorinc936
c833c3591f docs: documentation for downloading backups 2026-03-26 22:09:01 +01:00
Lorinc936
ccbd962e0b Backend for backup download button 2026-03-26 21:57:53 +01:00
Lorinc936
966d2afe69 Feat: backup download frontend and locales 2026-03-26 21:36:54 +01:00
Adorian Doran
0386e7dd4f style/about dialog: add a clue about contributor links with a tooltip 2026-03-25 11:41:50 +02:00
Adorian Doran
573ab077ac client/about dialog: add a delay for contributor link hover event 2026-03-25 11:30:50 +02:00
Adorian Doran
496405d922 client/about dialog: add custom tooltips 2026-03-25 11:19:54 +02:00
Adorian Doran
591b3a121f style/about dialog: add icon animation 2026-03-25 01:41:00 +02:00
Adorian Doran
a81dae2ad0 client/about dialog: allow toggling to the classic icon 2026-03-25 01:01:16 +02:00
Adorian Doran
d370ee2d99 style/about dialog: select the icon using CSS class names 2026-03-25 00:28:38 +02:00
Adorian Doran
a6b1af6a16 style/about dialog: improve appearance 2026-03-24 23:57:44 +02:00
Adorian Doran
2d21627aff client/about dialog: refactor 2026-03-24 23:20:20 +02:00
Adorian Doran
0fb3f98136 client/about dialog: add some tooltips 2026-03-24 22:55:55 +02:00
Adorian Doran
3889d7a5be client/about dialog: add a license link 2026-03-24 21:18:13 +02:00
Adorian Doran
9d3c997743 style/about dialog: improve appearance 2026-03-24 20:18:10 +02:00
Adorian Doran
8c86f9fcea client/about dialog: fix unwanted array mutation 2026-03-24 19:49:44 +02:00
Adorian Doran
1c74a019ab style/about dialog: create a card-like table style 2026-03-24 19:32:14 +02:00
Adorian Doran
11a46f0f58 client/about dialog: reduce the contributor list length to 10 2026-03-24 18:54:48 +02:00
Adorian Doran
0a0157a1ef style/about dialog: improve appearance 2026-03-23 11:41:13 +02:00
Adorian Doran
680fb4122c Merge branch 'feat/about-dialog-overhaul' of https://github.com/TriliumNext/Trilium into feat/about-dialog-overhaul 2026-03-23 10:36:36 +02:00
Adorian Doran
3502324389 client/about dialog: add keys to the contributor list 2026-03-23 10:36:32 +02:00
Adorian Doran
97e52e53bf Update scripts/update-contributor-list.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-03-23 10:34:03 +02:00
Adorian Doran
dfd68ca8a3 scripts/update contributor list: update indentation size 2026-03-23 10:07:47 +02:00
Adorian Doran
fc6bdb56df client/about dialog: refactor 2026-03-23 10:06:53 +02:00
Adorian Doran
129f1ccd8d client/about dialog: add a full list link, improve layout 2026-03-23 09:52:04 +02:00
Adorian Doran
f6e92c411e client/about dialog: show the contributor list 2026-03-23 09:38:23 +02:00
Adorian Doran
db98884ae4 scripts/update contributor list: refactor 2026-03-23 09:00:30 +02:00
Adorian Doran
a7a1e5c480 scripts/update contributor list: optimize 2026-03-23 08:53:52 +02:00
Adorian Doran
b32dd949d7 scripts/update contributor list: add full name support for pinned contributors 2026-03-22 22:35:59 +02:00
Adorian Doran
015e50cdb8 scripts/update contributor list: refactor 2026-03-22 22:11:35 +02:00
Adorian Doran
f00e051e75 scripts/update contributor list: add completion feedback 2026-03-22 20:05:47 +02:00
Adorian Doran
e7adf08854 scripts/update contributor list: add role for pinned contributors 2026-03-22 19:55:46 +02:00
Adorian Doran
7646d8be07 client: update the contributor list via a script, persist the list into the repo 2026-03-22 19:37:22 +02:00
Adorian Doran
978e02350c client: revert the Vite build script 2026-03-22 19:14:44 +02:00
Adorian Doran
b4d0af6eb2 client/modals: make the title optional 2026-03-22 18:55:46 +02:00
Adorian Doran
555d997e34 client/about dialog: show the dialog only after the required information is ready 2026-03-22 18:53:23 +02:00
Adorian Doran
1b9124422a client/about dialog: switch to boxicons 2026-03-22 18:40:26 +02:00
Adorian Doran
8f23874628 client/about dialog: add an indication for the nightly version, use SVG icons 2026-03-22 18:17:13 +02:00
Adorian Doran
75da044bbe client/about dialog: add a link for the build revision 2026-03-22 17:21:20 +02:00
Adorian Doran
19dfbaacce client/about dialog: improve, add GitHub and donate buttons 2026-03-22 11:14:16 +02:00
Adorian Doran
31578521cf client/about dialog: create a new UI 2026-03-22 10:27:27 +02:00
Adorian Doran
8d5e82fa5e client/contributor list: refine filtering 2026-03-22 10:25:35 +02:00
perfectra1n
bd25ae77fc docs(search): rewrite benchmark doc for clarity
Consolidated from 12 sections to 4. Leads with the e2e results a
reviewer cares about, follows with scaling data, then lists what
changed and known limitations. Removed redundant tables and
internal-only details.
2026-03-21 14:06:13 -07:00
perfectra1n
9aec8be1c0 docs(search): add full search + fuzzy benchmark sections
Adds end-to-end full search (fastSearch=false) comparison tables
for both fuzzy ON and OFF, plus long queries and realistic typo
recovery benchmarks. Full search multi-token shows 45-65% improvement.
2026-03-21 14:06:10 -07:00
perfectra1n
90ac727250 docs(search): update benchmark comparison with final optimized numbers
All numbers re-measured on the same machine/session after the scoring,
highlighting, and tree walk optimizations. Multi-token autocomplete
now shows 50-70% improvement over main.
2026-03-21 14:06:06 -07:00
perfectra1n
5bc9840825 fix(search): restore toLowerCase in fuzzyMatchWordWithResult
The function has multiple callers (not just smartMatch) so it must
normalize inputs itself. Removing toLowerCase broke fuzzy matching
for the two-phase search path.
2026-03-21 14:06:03 -07:00
Adorian Doran
0525114036 Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/about-dialog-overhaul 2026-03-21 20:29:01 +02:00
Adorian Doran
fb691f6ade client/contributor list: add extra bot exclusion 2026-03-21 20:28:36 +02:00
Adorian Doran
92f1048911 client/contributor list: add support for honorific contributors 2026-03-21 20:19:17 +02:00
Adorian Doran
6481b90daf client: retrieve the contributor list 2026-03-21 19:59:19 +02:00
Adorian Doran
4d753398c1 refactor: normalize to double quotes 2026-03-21 18:30:33 +02:00
Adorian Doran
f01bebedc9 client: create a Vite plugin to generate a contributor list JSON at the build time 2026-03-21 18:28:35 +02:00
perfectra1n
48dd93b94b revert: remove FTS5 content search (no measured end-to-end improvement)
FTS5 query was 32x faster in isolation, but the content scan is only
1-7% of total search time. The JS pipeline (scoring, snippets,
highlighting, tree walk) dominates. The in-memory optimizations in
this PR provide the real gains.

Removes: migration, fts_index service, event wiring, UI option,
integration test. Keeps all in-memory performance optimizations.
2026-03-20 12:50:40 -07:00
perfectra1n
ac231374f6 perf(search): optimize scoring, highlighting, and tree walk
- Remove redundant toLowerCase() before normalizeSearchText() in
  search_result.ts (normalizeSearchText already lowercases)
- Pre-normalize tokens once in addScoreForStrings instead of per-chunk
- Skip edit distance computation entirely when fuzzy matching is
disabled
- Move removeDiacritic() outside the regex while-loop in highlighting
- Cache normalized parent titles per search execution in
note_flat_text.ts
- Use Set for token lookup in searchPathTowardsRoot (O(1) vs O(n))
- Remove redundant toLowerCase in fuzzyMatchWordWithResult (inputs
  from smartMatch are already normalized)
2026-03-20 12:12:08 -07:00
perfectra1n
87fc4e1281 docs(search): add FTS5 benchmark results to performance comparison
Adds real SQLite benchmarks showing FTS5 is 15-33x faster for the
raw content query, though end-to-end improvement is masked by JS
pipeline overhead (scoring, snippets, path walking).
2026-03-20 12:05:08 -07:00
perfectra1n
8fd2cb39c1 fix(search): fix busy connection error in FTS5 index build
Collect rows before inserting — iterateRows() holds an open cursor
that conflicts with writes on the same connection.
2026-03-20 12:05:03 -07:00
perfectra1n
24a01aefe2 feat(search): add user option to enable/disable FTS5 content index 2026-03-20 11:54:42 -07:00
perfectra1n
06fb9c0a6b test(search): add FTS5 integration test 2026-03-20 11:54:39 -07:00
perfectra1n
bc0942180e feat(search): use FTS5 index in NoteContentFulltextExp with sequential fallback
For operators =, !=, and *=*, the search now tries the FTS5 index first
via searchViaFts(). If FTS is unavailable or fails, it falls back to the
original sequential scan. The flat text attribute search is extracted
into its own searchFlatTextAttributes() method and runs after both
paths.
2026-03-20 11:54:36 -07:00
perfectra1n
f358563c27 feat(search): wire FTS index updates to note content changes 2026-03-20 11:54:24 -07:00
perfectra1n
dcaebeea83 feat(search): add FTS5 index service for content search 2026-03-20 11:54:21 -07:00
perfectra1n
ac13af73c5 feat(search): add FTS5 migration for content search index 2026-03-20 11:54:18 -07:00
perfectra1n
ba529d2721 feat(tests): implement search benchmark test... 2026-03-20 11:26:19 -07:00
perfectra1n
f23a7b4842 feat(settings): also allow for fuzzy searching to just be disabled 2026-03-18 11:43:28 -07:00
perfectra1n
5718631889 fix(search): resolve issue with autocomplete with search performance enhancements 2026-03-18 09:46:24 -07:00
Jon Fuller
da3d71d21e Merge branch 'main' into feat/search-perf-take1 2026-03-12 14:57:03 -07:00
perfectra1n
b533546236 fix(search): fix flying bracket 2026-03-12 14:35:47 -07:00
perfectra1n
1c148f407c feat(search): don't toss the entire index after each note change 2026-03-12 14:35:17 -07:00
perfectra1n
9403efa9a1 feat(search): add even some more robust tests 2026-03-12 14:21:36 -07:00
perfectra1n
6a06fc7995 feat(search): get rid of candidate capping 2026-03-12 14:02:23 -07:00
perfectra1n
77733ce205 feat(search): try to rice performance some more 2026-03-11 21:11:55 -07:00
perfectra1n
585b6ccd3e feat(search): try to improve performance 2026-03-11 19:05:44 -07:00
459 changed files with 27049 additions and 14035 deletions

View File

@@ -0,0 +1,7 @@
{
"permissions": {
"allow": [
"Bash(gh issue *)"
]
}
}

View File

@@ -66,12 +66,20 @@ runs:
if: ${{ inputs.os == 'linux' }}
shell: ${{ inputs.shell }}
run: |
sudo apt-get update && sudo apt-get install rpm flatpak-builder elfutils
sudo apt-get update && sudo apt-get install rpm flatpak-builder elfutils libfuse2
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
FLATPAK_ARCH=$(if [[ ${{ inputs.arch }} = 'arm64' ]]; then echo 'aarch64'; else echo 'x86_64'; fi)
FLATPAK_VERSION='24.08'
flatpak install --user --no-deps --arch $FLATPAK_ARCH --assumeyes runtime/org.freedesktop.Platform/$FLATPAK_ARCH/$FLATPAK_VERSION runtime/org.freedesktop.Sdk/$FLATPAK_ARCH/$FLATPAK_VERSION org.electronjs.Electron2.BaseApp/$FLATPAK_ARCH/$FLATPAK_VERSION
- name: Install appimagetool
if: ${{ inputs.os == 'linux' }}
shell: ${{ inputs.shell }}
run: |
APPIMAGETOOL_ARCH=$(if [[ ${{ inputs.arch }} = 'arm64' ]]; then echo 'aarch64'; else echo 'x86_64'; fi)
wget -q "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${APPIMAGETOOL_ARCH}.AppImage" -O /usr/local/bin/appimagetool
chmod +x /usr/local/bin/appimagetool
- name: Update build info
shell: ${{ inputs.shell }}
run: pnpm run chore:update-build-info
@@ -90,6 +98,14 @@ runs:
TARGET_ARCH: ${{ inputs.arch }}
run: pnpm run --filter desktop electron-forge:make --arch=${{ inputs.arch }} --platform=${{ inputs.forge_platform }}
- name: Build AppImage
if: ${{ inputs.os == 'linux' }}
shell: ${{ inputs.shell }}
env:
TRILIUM_ARTIFACT_NAME_HINT: TriliumNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}
APPIMAGE_EXTRACT_AND_RUN: "1"
run: bash apps/desktop/scripts/build-appimage.sh ${{ inputs.arch }}
# Add DMG signing step
- name: Sign DMG
if: inputs.os == 'macos'

View File

@@ -8,7 +8,7 @@ inputs:
runs:
using: composite
steps:
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:

View File

@@ -55,7 +55,7 @@ runs:
# Post deployment URL as PR comment
- name: Comment PR with Preview URL
if: github.event_name == 'pull_request'
uses: actions/github-script@v8
uses: actions/github-script@v9
env:
COMMENT_BODY: ${{ inputs.comment_body }}
PRODUCTION_URL: ${{ inputs.production_url }}

View File

@@ -1,5 +1,7 @@
# Trilium Notes - AI Coding Agent Instructions
> **Note**: When updating this file, also update `CLAUDE.md` in the repository root to keep both AI coding assistants in sync.
## Project Overview
Trilium Notes is a hierarchical note-taking application with advanced features like synchronization, scripting, and rich text editing. Built as a TypeScript monorepo using pnpm, it implements a three-layer caching architecture (Becca/Froca/Shaca) with a widget-based UI system and supports extensive user scripting capabilities.
@@ -115,6 +117,15 @@ class MyNoteWidget extends NoteContextAwareWidget {
**Important**: Widgets use jQuery (`this.$widget`) for DOM manipulation. Don't mix React patterns here.
### Reusable Preact Components
Common UI components are available in `apps/client/src/widgets/react/` — prefer reusing these over creating custom implementations:
- `NoItems` - Empty state placeholder with icon and message (use for "no results", "too many items", error states)
- `ActionButton` - Consistent button styling with icon support
- `FormTextBox` - Text input with validation and controlled input handling
- `Slider` - Range slider with label
- `Checkbox`, `RadioButton` - Form controls
- `CollapsibleSection` - Expandable content sections
## Development Workflow
### Running & Testing
@@ -322,8 +333,26 @@ Trilium provides powerful user scripting capabilities:
- When a translated string contains **interpolated components** (e.g. links, note references) whose order may vary across languages, use `<Trans>` from `react-i18next` instead of `t()`. This lets translators reorder components freely (e.g. `"<Note/> in <Parent/>"` vs `"in <Parent/>, <Note/>"`)
- When adding a new locale, follow the step-by-step guide in `docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translations/Adding a new locale.md`
#### Client vs Server Translation Usage
- **Client-side**: `import { t } from "../services/i18n"` with keys in `apps/client/src/translations/en/translation.json`
- **Server-side**: `import { t } from "i18next"` with keys in `apps/server/src/assets/translations/en/server.json`
- **Interpolation**: Use `{{variable}}` for normal interpolation; use `{{- variable}}` (with hyphen) for **unescaped** interpolation when the value contains special characters like quotes that shouldn't be HTML-escaped
### Storing User Preferences
- **Do not use `localStorage`** for user preferences — Trilium has a synced options system that persists across devices
- To add a new user preference:
1. Add the option type to `OptionDefinitions` in `packages/commons/src/lib/options_interface.ts`
2. Add a default value in `apps/server/src/services/options_init.ts` in the `defaultOptions` array
3. **Whitelist the option** in `apps/server/src/routes/api/options.ts` by adding it to `ALLOWED_OPTIONS` (required for client updates)
4. Use `useTriliumOption("optionName")` hook in React components to read/write the option
- Available hooks: `useTriliumOption` (string), `useTriliumOptionBool`, `useTriliumOptionInt`, `useTriliumOptionJson`
- See `docs/Developer Guide/Developer Guide/Concepts/Options/Creating a new option.md` for detailed documentation
## Testing Conventions
- **Write concise tests**: Group related assertions together in a single test case rather than creating many one-shot tests
- **Extract and test business logic**: When adding pure business logic (e.g., data transformations, migrations, validations), extract it as a separate function and always write unit tests for it
```typescript
// ETAPI test pattern
describe("etapi/feature", () => {

View File

@@ -0,0 +1,44 @@
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize, ready_for_review, reopened]
# Optional: Only run on specific file changes
# paths:
# - "src/**/*.ts"
# - "src/**/*.tsx"
# - "src/**/*.js"
# - "src/**/*.jsx"
jobs:
claude-review:
# Optional: Filter by PR author
# if: |
# github.event.pull_request.user.login == 'external-contributor' ||
# github.event.pull_request.user.login == 'new-developer' ||
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
issues: read
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run Claude Code Review
id: claude-review
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
plugin_marketplaces: 'https://github.com/anthropics/claude-code.git'
plugins: 'code-review@claude-code-plugins'
prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}'
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
# or https://code.claude.com/docs/en/cli-reference for available options

50
.github/workflows/claude.yml vendored Normal file
View File

@@ -0,0 +1,50 @@
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
jobs:
claude:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
actions: read # Required for Claude to read CI results on PRs
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# This is an optional setting that allows Claude to read CI results on PRs
additional_permissions: |
actions: read
# Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
# prompt: 'Update the pull request description to include a summary of changes.'
# Optional: Add claude_args to customize behavior and configuration
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
# or https://code.claude.com/docs/en/cli-reference for available options
# claude_args: '--allowed-tools Bash(gh pr *)'

View File

@@ -45,7 +45,7 @@ jobs:
uses: actions/checkout@v6
- name: Setup pnpm
uses: pnpm/action-setup@v5
uses: pnpm/action-setup@v6
- name: Setup Node.js
uses: actions/setup-node@v6

View File

@@ -30,7 +30,7 @@ jobs:
- name: Checkout the repository
uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
@@ -78,7 +78,7 @@ jobs:
- test_dev
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Update build info
@@ -113,7 +113,7 @@ jobs:
- name: Checkout the repository
uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Install dependencies
run: pnpm install --frozen-lockfile

View File

@@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:

View File

@@ -42,7 +42,7 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
@@ -142,7 +142,7 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:

View File

@@ -42,7 +42,7 @@ jobs:
shell: bash
forge_platform: linux
- name: windows
image: win-signing
image: windows-latest
shell: cmd
forge_platform: win32
# Exclude ARM64 Linux from default matrix to use native runner
@@ -61,7 +61,7 @@ jobs:
runs-on: ${{ matrix.os.image }}
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
@@ -88,12 +88,10 @@ jobs:
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
WINDOWS_SIGN_EXECUTABLE: ${{ vars.WINDOWS_SIGN_EXECUTABLE }}
WINDOWS_SIGN_ERROR_LOG: ${{ vars.WINDOWS_SIGN_ERROR_LOG }}
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }}
- name: Publish release
uses: softprops/action-gh-release@v2.6.1
uses: softprops/action-gh-release@v3.0.0
if: ${{ github.event_name != 'pull_request' }}
with:
make_latest: false
@@ -134,7 +132,7 @@ jobs:
arch: ${{ matrix.arch }}
- name: Publish release
uses: softprops/action-gh-release@v2.6.1
uses: softprops/action-gh-release@v3.0.0
if: ${{ github.event_name != 'pull_request' }}
with:
make_latest: false

View File

@@ -38,7 +38,7 @@ jobs:
filter: tree:0
fetch-depth: 0
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v6
with:
node-version: 24

View File

@@ -17,7 +17,7 @@ jobs:
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
@@ -66,7 +66,7 @@ jobs:
runs-on: ${{ matrix.os.image }}
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
@@ -150,7 +150,7 @@ jobs:
path: upload
- name: Publish stable release
uses: softprops/action-gh-release@v2.6.1
uses: softprops/action-gh-release@v3.0.0
with:
draft: false
body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md

View File

@@ -32,7 +32,7 @@ jobs:
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:
@@ -58,7 +58,7 @@ jobs:
compression-level: 0
- name: Release web clipper extension
uses: softprops/action-gh-release@v2.6.1
uses: softprops/action-gh-release@v3.0.0
if: ${{ startsWith(github.ref, 'refs/tags/web-clipper-v') }}
with:
draft: false

View File

@@ -26,7 +26,7 @@ jobs:
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: pnpm/action-setup@v6
- name: Set up node & dependencies
uses: actions/setup-node@v6
with:

118
.mailmap
View File

@@ -1,2 +1,116 @@
zadam <adam.zivner@gmail.com>
zadam <zadam.apps@gmail.com>
# Format: Canonical Name <canonical-email> <commit-email>
# Merges aliases so `git shortlog`, `git log --use-mailmap`, etc. group commits per person.
# Core maintainers
zadam <zadam.apps@gmail.com>
zadam <zadam.apps@gmail.com> <adam.zivner@gmail.com>
zadam <zadam.apps@gmail.com> <adam.zivner@gemalto.com>
Elian Doran <contact@eliandoran.me>
Elian Doran <contact@eliandoran.me> <online@eliandoran.me>
Adorian Doran <adorian@esevo.ro>
Adorian Doran <adorian@esevo.ro> <adoriandoran@gmail.com>
# Contributors with multiple emails / name variants
Panagiotis Papadopoulos <pano_90@gmx.net> <102623907+pano9000@users.noreply.github.com>
Jon Fuller <jonfuller2012@gmail.com>
SiriusXT <1160925501@qq.com>
SiriusXT <1160925501@qq.com> <11609255001@qq.com>
SiriusXT <1160925501@qq.com> <37627919+SiriusXT@users.noreply.github.com>
JYC333 <22962980+JYC333@users.noreply.github.com>
JYC333 <22962980+JYC333@users.noreply.github.com> <yuchuanjin333@gmail.com>
Nriver <6752679+Nriver@users.noreply.github.com>
Francis C. <normitomf@gmail.com>
Francis C. <normitomf@gmail.com> <francistw@users.noreply.github.com>
Thomas Frei <7283497+thfrei@users.noreply.github.com>
hasecilu <hasecilu@tuta.io>
meinzzzz <lukas.geiselhart35@gmail.com>
FliegendeWurst <arne.keller@posteo.de>
FliegendeWurst <arne.keller@posteo.de> <2012gdwu@web.de>
FliegendeWurst <arne.keller@posteo.de> <2012gdwu+github@posteo.de>
MeIchthys <github.com@meichthys.com>
MeIchthys <github.com@meichthys.com> <10717998+meichthys@users.noreply.github.com>
Marcel Wiechmann <marcel.wiechmann@gmail.com>
Marcel Wiechmann <marcel.wiechmann@gmail.com> <github.y3y0w@sl.wiechmann.at>
Tomas Adamek <ad.tomik@seznam.cz>
Tomas Adamek <ad.tomik@seznam.cz> <50672285+Kureii@users.noreply.github.com>
soulsands <407221377@qq.com>
chesspro13 <chesspro13@gmail.com>
sigaloid <69441971+sigaloid@users.noreply.github.com>
Marek Lewandowski <m.lewandowski@cksource.com>
Marek Lewandowski <m.lewandowski@cksource.com> <code@mlewandowski.com>
Marek Lewandowski <m.lewandowski@cksource.com> <mlewand@users.noreply.github.com>
lzinga <lucas.elzinga@outlook.com>
lzinga <lucas.elzinga@outlook.com> <lzinga@users.noreply.github.com>
Sukant Gujar <sukantgujar@yahoo.com>
Matt Wilkie <maphew@gmail.com>
Matt Wilkie <maphew@gmail.com> <matt.wilkie@yukon.ca>
Andreas Haan <andreas.mobil1@googlemail.com>
Potjoe-97 <42873357+Potjoe-97@users.noreply.github.com>
Potjoe-97 <42873357+Potjoe-97@users.noreply.github.com> <giann@LAPTOPT490-GF>
Alex Pietsch <54153428+alexpietsch@users.noreply.github.com>
Laurent Cozic <laurent@cozic.net>
Laurent Cozic <laurent@cozic.net> <laurent22@users.noreply.github.com>
Zexin Yuan <git@yzx9.xyz>
Zexin Yuan <git@yzx9.xyz> <yuan.zx@outlook.com>
hulmgulm <hulmgulm@users.noreply.github.com>
hulmgulm <hulmgulm@users.noreply.github.com> <12165268+hulmgulm@users.noreply.github.com>
hulmgulm <hulmgulm@users.noreply.github.com> <github@hulmgulm.de>
Jules Bertholet <jules.bertholet@gmail.com>
Charles Dagenais <dagenais.charles@gmail.com>
Giulia Ye <yg97.cs@gmail.com>
baddate <37013819+baddate@users.noreply.github.com>
DerVogel101 <128903814+DerVogel101@users.noreply.github.com>
DerVogel101 <128903814+DerVogel101@users.noreply.github.com> <jan.irmer@outlook.de>
Marcello Fuschi <marcellofuschi1@gmail.com>
Jiahao Lee <lijiahao34@live.com>
Dmitry Matveyev <dev@greenfork.me>
Dmitry Matveyev <dev@greenfork.me> <info@greenfork.me>
Grant Zhu <a1065135230@gmail.com>
Sylvain Pasche <sylvain.pasche@gmail.com>
Sylvain Pasche <sylvain.pasche@gmail.com> <spasche@spasche.net>
mm21 <8033134+mm21@users.noreply.github.com>
mm21 <8033134+mm21@users.noreply.github.com> <mm21.dev@gmail.com>
BeatLink <git@beatlink.simplelogin.com>
BeatLink <git@beatlink.simplelogin.com> <github@beatlink.simplelogin.com>
Florian Meißner <161936+Mystler@users.noreply.github.com>
Florian Meißner <161936+Mystler@users.noreply.github.com> <developer@mystler.eu>

2
.nvmrc
View File

@@ -1 +1 @@
24.14.1
24.15.0

View File

@@ -2,6 +2,8 @@
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
> **Note**: When updating this file, also update `.github/copilot-instructions.md` to keep both AI coding assistants in sync.
## Overview
Trilium Notes is a hierarchical note-taking application with advanced features like synchronization, scripting, and rich text editing. It's built as a TypeScript monorepo using pnpm, with multiple applications and shared packages.
@@ -66,6 +68,15 @@ Frontend uses a widget system (`apps/client/src/widgets/`):
- `RightPanelWidget` - Widgets displayed in the right panel
- Type-specific widgets in `type_widgets/` directory
#### Reusable Preact Components
Common UI components are available in `apps/client/src/widgets/react/` — prefer reusing these over creating custom implementations:
- `NoItems` - Empty state placeholder with icon and message (use for "no results", "too many items", error states)
- `ActionButton` - Consistent button styling with icon support
- `FormTextBox` - Text input with validation and controlled input handling
- `Slider` - Range slider with label
- `Checkbox`, `RadioButton` - Form controls
- `CollapsibleSection` - Expandable content sections
#### API Architecture
- **Internal API**: REST endpoints in `apps/server/src/routes/api/`
- **ETAPI**: External API for third-party integrations (`apps/server/src/etapi/`)
@@ -108,6 +119,8 @@ Trilium supports multiple note types, each with specialized widgets:
- Client tests can run in parallel
- E2E tests use Playwright for both server and desktop apps
- Build validation tests check artifact integrity
- **Write concise tests**: Group related assertions together in a single test case rather than creating many one-shot tests
- **Extract and test business logic**: When adding pure business logic (e.g., data transformations, migrations, validations), extract it as a separate function and always write unit tests for it
### Scripting System
Trilium provides powerful user scripting capabilities:
@@ -124,6 +137,11 @@ Trilium provides powerful user scripting capabilities:
- When adding a new locale, follow the step-by-step guide in `docs/Developer Guide/Developer Guide/Concepts/Internationalisation Translations/Adding a new locale.md`
- **Server-side translations** (e.g. hidden subtree titles) go in `apps/server/src/assets/translations/en/server.json`, not in the client `translation.json`
#### Client vs Server Translation Usage
- **Client-side**: `import { t } from "../services/i18n"` with keys in `apps/client/src/translations/en/translation.json`
- **Server-side**: `import { t } from "i18next"` with keys in `apps/server/src/assets/translations/en/server.json`
- **Interpolation**: Use `{{variable}}` for normal interpolation; use `{{- variable}}` (with hyphen) for **unescaped** interpolation when the value contains special characters like quotes that shouldn't be HTML-escaped
### Electron Desktop App
- Desktop entry point: `apps/desktop/src/main.ts`, window management: `apps/server/src/services/window.ts`
- IPC communication: use `electron.ipcMain.on(channel, handler)` on server side, `electron.ipcRenderer.send(channel, data)` on client side
@@ -139,6 +157,17 @@ Trilium provides powerful user scripting capabilities:
- **Do not use `crypto.randomUUID()`** or other Web Crypto APIs that require secure contexts - Trilium can run over HTTP, not just HTTPS
- Use `randomString()` from `apps/client/src/services/utils.ts` for generating IDs instead
### Storing User Preferences
- **Do not use `localStorage`** for user preferences — Trilium has a synced options system that persists across devices
- To add a new user preference:
1. Add the option type to `OptionDefinitions` in `packages/commons/src/lib/options_interface.ts`
2. Add a default value in `apps/server/src/services/options_init.ts` in the `defaultOptions` array
3. **Whitelist the option** in `apps/server/src/routes/api/options.ts` by adding it to the `ALLOWED_OPTIONS` array — **without this, the API will reject changes with "Option 'X' is not allowed to be changed"**
4. If the option should be user-editable in the UI, add a control in the appropriate settings component (e.g., `apps/client/src/widgets/type_widgets/options/other.tsx`) and a translation key in `apps/client/src/translations/en/translation.json`
5. Use `useTriliumOption("optionName")` hook in React components to read/write the option
- Available hooks: `useTriliumOption` (string), `useTriliumOptionBool`, `useTriliumOptionInt`, `useTriliumOptionJson`
- See `docs/Developer Guide/Developer Guide/Concepts/Options/Creating a new option.md` for detailed documentation
### Shared Types Policy
- Types shared between client and server belong in `@triliumnext/commons` (`packages/commons/src/lib/`)
- Import shared types directly from `@triliumnext/commons` - do not re-export them from app-specific modules

View File

@@ -16,11 +16,11 @@
"license": "AGPL-3.0-only",
"packageManager": "pnpm@10.33.0",
"devDependencies": {
"@redocly/cli": "2.25.4",
"@redocly/cli": "2.28.0",
"archiver": "7.0.1",
"fs-extra": "11.3.4",
"js-yaml": "4.1.1",
"typedoc": "0.28.18",
"typedoc": "0.28.19",
"typedoc-plugin-missing-exports": "4.1.3"
}
}

View File

@@ -34,25 +34,26 @@
"@triliumnext/highlightjs": "workspace:*",
"@triliumnext/share-theme": "workspace:*",
"@triliumnext/split.js": "workspace:*",
"@univerjs/preset-sheets-conditional-formatting": "0.20.0",
"@univerjs/preset-sheets-core": "0.20.0",
"@univerjs/preset-sheets-data-validation": "0.20.0",
"@univerjs/preset-sheets-filter": "0.20.0",
"@univerjs/preset-sheets-find-replace": "0.20.0",
"@univerjs/preset-sheets-note": "0.20.0",
"@univerjs/preset-sheets-sort": "0.20.0",
"@univerjs/presets": "0.20.0",
"@zumer/snapdom": "2.7.0",
"@univerjs/preset-sheets-conditional-formatting": "0.20.1",
"@univerjs/preset-sheets-core": "0.20.1",
"@univerjs/preset-sheets-data-validation": "0.20.1",
"@univerjs/preset-sheets-filter": "0.20.1",
"@univerjs/preset-sheets-find-replace": "0.20.1",
"@univerjs/preset-sheets-note": "0.20.1",
"@univerjs/preset-sheets-sort": "0.20.1",
"@univerjs/presets": "0.20.1",
"@zumer/snapdom": "2.8.0",
"autocomplete.js": "0.38.1",
"bootstrap": "5.3.8",
"boxicons": "2.1.4",
"clsx": "2.1.1",
"color": "5.0.3",
"debounce": "3.0.0",
"dompurify": "3.3.3",
"dompurify": "3.4.0",
"draggabilly": "3.0.0",
"force-graph": "1.51.2",
"i18next": "26.0.3",
"force-graph": "1.51.4",
"htmldiff-js": "1.0.5",
"i18next": "26.0.4",
"i18next-http-backend": "3.0.4",
"jquery": "4.0.0",
"jquery.fancytree": "2.38.5",
@@ -61,14 +62,14 @@
"leaflet": "1.9.4",
"leaflet-gpx": "2.2.0",
"mark.js": "8.11.1",
"marked": "17.0.5",
"marked": "18.0.0",
"mermaid": "11.14.0",
"mind-elixir": "5.10.0",
"panzoom": "9.4.4",
"preact": "10.29.1",
"react-i18next": "17.0.2",
"react-i18next": "17.0.3",
"react-window": "2.2.7",
"reveal.js": "6.0.0",
"reveal.js": "6.0.1",
"rrule": "2.8.1",
"svg-pan-zoom": "3.6.2",
"tabulator-tables": "6.4.0",
@@ -76,7 +77,7 @@
},
"devDependencies": {
"@ckeditor/ckeditor5-inspector": "5.0.0",
"@prefresh/vite": "2.4.12",
"@prefresh/vite": "3.0.0",
"@types/bootstrap": "5.2.10",
"@types/jquery": "4.0.0",
"@types/leaflet": "1.9.21",
@@ -84,7 +85,7 @@
"@types/mark.js": "8.11.12",
"@types/tabulator-tables": "6.3.1",
"copy-webpack-plugin": "14.0.0",
"happy-dom": "20.8.9",
"happy-dom": "20.9.0",
"lightningcss": "1.32.0",
"script-loader": "0.7.2",
"vite-plugin-static-copy": "4.0.1"

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 0 100 100" enable-background="new 0 0 100 100" xml:space="preserve"><path d="M63.966,45.043c0.008-0.009,0.021-0.021,0.027-0.029c0.938-1.156-0.823-13.453-5.063-20.125 c-1.389-2.186-2.239-3.423-3.219-4.719c-3.907-5.166-6-6.125-6-6.125S35.732,24.78,36.149,44.315 c-1.754,0.065-11.218,7.528-14.826,14.388c-1.206,2.291-1.856,3.645-2.493,5.141c-2.539,5.957-2.33,8.25-2.33,8.25 s16.271,6.79,33.014-3.294c0.007,0.021,0.013,0.046,0.02,0.063c0.537,1.389,12.08,5.979,19.976,5.621 c2.587-0.116,4.084-0.238,5.696-0.444c6.424-0.818,8.298-2.157,8.298-2.157S81.144,54.396,63.966,45.043z M50.787,65.343 c1.059-1.183,4.648-5.853,0.995-11.315c-0.253-0.377-0.496-0.236-0.496-0.236s0.063,10.822-5.162,12.359 c-5.225,1.537-13.886,4.4-20.427,0.455C25,66.186,26.924,53.606,38.544,47.229c0.546,1.599,2.836,6.854,9.292,6.409 c0.453-0.031,0.453-0.313,0.453-0.313s-9.422-5.328-8.156-10.625s3.089-14.236,9.766-17.948c0.714-0.397,10.746,7.593,10.417,20.94 c-1.606-0.319-7.377-1.004-10.226,4.864c-0.198,0.409,0.046,0.549,0.046,0.549s9.31-5.521,13.275-1.789 c3.965,3.733,10.813,9.763,10.71,17.4C74.111,67.533,62.197,72.258,50.787,65.343z M35.613,35.145c0,0-0.991,3.241-0.603,7.524 l-13.393-7.524C21.618,35.145,27.838,30.931,35.613,35.145z M21.193,36.03l13.344,7.612c-3.872,1.872-6.142,4.388-6.142,4.388 C20.78,43.531,21.193,36.03,21.193,36.03z M72.287,49.064c0,0-2.321-2.471-6.23-4.263l13.187-7.881 C79.243,36.92,79.808,44.413,72.287,49.064z M78.687,36.113l-13.237,7.794c0.3-4.291-0.754-7.511-0.754-7.511 C72.383,32.025,78.687,36.113,78.687,36.113z M42.076,73.778c0,0,3.309-0.737,6.845-3.185l0.056,15.361 C48.977,85.955,42.244,82.621,42.076,73.778z M49.956,85.888L50,70.526c3.539,2.445,6.846,3.181,6.846,3.181 C56.686,82.551,49.956,85.888,49.956,85.888z"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 256 256" version="1.1" viewBox="0 0 256 256" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<title>Trilium Notes</title>
<g>
<path d="m202.9 112.7c-22.5 16.1-54.5 12.8-74.9 6.3l14.8-11.8 14.1-11.3 49.1-39.3-51.2 35.9-14.3 10-14.9 10.5c0.7-21.2 7-49.9 28.6-65.4 1.8-1.3 3.9-2.6 6.1-3.8 2.7-1.5 5.7-2.9 8.8-4.1 27.1-11.1 68.5-15.3 85.2-9.5 0.1 16.2-15.9 45.4-33.9 65.9-2.4 2.8-4.9 5.4-7.4 7.8-3.4 3.5-6.8 6.4-10.1 8.8z" fill="#ab60e3"/>
<path d="m213.1 104c-22.2 12.6-51.4 9.3-70.3 3.2l14.1-11.3 49.1-39.3-51.2 35.9-14.3 10c0.5-18.1 4.9-42.1 19.7-58.6 2.7-1.5 5.7-2.9 8.8-4.1 27.1-11.1 68.5-15.3 85.2-9.5 0.1 16.2-15.9 45.4-33.9 65.9-2.3 2.8-4.8 5.4-7.2 7.8z" fill="#8038b8"/>
<path d="m220.5 96.2c-21.1 8.6-46.6 5.3-63.7-0.2l49.2-39.4-51.2 35.9c0.3-15.8 3.5-36.6 14.3-52.8 27.1-11.1 68.5-15.3 85.2-9.5 0.1 16.2-15.9 45.4-33.8 66z" fill="#560a8f"/>
<path d="m106.7 179c-5.8-21 5.2-43.8 15.5-57.2l4.8 14.2 4.5 13.4 15.9 47-12.8-47.6-3.6-13.2-3.7-13.9c15.5 6.2 35.1 18.6 40.7 38.8 0.5 1.7 0.9 3.6 1.2 5.5 0.4 2.4 0.6 5 0.7 7.7 0.9 23.1-7.1 54.9-15.9 65.7-12-4.3-29.3-24-39.7-42.8-1.4-2.6-2.7-5.1-3.8-7.6-1.6-3.5-2.9-6.8-3.8-10z" fill="#bb9dd2"/>
<path d="m110.4 188.9c-3.4-19.8 6.9-40.5 16.6-52.9l4.5 13.4 15.9 47-12.8-47.6-3.6-13.2c13.3 5.2 29.9 15 38.1 30.4 0.4 2.4 0.6 5 0.7 7.7 0.9 23.1-7.1 54.9-15.9 65.7-12-4.3-29.3-24-39.7-42.8-1.4-2.6-2.7-5.2-3.8-7.7z" fill="#9a6cbc"/>
<path d="m114.2 196.5c-0.7-18 8.6-35.9 17.3-47.1l15.9 47-12.8-47.6c11.6 4.4 26.1 12.4 35.2 24.8 0.9 23.1-7.1 54.9-15.9 65.7-12-4.3-29.3-24-39.7-42.8z" fill="#783ba5"/>
<path d="m86.3 59.1c21.7 10.9 32.4 36.6 35.8 54.9l-15.2-6.6-14.5-6.3-50.6-22 48.8 24.9 13.6 6.9 14.3 7.3c-16.6 7.9-41.3 14.5-62.1 4.1-1.8-0.9-3.6-1.9-5.4-3.2-2.3-1.5-4.5-3.2-6.8-5.1-19.9-16.4-40.3-46.4-42.7-61.5 12.4-6.5 41.5-5.8 64.8-0.3 3.2 0.8 6.2 1.6 9.1 2.5 4 1.3 7.6 2.8 10.9 4.4z" fill="#ab60e3"/>
<path d="m75.4 54.8c18.9 12 28.4 35.6 31.6 52.6l-14.5-6.3-50.6-22 48.7 24.9 13.6 6.9c-14.1 6.8-34.5 13-53.3 8.2-2.3-1.5-4.5-3.2-6.8-5.1-19.8-16.4-40.2-46.4-42.6-61.5 12.4-6.5 41.5-5.8 64.8-0.3 3.1 0.8 6.2 1.6 9.1 2.6z" fill="#8038b8"/>
<path d="m66.3 52.2c15.3 12.8 23.3 33.6 26.1 48.9l-50.6-22 48.8 24.9c-12.2 6-29.6 11.8-46.5 10-19.8-16.4-40.2-46.4-42.6-61.5 12.4-6.5 41.5-5.8 64.8-0.3z" fill="#6f2796"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 256 256" version="1.1" viewBox="0 0 256 256" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<title>Trilium Notes</title>
<style type="text/css">
.st0{fill:#95C980;}
.st1{fill:#72B755;}
.st2{fill:#4FA52B;}
.st3{fill:#EE8C89;}
.st4{fill:#E96562;}
.st5{fill:#E33F3B;}
.st6{fill:#EFB075;}
.st7{fill:#E99547;}
.st8{fill:#E47B19;}
</style>
<g>
<path class="st0" d="m202.9 112.7c-22.5 16.1-54.5 12.8-74.9 6.3l14.8-11.8 14.1-11.3 49.1-39.3-51.2 35.9-14.3 10-14.9 10.5c0.7-21.2 7-49.9 28.6-65.4 1.8-1.3 3.9-2.6 6.1-3.8 2.7-1.5 5.7-2.9 8.8-4.1 27.1-11.1 68.5-15.3 85.2-9.5 0.1 16.2-15.9 45.4-33.9 65.9-2.4 2.8-4.9 5.4-7.4 7.8-3.4 3.5-6.8 6.4-10.1 8.8z"/>
<path class="st1" d="m213.1 104c-22.2 12.6-51.4 9.3-70.3 3.2l14.1-11.3 49.1-39.3-51.2 35.9-14.3 10c0.5-18.1 4.9-42.1 19.7-58.6 2.7-1.5 5.7-2.9 8.8-4.1 27.1-11.1 68.5-15.3 85.2-9.5 0.1 16.2-15.9 45.4-33.9 65.9-2.3 2.8-4.8 5.4-7.2 7.8z"/>
<path class="st2" d="m220.5 96.2c-21.1 8.6-46.6 5.3-63.7-0.2l49.2-39.4-51.2 35.9c0.3-15.8 3.5-36.6 14.3-52.8 27.1-11.1 68.5-15.3 85.2-9.5 0.1 16.2-15.9 45.4-33.8 66z"/>
<path class="st3" d="m106.7 179c-5.8-21 5.2-43.8 15.5-57.2l4.8 14.2 4.5 13.4 15.9 47-12.8-47.6-3.6-13.2-3.7-13.9c15.5 6.2 35.1 18.6 40.7 38.8 0.5 1.7 0.9 3.6 1.2 5.5 0.4 2.4 0.6 5 0.7 7.7 0.9 23.1-7.1 54.9-15.9 65.7-12-4.3-29.3-24-39.7-42.8-1.4-2.6-2.7-5.1-3.8-7.6-1.6-3.5-2.9-6.8-3.8-10z"/>
<path class="st4" d="m110.4 188.9c-3.4-19.8 6.9-40.5 16.6-52.9l4.5 13.4 15.9 47-12.8-47.6-3.6-13.2c13.3 5.2 29.9 15 38.1 30.4 0.4 2.4 0.6 5 0.7 7.7 0.9 23.1-7.1 54.9-15.9 65.7-12-4.3-29.3-24-39.7-42.8-1.4-2.6-2.7-5.2-3.8-7.7z"/>
<path class="st5" d="m114.2 196.5c-0.7-18 8.6-35.9 17.3-47.1l15.9 47-12.8-47.6c11.6 4.4 26.1 12.4 35.2 24.8 0.9 23.1-7.1 54.9-15.9 65.7-12-4.3-29.3-24-39.7-42.8z"/>
<path class="st6" d="m86.3 59.1c21.7 10.9 32.4 36.6 35.8 54.9l-15.2-6.6-14.5-6.3-50.6-22 48.8 24.9 13.6 6.9 14.3 7.3c-16.6 7.9-41.3 14.5-62.1 4.1-1.8-0.9-3.6-1.9-5.4-3.2-2.3-1.5-4.5-3.2-6.8-5.1-19.9-16.4-40.3-46.4-42.7-61.5 12.4-6.5 41.5-5.8 64.8-0.3 3.2 0.8 6.2 1.6 9.1 2.5 4 1.3 7.6 2.8 10.9 4.4z"/>
<path class="st7" d="m75.4 54.8c18.9 12 28.4 35.6 31.6 52.6l-14.5-6.3-50.6-22 48.7 24.9 13.6 6.9c-14.1 6.8-34.5 13-53.3 8.2-2.3-1.5-4.5-3.2-6.8-5.1-19.8-16.4-40.2-46.4-42.6-61.5 12.4-6.5 41.5-5.8 64.8-0.3 3.1 0.8 6.2 1.6 9.1 2.6z"/>
<path class="st8" d="m66.3 52.2c15.3 12.8 23.3 33.6 26.1 48.9l-50.6-22 48.8 24.9c-12.2 6-29.6 11.8-46.5 10-19.8-16.4-40.2-46.4-42.6-61.5 12.4-6.5 41.5-5.8 64.8-0.3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -24,6 +24,7 @@ import { IncludeNoteOpts } from "../widgets/dialogs/include_note.jsx";
import type { InfoProps } from "../widgets/dialogs/info.jsx";
import type { MarkdownImportOpts } from "../widgets/dialogs/markdown_import.jsx";
import { ChooseNoteTypeCallback } from "../widgets/dialogs/note_type_chooser.jsx";
import type { PrintPreviewData } from "../widgets/dialogs/print_preview.jsx";
import type { PromptDialogOptions } from "../widgets/dialogs/prompt.js";
import type NoteTreeWidget from "../widgets/note_tree.js";
import Component from "./component.js";
@@ -280,6 +281,7 @@ export type CommandMappings = {
backInNoteHistory: CommandData;
forwardInNoteHistory: CommandData;
forceSaveRevision: CommandData;
saveNamedRevision: CommandData;
scrollToActiveNote: CommandData;
quickSearch: CommandData;
collapseTree: CommandData;
@@ -330,6 +332,7 @@ export type CommandMappings = {
toggleRightPane: CommandData;
printActiveNote: CommandData;
exportAsPdf: CommandData;
showPrintPreview: PrintPreviewData;
openNoteExternally: CommandData;
openNoteCustom: CommandData;
openNoteOnServer: CommandData;

View File

@@ -1,6 +1,7 @@
import { CreateChildrenResponse, SqlExecuteResponse } from "@triliumnext/commons";
import bundleService from "../services/bundle.js";
import dialog from "../services/dialog.js";
import dateNoteService from "../services/date_notes.js";
import froca from "../services/froca.js";
import { t } from "../services/i18n.js";
@@ -216,4 +217,21 @@ export default class Entrypoints extends Component {
toastService.showMessage(t("entrypoints.note-revision-created"));
}
async saveNamedRevisionCommand() {
const noteId = appContext.tabManager.getActiveContextNoteId();
if (!noteId) return;
const name = await dialog.prompt({
title: t("entrypoints.save-named-revision-title"),
message: t("entrypoints.save-named-revision-message"),
defaultValue: ""
});
// null means the user cancelled
if (name === null) return;
await server.post(`notes/${noteId}/revision`, { description: name || undefined });
toastService.showMessage(t("entrypoints.note-revision-created"));
}
}

View File

@@ -25,6 +25,15 @@ export type GetTextEditorCallback = (editor: CKTextEditor) => void;
export type SaveState = "saved" | "saving" | "unsaved" | "error";
const READ_ONLY_CAPABLE_TYPES: string[] = [
"text",
"code",
"mermaid",
"canvas",
"mindMap",
"spreadsheet"
];
export interface NoteContextDataMap {
toc: HeadingContext;
pdfPages: {
@@ -303,8 +312,12 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
return false;
}
// "readOnly" is a state valid only for text/code notes
if (!this.note || (this.note.type !== "text" && this.note.type !== "code")) {
if (!this.note) {
return false;
}
// Note types that support a read-only state (via the #readOnly label, source view, or auto-readonly).
if (!READ_ONLY_CAPABLE_TYPES.includes(this.note.type)) {
return false;
}
@@ -320,6 +333,11 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded">
return true;
}
// Auto read-only based on content size is only configurable for text/code.
if (this.note.type !== "text" && this.note.type !== "code") {
return false;
}
// Store the initial decision about read-only status in the viewScope
// This will be "remembered" until the viewScope is refreshed
if (!this.viewScope) {

View File

@@ -66,7 +66,15 @@ class FAttribute {
}
get isAutoLink() {
return this.type === "relation" && ["internalLink", "imageLink", "relationMapLink", "includeNoteLink"].includes(this.name);
if (this.type === "relation") {
return ["internalLink", "imageLink", "relationMapLink", "includeNoteLink"].includes(this.name);
}
if (this.type === "label") {
return this.name === "internalBookmark";
}
return false;
}
get toString() {

View File

@@ -236,6 +236,16 @@ export default class FNote {
return this.hasAttribute("label", "archived");
}
/**
* Returns true if the note's metadata (title, icon) should not be editable.
* This applies to system notes like options, help, and launch bar configuration.
*/
get isMetadataReadOnly() {
return utils.isLaunchBarConfig(this.noteId)
|| this.noteId.startsWith("_help_")
|| this.noteId.startsWith("_options");
}
getChildNoteIds() {
return this.children;
}
@@ -1059,6 +1069,10 @@ export default class FNote {
return this.mime === "text/x-sqlite;schema=trilium";
}
isMarkdown() {
return this.type === "code" && (this.mime === "text/markdown" || this.mime === "text/x-markdown" || this.mime === "text/x-gfm");
}
isTriliumScript() {
return this.mime.startsWith("application/javascript");
}

View File

@@ -24,6 +24,7 @@ import InfoDialog from "../widgets/dialogs/info.js";
import IncorrectCpuArchDialog from "../widgets/dialogs/incorrect_cpu_arch.js";
import CallToActionDialog from "../widgets/dialogs/call_to_action.jsx";
import PopupEditorDialog from "../widgets/dialogs/PopupEditor.jsx";
import PrintPreviewDialog from "../widgets/dialogs/print_preview.jsx";
import ToastContainer from "../widgets/Toast.jsx";
export function applyModals(rootContainer: RootContainer) {
@@ -51,6 +52,7 @@ export function applyModals(rootContainer: RootContainer) {
.child(<PromptDialog />)
.child(<IncorrectCpuArchDialog />)
.child(<PopupEditorDialog />)
.child(<PrintPreviewDialog />)
.child(<CallToActionDialog />)
.child(<ToastContainer />);
}

View File

@@ -39,6 +39,7 @@ export interface MenuCommandItem<T> {
title: string;
command?: T;
type?: string;
mime?: string;
/**
* The icon to display in the menu item.
*

View File

@@ -0,0 +1,101 @@
import type { ToggleInParentResponse } from "@triliumnext/commons";
import type FNote from "../entities/fnote.js";
import branchService from "../services/branches.js";
import { t } from "../services/i18n.js";
import server from "../services/server.js";
import toast from "../services/toast.js";
import contextMenu, { type ContextMenuEvent, type MenuItem } from "./context_menu.js";
const VISIBLE_LAUNCHER_PARENTS = ["_lbVisibleLaunchers", "_lbMobileVisibleLaunchers"];
function getVisibleLauncherBranch(launcherNote: FNote) {
return launcherNote.getParentBranches().find((b) => VISIBLE_LAUNCHER_PARENTS.includes(b.parentNoteId));
}
function getBookmarkBranch(launcherNote: FNote) {
return launcherNote.getParentBranches().find((b) => b.parentNoteId === "_lbBookmarks");
}
async function removeFromLaunchBar(launcherNote: FNote) {
const bookmarkBranch = getBookmarkBranch(launcherNote);
if (bookmarkBranch) {
// Individual bookmarks are represented via a branch under `_lbBookmarks`; removing them
// from the launch bar is the same as unbookmarking the note.
const resp = await server.put<ToggleInParentResponse>(
`notes/${launcherNote.noteId}/toggle-in-parent/_lbBookmarks/false`
);
if (!resp.success && resp.message) {
toast.showError(resp.message);
}
return;
}
const launcherBranch = getVisibleLauncherBranch(launcherNote);
if (!launcherBranch) return;
const isMobileLauncher = launcherBranch.parentNoteId === "_lbMobileVisibleLaunchers";
// Branch IDs in the hidden subtree follow the `${parentNoteId}_${noteId}` convention,
// so the branch linking `_lb(Mobile)?Root` to the "available" launchers root is predictable.
const targetBranchId = isMobileLauncher
? "_lbMobileRoot__lbMobileAvailableLaunchers"
: "_lbRoot__lbAvailableLaunchers";
await branchService.moveToParentNote([launcherBranch.branchId], targetBranchId);
}
export function canRemoveFromLaunchBar(launcherNote: FNote | null | undefined) {
if (!launcherNote) return false;
return !!(getVisibleLauncherBranch(launcherNote) || getBookmarkBranch(launcherNote));
}
export interface ShowLauncherContextMenuOptions<T extends string> {
/** Menu items specific to this launcher (e.g. "Open in new tab" for note-based launchers). They appear above the "Remove from launch bar" item. */
extraItems?: MenuItem<T>[];
/** Handler for the {@link extraItems}. The "Remove from launch bar" item is handled internally and will not be forwarded. */
onCommand?: (command: T | undefined) => void;
}
const REMOVE_COMMAND = "__removeFromLaunchBar__";
/**
* Displays the launch bar icon context menu. When the launcher can be removed (i.e. it is a direct
* child of the visible launchers root or of `_lbBookmarks`), a "Remove from launch bar" entry is
* appended. Extra items can be supplied to preserve launcher-specific actions (e.g. "Open in new tab").
*/
export async function showLauncherContextMenu<T extends string>(
launcherNote: FNote | null | undefined,
e: ContextMenuEvent,
options: ShowLauncherContextMenuOptions<T> = {}
) {
e.preventDefault();
const items = [...(options.extraItems ?? [])] as MenuItem<string>[];
if (canRemoveFromLaunchBar(launcherNote)) {
if (items.length > 0) {
items.push({ kind: "separator" });
}
items.push({
title: t("launcher_button_context_menu.remove_from_launch_bar"),
command: REMOVE_COMMAND,
uiIcon: "bx bx-x-circle"
});
}
if (items.length === 0) return;
contextMenu.show<string>({
x: e.pageX ?? 0,
y: e.pageY ?? 0,
items,
selectMenuItemHandler: ({ command }) => {
if (command === REMOVE_COMMAND) {
if (launcherNote) {
void removeFromLaunchBar(launcherNote);
}
return;
}
options.onCommand?.(command as T | undefined);
}
});
}

View File

@@ -288,7 +288,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
return items.filter((row) => row !== null) as MenuItem<TreeCommandNames>[];
}
async selectMenuItemHandler({ command, type, templateNoteId }: MenuCommandItem<TreeCommandNames>) {
async selectMenuItemHandler({ command, type, mime, templateNoteId }: MenuCommandItem<TreeCommandNames>) {
const notePath = treeService.getNotePath(this.node);
if (utils.isMobile()) {
@@ -305,6 +305,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
target: "after",
targetBranchId: this.node.data.branchId,
type,
mime,
isProtected,
templateNoteId
});
@@ -313,6 +314,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
noteCreateService.createNote(parentNotePath, {
type,
mime,
isProtected: this.node.data.isProtected,
templateNoteId
});

View File

@@ -2,18 +2,17 @@
:root {
--print-font-size: 11pt;
--ck-content-color-image-caption-background: transparent !important;
}
html,
body {
--print-font-family: var(--detail-font-family, sans-serif);
width: 100%;
height: 100%;
color: black;
}
@page {
margin: 2cm;
font-family: var(--print-font-family);
}
.note-list-widget.full-height,
@@ -26,6 +25,12 @@ body {
}
body[data-note-type="text"] .ck-content {
--ck-content-font-family: var(--print-font-family);
--ck-content-font-size: var(--print-font-size);
--ck-content-font-color: black;
--ck-content-line-height: 1.5;
--ck-content-color-image-caption-background: transparent;
font-size: var(--print-font-size);
text-align: justify;
}
@@ -154,4 +159,4 @@ span[style] {
.page-break::after {
display: none !important;
}
/* #endregion */
/* #endregion */

View File

@@ -31,6 +31,21 @@ async function main() {
if (!noteId) return;
await import("./print.css");
// Browser printing relies on @page margins since there's no programmatic control.
// Electron uses printToPDF() margins instead, so we only inject this for the browser path.
if (!isElectron()) {
const style = document.createElement("style");
style.textContent = "@page { margin: 2cm; }";
document.head.appendChild(style);
}
// Load the user's font preferences so that --detail-font-family is available.
const fontLink = document.createElement("link");
fontLink.rel = "stylesheet";
fontLink.href = "api/fonts";
document.head.appendChild(fontLink);
const note = await froca.getNote(noteId);
const bodyWrapper = document.createElement("div");
@@ -105,6 +120,9 @@ function SingleNoteRenderer({ note, onReady }: RendererProps) {
// Check custom CSS.
await loadCustomCss(note);
// Wait for all fonts (including those from custom CSS) to finish loading.
await document.fonts.ready;
}
load().then(() => requestAnimationFrame(() => onReady({
@@ -130,6 +148,7 @@ function CollectionRenderer({ note, onReady, onProgressChanged }: RendererProps)
media="print"
onReady={async (data: PrintReport) => {
await loadCustomCss(note);
await document.fonts.ready;
onReady(data);
}}
onProgressChanged={onProgressChanged}

View File

@@ -7,6 +7,10 @@ async function renderAttribute(attribute: FAttribute, renderIsInheritable: boole
const isInheritable = renderIsInheritable && attribute.isInheritable ? `(inheritable)` : "";
const $attr = $("<span>");
if (attribute.isAutoLink) {
return $attr;
}
if (attribute.type === "label") {
$attr.append(document.createTextNode(`#${attribute.name}${isInheritable}`));
@@ -15,9 +19,6 @@ async function renderAttribute(attribute: FAttribute, renderIsInheritable: boole
$attr.append(document.createTextNode(formatValue(attribute.value)));
}
} else if (attribute.type === "relation") {
if (attribute.isAutoLink) {
return $attr;
}
// when the relation has just been created, then it might not have a value
if (attribute.value) {

View File

@@ -6,10 +6,8 @@ import froca from "./froca";
import server from "./server.js";
// Spy on server methods to track calls
// @ts-expect-error the generic typing is causing issues here
server.put = vi.fn(async <T> (url: string, data?: T) => ({} as T));
// @ts-expect-error the generic typing is causing issues here
server.remove = vi.fn(async <T> (url: string) => ({} as T));
server.put = vi.fn(async () => ({})) as typeof server.put;
server.remove = vi.fn(async () => ({})) as typeof server.remove;
describe("Set boolean with inheritance", () => {
beforeEach(() => {

View File

@@ -120,7 +120,7 @@ async function deleteNotes(branchIdsToDelete: string[], forceDeleteAllClones = f
if (moveToParent) {
try {
await activateParentNotePath();
await activateParentNotePath(branchIdsToDelete);
} catch (e) {
console.error(e);
}
@@ -152,13 +152,28 @@ async function deleteNotes(branchIdsToDelete: string[], forceDeleteAllClones = f
return true;
}
async function activateParentNotePath() {
// this is not perfect, maybe we should find the next/previous sibling, but that's more complex
async function activateParentNotePath(branchIdsToDelete: string[]) {
const activeContext = appContext.tabManager.getActiveContext();
const parentNotePathArr = activeContext?.notePathArray.slice(0, -1);
const activeNotePath = activeContext?.notePathArray ?? [];
if (parentNotePathArr && parentNotePathArr.length > 0) {
activeContext?.setNote(parentNotePathArr.join("/"));
// Find the deleted branch that appears earliest in the active note's path
let earliestIndex = activeNotePath.length;
for (const branchId of branchIdsToDelete) {
const branch = froca.getBranch(branchId);
if (branch) {
const index = activeNotePath.indexOf(branch.noteId);
if (index !== -1 && index < earliestIndex) {
earliestIndex = index;
}
}
}
// Navigate to the parent of the highest deleted ancestor
if (earliestIndex < activeNotePath.length) {
const parentPath = activeNotePath.slice(0, earliestIndex);
if (parentPath.length > 0) {
await activeContext?.setNote(parentPath.join("/"));
}
}
}

View File

@@ -1,6 +1,7 @@
import "./content_renderer.css";
import { normalizeMimeTypeForCKEditor, type TextRepresentationResponse } from "@triliumnext/commons";
import { normalizeMimeTypeForCKEditor, renderToHtml, type TextRepresentationResponse } from "@triliumnext/commons";
import DOMPurify from "dompurify";
import { h, render } from "preact";
import WheelZoom from 'vanilla-js-wheel-zoom';
@@ -8,7 +9,7 @@ import FAttachment from "../entities/fattachment.js";
import FNote from "../entities/fnote.js";
import imageContextMenuService from "../menus/image_context_menu.js";
import { t } from "../services/i18n.js";
import renderText from "./content_renderer_text.js";
import renderText, { postProcessRichContent, renderChildrenList } from "./content_renderer_text.js";
import renderDoc from "./doc_renderer.js";
import { loadElkIfNeeded, postprocessMermaidSvg } from "./mermaid.js";
import openService from "./open.js";
@@ -54,6 +55,8 @@ export async function getRenderedContent(this: {} | { ctx: string }, entity: FNo
if (type === "text" || type === "book") {
await renderText(entity, $renderedContent, options);
} else if (type === "markdown") {
await renderMarkdown(entity, $renderedContent, options);
} else if (type === "code") {
await renderCode(entity, $renderedContent);
} else if (["image", "canvas", "mindMap", "spreadsheet"].includes(type)) {
@@ -119,6 +122,31 @@ export async function getRenderedContent(this: {} | { ctx: string }, entity: FNo
};
}
/**
* Renders a markdown note by converting its source to CKEditor-compatible HTML,
* then running the same post-render pipeline as text notes (included notes,
* math, reference links, Mermaid, code highlight) so the preview matches what
* the user sees in the Markdown note type's preview pane.
*/
async function renderMarkdown(note: FNote | FAttachment, $renderedContent: JQuery<HTMLElement>, options: RenderOptions) {
const blob = await note.getBlob();
const source = blob?.content ?? "";
if (!source.trim()) {
if (note instanceof FNote && !options.noChildrenList) {
await renderChildrenList($renderedContent, note, options.includeArchivedNotes ?? false);
}
return;
}
const html = renderToHtml(source, note.title, {
sanitize: (dirty) => DOMPurify.sanitize(dirty),
wikiLink: { formatHref: (id) => `#root/${id}` }
});
$renderedContent.append($('<div class="ck-content">').html(html));
await postProcessRichContent(note, $renderedContent, options);
}
/**
* Renders a code note, by displaying its content and applying syntax highlighting based on the selected MIME type.
*/
@@ -330,6 +358,8 @@ function getRenderingType(entity: FNote | FAttachment) {
if (type === "file" && mime === "application/pdf") {
type = "pdf";
} else if (type === "code" && entity instanceof FNote && entity.isMarkdown()) {
type = "markdown";
} else if ((type === "file" || type === "viewConfig") && mime && CODE_MIME_TYPES.has(mime) && !isIconPack) {
type = "code";
} else if (type === "file" && mime && mime.startsWith("audio/")) {

View File

@@ -15,37 +15,47 @@ export default async function renderText(note: FNote | FAttachment, $renderedCon
if (blob && !isHtmlEmpty(blob.content)) {
$renderedContent.append($('<div class="ck-content">').html(blob.content));
const seenNoteIds = options.seenNoteIds ?? new Set<string>();
seenNoteIds.add("noteId" in note ? note.noteId : note.attachmentId);
if (!options.noIncludedNotes) {
await renderIncludedNotes($renderedContent[0], seenNoteIds);
} else {
$renderedContent.find("section.include-note").remove();
}
if ($renderedContent.find("span.math-tex").length > 0) {
renderMathInElement($renderedContent[0], { trust: true });
}
const getNoteIdFromLink = (el: HTMLElement) => tree.getNoteIdFromUrl($(el).attr("href") || "");
const referenceLinks = $renderedContent.find<HTMLAnchorElement>("a.reference-link");
const noteIdsToPrefetch = referenceLinks.map((i, el) => getNoteIdFromLink(el));
await froca.getNotes(noteIdsToPrefetch);
for (const el of referenceLinks) {
const innerSpan = document.createElement("span");
await link.loadReferenceLinkTitle($(innerSpan), el.href);
el.replaceChildren(innerSpan);
}
await rewriteMermaidDiagramsInContainer($renderedContent[0] as HTMLDivElement);
await formatCodeBlocks($renderedContent);
await postProcessRichContent(note, $renderedContent, options);
} else if (note instanceof FNote && !options.noChildrenList) {
await renderChildrenList($renderedContent, note, options.includeArchivedNotes ?? false);
}
}
/**
* Apply the post-render passes that make CKEditor-compatible HTML fully
* interactive: expand `<section class="include-note">`, render inline math and
* Mermaid diagrams, rewrite reference-link titles, and highlight code blocks.
* Assumes the caller has already appended the HTML inside a `.ck-content` child
* of `$renderedContent`.
*/
export async function postProcessRichContent(note: FNote | FAttachment, $renderedContent: JQuery<HTMLElement>, options: RenderOptions = {}) {
const seenNoteIds = options.seenNoteIds ?? new Set<string>();
seenNoteIds.add("noteId" in note ? note.noteId : note.attachmentId);
if (!options.noIncludedNotes) {
await renderIncludedNotes($renderedContent[0], seenNoteIds);
} else {
$renderedContent.find("section.include-note").remove();
}
if ($renderedContent.find("span.math-tex").length > 0) {
renderMathInElement($renderedContent[0], { trust: true });
}
const getNoteIdFromLink = (el: HTMLElement) => tree.getNoteIdFromUrl($(el).attr("href") || "");
const referenceLinks = $renderedContent.find<HTMLAnchorElement>("a.reference-link");
const noteIdsToPrefetch = referenceLinks.map((i, el) => getNoteIdFromLink(el));
await froca.getNotes(noteIdsToPrefetch);
await Promise.all(referenceLinks.toArray().map(async (el) => {
const innerSpan = document.createElement("span");
await link.loadReferenceLinkTitle($(innerSpan), el.getAttribute("href"));
el.replaceChildren(innerSpan);
}));
await rewriteMermaidDiagramsInContainer($renderedContent[0] as HTMLDivElement);
await formatCodeBlocks($renderedContent);
}
async function renderIncludedNotes(contentEl: HTMLElement, seenNoteIds: Set<string>) {
// TODO: Consider duplicating with server's share/content_renderer.ts.
const includeNoteEls = contentEl.querySelectorAll("section.include-note");
@@ -101,19 +111,107 @@ export async function rewriteMermaidDiagramsInContainer(container: HTMLDivElemen
}
}
/**
* Per-container cache of rendered mermaid SVG keyed by diagram source text.
* Populated after each successful render; reused on subsequent renders to
* avoid flicker when the preview HTML is regenerated (e.g. live markdown
* editing). Entries for diagrams no longer present in the container are
* evicted on each run so the cache can't grow unbounded.
*/
const mermaidSvgCache = new WeakMap<HTMLElement, Map<string, string>>();
/**
* Per-container, ordered snapshot of the most recently rendered SVGs. Used as
* a positional placeholder so edits to a diagram's source keep the previous
* SVG visible while the new one renders offscreen.
*/
const mermaidLastRenderedByPosition = new WeakMap<HTMLElement, string[]>();
export async function applyInlineMermaid(container: HTMLDivElement) {
// Initialize mermaid
const nodes = Array.from(container.querySelectorAll<HTMLElement>("div.mermaid-diagram"));
if (!nodes.length) {
mermaidLastRenderedByPosition.delete(container);
return;
}
let cache = mermaidSvgCache.get(container);
if (!cache) {
cache = new Map();
mermaidSvgCache.set(container, cache);
}
const lastRendered = mermaidLastRenderedByPosition.get(container) ?? [];
// Decide per node: exact cache hit → paint final SVG; source changed →
// paint the previous SVG (by position) as a placeholder and queue an
// offscreen re-render. This way the user keeps seeing the old diagram
// until mermaid has finished producing the new one.
const pending: Array<{ visible: HTMLElement; source: string }> = [];
const seenSources = new Set<string>();
for (const [ index, node ] of nodes.entries()) {
const source = (node.textContent ?? "").trim();
seenSources.add(source);
const cached = cache.get(source);
if (cached) {
node.innerHTML = cached;
node.setAttribute("data-processed", "true");
continue;
}
pending.push({ visible: node, source });
const placeholder = lastRendered[index];
if (placeholder) {
node.innerHTML = placeholder;
}
}
// Evict cache entries whose source is no longer present.
for (const key of [ ...cache.keys() ]) {
if (!seenSources.has(key)) cache.delete(key);
}
if (!pending.length) {
mermaidLastRenderedByPosition.set(container, nodes.map((n) => n.innerHTML));
return;
}
const mermaid = (await import("mermaid")).default;
mermaid.initialize(getMermaidConfig());
const nodes = Array.from(container.querySelectorAll<HTMLElement>("div.mermaid-diagram"));
// Render clones offscreen so the visible nodes keep showing the placeholder
// until the new SVG is ready. Keeps mermaid away from our placeholder SVG
// (which would otherwise confuse its text-based parser).
const offscreen = document.createElement("div");
offscreen.style.cssText = "position:absolute;left:-9999px;top:-9999px;width:0;height:0;overflow:hidden;visibility:hidden;";
document.body.appendChild(offscreen);
const pairs = pending.map(({ visible, source }) => {
const clone = document.createElement("div");
clone.className = "mermaid-diagram";
clone.textContent = source;
offscreen.appendChild(clone);
return { visible, clone, source };
});
try {
await mermaid.run({ nodes });
await mermaid.run({ nodes: pairs.map((p) => p.clone) });
for (const { visible, clone, source } of pairs) {
if (clone.getAttribute("data-processed") !== "true") continue;
const svg = clone.innerHTML;
visible.innerHTML = svg;
visible.setAttribute("data-processed", "true");
cache.set(source, svg);
}
} catch (e) {
console.log(e);
console.error(e);
} finally {
offscreen.remove();
}
mermaidLastRenderedByPosition.set(container, nodes.map((n) => n.innerHTML));
}
async function renderChildrenList($renderedContent: JQuery<HTMLElement>, note: FNote, includeArchivedNotes: boolean) {
export async function renderChildrenList($renderedContent: JQuery<HTMLElement>, note: FNote, includeArchivedNotes: boolean) {
let childNoteIds = note.getChildNoteIds();
if (!childNoteIds.length) {

View File

@@ -1,10 +1,10 @@
import { LOCALES } from "@triliumnext/commons";
import { findDuplicateJsonKeys, LOCALES } from "@triliumnext/commons";
import { readFileSync } from "fs";
import { join } from "path";
import { describe, expect, it } from "vitest";
describe("i18n", () => {
it("translations are valid JSON", () => {
it("translations are valid JSON with no duplicate keys", () => {
for (const locale of LOCALES) {
if (locale.contentOnly || locale.id === "en_rtl") {
continue;
@@ -14,6 +14,13 @@ describe("i18n", () => {
const translationFile = readFileSync(translationPath, { encoding: "utf-8" });
expect(() => JSON.parse(translationFile), `JSON error while parsing locale '${locale.id}' at "${translationPath}"`)
.not.toThrow();
const duplicates = findDuplicateJsonKeys(translationFile);
expect(
duplicates,
`Duplicate keys in locale '${locale.id}' at "${translationPath}":\n${
duplicates.map((d) => ` - "${d.key}" (line ${d.line})`).join("\n")}`
).toEqual([]);
}
});
});

View File

@@ -4,6 +4,8 @@ import appContext, { type NoteCommandData } from "../components/app_context.js";
import { openInCurrentNoteContext } from "../components/note_context.js";
import linkContextMenuService from "../menus/link_context_menu.js";
import froca from "./froca.js";
import { t } from "./i18n.js";
import { showError } from "./toast.js";
import treeService from "./tree.js";
import utils from "./utils.js";
@@ -58,6 +60,8 @@ export interface ViewScope {
*/
tocPreviousVisible?: boolean;
tocCollapsedHeadings?: Set<string>;
/** When set, scrolls to a bookmark anchor within the note after navigation. */
bookmark?: string;
}
interface CreateLinkOptions {
@@ -242,7 +246,7 @@ export function parseNavigationStateFromUrl(url: string | undefined) {
hoistedNoteId = value;
} else if (name === "searchString") {
searchString = value; // supports triggering search from URL, e.g. #?searchString=blabla
} else if (["viewMode", "attachmentId"].includes(name)) {
} else if (["viewMode", "attachmentId", "bookmark"].includes(name)) {
(viewScope as any)[name] = value;
} else if (name === "popup") {
openInPopup = true;
@@ -333,15 +337,30 @@ export function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDo
if (openInNewTab || openInNewWindow || (isLeftClick && (withinEditLink || outsideOfCKEditor))) {
if (hrefLink.toLowerCase().startsWith("http") || hrefLink.startsWith("api/")) {
window.open(hrefLink, "_blank");
} else {
} else if (ALLOWED_PROTOCOLS.some((protocol) => hrefLink.toLowerCase().startsWith(`${protocol}:`))) {
// Enable protocols supported by CKEditor 5 to be clickable.
if (ALLOWED_PROTOCOLS.some((protocol) => hrefLink.toLowerCase().startsWith(`${protocol}:`))) {
if ( utils.isElectron()) {
const electron = utils.dynamicRequire("electron");
electron.shell.openExternal(hrefLink);
if (utils.isElectron()) {
const electron = utils.dynamicRequire("electron");
const reportLinkError = (e: unknown) => {
const message = e instanceof Error ? e.message : String(e);
logError(`Failed to open link '${hrefLink}': ${message}`);
showError(t("link.failed_to_open", { href: hrefLink, message }));
};
if (hrefLink.toLowerCase().startsWith("file:")) {
// shell.openExternal mishandles Unicode file:// URLs on Windows;
// convert to a filesystem path and use shell.openPath instead.
// Normalize file://c:/... (2 slashes — drive read as host) to file:///c:/...
const normalized = hrefLink.replace(/^file:\/\/(?=[a-zA-Z]:)/i, "file:///");
const { fileURLToPath } = utils.dynamicRequire("url");
electron.shell.openPath(fileURLToPath(normalized)).then((err: string) => {
if (err) reportLinkError(new Error(err));
}).catch(reportLinkError);
} else {
window.open(hrefLink, "_blank");
electron.shell.openExternal(hrefLink).catch(reportLinkError);
}
} else {
window.open(hrefLink, "_blank");
}
}
}
@@ -415,6 +434,13 @@ async function loadReferenceLinkTitle($el: JQuery<HTMLElement>, href: string | n
const title = await getReferenceLinkTitle(href);
$el.text(title);
if (viewScope?.bookmark) {
$el.append($("<small>").append(
$("<span>").addClass("bx bx-bookmark"),
document.createTextNode(viewScope.bookmark)
));
}
if (note) {
const icon = await getLinkIcon(noteId, viewScope.viewMode);
@@ -440,8 +466,8 @@ async function getReferenceLinkTitle(href: string) {
return attachment ? attachment.title : "[missing attachment]";
}
return note.title;
return note.title;
}
function getReferenceLinkTitleSync(href: string) {
@@ -464,8 +490,12 @@ function getReferenceLinkTitleSync(href: string) {
return attachment ? attachment.title : "[missing attachment]";
}
return note.title;
if (viewScope?.bookmark) {
return `${note.title} - ${viewScope.bookmark}`;
}
return note.title;
}
if (glob.device !== "print") {

View File

@@ -27,7 +27,8 @@ export interface StreamCallbacks {
export async function streamChatCompletion(
messages: LlmMessage[],
config: LlmChatConfig,
callbacks: StreamCallbacks
callbacks: StreamCallbacks,
abortSignal?: AbortSignal
): Promise<void> {
const headers = await server.getHeaders();
@@ -37,7 +38,8 @@ export async function streamChatCompletion(
...headers,
"Content-Type": "application/json"
} as HeadersInit,
body: JSON.stringify({ messages, config })
body: JSON.stringify({ messages, config }),
signal: abortSignal
});
if (!response.ok) {

View File

@@ -32,4 +32,9 @@ describe("Mermaid", () => {
`;
expect(postprocessMermaidSvg(before)).toBe(after);
});
it("replaces &nbsp; with numeric entity for valid XML", () => {
expect(postprocessMermaidSvg("<text>a&nbsp;b&nbsp;&nbsp;c</text>"))
.toBe("<text>a&#160;b&#160;&#160;c</text>");
});
});

View File

@@ -49,11 +49,15 @@ export async function loadElkIfNeeded(mermaid: Mermaid, mermaidContent: string)
* Processes the output of a Mermaid SVG render before it should be delivered to the user.
*
* <p>
* Currently this fixes <br> to <br/> which would otherwise cause an invalid XML.
* Currently this fixes <br> to <br/> and replaces named HTML entities like &nbsp; with their
* numeric equivalents, both of which would otherwise cause invalid XML when the SVG is saved
* as an attachment.
*
* @param svg the Mermaid SVG to process.
* @returns the processed SVG.
*/
export function postprocessMermaidSvg(svg: string) {
return svg.replaceAll(/<br\s*>/ig, "<br/>");
return svg
.replaceAll(/<br\s*>/ig, "<br/>")
.replaceAll(/&nbsp;/g, "&#160;");
}

View File

@@ -68,7 +68,8 @@ async function autocompleteSourceForCKEditor(queryText: string) {
name: row.notePathTitle || "",
link: `#${row.notePath}`,
notePath: row.notePath,
highlightedNotePathTitle: row.highlightedNotePathTitle
highlightedNotePathTitle: row.highlightedNotePathTitle,
icon: row.icon
};
})
);

View File

@@ -27,7 +27,7 @@ export const NOTE_TYPES: NoteTypeMapping[] = [
// The default note type (always the first item)
{ type: "text", mime: "text/html", title: t("note_types.text"), icon: "bx-note" },
{ type: "spreadsheet", mime: "application/json", title: t("note_types.spreadsheet"), icon: "bx-table", isBeta: true },
{ type: "spreadsheet", mime: "application/json", title: t("note_types.spreadsheet"), icon: "bx-table", isBeta: true, isNew: true },
// Text notes group
{ type: "book", mime: "", title: t("note_types.book"), icon: "bx-book" },
@@ -49,6 +49,7 @@ export const NOTE_TYPES: NoteTypeMapping[] = [
// Code notes
{ type: "code", mime: "text/plain", title: t("note_types.code"), icon: "bx-code" },
{ type: "code", mime: "text/x-markdown", title: t("note_types.markdown"), icon: "bxl-markdown", isNew: true },
// Reserved types (cannot be created by the user)
{ type: "contentWidget", mime: "", title: t("note_types.widget"), reserved: true },
@@ -100,6 +101,7 @@ function getBlankNoteTypes(command?: TreeCommandNames): MenuItem<TreeCommandName
title: nt.title,
command,
type: nt.type,
mime: nt.mime,
uiIcon: `bx ${nt.icon}`,
badges: []
};

View File

@@ -18,6 +18,10 @@ async function render(note: FNote, $el: JQuery<HTMLElement>, onError?: ErrorHand
for (const renderNoteId of renderNoteIds) {
const bundle = await server.postWithSilentInternalServerError<Bundle>(`script/bundle/${renderNoteId}`);
if (!bundle) {
throw new Error(`Script note '${renderNoteId}' could not be loaded. It may be protected and require an active protected session.`);
}
const $scriptContainer = $("<div>");
$el.append($scriptContainer);

View File

@@ -0,0 +1,87 @@
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import SpacedUpdate from "./spaced_update";
// Mock logError which is a global in Trilium
vi.stubGlobal("logError", vi.fn());
describe("SpacedUpdate", () => {
beforeEach(() => {
vi.useFakeTimers();
});
afterEach(() => {
vi.useRealTimers();
});
it("should only call updater once per interval even with multiple pending callbacks", async () => {
const updater = vi.fn(async () => {
// Simulate a slow network request - this is where the race condition occurs
await new Promise((resolve) => setTimeout(resolve, 100));
});
const spacedUpdate = new SpacedUpdate(updater, 50);
// Simulate rapid typing - each keystroke calls scheduleUpdate()
// This queues multiple setTimeout callbacks due to recursive scheduleUpdate() calls
for (let i = 0; i < 10; i++) {
spacedUpdate.scheduleUpdate();
// Small delay between keystrokes
await vi.advanceTimersByTimeAsync(5);
}
// Advance time past the update interval to trigger the update
await vi.advanceTimersByTimeAsync(100);
// Let the "network request" complete and any pending callbacks run
await vi.advanceTimersByTimeAsync(200);
// The updater should have been called only ONCE, not multiple times
// With the bug, multiple pending setTimeout callbacks would all pass the time check
// during the async updater call and trigger multiple concurrent requests
expect(updater).toHaveBeenCalledTimes(1);
});
it("should call updater again if changes occur during the update", async () => {
const updater = vi.fn(async () => {
await new Promise((resolve) => setTimeout(resolve, 50));
});
const spacedUpdate = new SpacedUpdate(updater, 30);
// First update
spacedUpdate.scheduleUpdate();
await vi.advanceTimersByTimeAsync(40);
// Schedule another update while the first one is in progress
spacedUpdate.scheduleUpdate();
// Let first update complete
await vi.advanceTimersByTimeAsync(60);
// Advance past the interval again for the second update
await vi.advanceTimersByTimeAsync(100);
// Should have been called twice - once for each distinct change period
expect(updater).toHaveBeenCalledTimes(2);
});
it("should restore changed flag on error so retry can happen", async () => {
const updater = vi.fn()
.mockRejectedValueOnce(new Error("Network error"))
.mockResolvedValue(undefined);
const spacedUpdate = new SpacedUpdate(updater, 50);
spacedUpdate.scheduleUpdate();
// Advance to trigger first update (which will fail)
await vi.advanceTimersByTimeAsync(60);
// The error should have restored the changed flag, so scheduling again should work
spacedUpdate.scheduleUpdate();
await vi.advanceTimersByTimeAsync(60);
expect(updater).toHaveBeenCalledTimes(2);
});
});

View File

@@ -77,16 +77,22 @@ export default class SpacedUpdate {
}
if (Date.now() - this.lastUpdated > this.updateInterval) {
// Update these BEFORE the async call to prevent race conditions.
// Multiple setTimeout callbacks may be pending from recursive scheduleUpdate() calls.
// Without this, they would all pass the time check during the await and trigger multiple requests.
this.lastUpdated = Date.now();
this.changed = false;
this.onStateChanged("saving");
try {
await this.updater();
this.onStateChanged("saved");
this.changed = false;
} catch (e) {
// Restore changed flag on error so a retry can happen
this.changed = true;
this.onStateChanged("error");
logError(getErrorMessage(e));
}
this.lastUpdated = Date.now();
} else {
// update isn't triggered but changes are still pending, so we need to schedule another check
this.scheduleUpdate();

View File

@@ -33,6 +33,14 @@ export async function formatCodeBlocks($container: JQuery<HTMLElement>) {
applySingleBlockSyntaxHighlight($(codeBlock), normalizedMimeType);
}
}
// Add click-to-copy for inline code (code elements not inside pre)
if (glob.device !== "print") {
const inlineCodeElements = $container.find("code:not(pre code)");
for (const inlineCode of inlineCodeElements) {
applyInlineCodeCopy($(inlineCode));
}
}
}
export function applyCopyToClipboardButton($codeBlock: JQuery<HTMLElement>) {
@@ -51,6 +59,23 @@ export function applyCopyToClipboardButton($codeBlock: JQuery<HTMLElement>) {
$codeBlock.parent().append($copyButton);
}
export function applyInlineCodeCopy($inlineCode: JQuery<HTMLElement>) {
$inlineCode
.addClass("copyable-inline-code")
.attr("title", t("code_block.click_to_copy"))
.off("click")
.on("click", (e) => {
e.stopPropagation();
const text = $inlineCode.text();
if (!isShare) {
copyTextWithToast(text);
} else {
copyText(text);
}
});
}
/**
* Applies syntax highlight to the given code block (assumed to be <pre><code>), using highlight.js.
*/

View File

@@ -360,7 +360,8 @@ function copySelectionToClipboard() {
type dynamicRequireMappings = {
"@electron/remote": typeof import("@electron/remote"),
"electron": typeof import("electron"),
"child_process": typeof import("child_process")
"child_process": typeof import("child_process"),
"url": typeof import("url")
};
export function dynamicRequire<T extends keyof dynamicRequireMappings>(moduleName: T): Awaited<dynamicRequireMappings[T]>{

View File

@@ -134,7 +134,7 @@ async function handleMessage(event: MessageEvent<any>) {
} else if (message.type === "api-log-messages") {
appContext.triggerEvent("apiLogMessages", { noteId: message.noteId, messages: message.messages });
} else if (message.type === "toast") {
toast.showMessage(message.message);
toast.showMessage(message.message, message.timeout);
} else if (message.type === "execute-script") {
const originEntity = message.originEntityId ? await froca.getNote(message.originEntityId) : null;

View File

@@ -99,7 +99,7 @@ class SetupController {
}
private async finish() {
const syncServerHost = this.syncServerHostInput.value.trim();
const syncServerHost = this.syncServerHostInput.value.trim().replace(/\/+$/, "");
const syncProxy = this.syncProxyInput.value.trim();
const password = this.passwordInput.value;

View File

@@ -835,6 +835,7 @@ table.promoted-attributes-in-tooltip th {
text-align: start;
color: var(--main-text-color) !important;
max-width: 500px;
white-space: pre-line;
box-shadow: 10px 10px 93px -25px #aaaaaa;
}
@@ -960,15 +961,19 @@ table.promoted-attributes-in-tooltip th {
background-color: var(--active-item-background-color);
}
.help-button {
.help-button,
.custom-title-bar-button {
float: inline-end;
background: none;
font-weight: 900;
color: orange;
border: 0;
cursor: pointer;
}
.help-button {
color: orange;
}
.multiplicity {
font-size: 1.3em;
}
@@ -1147,11 +1152,90 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href
padding: 0.5rem 1rem 0.5rem 1rem !important; /* make modal header padding slightly smaller */
}
.modal-header .help-button {
.modal-header .help-button,
.modal-header .custom-title-bar-button {
padding: 6px;
margin: 0 12px;
}
.modal-content-with-sidebar {
flex-direction: row !important;
}
.modal-content-with-sidebar > .modal-sidebar {
display: flex;
flex-direction: column;
border-right: 1px solid var(--main-border-color);
flex-shrink: 0;
min-height: 0;
}
.modal-content-with-sidebar .modal-sidebar-header {
padding: 0.75rem 1rem;
flex-shrink: 0;
text-align: center;
border-bottom: 1px solid var(--main-border-color);
}
.modal-content-with-sidebar .modal-sidebar-header h5 {
margin: 0;
font-size: 1em;
}
.modal-content-with-sidebar > .modal-main > .modal-header > .modal-title {
visibility: hidden;
flex-grow: 1;
width: 0;
padding: 0;
margin: 0;
overflow: hidden;
}
.modal-content-with-sidebar > .modal-main > .modal-header {
flex-wrap: nowrap;
}
.modal-content-with-sidebar > .modal-main {
display: flex;
flex-direction: column;
flex-grow: 1;
min-width: 0;
min-height: 0;
overflow: hidden;
}
.modal-content-with-sidebar > .modal-main > .modal-body {
overflow: auto;
flex-grow: 1;
min-height: 0;
}
body.mobile .modal-content-with-sidebar {
flex-direction: column !important;
}
body.mobile .modal-content-with-sidebar > .modal-sidebar {
border-right: none;
border-bottom: 1px solid var(--main-border-color);
height: 30vh;
flex-shrink: 0;
overflow: hidden;
order: 1;
}
body.mobile .modal-content-with-sidebar > .modal-main {
order: 0;
}
body.mobile .modal-content-with-sidebar .modal-sidebar-header {
display: none;
}
body.mobile .modal-content-with-sidebar > .modal-main > .modal-header > .modal-title {
visibility: visible;
width: auto;
}
.ck-mentions .ck-button {
font-size: var(--detail-font-size) !important;
padding: 5px;
@@ -1230,6 +1314,43 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href
width: 100%;
}
/* Expandable include note styles */
.include-note-title-row {
display: flex;
align-items: center;
gap: 5px;
cursor: pointer;
}
.include-note-title-row .include-note-title {
margin: 0;
}
.include-note-toggle {
background: none;
border: none;
padding: 2px;
cursor: pointer;
font-size: 1.2em;
color: var(--main-text-color);
transition: transform 0.2s ease;
display: flex;
align-items: center;
justify-content: center;
}
.include-note-toggle:hover {
color: var(--main-link-color);
}
.include-note-toggle.expanded {
transform: rotate(90deg);
}
.include-note[data-box-size="expandable"] .include-note-content {
margin-top: 10px;
}
.alert {
padding: 8px 14px;
width: auto;
@@ -1629,6 +1750,22 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
display: flex;
}
body.mobile .modal-dialog.modal-dialog-full-page-on-mobile {
width: 100%;
height: 100%;
max-height: unset;
max-width: unset;
.modal-content {
border-radius: 0;
border: 0;
.modal-body {
overflow: scroll;
}
}
}
body.mobile .modal-content {
overflow-y: auto;
border-radius: var(--bs-modal-border-radius) var(--bs-modal-border-radius) 0 0;
@@ -1643,7 +1780,7 @@ body:not(.mobile) #launcher-pane.horizontal .dropdown-submenu > .dropdown-menu {
display: inline !important;
}
body.mobile .options-section table {
body.mobile .options-section-card table {
word-break: break-all;
}
@@ -1823,12 +1960,12 @@ button.close:hover {
margin-bottom: 15px;
}
.options-section h5 {
.options-section-card h5 {
margin-top: 10px;
margin-bottom: 10px;
}
.options-section input[type="number"] {
.options-section-card input[type="number"] {
/* overriding settings from .form-control */
width: 10em !important;
flex-grow: 0 !important;
@@ -2664,3 +2801,7 @@ iframe.print-iframe {
line-height: 1.4;
white-space: pre-wrap;
}
.ck-content pre code {
tab-size: var(--code-block-tab-width, 4);
}

View File

@@ -269,9 +269,9 @@
--timeline-connector-active-color: #ddd;
--timeline-connector-hover-blend-mode: multiply;
--tooltip-background-color: rgba(255, 255, 255, 0.85);
--tooltip-foreground-color: #000000ba;
--tooltip-shadow-color: rgba(0, 0, 0, 0.15);
--tooltip-background-color: rgba(0, 0, 0, 0.818);
--tooltip-foreground-color: #ffffffeb;
--tooltip-shadow-color: rgba(0, 0, 0, 0.2);
--help-background-color: #fffc;
--help-card-background: var(--card-background-color);

View File

@@ -21,6 +21,20 @@ button.ck.ck-button:is(.ck-button-action, .ck-button-save, .ck-button-cancel, .c
&.dropdown-toggle-split {
min-width: unset;
}
.btn-group > & {
border-radius: 0;
}
.btn-group > &:first-child {
border-start-start-radius: 6px;
border-end-start-radius: 6px;
}
.btn-group > &:last-child {
border-start-end-radius: 6px;
border-end-end-radius: 6px;
}
}
button.btn.btn-primary:hover,
@@ -117,11 +131,16 @@ button.tn-low-profile:hover {
color: var(--icon-button-color);
}
:root .btn-group .icon-action:last-child {
:root .btn-group .icon-action:not(:first-child) {
border-top-left-radius: unset !important;
border-bottom-left-radius: unset !important;
}
:root .btn-group .icon-action:not(:last-child) {
border-top-right-radius: unset !important;
border-bottom-right-radius: unset !important;
}
.btn-group .tn-tool-button + .tn-tool-button {
margin-inline-start: 4px !important;
}

View File

@@ -635,6 +635,7 @@ html .note-detail-editable-text :not(figure, .include-note, hr):first-child {
inset-inline-end: 0.35em;
}
.ck-content h1,
.ck-content h2,
.ck-content h3,
.ck-content h4,
@@ -694,7 +695,7 @@ html .note-detail-editable-text :not(figure, .include-note, hr):first-child {
outline: none;
box-shadow: 0 0 0 2px var(--link-selection-outline-color);
background: var(--link-hover-background);
}
}
/* Reference link */
@@ -713,6 +714,15 @@ html .note-detail-editable-text :not(figure, .include-note, hr):first-child {
text-decoration: underline;
}
.ck-content a.reference-link small {
margin-left: 0.25em;
opacity: 0.5;
>span {
font-size: 0.7em;
}
}
/*
* Read-only text content
*/

View File

@@ -186,12 +186,7 @@ body.experimental-feature-new-layout .note-detail-content-widget-content.options
}
.options-section:not(.tn-no-card) {
margin-bottom: calc(var(--options-title-offset) + 26px) !important;
box-shadow: var(--card-box-shadow);
border: 1px solid var(--card-border-color) !important;
border-radius: 8px;
background: var(--card-background-color);
padding: var(--options-card-padding);
margin-bottom: 26px !important;
}
body.desktop .options-section:not(.tn-no-card) {
@@ -199,40 +194,70 @@ body.desktop .options-section:not(.tn-no-card) {
max-width: var(--options-card-max-width);
}
.options-section-card {
box-shadow: var(--card-box-shadow);
border: 1px solid var(--card-border-color);
border-radius: 8px;
background: var(--card-background-color);
padding: var(--options-card-padding);
}
.note-detail-content-widget-content.options {
--default-padding: 15px;
padding-top: calc(var(--default-padding) + var(--options-title-offset) + var(--options-title-font-size));
padding-top: var(--default-padding);
padding-bottom: var(--default-padding);
}
.options-section:not(.tn-no-card) h4,
.options-section:not(.tn-no-card) h5 {
.options-section:not(.tn-no-card) h4 {
text-transform: uppercase;
letter-spacing: .4pt;
}
.options-section:not(.tn-no-card) h4 {
font-size: var(--options-title-font-size);
font-weight: 600;
color: var(--launcher-pane-text-color);
margin-top: calc(-1 * var(--options-card-padding) - var(--options-title-font-size) - var(--options-title-offset)) !important;
margin-bottom: calc(var(--options-title-offset) + var(--options-card-padding)) !important;
margin-inline-start: calc(-1 * var(--options-card-padding));
margin-top: 0;
margin-bottom: var(--options-title-offset);
}
.options-section:not(.tn-no-card) h5 {
.options-section:not(.tn-no-card) .options-section-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.options-section:not(.tn-no-card) .options-section-header h4 {
margin: 0;
margin-bottom: 0;
}
.options-section:not(.tn-no-card) .options-section-header .icon-action {
margin-inline-start: auto;
}
.options-section-description {
color: var(--muted-text-color);
font-size: 13px;
margin-top: 0;
margin-bottom: 16px;
}
.options-section-card h5 {
text-transform: uppercase;
letter-spacing: .4pt;
font-size: var(--options-title-font-size);
font-weight: bold;
margin-top: 1em !important;
margin-bottom: unset !important;
}
.options-section:not(.tn-no-card) h5:first-of-type {
.options-section-card h5:first-of-type {
margin-top: unset !important;
}
.options-section hr {
.options-section-card hr {
--bs-border-width: 2px;
margin-inline-start: calc(var(--options-card-padding) * -1);
@@ -241,27 +266,26 @@ body.desktop .options-section:not(.tn-no-card) {
color: var(--root-background);
}
.options-section p:last-of-type:not(:first-of-type),
.options-section h4 + p:last-child,
.options-section .existing-anonymized-databases {
.options-section-card p:last-of-type:not(:first-of-type),
.options-section-card .existing-anonymized-databases {
margin-bottom: 0;
}
.options-section .form-group {
.options-section-card .form-group {
margin-bottom: 1em;
}
.options-section .form-group:last-child {
.options-section-card .form-group:last-child {
margin-bottom: 0;
}
.options-section ul {
.options-section-card ul {
margin: 0;
padding: 0;
margin-bottom: 1em;
}
.options-section label:not(.tn-checkbox):not(.tn-radio) {
.options-section-card label:not(.tn-checkbox):not(.tn-radio) {
margin-bottom: 6px;
}
@@ -275,7 +299,7 @@ nav.options-section-tabs .nav-tabs {
border-bottom: 0;
}
nav.options-section-tabs + .options-section {
nav.options-section-tabs + .options-section .options-section-card {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
@@ -329,3 +353,9 @@ nav.options-section-tabs + .options-section {
.etapi-options-section div {
height: auto !important;
}
/* BACKUP */
.options-section-card table a {
color: inherit;
}

View File

@@ -1,13 +1,6 @@
{
"about": {
"title": "حول تريليوم للملاحظات",
"homepage": "الصفحة الرئيسية:",
"app_version": "اصدار التطبيق:",
"sync_version": "اصدار المزامنه:",
"build_date": "تاريخ الانشاء:",
"build_revision": "مراجعة الاصدار:",
"data_directory": "مجلد البيانات:",
"db_version": "اصدار قاعدة البيانات:"
"data_directory": "مجلد البيانات:"
},
"toast": {
"critical-error": {
@@ -373,7 +366,6 @@
"theme_defined": "النسق المحدد",
"main_font": "الخط الرئيسي",
"font_family": "عائلة الخطوط",
"reload_frontend": "اعادة تحميل الواجهة",
"generic-fonts": "الخطوط العامة",
"sans-serif": "خطوط بدون زوائد",
"system-default": "الاعداد الافتراضي للنظام",
@@ -393,9 +385,7 @@
},
"delete_notes": {
"close": "غلق",
"cancel": "الغاء",
"ok": "نعم",
"delete_notes_preview": "حذف معاينة الملاحظات"
"cancel": "الغاء"
},
"export": {
"close": "غلق",
@@ -487,26 +477,6 @@
"start_button": "بدء جلسة محمية",
"help_title": "مساعدة حول الملاحظات المحمية"
},
"revisions": {
"delete_button": "حذف",
"download_button": "تنزيل",
"restore_button": "أستعادة",
"note_revisions": "مراجعات الملاحظة",
"diff_on": "عرض الفروقات",
"diff_off": "عرض المحتوى",
"file_size": "حجم الملف:",
"mime": "MIME: ",
"delete_all_button": "حذف كل المراجعات",
"settings": "اعدادات مراجعة الملاحظة",
"diff_not_available": "المقارنة غير متوفرة.",
"help_title": "مساعدة حول مراجعات الملاحظة",
"diff_off_hint": "انقر لعرض محتويات الملاحظة",
"revisions_deleted": "تم حذف جميع نسخ المراجعات للملاحظة.",
"revision_restored": "تم استعادة نسخ المراجعة للملاحظة.",
"revision_deleted": "تم حذف مراجعة الملاحظة.",
"snapshot_interval": "فاصل زمني لحفظ لقطات اصدارات المراجعة: {{seconds}}",
"maximum_revisions": "حد عدد لقطات اصدارات الملاحظة: {{number}}"
},
"sort_child_notes": {
"title": "عنوان",
"ascending": "تصاعدي",
@@ -626,7 +596,8 @@
"date-and-time": "التاريخ والوقت",
"no_backup_yet": "لايوجد نسخة احتياطية لحد الان",
"enable_daily_backup": "تمكين النسخ الاحتياطي اليومي",
"backup_database_now": "نسخ اختياطي لقاعدة البيانات الان"
"backup_database_now": "نسخ اختياطي لقاعدة البيانات الان",
"download": "تنزيل"
},
"etapi": {
"created": "تم الأنشاء",
@@ -663,8 +634,6 @@
"default_shortcuts": "اختصارات افتراضية"
},
"sync_2": {
"timeout_unit": "ميلي ثانية",
"note": "ملاحظة",
"save": "حفظ",
"help": "المساعدة",
"config_title": "تهيئة المزامنة",

View File

@@ -1,10 +1,4 @@
{
"about": {
"title": "Sobre Trilium Notes",
"homepage": "Pàgina principal:",
"app_version": "Versió de l'aplicació:",
"db_version": "Versió de la base de dades:"
},
"add_link": {
"note": "Nota"
},
@@ -25,8 +19,7 @@
},
"delete_notes": {
"close": "Tanca",
"cancel": "Cancel·la",
"ok": "OK"
"cancel": "Cancel·la"
},
"export": {
"close": "Tanca",
@@ -60,12 +53,6 @@
"recent_changes": {
"undelete_link": "recuperar"
},
"revisions": {
"restore_button": "Restaura",
"delete_button": "Suprimeix",
"download_button": "Descarrega",
"mime": "MIME: "
},
"sort_child_notes": {
"title": "títol",
"ascending": "ascendent",

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "关于 Trilium Notes",
"homepage": "项目主页:",
"app_version": "应用版本:",
"db_version": "数据库版本:",
"sync_version": "同步版本:",
"build_date": "编译日期:",
"build_revision": "编译版本:",
"data_directory": "数据目录:"
},
"toast": {
@@ -41,7 +34,9 @@
"link_title_mirrors": "链接标题跟随笔记标题变化",
"link_title_arbitrary": "链接标题可随意修改",
"link_title": "链接标题",
"button_add_link": "添加链接"
"button_add_link": "添加链接",
"anchor": "锚点(可选)",
"anchor_none": "无(笔记链接)"
},
"branch_prefix": {
"edit_branch_prefix": "编辑分支前缀",
@@ -88,17 +83,22 @@
"also_delete_note": "同时删除笔记"
},
"delete_notes": {
"delete_notes_preview": "删除笔记预览",
"close": "关闭",
"delete_all_clones_description": "同时删除所有克隆(可以在最近修改中撤消)",
"erase_notes_description": "通常(软)删除仅标记笔记为已删除,可以在一段时间内通过最近修改对话框撤消。选中此选项将立即擦除笔记,不可撤销。",
"erase_notes_description": "立即删除笔记,而不是软删除。此操作无法撤销,并将强制应用程序重新加载。",
"erase_notes_warning": "永久擦除笔记(无法撤销),包括所有克隆。这将强制应用程序重载。",
"notes_to_be_deleted": "删除以下笔记 ({{notesCount}})",
"notes_to_be_deleted": "删除笔记({{notesCount}}",
"no_note_to_delete": "没有笔记将被删除(仅克隆)。",
"broken_relations_to_be_deleted": "将删除以下关系并断开连接 ({{ relationCount}})",
"broken_relations_to_be_deleted": "断开的关联({{relationCount}}",
"cancel": "取消",
"ok": "确定",
"deleted_relation_text": "笔记 {{- note}} (将被删除的笔记) 被以下关系 {{- relation}} 引用, 来自 {{- source}}。"
"title": "删除笔记",
"delete": "删除",
"clones_label": "克隆",
"delete_clones_description_other": "同时删除 {{count}} 个其他克隆。此操作可在最近的更改中撤销。",
"erase_notes_label": "永久擦除",
"table_note_with_relation": "关联笔记",
"table_relation": "关联",
"table_points_to": "指向(已删除)"
},
"export": {
"export_note_title": "导出笔记",
@@ -209,7 +209,8 @@
"box_size_small": "小型 (显示大约10行)",
"box_size_medium": "中型 (显示大约30行)",
"box_size_full": "完整显示(完整文本框)",
"button_include": "包含笔记"
"button_include": "包含笔记",
"box_size_expandable": "可展开(默认折叠)"
},
"info": {
"modalTitle": "信息消息",
@@ -270,33 +271,6 @@
"undelete_link": "恢复删除",
"confirm_undelete": "您确定要恢复此笔记及其子笔记吗?"
},
"revisions": {
"note_revisions": "笔记历史版本",
"delete_all_revisions": "删除此笔记的所有修订版本",
"delete_all_button": "删除所有修订版本",
"help_title": "关于笔记修订版本的帮助",
"confirm_delete_all": "您是否要删除此笔记的所有修订版本?",
"no_revisions": "此笔记暂无修订版本...",
"restore_button": "恢复",
"confirm_restore": "您是否要恢复此修订版本?这将使用此修订版本覆盖笔记的当前标题和内容。",
"delete_button": "删除",
"confirm_delete": "您是否要删除此修订版本?",
"revisions_deleted": "笔记修订版本已删除。",
"revision_restored": "笔记修订版本已恢复。",
"revision_deleted": "笔记修订版本已删除。",
"snapshot_interval": "笔记快照保存间隔: {{seconds}}秒。",
"maximum_revisions": "当前笔记的最大历史数量: {{number}}。",
"settings": "笔记修订设置",
"download_button": "下载",
"mime": "MIME 类型: ",
"file_size": "文件大小:",
"preview_not_available": "无法预览此类型的笔记。",
"diff_on": "显示差异",
"diff_off": "显示内容",
"diff_on_hint": "点击以显示笔记源代码差异",
"diff_off_hint": "点击以显示笔记内容",
"diff_not_available": "差异不可用。"
},
"sort_child_notes": {
"sort_children_by": "按...排序子笔记",
"sorting_criteria": "排序条件",
@@ -368,7 +342,7 @@
"calendar_root": "标记应用作为每日笔记的根。只应标记一个笔记。",
"archived": "含有此标签的笔记默认在搜索结果中不可见(也适用于跳转到、添加链接对话框等)。",
"exclude_from_export": "笔记(及其子树)不会包含在任何笔记导出中",
"run": "定义脚本应运行的事件。可能的值包括:\n<ul>\n<li>frontendStartup - Trilium前端启动时或刷新时但不会在移动端执行。</li>\n<li>mobileStartup - Trilium前端启动时或刷新时 在移动端会执行。</li>\n<li>backendStartup - Trilium后端启动时</li>\n<li>hourly - 每小时运行一次。您可以使用附加标签<code>runAtHour</code>指定小时。</li>\n<li>daily - 每天运行一次</li>\n</ul>",
"run": "定义脚本应运行的事件。可能的值包括:\n<ul>\n<li>frontendStartup - Trilium前端启动时或刷新时但不会在移动端执行。</li>\n<li>mobileStartup - Trilium前端启动时或刷新时 在移动端会执行。</li>\n<li>backendStartup - Trilium后端启动时</li>\n<li>hourly - 每小时运行一次。您可以使用附加标签<code>runAtHour</code>指定小时。</li>\n<li>daily - 每天运行一次</li>\n</ul>",
"run_on_instance": "定义应在哪个Trilium实例上运行。默认为所有实例。",
"run_at_hour": "应在哪个小时运行。应与<code>#run=hourly</code>一起使用。可以多次定义,以便一天内运行多次。",
"disable_inclusion": "含有此标签的脚本不会包含在父脚本执行中。",
@@ -447,7 +421,9 @@
"print_landscape": "导出为 PDF 时,将页面方向更改为横向而不是纵向。",
"print_page_size": "导出为 PDF 时,更改页面大小。支持的值:<code>A0</code>、<code>A1</code>、<code>A2</code>、<code>A3</code>、<code>A4</code>、<code>A5</code>、<code>A6</code>、<code>Legal</code>、<code>Letter</code>、<code>Tabloid</code>、<code>Ledger</code>。",
"color_type": "颜色",
"textarea": "多行文本"
"textarea": "多行文本",
"print_scale": "导出为 PDF 时,更改渲染内容的比例。取值范围从 0.1 (10%) 到 2 (200%),默认值为 1 (100%)。",
"print_margins": "导出为 PDF 时,设置页面边距。可以使用 <code>default</code>、<code>none</code>、<code>minimum</code> 或以毫米为单位的自定义值,例如 <code>top,right,bottom,left</code>。"
},
"attribute_editor": {
"help_text_body1": "要添加标签,只需输入例如 <code>#rock</code> 或者如果您还想添加值,则例如 <code>#year = 2020</code>",
@@ -710,7 +686,12 @@
"export_as_image": "导出为图像",
"export_as_image_png": "PNG栅格",
"export_as_image_svg": "SVG矢量图",
"view_ocr_text": "查看 OCR 文本"
"view_ocr_text": "查看 OCR 文本",
"word_wrap": "自动换行",
"word_wrap_auto": "自动",
"word_wrap_auto_description": "遵循全局设置",
"word_wrap_on": "开启",
"word_wrap_off": "关闭"
},
"onclick_button": {
"no_click_handler": "按钮组件'{{componentId}}'没有定义点击处理程序"
@@ -804,7 +785,10 @@
"expand_first_level": "展开直接子代",
"expand_nth_level": "展开 {{depth}} 层",
"expand_all_levels": "展开所有层级",
"hide_child_notes": "隐藏树中的子笔记"
"hide_child_notes": "隐藏树中的子笔记",
"open_all_in_tabs": "全部打开",
"open_all_in_tabs_tooltip": "在新标签页中打开所有结果",
"open_all_confirm": "这将在新标签页中打开 {{count}} 个笔记。继续吗?"
},
"edited_notes": {
"no_edited_notes_found": "今天还没有编辑过的笔记...",
@@ -858,7 +842,8 @@
"collapse": "折叠到正常大小",
"title": "笔记地图",
"fix-nodes": "固定节点",
"link-distance": "链接距离"
"link-distance": "链接距离",
"too-many-notes": "此子树包含 {{count}} 个笔记,超过了笔记地图中可显示的 {{max}} 个笔记的限制。"
},
"note_paths": {
"title": "笔记路径",
@@ -1063,7 +1048,8 @@
"note_already_in_diagram": "笔记 \"{{title}}\" 已经在图中。",
"enter_title_of_new_note": "输入新笔记的标题",
"default_new_note_title": "新笔记",
"click_on_canvas_to_place_new_note": "点击画布以放置新笔记"
"click_on_canvas_to_place_new_note": "点击画布以放置新笔记",
"rename_relation": "重命名关系"
},
"backend_log": {
"refresh": "刷新"
@@ -1072,15 +1058,17 @@
"title": "检查一致性",
"find_and_fix_button": "查找并修复一致性问题",
"finding_and_fixing_message": "正在查找并修复一致性问题...",
"issues_fixed_message": "一致性问题应该已被修复。"
"issues_fixed_message": "一致性问题应该已被修复。",
"find_and_fix_label": "查找并修复一致性问题",
"find_and_fix_description": "扫描并自动修复数据库中的任何数据一致性问题。"
},
"database_anonymization": {
"title": "数据库匿名化",
"full_anonymization": "完全匿名化",
"full_anonymization_description": "此操作将创建一个新的数据库副本并进行匿名化处理(删除所有笔记内容,仅保留结构和一些非敏感元数据),用来分享到网上做调试而不用担心泄漏您的个人资料。",
"full_anonymization_description": "创建数据库副本,移除所有笔记内容,仅保留数据库结构和非敏感元数据。在调试问题时,可安全地在线共享。",
"save_fully_anonymized_database": "保存完全匿名化的数据库",
"light_anonymization": "轻度匿名化",
"light_anonymization_description": "此操作将创建一个新的数据库副本,并对其进行轻度匿名化处理——仅删除所有笔记内容,但保留标题属性。此外,自定义 JS 前端/后端脚本笔记和自定义小部件将保留。这提供更多上下文以调试问题。",
"light_anonymization_description": "创建一个副本,其中移除笔记内容,但保留标题属性和自定义脚本/小部件。这有助于提供更多调试信息。",
"choose_anonymization": "您可以自行决定是提供完全匿名化还是轻度匿名化的数据库。即使是完全匿名化的数据库也非常有用,但在某些情况下,轻度匿名化的数据库可以加快错误识别和修复的过程。",
"save_lightly_anonymized_database": "保存轻度匿名化的数据库",
"existing_anonymized_databases": "现有的匿名化数据库",
@@ -1089,15 +1077,17 @@
"error_creating_anonymized_database": "无法创建匿名化数据库,请检查后端日志以获取详细信息",
"successfully_created_fully_anonymized_database": "成功创建完全匿名化的数据库,路径为 {{anonymizedFilePath}}",
"successfully_created_lightly_anonymized_database": "成功创建轻度匿名化的数据库,路径为 {{anonymizedFilePath}}",
"no_anonymized_database_yet": "尚无匿名化数据库。"
"no_anonymized_database_yet": "尚无匿名化数据库。",
"description": "创建数据库的匿名副本,以便在调试问题时与开发人员共享,而不会泄露个人数据。"
},
"database_integrity_check": {
"title": "数据库完整性检查",
"description": "检查 SQLite 数据库是否损坏。根据数据库的大小,可能会需要一些时间。",
"check_button": "检查数据库完整性",
"checking_integrity": "正在检查数据库完整性...",
"integrity_check_succeeded": "完整性检查成功 - 未发现问题。",
"integrity_check_failed": "完整性检查失败: {{results}}"
"integrity_check_failed": "完整性检查失败: {{results}}",
"check_integrity_label": "检查数据库完整性",
"check_integrity_description": "验证 SQLite 数据库是否已损坏。"
},
"sync": {
"title": "同步",
@@ -1107,28 +1097,31 @@
"filling_entity_changes": "正在填充实体变更行...",
"sync_rows_filled_successfully": "同步行填充成功",
"finished-successfully": "同步已完成。",
"failed": "同步失败:{{message}}"
"failed": "同步失败:{{message}}",
"force_full_sync_label": "强制全量同步",
"force_full_sync_description": "触发与同步服务器的全量同步,重新上传所有更改。",
"fill_entity_changes_description": "重建实体变更记录。如果同步过程中缺少某些变更,请使用此功能。",
"fill_entity_changes_label": "填充实体变更"
},
"vacuum_database": {
"title": "数据库清理",
"description": "这会重建数据库,通常会减少占用空间,不会删除数据。",
"button_text": "清理数据库",
"vacuuming_database": "正在清理数据库...",
"database_vacuumed": "数据库已清理"
"database_vacuumed": "数据库已清理",
"vacuum_label": "数据库清理",
"vacuum_description": "重建数据库以减小文件大小。数据不会发生任何变化。"
},
"fonts": {
"theme_defined": "跟随主题",
"fonts": "字体",
"main_font": "字体",
"main_font": "界面字体",
"font_family": "字体系列",
"size": "大小",
"note_tree_font": "笔记树字体",
"note_detail_font": "笔记详情字体",
"monospace_font": "等宽(代码)字体",
"note_tree_and_detail_font_sizing": "请注意,笔记树字体和详细字体的大小相对于主字体大小设置。",
"not_all_fonts_available": "并非所有列出的字体都可能在您的系统上可用。",
"apply_font_changes": "要应用字体更改,请点击",
"reload_frontend": "重载前端",
"note_detail_font": "文档字体",
"monospace_font": "等宽字体",
"not_all_fonts_available": "并非所有列出的字体都可能在您的系统上可用",
"generic-fonts": "通用字体",
"sans-serif-system-fonts": "无衬线系统字体",
"serif-system-fonts": "衬线系统字体",
@@ -1137,7 +1130,12 @@
"serif": "衬线",
"sans-serif": "无衬线",
"monospace": "等宽",
"system-default": "系统默认"
"system-default": "系统默认",
"custom_fonts": "使用自定义字体",
"preview": "预览",
"monospace_font_description": "用于代码注释和代码块",
"size_relative_to_general": "大小相对于一般字体大小",
"apply_changes": "重新加载以应用更改"
},
"max_content_width": {
"title": "内容宽度",
@@ -1157,20 +1155,23 @@
"edited_notes_message": "日记笔记自动打开编辑过的笔记功能区标签页"
},
"theme": {
"title": "主题",
"theme_label": "主题",
"title": "用户界面",
"theme_label": "应用主题",
"override_theme_fonts_label": "覆盖主题字体",
"triliumnext": "Trilium跟随系统颜色方案",
"triliumnext-light": "Trilium浅色",
"triliumnext-dark": "Trilium深色",
"triliumnext": "跟随系统颜色方案",
"triliumnext-light": "浅色",
"triliumnext-dark": "深色",
"layout": "布局",
"layout-vertical-title": "垂直",
"layout-horizontal-title": "水平",
"layout-vertical-description": "启动栏位于左侧(默认)",
"layout-horizontal-description": "启动栏位于标签页栏下方,标签页栏现在是全宽的。",
"auto_theme": "传统(跟随系统配色方案",
"light_theme": "传统(浅色",
"dark_theme": "传统(深色"
"auto_theme": "跟随系统配色方案",
"light_theme": "浅色",
"dark_theme": "深色",
"modern_themes": "现代",
"legacy_themes": "传统",
"custom_themes": "自定义"
},
"zoom_factor": {
"title": "缩放系数(仅桌面客户端有效)",
@@ -1179,7 +1180,7 @@
"code_auto_read_only_size": {
"title": "自动只读大小",
"description": "自动只读大小是指笔记超过设置的大小后自动设置为只读模式(为性能考虑)。",
"label": "自动只读大小(代码笔记)",
"label": "自动只读大小",
"unit": "字符"
},
"code_mime_types": {
@@ -1222,24 +1223,27 @@
"batch_ocr_error": "批量处理过程中出错:{{error}}"
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "附件清理超时",
"attachment_auto_deletion_description": "如果附件在一段时间后不再被笔记引用,它们将自动被删除(并被清理)。",
"erase_attachments_after": "在此时间后删除未使用的附件:",
"manual_erasing_description": "您还可以手动触发清理(而不考虑上述定义的超时时间):",
"erase_unused_attachments_now": "立即清理未使用的附件笔记",
"unused_attachments_erased": "未使用的附件已被删除。"
"attachment_erasure_timeout": "未使用的附件",
"erase_attachments_after": "在此时间后清理未使用的附件",
"manual_erasing_description": "手动触发清理,忽略上述超时。",
"erase_unused_attachments_now": "立即清理未使用的附件",
"unused_attachments_erased": "未使用的附件已被清理。",
"description": "不再被任何笔记引用的附件被视为未使用,可以在一段时间后自动清理。",
"erase_attachments_after_description": "未使用附件被永久清理前的时间。"
},
"network_connections": {
"network_connections_title": "网络连接",
"check_for_updates": "自动检查更新"
"network_connections_title": "网络",
"check_for_updates": "自动检查更新",
"check_for_updates_description": "在 GitHub 上检查新版本,并在可用时在全局菜单中显示通知。"
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "笔记清理超时",
"note_erasure_description": "被删除的笔记(以及属性、修订历史等)最初仅被标记为“删除”,可以从“最近修改”对话框中恢复它们。经过一段时间后,已删除的笔记会被“清理”,这意味着它们的内容将无法恢复。此设置允许您配置从删除到清除笔记之间的时间长度。",
"erase_notes_after": "在此时间后删除笔记:",
"manual_erasing_description": "您还可以手动触发清理(不考虑上述定义的超时):",
"note_erasure_timeout_title": "已删除的笔记",
"erase_notes_after": "在此时间后清理笔记",
"manual_erasing_description": "手动触发清理,忽略上述超时。",
"erase_deleted_notes_now": "立即清理已删除的笔记",
"deleted_notes_erased": "已删除的笔记已被清理。"
"deleted_notes_erased": "已删除的笔记已被清理。",
"description": "删除的笔记最初只是被标记为已删除,可以从“最近的笔记”中恢复。经过一段时间后,它们将被永久清理。",
"erase_notes_after_description": "删除的笔记被永久清理之前的时间。"
},
"revisions_snapshot_interval": {
"note_revisions_snapshot_interval_title": "笔记修订快照间隔",
@@ -1314,7 +1318,6 @@
"first-week-contains-first-thursday": "第一周包含一年的第一个周四",
"first-week-has-minimum-days": "第一周有最小天数",
"min-days-in-first-week": "第一周的最小天数",
"first-week-info": "第一周包含一年的第一个周四,基于 <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> 标准。",
"first-week-warning": "更改第一周选项可能会导致与现有周笔记重复,已创建的周笔记将不会相应更新。",
"formatting-locale": "日期和数字格式",
"tuesday": "周二",
@@ -1337,7 +1340,8 @@
"date-and-time": "日期和时间",
"path": "路径",
"database_backed_up_to": "数据库已备份到 {{backupFilePath}}",
"no_backup_yet": "尚无备份"
"no_backup_yet": "尚无备份",
"download": "下载"
},
"etapi": {
"title": "ETAPI",
@@ -1435,25 +1439,28 @@
"spellcheck": {
"title": "拼写检查",
"description": "这些选项仅适用于桌面版本,浏览器将使用其原生的拼写检查功能。",
"enable": "启用拼写检查",
"language_code_label": "语言代码",
"restart-required": "拼写检查选项的更改将在应用重启后生效。"
"enable": "拼写检查",
"language_code_label": "拼写检查语言",
"restart-required": "拼写检查选项的更改将在应用重启后生效。",
"custom_dictionary_title": "自定义词典",
"custom_dictionary_description": "添加到词典中的单词会在您的所有设备上同步。",
"custom_dictionary_edit": "自定义词",
"custom_dictionary_edit_description": "编辑拼写检查器不应标记的单词列表。更改将在重启后生效。",
"custom_dictionary_open": "编辑词典",
"related_description": "配置拼写检查语言和自定义词典。"
},
"sync_2": {
"config_title": "同步配置",
"server_address": "服务器实例地址",
"timeout": "同步超时(单位:毫秒)",
"proxy_label": "同步代理服务器(可选)",
"note": "注意",
"note_description": "代理设置留空则使用系统代理(仅桌面客户端有效)。",
"special_value_description": "另一个特殊值是 <code>noproxy</code>,它强制忽略系统代理并遵守 <code>NODE_TLS_REJECT_UNAUTHORIZED</code>。",
"save": "保存",
"help": "帮助",
"test_title": "同步测试",
"test_description": "测试和同步服务器之间的连接。如果同步服务器没有初始化,会将本地文档同步到同步服务器上。",
"test_button": "测试同步",
"handshake_failed": "同步服务器握手失败,错误:{{message}}",
"timeout_unit": "毫秒"
"timeout_description": "同步连接速度慢时,应该等待多久才放弃?如果网络不稳定,请增加等待时间。"
},
"api_log": {
"close": "关闭"
@@ -1858,7 +1865,9 @@
}
},
"code-editor-options": {
"title": "编辑器"
"title": "编辑器",
"tab_width": "制表符宽度",
"tab_width_unit": "空格"
},
"custom_date_time_format": {
"title": "自定义日期/时间格式",
@@ -1876,7 +1885,7 @@
},
"content_language": {
"title": "内容语言",
"description": "选择一种或多种语言出现在只读或可编辑文本注释的基本属性,这将支持拼写检查从右向左之类的功能。"
"description": "在只读或可编辑文本笔记的“基本属性”部分,选择一种或多种语言,这些语言将显示在语言选择列表中。这将启用拼写检查从右到左的阅读支持和文本提取OCR功能。"
},
"switch_layout_button": {
"title_vertical": "将编辑面板移至底部",
@@ -2017,11 +2026,11 @@
},
"ui-performance": {
"title": "性能",
"enable-motion": "启用过渡和动画",
"enable-shadows": "启用阴影",
"enable-backdrop-effects": "启用菜单、弹窗和面板的背景效果",
"enable-smooth-scroll": "启用平滑滚动",
"app-restart-required": "(需重启程序以应用更改)"
"enable-motion": "过渡和动画",
"enable-shadows": "阴影",
"enable-backdrop-effects": "菜单、弹窗和面板的背景效果",
"enable-smooth-scroll": "平滑滚动",
"app-restart-required": "需要重启应用"
},
"pagination": {
"total_notes": "{{count}} 篇笔记",
@@ -2231,7 +2240,9 @@
"sample_xy": "散点图",
"sample_venn": "韦恩图",
"sample_ishikawa": "鱼骨图",
"placeholder": "输入你的美人鱼图的内容,或者使用下面的示例图之一。"
"placeholder": "输入你的美人鱼图的内容,或者使用下面的示例图之一。",
"sample_treeview": "树形视图",
"sample_wardley": "沃德利地图"
},
"llm_chat": {
"placeholder": "输入消息…",
@@ -2262,7 +2273,8 @@
"note_context_disabled": "点击即可将当前注释添加到上下文中",
"no_provider_message": "未配置人工智能提供商。添加一个即可开始对话。",
"add_provider": "添加人工智能提供商",
"note_tools": "笔记访问"
"note_tools": "笔记访问",
"sources_summary": "来自 {{sites}} 个网站的 {{count}} 个来源"
},
"sidebar_chat": {
"title": "AI对话",
@@ -2285,7 +2297,10 @@
"processing": "正在处理...",
"processing_started": "OCR识别已开始。请稍候片刻并刷新页面。",
"processing_failed": "OCR处理启动失败",
"view_extracted_text": "查看提取的文本OCR"
"view_extracted_text": "查看提取的文本OCR",
"processing_complete": "OCR识别处理完成。",
"text_filtered_low_confidence": "OCR 检测到文本,置信度为 {{confidence}}% ,但由于您的最小阈值为 {{threshold}}% ,因此该文本已被丢弃。",
"open_media_settings": "打开设置"
},
"mind-map": {
"addChild": "添加子节点",
@@ -2303,6 +2318,46 @@
},
"llm": {
"settings_description": "配置人工智能和大语言模型集成。",
"add_provider": "添加提供商"
"add_provider": "添加提供商",
"settings_title": "AI / LLM",
"feature_not_enabled": "在“设置”→“高级”→“实验性功能”中启用 LLM 实验性功能,即可使用 AI 集成。",
"add_provider_title": "添加AI供应商",
"configured_providers": "已配置的供应商",
"no_providers_configured": "尚未配置任何供应商。",
"provider_name": "名称",
"provider_type": "供应商"
},
"revisions": {
"note_revisions": "笔记修订",
"delete_all_revisions": "删除此笔记的所有修订版本",
"delete_all_button": "删除所有修订版本",
"help_title": "关于笔记修订的帮助",
"confirm_delete_all": "是否要删除此笔记的所有修订版本?",
"no_revisions": "这篇笔记目前还没有修改……",
"restore_button": "恢复",
"diff_on": "显示差异",
"diff_off": "显示内容",
"diff_on_hint": "点击显示笔记来源差异",
"diff_off_hint": "点击显示笔记内容",
"diff_not_available": "差异数据不可用。",
"confirm_restore": "是否恢复此版本?这将用此版本覆盖笔记的当前标题和内容。",
"delete_button": "删除",
"confirm_delete": "您要删除此修订吗?",
"revisions_deleted": "笔记修订已被删除。",
"revision_restored": "笔记修订已恢复。",
"revision_deleted": "笔记修订已删除。",
"snapshot_interval": "笔记修订快照间隔:{{seconds}}秒。",
"maximum_revisions": "笔记修订快照限制:{{number}}。",
"settings": "笔记修订设置",
"download_button": "下载",
"mime": "MIME 类型: ",
"file_size": "文件大小:",
"preview_not_available": "无法预览此类型的笔记。"
},
"database": {
"title": "数据库"
},
"auto_link_attribute_list": {
"title": "系统属性"
}
}

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "O Trilium Notes",
"homepage": "Domovská stránka:",
"app_version": "Verze aplikace:",
"db_version": "Verze DB:",
"sync_version": "Verze synchronizace:",
"build_date": "Datum sestavení:",
"build_revision": "Revize sestavení:",
"data_directory": "Datový adresář:"
},
"toast": {
@@ -77,16 +70,13 @@
},
"delete_notes": {
"cancel": "Zrušit",
"ok": "OK",
"close": "Zavřít",
"delete_notes_preview": "Odstranit náhled poznámek",
"delete_all_clones_description": "Odstraňte také všechny klony (lze vrátit zpět v nedávných změnách)",
"erase_notes_description": "Normální (měkké) smazání pouze označí poznámky jako smazané a lze je během určité doby obnovit (v dialogovém okně posledních změn). Zaškrtnutím této možnosti se poznámky okamžitě vymažou a nebude možné je obnovit.",
"erase_notes_warning": "Trvale smažte poznámky (nelze vrátit zpět), včetně všech klonů. Tím se vynutí opětovné načtení aplikace.",
"notes_to_be_deleted": "Následující poznámky budou smazány ({{notesCount}})",
"no_note_to_delete": "Žádná poznámka nebude smazána (pouze klony).",
"broken_relations_to_be_deleted": "Následující vazby budou přerušeny a smazány ({{relationCount}})",
"deleted_relation_text": "Poznámka {{- note}} (bude smazána) je odkazována vazbou {{- relation}} pocházející z {{- source}}."
"broken_relations_to_be_deleted": "Následující vazby budou přerušeny a smazány ({{relationCount}})"
},
"export": {
"close": "Zavřít",
@@ -276,33 +266,6 @@
"undelete_link": "obnovit",
"confirm_undelete": "Chcete obnovit tuto poznámku a její podpoznámky?"
},
"revisions": {
"note_revisions": "Revize poznámek",
"delete_all_revisions": "Smazat všechny revize této poznámky",
"delete_all_button": "Smazat všechny revize",
"help_title": "Nápověda k revizím poznámek",
"confirm_delete_all": "Chcete smazat všechny revize této poznámky?",
"no_revisions": "Ještě nejsou žádné revize pro tuto poznámku...",
"restore_button": "Obnovit",
"diff_on": "Zobrazit rozdíly",
"diff_off": "Zobrazit obsah",
"diff_on_hint": "Klikněte pro zobrazení rozdílů zdrojového kódu poznámky",
"diff_off_hint": "Klikněte pro zobrazení obsahu poznámky",
"diff_not_available": "Rozdíly nejsou dostupné.",
"confirm_restore": "Chcete obnovit tuto revizi? Tím se přepíše aktuální název a obsah poznámky s touto revizí.",
"delete_button": "Smazat",
"confirm_delete": "Chcete smazat tuto revizi?",
"revisions_deleted": "Revize poznámky byly smazány.",
"revision_restored": "Revize poznámky byla obnovena.",
"revision_deleted": "Revize poznámky byla smazána.",
"snapshot_interval": "Interval snímků revizí poznámky: {{seconds}}s.",
"maximum_revisions": "Limit snímků revizí poznámky: {{number}}.",
"settings": "Nastavení revizí poznámky",
"download_button": "Stáhnout",
"mime": "MIME: ",
"file_size": "Velikost souboru:",
"preview_not_available": "Náhled není dostupný pro tento typ poznámky."
},
"sort_child_notes": {
"sort_children_by": "Seřadit dceřiné podle...",
"sorting_criteria": "Kritéria řazení",
@@ -1133,7 +1096,6 @@
},
"database_integrity_check": {
"title": "Kontrola integrity databáze",
"description": "Toto zkontroluje, zda databáze není poškozena na úrovni SQLite. Může to chvíli trvat v závislosti na velikosti databáze.",
"check_button": "Zkontrolovat integritu databáze",
"checking_integrity": "Probíhá kontrola integrity databáze...",
"integrity_check_succeeded": "Kontrola integrity proběhla úspěšně - nebyly nalezeny žádné problémy.",
@@ -1173,10 +1135,7 @@
"note_tree_font": "Font stromu poznámek",
"note_detail_font": "Font detailu poznámky",
"monospace_font": "Monospace (kód) Font",
"note_tree_and_detail_font_sizing": "Upozorňujeme, že velikost fontu stromu a detailu je relativní k hlavnímu nastavení velikosti fontu.",
"not_all_fonts_available": "Ne všechny uvedené fonty nemusí být dostupné ve vašem systému.",
"apply_font_changes": "Pro použití změn fontu klikněte na",
"reload_frontend": "obnovení frontendu",
"generic-fonts": "Obecné fonty",
"sans-serif-system-fonts": "Systémové sans-serif fonty",
"serif-system-fonts": "Systémové serif fonty",
@@ -1282,7 +1241,6 @@
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Časový limit pro vymazání příloh",
"attachment_auto_deletion_description": "Přílohy jsou automaticky smazány (a vymazány), pokud nejsou po definovaném časovém limitu odkazovány jejich poznámkách.",
"erase_attachments_after": "Vymazat nepoužité přílohy po:",
"manual_erasing_description": "Můžete také spustit vymazání ručně (bez ohledu na výše definovaný časový limit):",
"erase_unused_attachments_now": "Vymazat nepoužité přílohy nyní",
@@ -1294,7 +1252,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Časový limit pro vymazání Poznámky",
"note_erasure_description": "Odstraněné poznámky (a atributy, revize...) jsou zpočátku pouze označeny jako odstraněné a lze je obnovit v dialogovém okně „Poslední poznámky“. Po uplynutí určité doby jsou odstraněné poznámky „vymazány“, což znamená, že jejich obsah již nelze obnovit. Toto nastavení vám umožňuje určit dobu, která uplyne mezi odstraněním a vymazáním poznámky.",
"erase_notes_after": "Vymazat Poznámky po:",
"manual_erasing_description": "Můžete také spustit vymazání ručně (bez ohledu na výše uvedený časový limit):",
"erase_deleted_notes_now": "Vymazat smazané Poznámky nyní",
@@ -1384,7 +1341,6 @@
"first-week-contains-first-thursday": "První týden obsahuje první čtvrtek v roce",
"first-week-has-minimum-days": "První týden má minimální počet dní",
"min-days-in-first-week": "Minimální počet dní v prvním týdnu",
"first-week-info": "První týden obsahuje první čtvrtek v roce je založen na <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> standardu.",
"first-week-warning": "Změna možností prvního týdne může způsobit duplikaci se stávajícími Týdenními Poznámkami a stávající Týdenní Poznámky nebudou odpovídajícím způsobem aktualizovány.",
"formatting-locale": "Formát data & čísel",
"formatting-locale-auto": "Na základě jazyka aplikace"
@@ -1508,11 +1464,7 @@
"config_title": "Konfigurace Synchronizace",
"server_address": "Adresa instance serveru",
"timeout": "Časový limit synchronizace",
"timeout_unit": "milisekund",
"proxy_label": "Proxy server pro synchronizaci (volitelné)",
"note": "Poznámka",
"note_description": "Pokud ponecháte nastavení proxy prázdné, bude použit systémový proxy (platí pouze pro desktop/electron build).",
"special_value_description": "Další speciální hodnota je <code>noproxy</code>, která vynutí ignorování i systémového proxy a respektuje <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"save": "Uložit",
"help": "Nápověda",
"test_title": "Test Synchronizace",

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Über Trilium Notes",
"homepage": "Startseite:",
"app_version": "App-Version:",
"db_version": "DB-Version:",
"sync_version": "Sync-Version:",
"build_date": "Build-Datum:",
"build_revision": "Build-Revision:",
"data_directory": "Datenverzeichnis:"
},
"toast": {
@@ -88,17 +81,22 @@
"also_delete_note": "Auch die Notiz löschen"
},
"delete_notes": {
"delete_notes_preview": "Vorschau der Notizen löschen",
"close": "Schließen",
"delete_all_clones_description": "auch alle Klone löschen (kann bei letzte Änderungen rückgängig gemacht werden)",
"erase_notes_description": "Beim normalen (vorläufigen) Löschen werden die Notizen nur als gelöscht markiert und sie können innerhalb eines bestimmten Zeitraums (im Dialogfeld „Letzte Änderungen“) wiederhergestellt werden. Wenn du diese Option aktivierst, werden die Notizen sofort gelöscht und es ist nicht möglich, die Notizen wiederherzustellen.",
"erase_notes_warning": "Notizen dauerhaft löschen (kann nicht rückgängig gemacht werden), einschließlich aller Klone. Dadurch wird ein Neuladen der Anwendung erzwungen.",
"notes_to_be_deleted": "Folgende Notizen werden gelöscht ({{notesCount}})",
"notes_to_be_deleted": "({{notesCount}}) Notizen werden gelöscht",
"no_note_to_delete": "Es werden keine Notizen gelöscht (nur Klone).",
"broken_relations_to_be_deleted": "Folgende Beziehungen werden gelöst und gelöscht ({{ relationCount}})",
"broken_relations_to_be_deleted": "Unterbrochene Beziehungen ({{relationCount}})",
"cancel": "Abbrechen",
"ok": "OK",
"deleted_relation_text": "Notiz {{- note}} (soll gelöscht werden) wird von Beziehung {{- relation}} ausgehend von {{- source}} referenziert."
"title": "Notizen löschen",
"clones_label": "Duplikate",
"delete_clones_description_one": "Löscht {{count}} weiteres Duplikat. Kann unter „Letzte Änderungen“ rückgängig gemacht werden.",
"delete_clones_description_other": "Löscht {{count}} weitere Duplikate. Kann unter „Letzte Änderungen“ rückgängig gemacht werden.",
"erase_notes_label": "Permanent löschen",
"table_note_with_relation": "Notiz mit Beziehung",
"table_relation": "Beziehung",
"delete": "Löschen"
},
"export": {
"export_note_title": "Notiz exportieren",
@@ -270,33 +268,6 @@
"undelete_link": "Wiederherstellen",
"confirm_undelete": "Möchten Sie diese Notiz und ihre Unternotizen wiederherstellen?"
},
"revisions": {
"note_revisions": "Notizrevisionen",
"delete_all_revisions": "Lösche alle Revisionen dieser Notiz",
"delete_all_button": "Alle Revisionen löschen",
"help_title": "Hilfe zu Notizrevisionen",
"confirm_delete_all": "Möchtest du alle Revisionen dieser Notiz löschen?",
"no_revisions": "Für diese Notiz gibt es noch keine Revisionen...",
"confirm_restore": "Möchtest du diese Revision wiederherstellen? Dadurch werden der aktuelle Titel und Inhalt der Notiz mit dieser Revision überschrieben.",
"confirm_delete": "Möchtest du diese Revision löschen?",
"revisions_deleted": "Notizrevisionen wurden gelöscht.",
"revision_restored": "Die Notizrevision wurde wiederhergestellt.",
"revision_deleted": "Notizrevision wurde gelöscht.",
"snapshot_interval": "Notizrevisionen-Snapshot Intervall: {{seconds}}s.",
"maximum_revisions": "Maximale Revisionen für aktuelle Notiz: {{number}}.",
"settings": "Einstellungen für Notizrevisionen",
"download_button": "Herunterladen",
"mime": "MIME: ",
"file_size": "Dateigröße:",
"preview_not_available": "Für diesen Notiztyp ist keine Vorschau verfügbar.",
"restore_button": "Wiederherstellen",
"delete_button": "Löschen",
"diff_on": "Zeige Differenz",
"diff_off": "Zeige Inhalt",
"diff_on_hint": "Klicke, um die Differenz des Notiz-Quellcodes zu zeigen",
"diff_off_hint": "Klicke, um den Notizinhalt zu zeigen",
"diff_not_available": "Differenz-Abgleich ist nicht verfügbar."
},
"sort_child_notes": {
"sort_children_by": "Unternotizen sortieren nach...",
"sorting_criteria": "Sortierkriterien",
@@ -368,7 +339,7 @@
"calendar_root": "Markiert eine Notiz, die als Basis für Tagesnotizen verwendet werden soll. Nur einer sollte als solcher gekennzeichnet sein.",
"archived": "Notizen mit dieser Bezeichnung werden standardmäßig nicht in den Suchergebnissen angezeigt (auch nicht in den Dialogen „Springen zu“, „Link hinzufügen“ usw.).",
"exclude_from_export": "Notizen (mit ihrem Unterbaum) werden nicht im Notizexport inkludiert",
"run": "Definiert, bei welchen Ereignissen das Skript ausgeführt werden soll. Mögliche Werte sind:\n<ul>\n<li>frontendStartup - wenn das Trilium-Frontend startet (oder aktualisiert wird), außer auf mobilen Geräten.</li>\n<li>mobileStartup - wenn das Trilium-Frontend auf einem mobilen Gerät startet (oder aktualisiert wird).</li>\n<li>backendStartup - wenn das Trilium-Backend startet</li>\n<li>hourly - einmal pro Stunde ausführen. Du kannst das zusätzliche Label <code>runAtHour</code> verwenden, um die genaue Stunde festzulegen.</li>\n<li>daily - einmal pro Tag ausführen</li>\n</ul>",
"run": "Definiert bei welchen Ereignissen das Skript ausgeführt werden soll. Mögliche Werte sind:\n<ul>\n<li>frontendStartup - wenn das Trilium-Frontend startet (oder aktualisiert wird), außer auf mobilen Geräten.</li>\n<li>mobileStartup - wenn das Trilium-Frontend auf einem mobilen Gerät startet (oder aktualisiert wird).</li>\n<li>backendStartup - wenn das Trilium-Backend startet.</li>\n<li>hourly - einmal pro Stunde ausführen. Du kannst das zusätzliche Label <code>runAtHour</code> verwenden, um die genaue Stunde festzulegen.</li>\n<li>daily - einmal pro Tag ausführen</li>\n</ul>",
"run_on_instance": "Definiere, auf welcher Trilium-Instanz dies ausgeführt werden soll. Standardmäßig alle Instanzen.",
"run_at_hour": "Zu welcher Stunde soll das laufen? Sollte zusammen mit <code>#runu003dhourly</code> verwendet werden. Kann für mehr Läufe im Laufe des Tages mehrfach definiert werden.",
"disable_inclusion": "Skripte mit dieser Bezeichnung werden nicht in die Ausführung des übergeordneten Skripts einbezogen.",
@@ -706,7 +677,8 @@
"export_as_image_svg": "SVG (Vektor)",
"note_map": "Notizen Karte",
"view_revisions": "Notizrevisionen...",
"advanced": "Erweitert"
"advanced": "Erweitert",
"view_ocr_text": "OCR text anzeigen"
},
"onclick_button": {
"no_click_handler": "Das Schaltflächen-Widget „{{componentId}}“ hat keinen definierten Klick-Handler"
@@ -802,7 +774,10 @@
"expand_tooltip": "Erweitert die direkten Unterelemente dieser Sammlung (eine Ebene tiefer). Für weitere Optionen auf den Pfeil rechts klicken.",
"expand_first_level": "Direkte Unterelemente erweitern",
"expand_nth_level": "{{depth}} Ebenen erweitern",
"hide_child_notes": "Untergeordnete Notizen im Baum ausblenden"
"hide_child_notes": "Untergeordnete Notizen im Baum ausblenden",
"open_all_in_tabs": "Alle öffnen",
"open_all_in_tabs_tooltip": "Alle Resultate in neuen Tabs öffnen",
"open_all_confirm": "Dies öffnet {{count}} Notizen in neuen Tabs. Fortfahren?"
},
"edited_notes": {
"no_edited_notes_found": "An diesem Tag wurden noch keine Notizen bearbeitet...",
@@ -856,7 +831,8 @@
"collapse": "Auf normale Größe reduzieren",
"title": "Notizkarte",
"fix-nodes": "Knoten fixieren",
"link-distance": "Verbindungslänge"
"link-distance": "Verbindungslänge",
"too-many-notes": "Dieser Unterbaum enthält {{count}} Notizen, welche die Limitierung von {{max}} überschreitet die in der Notizkarte dargestellt werden können."
},
"note_paths": {
"title": "Notizpfade",
@@ -904,7 +880,7 @@
"limit": "Limit",
"limit_description": "Begrenze die Anzahl der Ergebnisse",
"debug": "debuggen",
"debug_description": "Debug gibt zusätzliche Debuginformationen in die Konsole aus, um das Debuggen komplexer Abfragen zu erleichtern",
"debug_description": "Debug gibt zusätzliche Protokolleinträge in der Konsole aus, um die Fehlerdiagnose komplexer Abfragen zu erleichtern",
"action": "Aktion",
"search_button": "Suchen",
"search_execute": "Aktionen suchen und ausführen",
@@ -936,7 +912,7 @@
},
"debug": {
"debug": "Debuggen",
"debug_info": "Debug gibt zusätzliche Debuginformationen in die Konsole aus, um das Debuggen komplexer Abfragen zu erleichtern.",
"debug_info": "Debug gibt zusätzliche Protokolleinträge in der Konsole aus, um die Fehlerdiagnose komplexer Abfragen zu erleichtern.",
"access_info": "Um auf die Debug-Informationen zuzugreifen, führe die Abfrage aus und klicke oben links auf \"Backend-Log anzeigen\"."
},
"fast_search": {
@@ -1061,7 +1037,8 @@
"note_already_in_diagram": "Die Notiz \"{{title}}\" ist schon im Diagram.",
"enter_title_of_new_note": "Gebe den Titel der neuen Notiz ein",
"default_new_note_title": "neue Notiz",
"click_on_canvas_to_place_new_note": "Klicke auf den Canvas, um eine neue Notiz zu platzieren"
"click_on_canvas_to_place_new_note": "Klicke auf den Canvas, um eine neue Notiz zu platzieren",
"rename_relation": "Beziehung umbenennen"
},
"backend_log": {
"refresh": "Aktualisieren"
@@ -1070,15 +1047,17 @@
"title": "Konsistenzprüfungen",
"find_and_fix_button": "Finde und behebe die Konsistenzprobleme",
"finding_and_fixing_message": "Konsistenzprobleme finden und beheben...",
"issues_fixed_message": "Konsistenzprobleme sollten behoben werden."
"issues_fixed_message": "Konsistenzprobleme sollten behoben werden.",
"find_and_fix_label": "Finde und behebe Konsistenzprobleme",
"find_and_fix_description": "Suche nach Probleme mit der Datenkonsistenz in der Datenbank und repariere diese automatisch."
},
"database_anonymization": {
"title": "Datenbankanonymisierung",
"full_anonymization": "Vollständige Anonymisierung",
"full_anonymization_description": "Durch diese Aktion wird eine neue Kopie der Datenbank erstellt und anonymisiert (der gesamte Notizinhalt wird entfernt und nur die Struktur und einige nicht vertrauliche Metadaten bleiben übrig), sodass sie zu Debugging-Zwecken online geteilt werden kann, ohne befürchten zu müssen, dass Ihre persönlichen Daten verloren gehen.",
"full_anonymization_description": "Erstellt eine Kopie der Datenbank, wo der Inhalt der Notizen entfernt wurde. Es vergleicht lediglich die Struktur sowie nicht-kritische Metadaten. Sicher zum teilen für die Fehlerdiagnose.",
"save_fully_anonymized_database": "Speichere eine vollständig anonymisierte Datenbank",
"light_anonymization": "Leichte Anonymisierung",
"light_anonymization_description": "Durch diese Aktion wird eine neue Kopie der Datenbank erstellt und eine leichte Anonymisierung vorgenommen insbesondere wird nur der Inhalt aller Notizen entfernt, Titel und Attribute bleiben jedoch erhalten. Darüber hinaus bleiben benutzerdefinierte JS-Frontend-/Backend-Skriptnotizen und benutzerdefinierte Widgets erhalten. Dies bietet mehr Kontext zum Debuggen der Probleme.",
"light_anonymization_description": "Erstellt eine Kopie wo der Inhalt der Notiz entfernt ist, jedoch Title, Attribute und benutzerdefinierte Skripte erhalten bleiben. Hilfreich zur Fehlerdiagnose.",
"choose_anonymization": "Du kannst selbst entscheiden, ob du eine vollständig oder leicht anonymisierte Datenbank bereitstellen möchten. Selbst eine vollständig anonymisierte Datenbank ist sehr nützlich. In einigen Fällen kann jedoch eine leicht anonymisierte Datenbank den Prozess der Fehlererkennung und -behebung beschleunigen.",
"save_lightly_anonymized_database": "Speichere eine leicht anonymisierte Datenbank",
"existing_anonymized_databases": "Vorhandene anonymisierte Datenbanken",
@@ -1087,15 +1066,17 @@
"error_creating_anonymized_database": "Die anonymisierte Datenbank konnte nicht erstellt werden. Überprüfe die Backend-Protokolle auf Details",
"successfully_created_fully_anonymized_database": "Vollständig anonymisierte Datenbank in {{anonymizedFilePath}} erstellt",
"successfully_created_lightly_anonymized_database": "Leicht anonymisierte Datenbank in {{anonymizedFilePath}} erstellt",
"no_anonymized_database_yet": "Noch keine anonymisierte Datenbank."
"no_anonymized_database_yet": "Noch keine anonymisierte Datenbank.",
"description": "Erstellt eine anonymisierte Kopie deiner Datenbank für den Austausch mit Entwicklern zur Fehlerdiagnose, ohne persönliche Daten preiszugeben."
},
"database_integrity_check": {
"title": "Datenbankintegritätsprüfung",
"description": "Dadurch wird überprüft, ob die Datenbank auf SQLite-Ebene nicht beschädigt ist. Abhängig von der DB-Größe kann es einige Zeit dauern.",
"check_button": "Überprüfe die Datenbankintegrität",
"checking_integrity": "Datenbankintegrität prüfen...",
"integrity_check_succeeded": "Integritätsprüfung erfolgreich keine Probleme gefunden.",
"integrity_check_failed": "Integritätsprüfung fehlgeschlagen: {{results}}"
"integrity_check_failed": "Integritätsprüfung fehlgeschlagen: {{results}}",
"check_integrity_label": "Überprüfe die Datenbankintegrität",
"check_integrity_description": "Überprüfe die Datenbank auf SQLite Ebene auf Fehler."
},
"sync": {
"title": "Synchronisieren",
@@ -1105,14 +1086,18 @@
"filling_entity_changes": "Entitätsänderungszeilen werden gefüllt...",
"sync_rows_filled_successfully": "Synchronisierungszeilen erfolgreich gefüllt",
"finished-successfully": "Synchronisierung erfolgreich beendet.",
"failed": "Synchronisierung fehlgeschlagen: {{message}}"
"failed": "Synchronisierung fehlgeschlagen: {{message}}",
"force_full_sync_label": "Vollständige Synchronisierung erzwingen",
"force_full_sync_description": "Vollständige Synchronisation mit dem Sync-Server auslösen, lädt alle Änderungen erneut hoch."
},
"vacuum_database": {
"title": "Datenbank aufräumen",
"description": "Dadurch wird die Datenbank neu erstellt, was normalerweise zu einer kleineren Datenbankdatei führt. Es werden keine Daten tatsächlich geändert.",
"button_text": "Datenbank aufräumen",
"vacuuming_database": "Datenbank wird geleert...",
"database_vacuumed": "Die Datenbank wurde geleert"
"database_vacuumed": "Die Datenbank wurde geleert",
"vacuum_label": "Datenbank bereinigen",
"vacuum_description": "Datenbank neu aufbauen um die Dateigröße zu reduzieren. Keine Daten werden verändert."
},
"fonts": {
"theme_defined": "Thema definiert",
@@ -1123,10 +1108,7 @@
"note_tree_font": "Notizbaum-Schriftart",
"note_detail_font": "Notiz-Detail-Schriftart",
"monospace_font": "Minivan (Code) Schriftart",
"note_tree_and_detail_font_sizing": "Beachte, dass die Größe der Baum- und Detailschriftarten relativ zur Hauptschriftgrößeneinstellung ist.",
"not_all_fonts_available": "Möglicherweise sind nicht alle aufgelisteten Schriftarten auf Ihrem System verfügbar.",
"apply_font_changes": "Um Schriftartänderungen zu übernehmen, klicke auf",
"reload_frontend": "Frontend neu laden",
"not_all_fonts_available": "Möglicherweise sind nicht alle aufgelisteten Schriftarten auf Ihrem System verfügbar",
"generic-fonts": "Generische Schriftarten",
"sans-serif-system-fonts": "Sans-serif Systemschriftarten",
"serif-system-fonts": "Serif Systemschriftarten",
@@ -1135,7 +1117,9 @@
"serif": "Serif",
"sans-serif": "Sans Serif",
"monospace": "Monospace",
"system-default": "System Standard"
"system-default": "System Standard",
"custom_fonts": "Benutzerdefinierte Schriftarten verwenden",
"preview": "Vorschau"
},
"max_content_width": {
"title": "Inhaltsbreite",
@@ -1168,7 +1152,10 @@
"layout-horizontal-description": "Startleiste ist unter der Tableiste. Die Tableiste wird dadurch auf die ganze Breite erweitert.",
"auto_theme": "Alt (Folge dem Farbschema des Systems)",
"light_theme": "Alt (Hell)",
"dark_theme": "Alt (Dunkel)"
"dark_theme": "Alt (Dunkel)",
"modern_themes": "Modern",
"legacy_themes": "Veraltet",
"custom_themes": "Benutzerdefiniert"
},
"zoom_factor": {
"title": "Zoomfaktor (nur Desktop-Build)",
@@ -1196,18 +1183,25 @@
},
"images": {
"images_section_title": "Bilder",
"download_images_automatically": "Lade Bilder automatisch herunter, um sie offline zu verwenden.",
"download_images_description": "Eingefügter HTML-Code kann Verweise auf Online-Bilder enthalten. Trilium findet diese Verweise und lädt die Bilder herunter, sodass sie offline verfügbar sind.",
"enable_image_compression": "Bildkomprimierung aktivieren",
"max_image_dimensions": "Maximale Breite/Höhe eines Bildes in Pixel (die Größe des Bildes wird geändert, wenn es diese Einstellung überschreitet).",
"jpeg_quality_description": "JPEG-Qualität (10 schlechteste Qualität, 100 beste Qualität, 50 85 wird empfohlen)",
"max_image_dimensions_unit": "Pixel"
"download_images_automatically": "Bilder automatisch herunterladen",
"download_images_description": "Referenzierte online Bilder vom eingefügten HTML-Code herunterladen, damit diese offline zur Verfügung stehen.",
"enable_image_compression": "Bildkomprimierung",
"max_image_dimensions": "Maximale Maße eines Bildes",
"jpeg_quality_description": "Empfohlener Bereich liegt zwischen 50-85. Niedrige Werte reduzieren die Dateigröße, höhere Werte bewahren Details.",
"max_image_dimensions_unit": "Pixel",
"enable_image_compression_description": "Komprimieren und skalieren Bilder, wenn diese hochgeladen oder eingefügt werden.",
"max_image_dimensions_description": "Bilder, die diese Größe überschreiten, werden automatisch verkleinert.",
"jpeg_quality": "JPEG Qualität",
"ocr_section_title": "Text Extrahierung (OCR)",
"ocr_related_content_languages": "Inhaltssprachen (für Textextrahierung verwendet)",
"ocr_auto_process": "Neue Dateien automatisch verarbeiten",
"ocr_auto_process_description": "Text automatisch extrahieren von neu hochgeladenen oder eingefügten Dateien.",
"ocr_min_confidence": "Minimale Sicherheit"
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Zeitüberschreitung beim Löschen von Anhängen",
"attachment_auto_deletion_description": "Anhänge werden automatisch gelöscht (und gelöscht), wenn sie nach einer definierten Zeitspanne nicht mehr in ihrer Notiz referenziert werden.",
"erase_attachments_after": "Nicht verwendete Anhänge löschen nach:",
"manual_erasing_description": "Du kannst das Löschen auch manuell auslösen (ohne Berücksichtigung des oben definierten Timeouts):",
"erase_attachments_after": "Nicht verwendete Anhänge löschen nach",
"manual_erasing_description": "Manuelle Löschung aktivieren, ignoriert den obigen Zeitpunkt.",
"erase_unused_attachments_now": "Lösche jetzt nicht verwendete Anhangnotizen",
"unused_attachments_erased": "Nicht verwendete Anhänge wurden gelöscht."
},
@@ -1217,28 +1211,29 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Beachte das Zeitlimit für die Löschung",
"note_erasure_description": "Gelöschte Notizen (und Attribute, Notizrevisionen...) werden zunächst nur als gelöscht markiert und können über den Dialog „Zuletzt verwendete Notizen” wiederhergestellt werden. Nach einer bestimmten Zeit werden gelöschte Notizen „gelöscht”, was bedeutet, dass ihr Inhalt nicht mehr wiederhergestellt werden kann. Mit dieser Einstellung können Sie die Zeitspanne zwischen dem Löschen und dem endgültigen Löschen der Notiz festlegen.",
"erase_notes_after": "Notizen löschen nach:",
"manual_erasing_description": "Du kannst das Löschen auch manuell auslösen (ohne Berücksichtigung des oben definierten Timeouts):",
"erase_notes_after": "Notizen löschen nach",
"manual_erasing_description": "Manuelle Löschung aktivieren, ignoriert den obigen Zeitpunkt.",
"erase_deleted_notes_now": "Jetzt gelöschte Notizen löschen",
"deleted_notes_erased": "Gelöschte Notizen wurden gelöscht."
},
"revisions_snapshot_interval": {
"note_revisions_snapshot_interval_title": "Snapshot-Intervall für Notizrevisionen",
"note_revisions_snapshot_description": "Das Snapshot-Zeitintervall für Notizrevisionen ist die Zeit, nach der eine neue Notizrevision erstellt wird. Weitere Informationen findest du im <doc>Wiki</doc>.",
"snapshot_time_interval_label": "Zeitintervall für Notiz-Revisions-Snapshot:"
"snapshot_time_interval_label": "Snapshot Intervall"
},
"revisions_snapshot_limit": {
"note_revisions_snapshot_limit_title": "Limit für Notizrevision-Snapshots",
"note_revisions_snapshot_limit_description": "Das Limit für Notizrevision-Snapshots bezieht sich auf die maximale Anzahl von Revisionen, die für jede Notiz gespeichert werden können. Dabei bedeutet -1, dass es kein Limit gibt, und 0 bedeutet, dass alle Revisionen gelöscht werden. Du kannst das maximale Limit für Revisionen einer einzelnen Notiz über das Label #versioningLimit festlegen.",
"snapshot_number_limit_label": "Limit der Notizrevision-Snapshots:",
"snapshot_number_limit_label": "Maximale Revisionen",
"erase_excess_revision_snapshots": "Überschüssige Revision-Snapshots jetzt löschen",
"erase_excess_revision_snapshots_prompt": "Überschüssige Revision-Snapshots wurden gelöscht.",
"snapshot_number_limit_unit": "Momentaufnahmen"
"snapshot_number_limit_unit": "Momentaufnahmen",
"note_revisions_snapshot_limit_description_short": "Maximale Anzahl an Revisionen pro Notiz. Nutze -1 für unlimitiert oder 0 zum deaktivieren.",
"erase_excess_revision_snapshots_description": "Lösche Revisionen aller Notizen die das Limit überschreiten."
},
"search_engine": {
"title": "Suchmaschine",
"custom_search_engine_info": "Für eine benutzerdefinierte Suchmaschine müssen sowohl ein Name als auch eine URL festgelegt werden. Wenn keine dieser Optionen festgelegt ist, wird DuckDuckGo als Standardsuchmaschine verwendet.",
"custom_search_engine_info": "Wird verwendet bei der Suche im Web für den ausgewählten Text. Wenn nicht konfiguriert, wird DuckDuckGo verwendet.",
"predefined_templates_label": "Vordefinierte Suchmaschinenvorlagen",
"bing": "Bing",
"baidu": "Baidu",
@@ -1296,7 +1291,6 @@
"first-week-contains-first-thursday": "Erste Woche enthält den ersten Donnerstag des Jahres",
"first-week-has-minimum-days": "Erste Woche hat Mindestanzahl an Tagen",
"min-days-in-first-week": "Mindestanzahl an Tagen in erster Woche",
"first-week-info": "Die erste Woche, die den ersten Donnerstag des Jahres enthält, basiert auf dem Standard <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
"first-week-warning": "Das Ändern der Optionen für die erste Woche kann zu Duplikaten mit bestehenden Wochen-Notizen führen. Bestehende Wochen-Notizen werden nicht entsprechend aktualisiert.",
"formatting-locale": "Datums- und Zahlenformat",
"tuesday": "Dienstag",
@@ -1319,7 +1313,9 @@
"date-and-time": "Datum & Uhrzeit",
"path": "Pfad",
"database_backed_up_to": "Die Datenbank wurde gesichert unter {{backupFilePath}}",
"no_backup_yet": "noch kein Backup"
"no_backup_yet": "noch kein Backup",
"title": "Sicherung",
"download": "Download"
},
"etapi": {
"title": "ETAPI",
@@ -1358,14 +1354,17 @@
"protected_session_timeout_description": "Das Zeitlimit für geschützte Sitzungen ist ein Zeitraum, nach dem die geschützte Sitzung aus dem Speicher des Browsers gelöscht wird. Dies wird ab der letzten Interaktion mit geschützten Notizen gemessen. Sehen",
"wiki": "Wiki",
"for_more_info": "für weitere Informationen.",
"protected_session_timeout_label": "Zeitüberschreitung der geschützten Sitzung:",
"protected_session_timeout_label": "Automatisches beenden der Sitzung nach",
"reset_confirmation": "Durch das Zurücksetzen des Passworts verlierst du für immer den Zugriff auf alle Ihre bestehenden geschützten Notizen. Möchtest du das Passwort wirklich zurücksetzen?",
"reset_success_message": "Das Passwort wurde zurückgesetzt. Bitte lege ein neues Passwort fest",
"change_password_heading": "Kennwort ändern",
"set_password_heading": "Passwort festlegen",
"set_password": "Passwort festlegen",
"password_mismatch": "Neue Passwörter sind nicht dasselbe.",
"password_changed_success": "Das Passwort wurde geändert. Trilium wird neu geladen, nachdem du auf OK geklickt hast."
"password_changed_success": "Das Passwort wurde geändert. Trilium wird neu geladen, nachdem du auf OK geklickt hast.",
"change_password_description": "Aktualisiere dein aktuelles Passwort",
"reset_password": "Passwort zurücksetzen",
"cancel": "Abbrechen"
},
"shortcuts": {
"keyboard_shortcuts": "Tastaturkürzel",
@@ -1386,23 +1385,22 @@
"description": "Diese Optionen gelten nur für Desktop-Builds. Browser verwenden ihre eigene native Rechtschreibprüfung.",
"enable": "Aktiviere die Rechtschreibprüfung",
"language_code_label": "Sprachcode(s)",
"restart-required": "Änderungen an den Rechtschreibprüfungsoptionen werden nach dem Neustart der Anwendung wirksam."
"restart-required": "Änderungen an den Rechtschreibprüfungsoptionen werden nach dem Neustart der Anwendung wirksam.",
"custom_dictionary_title": "Benutzerdefiniertes Wörterbuch",
"custom_dictionary_edit": "Benutzerdefiniert Wörter",
"custom_dictionary_open": "Wörterbuch bearbeiten"
},
"sync_2": {
"config_title": "Synchronisierungskonfiguration",
"server_address": "Adresse der Serverinstanz",
"timeout": "Synchronisierungs-Timeout (Millisekunden)",
"proxy_label": "Proxyserver synchronisieren (optional)",
"note": "Notiz",
"note_description": "Wenn du die Proxy-Einstellung leer lässt, wird der System-Proxy verwendet (gilt nur für Desktop-/Electron-Build).",
"special_value_description": "Ein weiterer besonderer Wert ist <code>noproxy</code>, der das Ignorieren sogar des System-Proxys erzwingt und <code>NODE_TLS_REJECT_UNAUTHORIZED</code> respektiert.",
"save": "Speichern",
"help": "Helfen",
"test_title": "Synchronisierungstest",
"test_description": "Dadurch werden die Verbindung und der Handshake zum Synchronisierungsserver getestet. Wenn der Synchronisierungsserver nicht initialisiert ist, wird er dadurch für die Synchronisierung mit dem lokalen Dokument eingerichtet.",
"test_button": "Teste die Synchronisierung",
"handshake_failed": "Handshake des Synchronisierungsservers fehlgeschlagen, Fehler: {{message}}",
"timeout_unit": "Millisekunden"
"handshake_failed": "Handshake des Synchronisierungsservers fehlgeschlagen, Fehler: {{message}}"
},
"api_log": {
"close": "Schließen"
@@ -1499,7 +1497,8 @@
"task-list": "Aufgabenliste",
"new-feature": "Neu",
"collections": "Sammlungen",
"spreadsheet": "Tabelle"
"spreadsheet": "Tabelle",
"llm-chat": "KI-Chat"
},
"protect_note": {
"toggle-on": "Notiz schützen",
@@ -1701,7 +1700,8 @@
"theme_none": "Keine Syntaxhervorhebung",
"theme_group_light": "Helle Themen",
"theme_group_dark": "Dunkle Themen",
"copy_title": "Kopiere in Zwischenablage"
"copy_title": "Kopiere in Zwischenablage",
"click_to_copy": "Klicke zum kopieren"
},
"classic_editor_toolbar": {
"title": "Format"
@@ -1720,7 +1720,7 @@
"title": "Fixiert",
"description": "Werkzeuge erscheinen im \"Format\" Tab."
},
"multiline-toolbar": "Toolbar wenn nötig in mehreren Zeilen darstellen."
"multiline-toolbar": "Toolbar wenn nötig in mehreren Zeilen darstellen"
}
},
"electron_context_menu": {
@@ -1811,8 +1811,9 @@
"custom_date_time_format": {
"title": "Benutzerdefiniertes Datums-/Zeitformat",
"description": "Passe das Format des Datums und der Uhrzeit an, die über <shortcut /> oder die Symbolleiste eingefügt werden. Die verfügbaren Format-Tokens sind unter <doc>Day.js docs</doc> zu finden.",
"format_string": "Format Zeichenfolge:",
"formatted_time": "Formatiertes Datum/Uhrzeit:"
"format_string": "Format Zeichenfolge",
"formatted_time": "Formatiertes Datum/Uhrzeit",
"preview": "Vorschau: {{preview}}"
},
"multi_factor_authentication": {
"title": "Multi-Faktor-Authentifizierung",
@@ -2043,7 +2044,9 @@
"title": "Experimentelle Optionen",
"disclaimer": "Diese Optionen sind experimentell und können Instabilitäten verursachen. Achtsam zu verwenden.",
"new_layout_name": "Neues Layout",
"new_layout_description": "Probiere das neue Layout für eine modernere Darstellung und verbesserte Benutzbarkeit aus. Kann sich in Zukunft stark ändern."
"new_layout_description": "Probiere das neue Layout für eine modernere Darstellung und verbesserte Benutzbarkeit aus. Kann sich in Zukunft stark ändern.",
"llm_name": "KI- / LLM-Chat",
"llm_description": "Aktiviert die KI-Chat Seitenleiste sowie LLM-Chat Notizen die von einem Sprachmodell betrieben werden."
},
"server": {
"unknown_http_error_title": "Kommunikationsfehler mit dem Server",
@@ -2227,5 +2230,79 @@
"sample_xy": "XY",
"sample_venn": "Mengen",
"sample_ishikawa": "Ursache-Wirkung"
},
"database": {
"title": "Datenbank"
},
"search": {
"title": "Suche",
"fuzzy_matching_label": "Fehlertoleranz bei Suche"
},
"text_editor": {
"title": "Editor"
},
"llm_chat": {
"placeholder": "Schreibe eine Nachricht...",
"send": "Senden",
"sending": "Sende...",
"empty_state": "Starte eine Unterhaltung indem du unten eine Nachricht schreibst.",
"searching_web": "Suche im Web...",
"web_search": "Websuche",
"note_tools": "Notizzugriff",
"sources": "Quellen",
"legacy_models": "Veraltete Modelle",
"thinking": "Denke...",
"thought_process": "Denkprozess",
"result": "Ergebnis",
"error": "Fehler",
"tool_error": "Fehlgeschlagen",
"total_tokens": "{{total}} Token",
"tokens": "Token",
"context_used": "{{percentage}}% verwendet",
"no_provider_message": "Kein KI-Anbieter konfiguriert. Fügen einen hinzu, um zu chatten.",
"add_provider": "KI-Anbieter hinzufügen",
"stop": "Stopp"
},
"sidebar_chat": {
"title": "KI-Chat",
"launcher_title": "KI-Chat öffnen",
"new_chat": "Neuen Chat starten",
"save_chat": "Chat in Notiz sichern",
"empty_state": "Starte Unterhaltung",
"history": "Chathistorie",
"recent_chats": "Kürzliche Chats",
"no_chats": "Keine vorherigen Chats"
},
"llm": {
"tools": {
"clone_note": "Notiz duplizieren",
"move_note": "Notiz verschieben",
"delete_note": "Notiz löschen",
"rename_note": "Notiz umbenennen",
"web_search": "Websuche",
"create_note": "Notiz erstellen",
"append_to_note": "An Notiz anhängen",
"get_note": "Notiz beziehen",
"search_notes": "Notizen durchsuchen"
},
"cancel": "Abbrechen",
"api_key": "API Schlüssel",
"delete_provider": "Löschen",
"actions": "Aktionen",
"provider_type": "Anbieter",
"provider_name": "Name",
"settings_title": "KI / LLM"
},
"mind-map": {
"summary": "Zusammenfassung",
"link": "Link"
},
"ocr": {
"view_extracted_text": "Extrahierten Text anzeigen (OCR)",
"open_media_settings": "Öffne Einstellungen",
"processing": "Verarbeite...",
"loading_text": "Lädt OCR Text...",
"extracted_text_title": "Extrahierter Text (OCR)",
"extracted_text": "Extrahierter Text (OCR)"
}
}

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Σχετικά με το Trilium Notes",
"homepage": "Αρχική Σελίδα:",
"app_version": "Έκδοση εφαρμογής:",
"db_version": "Έκδοση βάσης δεδομένων:",
"sync_version": "Έκδοση πρωτοκόλου συγχρονισμού:",
"build_date": "Ημερομηνία χτισίματος εφαρμογής:",
"build_revision": "Αριθμός αναθεώρησης χτισίματος:",
"data_directory": "Φάκελος δεδομένων:"
},
"toast": {

View File

@@ -66,6 +66,172 @@
"set-custom-color": "Set custom note colour"
},
"about": {
"title": "About Trilium Notes"
"data_directory": "Data directory:"
},
"toast": {
"critical-error": {
"title": "Critical error",
"message": "A critical error has occurred which prevents the client application from starting:\n\n{{message}}\n\nThis is most likely caused by a script failing in an unexpected way. Try starting the application in safe mode and addressing the issue."
},
"widget-error": {
"title": "Failed to initialise a widget",
"message-custom": "Custom widget from note with ID \"{{id}}\", titled \"{{title}}\" could not be initialised due to:\n\n{{message}}",
"message-unknown": "Unknown widget could not be initialised due to:\n\n{{message}}"
},
"bundle-error": {
"title": "Failed to load a custom script",
"message": "Script could not be executed due to:\n\n{{message}}"
},
"widget-list-error": {
"title": "Failed to obtain the list of widgets from the server"
},
"widget-render-error": {
"title": "Failed to render a custom React widget"
},
"widget-missing-parent": "Custom widget does not have mandatory '{{property}}' property defined.\n\nIf this script is meant to be run without a UI element, use '#run=frontendStartup' instead.",
"open-script-note": "Open script note",
"scripting-error": "Custom script error: {{title}}"
},
"add_link": {
"add_link": "Add link",
"help_on_links": "Help on links",
"note": "Note",
"search_note": "search for note by its name",
"link_title_mirrors": "link title mirrors the note's current title",
"link_title_arbitrary": "link title can be changed arbitrarily",
"link_title": "Link title",
"anchor": "Anchor (optional)",
"anchor_none": "None (link to note)",
"button_add_link": "Add link"
},
"delete_notes": {
"delete_clones_description_one": "Also delete {{count}} other clone. Can be undone in recent changes.",
"delete_clones_description_other": "Also delete {{count}} other clones. Can be undone in recent changes.",
"title": "Delete notes",
"close": "Close",
"clones_label": "Clones",
"delete_all_clones_description": "Delete also all clones (can be undone in recent changes)",
"erase_notes_label": "Erase permanently",
"erase_notes_description": "Erase notes immediately instead of soft deletion. This cannot be undone and will force application reload.",
"erase_notes_warning": "Erase notes permanently (can't be undone), including all clones. This will force application reload.",
"notes_to_be_deleted": "Notes to be deleted ({{notesCount}})",
"no_note_to_delete": "No note will be deleted (only clones).",
"broken_relations_to_be_deleted": "Broken relations ({{relationCount}})",
"table_note_with_relation": "Note with relation",
"table_relation": "Relation",
"table_points_to": "Points to (deleted)",
"cancel": "Cancel",
"delete": "Delete"
},
"branch_prefix": {
"edit_branch_prefix": "Edit branch prefix",
"edit_branch_prefix_multiple": "Edit branch prefix for {{count}} branches",
"help_on_tree_prefix": "Help on Tree prefix",
"prefix": "Prefix: ",
"save": "Save",
"branch_prefix_saved": "Branch prefix has been saved.",
"branch_prefix_saved_multiple": "Branch prefix has been saved for {{count}} branches.",
"affected_branches": "Affected branches ({{count}}):"
},
"bulk_actions": {
"bulk_actions": "Bulk actions",
"affected_notes": "Affected notes",
"include_descendants": "Include descendants of the selected notes",
"available_actions": "Available actions",
"chosen_actions": "Chosen actions",
"execute_bulk_actions": "Execute bulk actions",
"bulk_actions_executed": "Bulk actions have been executed successfully.",
"none_yet": "None yet... add an action by clicking one of the available ones above.",
"labels": "Labels",
"relations": "Relations",
"notes": "Notes",
"other": "Other"
},
"clone_to": {
"clone_notes_to": "Clone notes to...",
"help_on_links": "Help on links",
"notes_to_clone": "Notes to clone",
"target_parent_note": "Target parent note",
"search_for_note_by_its_name": "search for note by its name",
"cloned_note_prefix_title": "Cloned note will be shown in note tree with given prefix",
"prefix_optional": "Prefix (optional)",
"clone_to_selected_note": "Clone to selected note",
"no_path_to_clone_to": "No path to clone to.",
"note_cloned": "Note \"{{clonedTitle}}\" has been cloned into \"{{targetTitle}}\""
},
"confirm": {
"confirmation": "Confirmation",
"cancel": "Cancel",
"ok": "OK",
"are_you_sure_remove_note": "Are you sure you want to remove the note \"{{title}}\" from relation map? ",
"if_you_dont_check": "If you don't check this, the note will be only removed from the relation map.",
"also_delete_note": "Also delete the note"
},
"export": {
"export_note_title": "Export note",
"close": "Close",
"export_type_subtree": "This note and all of its descendants",
"format_html": "HTML - recommended as it keeps all format",
"format_html_zip": "HTML in ZIP archive - this is recommended since this preserves all the formatting.",
"format_markdown": "Markdown - this preserves most of the formatting.",
"format_opml": "OPML - outliner interchange format for text only. Formatting, images and files are not included.",
"opml_version_1": "OPML v1.0 - plain text only",
"opml_version_2": "OPML v2.0 - allows also HTML",
"export_type_single": "Only this note without its descendants",
"export": "Export",
"choose_export_type": "Choose export type first please",
"export_status": "Export status",
"export_in_progress": "Export in progress: {{progressCount}}",
"export_finished_successfully": "Export finished successfully.",
"format_pdf": "PDF - for printing or sharing purposes.",
"share-format": "HTML for web publishing - uses the same theme that is used shared notes, but can be published as a static website."
},
"help": {
"title": "Cheatsheet",
"collapseSubTree": "collapse sub-tree",
"activateNextTab": "activate next tab",
"editShortcuts": "Edit keyboard shortcuts",
"noteNavigation": "Note navigation",
"goUpDown": "go up/down in the list of notes",
"collapseExpand": "collapse/expand node",
"notSet": "not set",
"goBackForwards": "go back / forwards in the history",
"showJumpToNoteDialog": "show <a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/note-navigation.html#jump-to-note\">\"Jump to\" dialog</a>",
"scrollToActiveNote": "scroll to active note",
"jumpToParentNote": "jump to parent note",
"collapseWholeTree": "collapse whole note tree",
"tabShortcuts": "Tab shortcuts",
"newTabNoteLink": "on note link opens note in a new tab",
"newTabWithActivationNoteLink": "on note link opens and activates the note in a new tab",
"onlyInDesktop": "Only in desktop (Electron build)",
"openEmptyTab": "open empty tab",
"closeActiveTab": "close active tab",
"activatePreviousTab": "activate previous tab",
"creatingNotes": "Creating notes",
"createNoteAfter": "create new note after the active note",
"createNoteInto": "create new sub-note into active note",
"editBranchPrefix": "edit <a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/tree-concepts.html#prefix\">prefix</a> of active note clone",
"movingCloningNotes": "Moving / cloning notes",
"moveNoteUpDown": "move note up/down in the note list",
"moveNoteUpHierarchy": "move note up in the hierarchy",
"multiSelectNote": "multi-select note above/below",
"selectAllNotes": "select all notes in the current level",
"selectNote": "select note",
"copyNotes": "copy active note (or current selection) into clipboard (used for <a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/cloning-notes.html#cloning-notes\">cloning</a>)",
"cutNotes": "cut current note (or current selection) into clipboard (used for moving notes)",
"pasteNotes": "paste note(s) as sub-note into active note (which is either move or clone depending on whether it was copied or cut into clipboard)",
"deleteNotes": "delete note / sub-tree",
"editingNotes": "Editing notes",
"editNoteTitle": "in tree pane will switch from tree pane into note title. Enter from note title will switch focus to text editor. <kbd>Ctrl+.</kbd> will switch back from editor to tree pane.",
"createEditLink": "create / edit external link",
"createInternalLink": "create internal link",
"followLink": "follow link under cursor",
"insertDateTime": "insert current date and time at caret position",
"jumpToTreePane": "jump away to the tree pane and scroll to active note",
"markdownAutoformat": "Markdown-like autoformatting",
"headings": "<code>##</code>, <code>###</code>, <code>####</code> etc. followed by space for headings",
"bulletList": "<code>*</code> or <code>-</code> followed by space for bullet list",
"numberedList": "<code>1.</code> or <code>1)</code> followed by space for numbered list",
"blockQuote": "start a line with <code>></code> followed by space for block quote"
}
}

View File

@@ -1,13 +1,23 @@
{
"about": {
"title": "About Trilium Notes",
"homepage": "Homepage:",
"app_version": "App version:",
"db_version": "DB version:",
"sync_version": "Sync version:",
"build_date": "Build date:",
"build_revision": "Build revision:",
"data_directory": "Data directory:"
"about": {
"version_label": "Version:",
"version": "{{appVersion}} (database: {{dbVersion}}, sync protocol: {{syncVersion}})",
"build_info": "Build: {{buildDate}}, revision: <buildRevision />",
"contributors_label": "Contributors:",
"contributor_roles": {
"lead-dev": "lead developer",
"original-dev": "original developer"
},
"role_brief_history": {
"lead-dev": "Elian Doran founded TriliumNext in 2024, a community fork created after Zadam stepped back from the project. Zadam later transferred the original repository to the TriliumNext team, merging both projects back into one.",
"original-dev": "On 25th December 2017, Zadam released the first beta of Trilium (written with a single \"l\", unlike the flower). Dissatisfied with existing note organizers, he built a powerful self-hosted hierarchical knowledge base that gathered over 22,000 GitHub stars. In 2024, as life got busier, he placed the project into maintenance mode."
},
"contributor_full_list": "See the entire community",
"data_directory": "Data directory:",
"github_tooltip": "Report bugs, suggest features, or contribute on GitHub",
"license_tooltip": "View license",
"donate": "Donate",
"donate_tooltip": "Donate to support this project"
},
"toast": {
"critical-error": {
@@ -41,6 +51,8 @@
"link_title_mirrors": "link title mirrors the note's current title",
"link_title_arbitrary": "link title can be changed arbitrarily",
"link_title": "Link title",
"anchor": "Anchor (optional)",
"anchor_none": "None (link to note)",
"button_add_link": "Add link"
},
"branch_prefix": {
@@ -88,17 +100,23 @@
"also_delete_note": "Also delete the note"
},
"delete_notes": {
"delete_notes_preview": "Delete notes preview",
"title": "Delete notes",
"close": "Close",
"clones_label": "Clones",
"delete_clones_description_one": "Also delete {{count}} other clone. Can be undone in recent changes.",
"delete_clones_description_other": "Also delete {{count}} other clones. Can be undone in recent changes.",
"delete_all_clones_description": "Delete also all clones (can be undone in recent changes)",
"erase_notes_description": "Normal (soft) deletion only marks the notes as deleted and they can be undeleted (in recent changes dialog) within a period of time. Checking this option will erase the notes immediately and it won't be possible to undelete the notes.",
"erase_notes_label": "Erase permanently",
"erase_notes_description": "Erase notes immediately instead of soft deletion. This cannot be undone and will force application reload.",
"erase_notes_warning": "Erase notes permanently (can't be undone), including all clones. This will force application reload.",
"notes_to_be_deleted": "Following notes will be deleted ({{notesCount}})",
"notes_to_be_deleted": "Notes to be deleted ({{notesCount}})",
"no_note_to_delete": "No note will be deleted (only clones).",
"broken_relations_to_be_deleted": "Following relations will be broken and deleted ({{ relationCount}})",
"broken_relations_to_be_deleted": "Broken relations ({{relationCount}})",
"table_note_with_relation": "Note with relation",
"table_relation": "Relation",
"table_points_to": "Points to (deleted)",
"cancel": "Cancel",
"ok": "OK",
"deleted_relation_text": "Note {{- note}} (to be deleted) is referenced by relation {{- relation}} originating from {{- source}}."
"delete": "Delete"
},
"export": {
"export_note_title": "Export note",
@@ -209,6 +227,7 @@
"box_size_small": "small (~ 10 lines)",
"box_size_medium": "medium (~ 30 lines)",
"box_size_full": "full (box shows complete text)",
"box_size_expandable": "expandable (collapsed by default)",
"button_include": "Include note"
},
"info": {
@@ -278,6 +297,7 @@
"confirm_delete_all": "Do you want to delete all revisions of this note?",
"no_revisions": "No revisions for this note yet...",
"restore_button": "Restore",
"highlight_changes": "Highlight changes",
"diff_on": "Show diff",
"diff_off": "Show content",
"diff_on_hint": "Click to show note source diff",
@@ -291,11 +311,39 @@
"revision_deleted": "Note revision has been deleted.",
"snapshot_interval": "Note Revision Snapshot Interval: {{seconds}}s.",
"maximum_revisions": "Note Revision Snapshot Limit: {{number}}.",
"save_revision_now": "Save a revision now",
"save_named_revision": "Save named revision...",
"snapshot_header": "Note revision snapshot",
"snapshot_interval_value": "Interval: {{seconds}}s",
"snapshot_limit_value": "Limit: {{number}}",
"settings": "Note Revision Settings",
"menu_tooltip": "Revision options",
"download_button": "Download",
"mime": "MIME: ",
"file_size": "File size:",
"preview_not_available": "Preview isn't available for this note type."
"preview_not_available": "Preview isn't available for this note type.",
"save_revision": "Save revision",
"save_revision_tooltip": "Manually save a snapshot of the current note",
"description_placeholder": "Name this revision",
"revision_saved": "Note revision has been saved.",
"edit_description": "Edit name",
"description_updated": "Revision name has been updated.",
"source_auto": "Auto-save",
"source_manual": "Manual save",
"source_etapi": "ETAPI",
"source_llm": "LLM",
"source_restore": "Restore",
"source_unknown": "Snapshot",
"date_today": "Today",
"date_yesterday": "Yesterday",
"date_this_week": "This week",
"date_this_month": "This month",
"source_description_auto": "Automatically saved by the system at regular intervals",
"source_description_manual": "Manually saved by the user",
"source_description_etapi": "Created via the External Trilium API",
"source_description_llm": "Created by the AI assistant",
"source_description_restore": "Saved before restoring a previous revision",
"source_description_unknown": "Source not available"
},
"sort_child_notes": {
"sort_children_by": "Sort children by...",
@@ -447,6 +495,8 @@
"and_more": "... and {{count}} more.",
"print_landscape": "When exporting to PDF, changes the orientation of the page to landscape instead of portrait.",
"print_page_size": "When exporting to PDF, changes the size of the page. Supported values: <code>A0</code>, <code>A1</code>, <code>A2</code>, <code>A3</code>, <code>A4</code>, <code>A5</code>, <code>A6</code>, <code>Legal</code>, <code>Letter</code>, <code>Tabloid</code>, <code>Ledger</code>.",
"print_scale": "When exporting to PDF, changes the scale of the rendered content. Values range from 0.1 (10%) to 2 (200%), default is 1 (100%).",
"print_margins": "When exporting to PDF, sets page margins. Use <code>default</code>, <code>none</code>, <code>minimum</code>, or custom values as <code>top,right,bottom,left</code> in millimeters.",
"color_type": "Color"
},
"attribute_editor": {
@@ -686,6 +736,11 @@
"move_right": "Move right"
},
"note_actions": {
"word_wrap": "Word wrap",
"word_wrap_auto": "Auto",
"word_wrap_auto_description": "Follow the global setting",
"word_wrap_on": "On",
"word_wrap_off": "Off",
"convert_into_attachment": "Convert into attachment",
"re_render_note": "Re-render note",
"search_in_note": "Search in note",
@@ -702,6 +757,7 @@
"print_note": "Print note",
"view_revisions": "Note revisions...",
"save_revision": "Save revision",
"save_named_revision": "Save named revision...",
"advanced": "Advanced",
"convert_into_attachment_failed": "Converting note '{{title}}' failed.",
"convert_into_attachment_successful": "Note '{{title}}' has been converted to attachment.",
@@ -806,7 +862,11 @@
"board": "Board",
"presentation": "Presentation",
"include_archived_notes": "Show archived notes",
"hide_child_notes": "Hide child notes in tree"
"hide_child_notes": "Hide child notes in tree",
"open_all_in_tabs": "Open all",
"open_all_in_tabs_tooltip": "Open all results in new tabs",
"open_all_confirm": "This will open {{count}} notes in new tabs. Continue?",
"open_all_too_many": "Too many results ({{count}}). Maximum is {{max}}."
},
"edited_notes": {
"no_edited_notes_found": "No edited notes on this day yet...",
@@ -842,6 +902,9 @@
"no_inherited_attributes": "No inherited attributes.",
"none": "none"
},
"auto_link_attribute_list": {
"title": "System Attributes"
},
"note_info_widget": {
"note_id": "Note ID",
"created": "Created",
@@ -860,7 +923,8 @@
"collapse": "Collapse to normal size",
"title": "Note Map",
"fix-nodes": "Fix nodes",
"link-distance": "Link distance"
"link-distance": "Link distance",
"too-many-notes": "This subtree contains {{count}} notes, which exceeds the limit of {{max}} that can be displayed in the note map."
},
"note_paths": {
"title": "Note Paths",
@@ -1109,17 +1173,20 @@
},
"consistency_checks": {
"title": "Consistency Checks",
"find_and_fix_label": "Find and fix consistency issues",
"find_and_fix_description": "Scan for and automatically repair any data consistency issues in the database.",
"find_and_fix_button": "Find and fix consistency issues",
"finding_and_fixing_message": "Finding and fixing consistency issues...",
"issues_fixed_message": "Any consistency issue which may have been found is now 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.",
"description": "Create an anonymized copy of your database for sharing with developers when debugging issues, without exposing personal data.",
"full_anonymization": "Full anonymization",
"full_anonymization_description": "Creates a copy of the database with all note content removed, leaving only structure and non-sensitive metadata. Safe for sharing online when debugging issues.",
"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.",
"light_anonymization": "Light anonymization",
"light_anonymization_description": "Creates a copy with note content removed, but titles, attributes, and custom scripts/widgets remain. Provides more context for debugging.",
"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",
@@ -1132,7 +1199,8 @@
},
"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_integrity_label": "Check database integrity",
"check_integrity_description": "Verify that the database is not corrupted on the SQLite level.",
"check_button": "Check database integrity",
"checking_integrity": "Checking database integrity...",
"integrity_check_succeeded": "Integrity check succeeded - no problems found.",
@@ -1140,7 +1208,11 @@
},
"sync": {
"title": "Sync",
"force_full_sync_label": "Force full sync",
"force_full_sync_description": "Trigger a complete synchronization with the sync server, re-uploading all changes.",
"force_full_sync_button": "Force full sync",
"fill_entity_changes_label": "Fill entity changes",
"fill_entity_changes_description": "Rebuild entity change records. Use this if sync is missing some changes.",
"fill_entity_changes_button": "Fill entity changes records",
"full_sync_triggered": "Full sync triggered",
"filling_entity_changes": "Filling entity changes rows...",
@@ -1148,8 +1220,13 @@
"finished-successfully": "Sync finished successfully.",
"failed": "Sync failed: {{message}}"
},
"database": {
"title": "Database"
},
"vacuum_database": {
"title": "Vacuum Database",
"vacuum_label": "Vacuum database",
"vacuum_description": "Rebuild the database to reduce file size. No data will be changed.",
"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...",
@@ -1166,16 +1243,18 @@
"fonts": {
"theme_defined": "Theme defined",
"fonts": "Fonts",
"main_font": "Main Font",
"custom_fonts": "Use custom fonts",
"main_font": "Interface text",
"font_family": "Font family",
"size": "Size",
"note_tree_font": "Note Tree Font",
"note_detail_font": "Note Detail Font",
"monospace_font": "Monospace (code) Font",
"note_tree_and_detail_font_sizing": "Note that tree and detail font sizing is relative to the main font size setting.",
"not_all_fonts_available": "Not all listed fonts may be available on your system.",
"apply_font_changes": "To apply font changes, click on",
"reload_frontend": "reload frontend",
"preview": "Preview",
"note_tree_font": "Note tree text",
"note_detail_font": "Document text",
"monospace_font": "Monospace text",
"monospace_font_description": "Used for code notes and code blocks",
"size_relative_to_general": "Size is relative to the general font size",
"not_all_fonts_available": "Not all listed fonts may be available on your system",
"apply_changes": "Reload to apply changes",
"generic-fonts": "Generic fonts",
"sans-serif-system-fonts": "Sans-serif system fonts",
"serif-system-fonts": "Serif system fonts",
@@ -1204,15 +1283,18 @@
"edited_notes_message": "Edited Notes ribbon tab will automatically open on day notes"
},
"theme": {
"title": "Application Theme",
"theme_label": "Theme",
"title": "User Interface",
"theme_label": "Application theme",
"override_theme_fonts_label": "Override theme fonts",
"auto_theme": "Legacy (Follow system color scheme)",
"light_theme": "Legacy (Light)",
"dark_theme": "Legacy (Dark)",
"triliumnext": "Trilium (Follow system color scheme)",
"triliumnext-light": "Trilium (Light)",
"triliumnext-dark": "Trilium (Dark)",
"auto_theme": "Follow system color scheme",
"light_theme": "Light",
"dark_theme": "Dark",
"triliumnext": "Follow system color scheme",
"triliumnext-light": "Light",
"triliumnext-dark": "Dark",
"modern_themes": "Modern",
"legacy_themes": "Legacy",
"custom_themes": "Custom",
"layout": "Layout",
"layout-vertical-title": "Vertical",
"layout-horizontal-title": "Horizontal",
@@ -1221,11 +1303,11 @@
},
"ui-performance": {
"title": "Performance",
"enable-motion": "Enable transitions and animations",
"enable-shadows": "Enable shadows",
"enable-backdrop-effects": "Enable background effects for menus, popups and panels",
"enable-smooth-scroll": "Enable smooth scrolling",
"app-restart-required": "(a restart of the application is required for the change to take effect)"
"enable-motion": "Transitions and animations",
"enable-shadows": "Shadows",
"enable-backdrop-effects": "Background effects for menus, popups and panels",
"enable-smooth-scroll": "Smooth scrolling",
"app-restart-required": "Requires app restart"
},
"zoom_factor": {
"title": "Zoom Factor (desktop build only)",
@@ -1234,11 +1316,13 @@
"code_auto_read_only_size": {
"title": "Automatic Read-Only Size",
"description": "Automatic read-only note size is the size after which notes will be displayed in a read-only mode (for performance reasons).",
"label": "Automatic read-only size (code notes)",
"label": "Automatic read-only size",
"unit": "characters"
},
"code-editor-options": {
"title": "Editor"
"title": "Editor",
"tab_width": "Tab width",
"tab_width_unit": "spaces"
},
"code_mime_types": {
"title": "Available MIME types in the dropdown",
@@ -1280,58 +1364,80 @@
"batch_ocr_error": "Error during batch processing: {{error}}"
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Attachment Erasure Timeout",
"attachment_auto_deletion_description": "Attachments get automatically deleted (and erased) if they are not referenced by their note anymore after a defined time out.",
"erase_attachments_after": "Erase unused attachments after:",
"manual_erasing_description": "You can also trigger erasing manually (without considering the timeout defined above):",
"erase_unused_attachments_now": "Erase unused attachment notes now",
"attachment_erasure_timeout": "Unused Attachments",
"description": "Attachments that are no longer referenced by any note are considered unused and can be automatically erased after a period of time.",
"erase_attachments_after": "Erase unused attachments after",
"erase_attachments_after_description": "Time before unused attachments are permanently erased.",
"manual_erasing_description": "Trigger erasing manually, ignoring the timeout above.",
"erase_unused_attachments_now": "Erase unused attachments now",
"unused_attachments_erased": "Unused attachments have been erased."
},
"network_connections": {
"network_connections_title": "Network Connections",
"check_for_updates": "Check for updates automatically"
"network_connections_title": "Network",
"check_for_updates": "Check for updates automatically",
"check_for_updates_description": "Checks for new versions on GitHub and shows a notification in the global menu when available."
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Note Erasure Timeout",
"note_erasure_description": "Deleted notes (and attributes, revisions...) are at first only marked as deleted and it is possible to recover them from Recent Notes dialog. After a period of time, deleted notes are \"erased\" which means their content is not recoverable anymore. This setting allows you to configure the length of the period between deleting and erasing the note.",
"erase_notes_after": "Erase notes after:",
"manual_erasing_description": "You can also trigger erasing manually (without considering the timeout defined above):",
"note_erasure_timeout_title": "Deleted Notes",
"description": "Deleted notes are first only marked as deleted and can be recovered from Recent Notes. After a period of time, they are permanently erased.",
"erase_notes_after": "Erase notes after",
"erase_notes_after_description": "Time before deleted notes are permanently erased.",
"manual_erasing_description": "Trigger erasing manually, ignoring the timeout above.",
"erase_deleted_notes_now": "Erase deleted notes now",
"deleted_notes_erased": "Deleted notes have been erased."
},
"revisions_snapshot": {
"title": "Note Revisions"
},
"revisions_snapshot_interval": {
"note_revisions_snapshot_interval_title": "Note Revision Snapshot Interval",
"note_revisions_snapshot_description": "The Note revision snapshot interval is the time after which a new note revision will be created for the note. See <doc>wiki</doc> for more info.",
"snapshot_time_interval_label": "Note revision snapshot time interval:"
"note_revisions_snapshot_description_short": "Time after which a new note revision will be created.",
"snapshot_time_interval_label": "Snapshot interval"
},
"revisions_snapshot_limit": {
"note_revisions_snapshot_limit_title": "Note Revision Snapshot Limit",
"note_revisions_snapshot_limit_description": "The note revision snapshot number limit refers to the maximum number of revisions that can be saved for each note. Where -1 means no limit, 0 means delete all revisions. You can set the maximum revisions for a single note through the #versioningLimit label.",
"snapshot_number_limit_label": "Note revision snapshot number limit:",
"note_revisions_snapshot_limit_description_short": "Max revisions per note. Use -1 for unlimited, 0 to disable.",
"snapshot_number_limit_label": "Maximum revisions",
"snapshot_number_limit_unit": "snapshots",
"erase_excess_revision_snapshots": "Erase excess revision snapshots now",
"erase_excess_revision_snapshots_description": "Delete revisions exceeding the limit for all notes.",
"erase_excess_revision_snapshots_prompt": "Excess revision snapshots have been erased."
},
"search": {
"title": "Search",
"fuzzy_matching_label": "Typo tolerance in search",
"fuzzy_matching_description": "Affects quick search and full search. Finds similar words when exact matches are insufficient.",
"autocomplete_fuzzy_label": "Typo tolerance in autocomplete",
"autocomplete_fuzzy_description": "Affects jump-to-note and note selectors. Slower but tolerates typos."
},
"search_engine": {
"title": "Search Engine",
"custom_search_engine_info": "Custom search engine requires both a name and a URL to be set. If either of these is not set, DuckDuckGo will be used as the default search engine.",
"predefined_templates_label": "Predefined search engine templates",
"custom_search_engine_info": "Used when searching the web for selected text. If not configured, DuckDuckGo will be used.",
"predefined_templates_label": "Presets",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo",
"google": "Google",
"custom_name_label": "Custom search engine name",
"custom_name_placeholder": "Customize search engine name",
"custom_url_label": "Custom search engine URL should include {keyword} as a placeholder for the search term.",
"custom_url_placeholder": "Customize search engine URL",
"custom_name_label": "Name",
"custom_name_placeholder": "Search engine name",
"custom_url_label": "URL",
"custom_url_description": "Use {keyword} as a placeholder for the search term.",
"custom_url_placeholder": "Search engine URL",
"save_button": "Save"
},
"tray": {
"title": "System Tray",
"enable_tray": "Enable tray (Trilium needs to be restarted for this change to take effect)"
"enable_tray": "Tray icon",
"enable_tray_description": "Trilium needs to be restarted for this change to take effect."
},
"text_editor": {
"title": "Editor"
},
"heading_style": {
"title": "Heading Style",
"title": "Heading style",
"description": "Visual style for headings in text notes.",
"plain": "Plain",
"underline": "Underline",
"markdown": "Markdown-style"
@@ -1358,14 +1464,16 @@
"text_auto_read_only_size": {
"title": "Automatic Read-Only Size",
"description": "Automatic read-only note size is the size after which notes will be displayed in a read-only mode (for performance reasons).",
"label": "Automatic read-only size (text notes)",
"label": "Automatic read-only size",
"unit": "characters"
},
"custom_date_time_format": {
"title": "Custom Date/Time Format",
"title": "Date/time format",
"description": "Customize the format of the date and time inserted via <shortcut /> or the toolbar. See <doc>Day.js docs</doc> for available format tokens.",
"format_string": "Format string:",
"formatted_time": "Formatted date/time:"
"description_short": "Customize the format of the date and time inserted via the toolbar.",
"preview": "Preview: {{preview}}",
"format_string": "Format string",
"formatted_time": "Formatted date/time"
},
"i18n": {
"title": "Localization",
@@ -1380,20 +1488,20 @@
"sunday": "Sunday",
"first-week-of-the-year": "First week of the year",
"first-week-contains-first-day": "First week contains first day of the year",
"first-week-contains-first-thursday": "First week contains first Thursday of the year",
"first-week-contains-first-thursday": "First week contains first Thursday (ISO 8601)",
"first-week-has-minimum-days": "First week has minimum days",
"min-days-in-first-week": "Minimum days in first week",
"first-week-info": "First week contains first Thursday of the year is based on <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> standard.",
"first-week-warning": "Changing first week options may cause duplicate with existing Week Notes and the existing Week Notes will not be updated accordingly.",
"first-week-warning": "Changing this may cause duplicates with existing Week Notes.",
"formatting-locale": "Date & number format",
"formatting-locale-auto": "Based on the application's language"
},
"backup": {
"title": "Backup",
"automatic_backup": "Automatic backup",
"automatic_backup_description": "Trilium can back up the database automatically:",
"enable_daily_backup": "Enable daily backup",
"enable_weekly_backup": "Enable weekly backup",
"enable_monthly_backup": "Enable monthly backup",
"enable_daily_backup": "Backup daily",
"enable_weekly_backup": "Backup weekly",
"enable_monthly_backup": "Backup monthly",
"backup_recommendation": "It's recommended to keep the backup turned on, but this can make application startup slow with large databases and/or slow storage devices.",
"backup_now": "Backup now",
"backup_database_now": "Backup database now",
@@ -1401,7 +1509,8 @@
"date-and-time": "Date & time",
"path": "Path",
"database_backed_up_to": "Database has been backed up to {{backupFilePath}}",
"no_backup_yet": "no backup yet"
"no_backup_yet": "no backup yet",
"download": "Download"
},
"etapi": {
"title": "ETAPI",
@@ -1436,11 +1545,15 @@
"new_password": "New password",
"new_password_confirmation": "New password confirmation",
"change_password": "Change password",
"protected_session_timeout": "Protected Session Timeout",
"protected_session_timeout_description": "Protected session timeout is a time period after which the protected session is wiped from the browser's memory. This is measured from the last interaction with protected notes. See",
"change_password_description": "Update your current password",
"reset_password": "Reset password",
"reset_password_description": "Permanently lose access to protected notes",
"cancel": "Cancel",
"protected_session_timeout": "Protected Session",
"protected_session_timeout_description": "Time of inactivity before the session is cleared from browser memory. See",
"wiki": "wiki",
"for_more_info": "for more info.",
"protected_session_timeout_label": "Protected session timeout:",
"protected_session_timeout_label": "Auto-close session after",
"reset_confirmation": "By resetting the password you will forever lose access to all your existing protected notes. Do you really want to reset the password?",
"reset_success_message": "Password has been reset. Please set new password",
"change_password_heading": "Change Password",
@@ -1510,18 +1623,17 @@
"related_description": "Configure spell check languages and custom dictionary."
},
"sync_2": {
"config_title": "Sync Configuration",
"server_address": "Server instance address",
"timeout": "Sync timeout",
"timeout_unit": "milliseconds",
"proxy_label": "Sync proxy server (optional)",
"note": "Note",
"note_description": "If you leave the proxy setting blank, the system proxy will be used (applies to desktop/electron build only).",
"special_value_description": "Another special value is <code>noproxy</code> which forces ignoring even the system proxy and respects <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"config_title": "Sync Server",
"server_address": "Server address",
"server_address_description": "URL of the Trilium server to sync with.",
"timeout": "Connection timeout",
"timeout_description": "Time to wait before giving up on a slow connection.",
"proxy_label": "Proxy server",
"proxy_description": "Leave blank to use system proxy (desktop only). Use \"noproxy\" to bypass all proxies.",
"save": "Save",
"help": "Help",
"test_title": "Sync Test",
"test_description": "This will test the connection and handshake to the sync server. If the sync server isn't initialized, this will set it up to sync with the local document.",
"test_title": "Test Connection",
"test_description": "Test the connection to the sync server. If not initialized, this will set up syncing.",
"test_button": "Test sync",
"handshake_failed": "Sync server handshake failed, error: {{message}}"
},
@@ -1604,6 +1716,7 @@
"note_types": {
"text": "Text",
"code": "Code",
"markdown": "Markdown",
"saved-search": "Saved Search",
"relation-map": "Relation Map",
"note-map": "Note Map",
@@ -1664,7 +1777,8 @@
"note_context_enabled": "Click to disable note context: {{title}}",
"note_context_disabled": "Click to include current note in context",
"no_provider_message": "No AI provider configured. Add one to start chatting.",
"add_provider": "Add AI Provider"
"add_provider": "Add AI Provider",
"stop": "Stop"
},
"sidebar_chat": {
"title": "AI Chat",
@@ -1745,7 +1859,7 @@
"note_detail": {
"could_not_find_typewidget": "Could not find typeWidget for type '{{type}}'",
"printing": "Printing in progress...",
"printing_pdf": "Exporting to PDF in progress...",
"printing_pdf": "Preparing print preview...",
"print_report_title": "Print report",
"print_report_error_title": "Failed to print",
"print_report_stack_trace": "Stack trace",
@@ -1823,6 +1937,8 @@
},
"entrypoints": {
"note-revision-created": "Note revision has been created.",
"save-named-revision-title": "Save named revision",
"save-named-revision-message": "Enter a name for this revision (leave empty for no name):",
"note-executed": "Note executed.",
"sql-error": "Error occurred while executing SQL query: {{message}}"
},
@@ -1860,6 +1976,9 @@
"move-to-available-launchers": "Move to available launchers",
"duplicate-launcher": "Duplicate launcher <kbd data-command=\"duplicateSubtree\">"
},
"launcher_button_context_menu": {
"remove_from_launch_bar": "Remove from launch bar"
},
"highlighting": {
"title": "Code Blocks",
"description": "Controls the syntax highlighting for code blocks inside text notes, code notes will not be affected.",
@@ -1870,7 +1989,10 @@
"theme_none": "No syntax highlighting",
"theme_group_light": "Light themes",
"theme_group_dark": "Dark themes",
"copy_title": "Copy to clipboard"
"copy_title": "Copy to clipboard",
"click_to_copy": "Click to copy",
"tab_width": "Tab width",
"tab_width_unit": "spaces"
},
"classic_editor_toolbar": {
"title": "Formatting"
@@ -1881,6 +2003,7 @@
"editing": {
"editor_type": {
"label": "Formatting toolbar",
"toolbar_style": "Toolbar style",
"floating": {
"title": "Floating",
"description": "editing tools appear near the cursor;"
@@ -1889,7 +2012,7 @@
"title": "Fixed",
"description": "editing tools appear in the \"Formatting\" ribbon tab."
},
"multiline-toolbar": "Display the toolbar on multiple lines if it doesn't fit."
"multiline-toolbar": "Display the toolbar on multiple lines if it doesn't fit"
}
},
"electron_context_menu": {
@@ -1907,6 +2030,9 @@
"copy_reference_to_clipboard": "Copy reference to clipboard",
"copy_image_to_clipboard": "Copy image to clipboard"
},
"link": {
"failed_to_open": "Failed to open link '{{- href}}': {{- message}}"
},
"link_context_menu": {
"open_note_in_new_tab": "Open note in a new tab",
"open_note_in_new_split": "Open note in a new split",
@@ -1956,7 +2082,7 @@
"days": "Days"
},
"share": {
"title": "Share Settings",
"title": "Share",
"redirect_bare_domain": "Redirect bare domain to Share page",
"redirect_bare_domain_description": "Redirect anonymous users to the Share page instead of showing Login",
"show_login_link": "Show Login link in Share theme",
@@ -1997,6 +2123,11 @@
"unlock-editing": "Unlock editing",
"lock-editing": "Lock editing"
},
"display_mode": {
"source": "Source view",
"split": "Split view",
"preview": "Preview"
},
"png_export_button": {
"button_title": "Export diagram as PNG"
},
@@ -2020,12 +2151,12 @@
},
"editorfeatures": {
"title": "Features",
"emoji_completion_enabled": "Enable Emoji auto-completion",
"emoji_completion_description": "If enabled, emojis can be easily inserted into text by typing `:`, followed by the name of an emoji.",
"note_completion_enabled": "Enable note auto-completion",
"note_completion_description": "If enabled, links to notes can be created by typing `@` followed by the title of a note.",
"slash_commands_enabled": "Enable slash commands",
"slash_commands_description": "If enabled, editing commands such as inserting line breaks or headings can be toggled by typing `/`."
"emoji_completion_enabled": "Emoji auto-completion",
"emoji_completion_description": "Emojis can be easily inserted into text by typing `:`, followed by the name of an emoji.",
"note_completion_enabled": "Note auto-completion",
"note_completion_description": "Links to notes can be created by typing `@` followed by the title of a note.",
"slash_commands_enabled": "Slash commands",
"slash_commands_description": "Editing commands such as inserting line breaks or headings can be toggled by typing `/`."
},
"table_view": {
"new-row": "New row",
@@ -2144,6 +2275,8 @@
"related_code_blocks": "Color scheme for code blocks in text notes",
"related_code_notes": "Color scheme for code notes",
"ui": "User interface",
"ui_layout_style": "Layout style",
"ui_layout_orientation": "Launcher bar orientation",
"ui_old_layout": "Old layout",
"ui_new_layout": "New layout"
},
@@ -2226,7 +2359,19 @@
"note_paths_one": "{{count}} path",
"note_paths_other": "{{count}} paths",
"note_paths_title": "Note paths",
"code_note_switcher": "Change language mode"
"code_note_switcher": "Change language mode",
"tab_width": "Tab Width: {{width}}",
"tab_width_title": "Change tab width",
"tab_width_spaces": "{{count}} spaces",
"tab_width_spaces_short": "Spaces: {{width}}",
"tab_width_tabs": "Tabs: {{width}}",
"tab_width_use_default": "Use default ({{width}})",
"tab_width_use_default_style": "Use default ({{style}})",
"tab_width_display_header": "Display width",
"tab_width_reindent_header": "Re-indent content to",
"tab_width_style_header": "Indent using",
"tab_width_style_spaces": "Spaces",
"tab_width_style_tabs": "Tabs"
},
"attributes_panel": {
"title": "Note Attributes"
@@ -2237,6 +2382,37 @@
"toggle": "Toggle right panel",
"custom_widget_go_to_source": "Go to source code"
},
"print_preview": {
"title": "Print preview",
"close": "Close",
"save": "Save as PDF",
"print": "Print",
"export_pdf": "Export as PDF",
"system_print": "Print using system dialog",
"destination": "Destination",
"destination_pdf": "Save as PDF",
"destination_printers": "Printers",
"destination_default": "Default",
"orientation": "Orientation",
"portrait": "Portrait",
"landscape": "Landscape",
"page_size": "Page size",
"scale": "Scale",
"margins": "Margins",
"render_error": "Unable to render PDF with the current settings. Please check the margins and scale.",
"margins_default": "Default",
"margins_none": "None",
"margins_minimum": "Minimum",
"margins_custom": "Custom",
"margin_top": "Top",
"margin_right": "Right",
"margin_bottom": "Bottom",
"margin_left": "Left",
"page_ranges": "Pages",
"page_ranges_hint": "Leave empty to print all pages.",
"page_ranges_invalid": "Invalid format. Use e.g. 1-5, 8, 11-13.",
"page_ranges_placeholder": "e.g. 1-5, 8, 11-13"
},
"pdf": {
"attachments_one": "{{count}} attachment",
"attachments_other": "{{count}} attachments",
@@ -2367,7 +2543,15 @@
"web_search": "Web search",
"note_in_parent": "<Note/> in <Parent/>",
"get_attachment": "Get attachment",
"get_attachment_content": "Read attachment content"
"get_attachment_content": "Read attachment content",
"rename_note": "Rename note",
"delete_note": "Delete note",
"move_note": "Move note",
"clone_note": "Clone note"
}
},
"common": {
"save": "Save",
"cancel": "Cancel"
}
}

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Acerca de Trilium Notes",
"homepage": "Página principal:",
"app_version": "Versión de la aplicación:",
"db_version": "Versión de base de datos:",
"sync_version": "Versión de sincronización:",
"build_date": "Fecha de creación:",
"build_revision": "Revisión de compilación:",
"data_directory": "Directorio de datos:"
},
"toast": {
@@ -88,17 +81,24 @@
"also_delete_note": "También eliminar la nota"
},
"delete_notes": {
"delete_notes_preview": "Eliminar vista previa de notas",
"close": "Cerrar",
"delete_all_clones_description": "Eliminar también todos los clones (se puede deshacer en cambios recientes)",
"erase_notes_description": "La eliminación normal (suave) solo marca las notas como eliminadas y se pueden recuperar (en el cuadro de diálogo de cambios recientes) dentro de un periodo de tiempo. Al marcar esta opción se borrarán las notas inmediatamente y no será posible recuperarlas.",
"erase_notes_description": "Borrar notas inmediatamente en lugar de la eliminación con respaldo. Esto no se puede deshacer y forzará la recarga de la aplicación.",
"erase_notes_warning": "Eliminar notas permanentemente (no se puede deshacer), incluidos todos los clones. Esto forzará la recarga de la aplicación.",
"notes_to_be_deleted": "Las siguientes notas serán eliminadas ({{notesCount}})",
"notes_to_be_deleted": "Notas a ser eliminadas ({{notesCount}})",
"no_note_to_delete": "No se eliminará ninguna nota (solo clones).",
"broken_relations_to_be_deleted": "Las siguientes relaciones se romperán y serán eliminadas ({{ relationCount}})",
"broken_relations_to_be_deleted": "Relaciones rotas ({{ relationCount}})",
"cancel": "Cancelar",
"ok": "Aceptar",
"deleted_relation_text": "Nota {{- note}} (para ser eliminada) está referenciado por la relación {{- relation}} que se origina en {{- source}}."
"title": "Eliminar notas",
"clones_label": "Clones",
"delete_clones_description_one": "También eliminar otro clon. Puede deshacerse en los cambios recientes.",
"delete_clones_description_many": "También eliminar otros {{count}} clones. Puede deshacerse en los cambios recientes.",
"delete_clones_description_other": "También eliminar otros {{count}} clones. Puede deshacerse en los cambios recientes.",
"erase_notes_label": "Borrar permanentemente",
"table_note_with_relation": "Nota con relación",
"table_relation": "Relación",
"table_points_to": "Apunta a (eliminado)",
"delete": "Eliminar"
},
"export": {
"export_note_title": "Exportar nota",
@@ -209,7 +209,8 @@
"box_size_small": "pequeño (~ 10 líneas)",
"box_size_medium": "medio (~ 30 líneas)",
"box_size_full": "completo (el cuadro muestra el texto completo)",
"button_include": "Incluir nota"
"button_include": "Incluir nota",
"box_size_expandable": "expandible (colapsado por defecto)"
},
"info": {
"modalTitle": "Mensaje informativo",
@@ -270,33 +271,6 @@
"undelete_link": "recuperar",
"confirm_undelete": "¿Quiere recuperar esta nota y sus subnotas?"
},
"revisions": {
"note_revisions": "Revisiones de nota",
"delete_all_revisions": "Eliminar todas las revisiones de esta nota",
"delete_all_button": "Eliminar todas las revisiones",
"help_title": "Ayuda sobre revisiones de notas",
"confirm_delete_all": "¿Quiere eliminar todas las revisiones de esta nota?",
"no_revisions": "Aún no hay revisiones para esta nota...",
"restore_button": "Restaurar",
"confirm_restore": "¿Quiere restaurar esta revisión? Esto sobrescribirá el título actual y el contenido de la nota con esta revisión.",
"delete_button": "Eliminar",
"confirm_delete": "¿Quieres eliminar esta revisión?",
"revisions_deleted": "Se han eliminado las revisiones de nota.",
"revision_restored": "Se ha restaurado la revisión de nota.",
"revision_deleted": "Se ha eliminado la revisión de la nota.",
"snapshot_interval": "Intervalo de respaldo de revisiones de nota: {{seconds}}s.",
"maximum_revisions": "Máximo de revisiones para la nota actual: {{number}}.",
"settings": "Ajustes para revisiones de nota",
"download_button": "Descargar",
"mime": "MIME: ",
"file_size": "Tamaño del archivo:",
"preview_not_available": "La vista previa no está disponible para este tipo de notas.",
"diff_off": "Mostrar contenido",
"diff_on": "Mostrar diferencia",
"diff_off_hint": "Haga clic para mostrar el contenido de la nota",
"diff_not_available": "Diferencias no disponibles.",
"diff_on_hint": "Haga clic para ver las diferencias"
},
"sort_child_notes": {
"sort_children_by": "Ordenar hijos por...",
"sorting_criteria": "Criterios de ordenamiento",
@@ -368,7 +342,7 @@
"calendar_root": "marca la nota que debe usarse como raíz para las notas del día. Sólo uno debe estar marcado como tal.",
"archived": "las notas con esta etiqueta no serán visibles de forma predeterminada en los resultados de búsqueda (tampoco en los cuadros de diálogo Saltar a, Agregar vínculo, etc.).",
"exclude_from_export": "las notas (con su subárbol) no se incluirán en ninguna exportación de notas",
"run": "define en qué eventos debe ejecutarse el script. Los valores posibles son:\n<ul>\n<li>frontendStartup - cuando Trilium frontend se inicia (o se actualiza), pero no en móvil.</li>\n<li>mobileStartup - cuando Trilium frontend se inicia (o se actualiza), en móvil.</li>\n<li>backendStartup - cuando Trilium backend se inicia</li>\n<li>hourly - se ejecuta una vez por hora. Se puede usar la etiqueta adicional <code>runAtHour</code> para especificar a qué hora.</li>\n<li>daily - se ejecuta una vez al día</li>\n</ul>",
"run": "define en qué eventos debe ejecutarse el script. Los valores posibles son:\n<ul>\n<li>frontendStartup - cuando el frontend de Trilium se inicia (o se actualiza), pero no en móvil.</li>\n<li>mobileStartup - cuando el frontend de Trilium se inicia (o se actualiza), en móvil.</li>\n<li>backendStartup - cuando el backend de Trilium se inicia</li>\n<li>hourly - se ejecuta una vez por hora. Se puede usar la etiqueta adicional <code>runAtHour</code> para especificar a qué hora.</li>\n<li>daily - se ejecuta una vez al día</li>\n</ul>",
"run_on_instance": "Definir en qué instancia de Trilium se debe ejecutar esto. Predeterminado para todas las instancias.",
"run_at_hour": "¿A qué hora debería funcionar? Debe usarse junto con <code>#run=hourly</code>. Se puede definir varias veces para varias ejecuciones durante el día.",
"disable_inclusion": "los scripts con esta etiqueta no se incluirán en la ejecución del script principal.",
@@ -446,7 +420,10 @@
"and_more": "... y {{count}} más.",
"print_landscape": "Al exportar a PDF, cambia la orientación de la página a paisaje en lugar de retrato.",
"print_page_size": "Al exportar a PDF, cambia el tamaño de la página. Valores soportados: <code>A0</code>, <code>A1</code>, <code>A2</code>, <code>A3</code>, <code>A4</code>, <code>A5</code>, <code>A6</code>, <code>Legal</code>, <code>Letter</code>, <code>Tabloid</code>, <code>Ledger</code>.",
"color_type": "Color"
"color_type": "Color",
"textarea": "Texto multilínea",
"print_scale": "Al exportar a PDF, cambia la escala del contenido renderizado. Los valores varían de 0.1 (10%) a 2 (200%), por defecto es 1 (100%).",
"print_margins": "Al exportar a PDF, establece márgenes de página. Use <code>default</code>, <code>none</code>, <code>minimum</code>, o valores personalizados como <code>top,right,bottom,left</code> en milímetros."
},
"attribute_editor": {
"help_text_body1": "Para agregar una etiqueta, simplemente escriba, por ejemplo. <code>#rock</code> o si desea agregar también valor, p.e. <code>#año = 2020</code>",
@@ -708,7 +685,12 @@
"export_as_image": "Exportar como imagen",
"export_as_image_png": "PNG (ráster)",
"export_as_image_svg": "SVG (vectorial)",
"note_map": "Mapa de la nota"
"note_map": "Mapa de la nota",
"view_ocr_text": "Ver texto OCR",
"word_wrap_auto": "Automático",
"word_wrap_auto_description": "Seguir el ajuste global",
"word_wrap_on": "Encendido",
"word_wrap_off": "Apagado"
},
"onclick_button": {
"no_click_handler": "El widget de botón '{{componentId}}' no tiene un controlador de clics definido"
@@ -806,7 +788,13 @@
"expand_first_level": "Expandir hijos inmediatos",
"expand_nth_level": "Expandir {{depth}} niveles",
"expand_all_levels": "Expandir todos los niveles",
"hide_child_notes": "Ocultar subnotas en el árbol"
"hide_child_notes": "Ocultar subnotas en el árbol",
"open_all_in_tabs": "Abrir todo",
"open_all_in_tabs_tooltip": "Abrir todos los resultados en nuevas pestañas",
"open_all_confirm": "Esto abrirá {{count}} notas en nuevas pestañas. ¿Continuar?",
"open_all_too_one": " ",
"open_all_too_many": " ",
"open_all_too_other": " "
},
"edited_notes": {
"no_edited_notes_found": "Aún no hay notas editadas en este día...",
@@ -860,7 +848,8 @@
"collapse": "Contraer al tamaño normal",
"title": "Mapa de notas",
"fix-nodes": "Fijar nodos",
"link-distance": "Distancia de enlace"
"link-distance": "Distancia de enlace",
"too-many-notes": "Este subárbol contiene {{count}} notas, lo que excede el límite de {{max}} que se puede mostrar en el mapa de notas."
},
"note_paths": {
"title": "Rutas de nota",
@@ -1065,7 +1054,8 @@
"note_already_in_diagram": "La nota \"{{title}}\" ya está en el diagrama.",
"enter_title_of_new_note": "Ingrese el título de la nueva nota",
"default_new_note_title": "nueva nota",
"click_on_canvas_to_place_new_note": "Haga clic en el lienzo para colocar una nueva nota"
"click_on_canvas_to_place_new_note": "Haga clic en el lienzo para colocar una nueva nota",
"rename_relation": "Renombrar relación"
},
"backend_log": {
"refresh": "Refrescar"
@@ -1074,15 +1064,17 @@
"title": "Comprobación de coherencia",
"find_and_fix_button": "Buscar y solucionar problemas de coherencia",
"finding_and_fixing_message": "Buscando y solucionando problemas de coherencia...",
"issues_fixed_message": "Los problemas de coherencia han sido solucionados."
"issues_fixed_message": "Los problemas de coherencia han sido solucionados.",
"find_and_fix_label": "Buscar y solucionar problemas de coherencia",
"find_and_fix_description": "Escanear y reparar automáticamente cualquier problema de consistencia de datos en la base de datos."
},
"database_anonymization": {
"title": "Anonimización de bases de datos",
"full_anonymization": "Anonimización total",
"full_anonymization_description": "Esta acción crea una nueva copia de la base de datos y la anonimizará (eliminará todo el contenido de las notas y deja solo la estructura y algunos metadatos no confidenciales) para compartirla en línea con fines de depuración sin temor a filtrar sus datos personales.",
"full_anonymization_description": "Crea una copia de la base de datos con todo el contenido eliminado, dejando solo la estructura y algunos metadatos no confidenciales. Seguro para compartirla en línea con fines de depuración de problemas.",
"save_fully_anonymized_database": "Guarde la base de datos completamente anónima",
"light_anonymization": "Anonimización ligera",
"light_anonymization_description": "Esta acción crea una nueva copia de la base de datos y realizará una ligera anonimización en ella; específicamente, solo se eliminará el contenido de todas las notas, pero los títulos y atributos permanecerán. Además, se mantendrán las notas de script JS frontend/backend personalizadas y los widgets personalizados. Esto proporciona más contexto para depurar los problemas.",
"light_anonymization_description": "Crea una copia con el contenido de las notas eliminado, excepto los títulos, atributos y scripts/widgets personalizados que permanecerán. Esto proporciona más contexto para el depurado.",
"choose_anonymization": "Puede decidir usted mismo si desea proporcionar una base de datos total o ligeramente anónima. Incluso una base de datos totalmente anónima es muy útil; sin embargo, en algunos casos, una base de datos ligeramente anónima puede acelerar el proceso de identificación y corrección de errores.",
"save_lightly_anonymized_database": "Guarde una base de datos ligeramente anónima",
"existing_anonymized_databases": "Bases de datos anónimas existentes",
@@ -1091,15 +1083,17 @@
"error_creating_anonymized_database": "No se pudo crear una base de datos anónima; consulte los registros de backend para obtener más detalles",
"successfully_created_fully_anonymized_database": "Se creó una base de datos completamente anónima en {{anonymizedFilePath}}",
"successfully_created_lightly_anonymized_database": "Se creó una base de datos ligeramente anónima en {{anonymizedFilePath}}",
"no_anonymized_database_yet": "Aún no hay base de datos anónima."
"no_anonymized_database_yet": "Aún no hay base de datos anónima.",
"description": "Crear una copia anónima de su base de datos para compartir con los desarrolladores cuando depuren problemas, sin exponer datos personales."
},
"database_integrity_check": {
"title": "Verificación de integridad de la base de datos",
"description": "Esto verificará que la base de datos no esté dañada en el nivel SQLite. Puede que tarde algún tiempo, dependiendo del tamaño de la base de datos.",
"check_button": "Verificar la integridad de la base de datos",
"checking_integrity": "Comprobando la integridad de la base de datos...",
"integrity_check_succeeded": "La verificación de integridad fue exitosa; no se encontraron problemas.",
"integrity_check_failed": "La verificación de integridad falló: {{results}}"
"integrity_check_failed": "La verificación de integridad falló: {{results}}",
"check_integrity_label": "Verificar la integridad de la base de datos",
"check_integrity_description": "Verifcar que la base de datos no está dañada en el nivel SQLite."
},
"sync": {
"title": "Sincronizar",
@@ -1109,7 +1103,10 @@
"filling_entity_changes": "Rellenar filas de cambios de entidad...",
"sync_rows_filled_successfully": "Sincronizar filas completadas correctamente",
"finished-successfully": "La sincronización finalizó exitosamente.",
"failed": "La sincronización falló: {{message}}"
"failed": "La sincronización falló: {{message}}",
"force_full_sync_label": "Forzar sincronización completa",
"force_full_sync_description": "Activa una sincronización completa con el servidor de sincronización, resubiendo todos los cambios.",
"fill_entity_changes_label": "Llenar cambios de entidad"
},
"vacuum_database": {
"title": "Limpiar base de datos",
@@ -1127,10 +1124,7 @@
"note_tree_font": "Fuente del árbol de notas",
"note_detail_font": "Fuente de detalle de nota",
"monospace_font": "Fuente Monospace (código)",
"note_tree_and_detail_font_sizing": "Tenga en cuenta que el tamaño de fuente del árbol y de los detalles es relativo a la configuración del tamaño de fuente principal.",
"not_all_fonts_available": "Es posible que no todas las fuentes enumeradas estén disponibles en su sistema.",
"apply_font_changes": "Para aplicar cambios de fuente, haga clic en",
"reload_frontend": "recargar la interfaz",
"not_all_fonts_available": "Es posible que no todas las fuentes enumeradas estén disponibles en su sistema",
"generic-fonts": "Fuentes genéricas",
"sans-serif-system-fonts": "Fuentes Sans-serif del sistema",
"serif-system-fonts": "Fuentes Serif del sistema",
@@ -1203,18 +1197,20 @@
},
"images": {
"images_section_title": "Imágenes",
"download_images_automatically": "Descargar imágenes automáticamente para usarlas sin conexión.",
"download_images_automatically": "Descargar imágenes automáticamente",
"download_images_description": "El HTML pegado puede contener referencias a imágenes en línea; Trilium encontrará esas referencias y descargará las imágenes para que estén disponibles sin conexión.",
"enable_image_compression": "Habilitar la compresión de imágenes",
"max_image_dimensions": "Ancho/alto máximo de una imagen en píxeles (la imagen cambiará de tamaño si excede esta configuración).",
"max_image_dimensions": "Dimensiones máximas de imagen",
"max_image_dimensions_unit": "píxeles",
"jpeg_quality_description": "Calidad JPEG (10 - peor calidad, 100 - mejor calidad, se recomienda 50 - 85)"
"jpeg_quality_description": "Se recomienda un rango 50-85. Valores más pequeños reducen el tamaño del archivo, valores más altos preservan los detalles.",
"enable_image_compression_description": "Comprimir y ajustar el tamaño de las imágenes cuando son subidas o pegadas.",
"max_image_dimensions_description": "Las imágenes que excedan el límite de tamaño serán ajustadas automáticamente.",
"jpeg_quality": "Calidad JPEG"
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Tiempo de espera para borrar archivos adjuntos",
"attachment_auto_deletion_description": "Los archivos adjuntos se eliminan (y borran) automáticamente si ya no se hace referencia a ellos en su nota después de un tiempo de espera definido.",
"erase_attachments_after": "Borrar archivos adjuntos después de:",
"manual_erasing_description": "También puede activar el borrado manualmente (sin considerar el tiempo de espera definido anteriormente):",
"manual_erasing_description": "Activar el borrado manualmente, ignorando el tiempo de espera definido anteriormente.",
"erase_unused_attachments_now": "Borrar ahora los archivos adjuntos no utilizados en la nota",
"unused_attachments_erased": "Los archivos adjuntos no utilizados se han eliminado."
},
@@ -1224,9 +1220,8 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Tiempo de espera de borrado de notas",
"note_erasure_description": "Las notas eliminadas (y los atributos, las revisiones ...) en principio solo están marcadas como eliminadas y es posible recuperarlas del diálogo de Notas recientes. Después de un período de tiempo, las notas eliminadas son \" borradas\", lo que significa que su contenido ya no es recuperable. Esta configuración le permite configurar la longitud del período entre eliminar y borrar la nota.",
"erase_notes_after": "Borrar notas después de:",
"manual_erasing_description": "También puede activar el borrado manualmente (sin considerar el tiempo de espera definido anteriormente):",
"manual_erasing_description": "Activar el borrado manualmente, ignorando el tiempo de espera definido anteriormente.",
"erase_deleted_notes_now": "Borrar notas eliminadas ahora",
"deleted_notes_erased": "Las notas eliminadas han sido borradas."
},
@@ -1245,7 +1240,7 @@
},
"search_engine": {
"title": "Motor de búsqueda",
"custom_search_engine_info": "El motor de búsqueda personalizado requiere que se establezcan un nombre y una URL. Si alguno de estos no está configurado, DuckDuckGo se utilizará como motor de búsqueda predeterminado.",
"custom_search_engine_info": "Utilizado al buscar la web para el texto seleccionado. Si no está configurado, DuckDuckGo se utilizado.",
"predefined_templates_label": "Plantillas de motor de búsqueda predefinidas",
"bing": "Bing",
"baidu": "Baidu",
@@ -1309,7 +1304,6 @@
"first-week-contains-first-thursday": "Primer semana que contiene al primer jueves del año",
"first-week-has-minimum-days": "Primer semana que contiene un mínimo de días",
"min-days-in-first-week": "Días mínimos en la primer semana",
"first-week-info": "Primer semana que contiene al primer jueves del año está basado en el estándar<a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
"first-week-warning": "Cambiar las opciones de primer semana puede causar duplicados con las Notas Semanales existentes y las Notas Semanales existentes no serán actualizadas respectivamente.",
"formatting-locale": "Fecha y formato de número",
"tuesday": "Martes",
@@ -1332,7 +1326,8 @@
"date-and-time": "Fecha y hora",
"path": "Ruta",
"database_backed_up_to": "Se ha realizado una copia de seguridad de la base de datos en {{backupFilePath}}",
"no_backup_yet": "no hay copia de seguridad todavía"
"no_backup_yet": "no hay copia de seguridad todavía",
"download": "Descargar"
},
"etapi": {
"title": "ETAPI",
@@ -1438,11 +1433,7 @@
"config_title": "Configuración de sincronización",
"server_address": "Dirección de la instancia del servidor",
"timeout": "Tiempo de espera de sincronización (milisegundos)",
"timeout_unit": "milisegundos",
"proxy_label": "Sincronizar servidor proxy (opcional)",
"note": "Nota",
"note_description": "Si deja la configuración del proxy en blanco, se utilizará el proxy del sistema (se aplica únicamente a la compilación de escritorio/electron).",
"special_value_description": "Otro valor especial es <code>noproxy</code> que obliga a ignorar incluso al proxy del sistema y respeta <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"save": "Guardar",
"help": "Ayuda",
"test_title": "Prueba de sincronización",
@@ -1624,7 +1615,7 @@
"note_detail": {
"could_not_find_typewidget": "No se pudo encontrar typeWidget para el tipo '{{type}}'",
"printing": "Impresión en curso...",
"printing_pdf": "Exportando a PDF en curso..",
"printing_pdf": "Preparando vista preliminar de impresión...",
"print_report_collection_content_one": "{{count}} nota en la colección no se puede imprimir porque no son compatibles o está protegida.",
"print_report_collection_content_many": "{{count}} notas en la colección no se pueden imprimir porque no son compatibles o están protegidas.",
"print_report_collection_content_other": "{{count}} notas en la colección no se pueden imprimir porque no son compatibles o están protegidas.",
@@ -1769,7 +1760,7 @@
"title": "Fijo",
"description": "las herramientas de edición aparecen en la pestaña de la cinta \"Formato\")."
},
"multiline-toolbar": "Mostrar la barra de herramientas en múltiples líneas si no cabe."
"multiline-toolbar": "Mostrar la barra de herramientas en múltiples líneas si no cabe"
}
},
"electron_context_menu": {

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "درباره Trilium Notes",
"homepage": "صفحه اصلی:",
"app_version": "نسخه برنامه:",
"db_version": "نسخه پایگاه داده:",
"sync_version": "نسخه منطبق:",
"build_date": "تاریخ ساخت:",
"build_revision": "نسخه بازنگری شده:",
"data_directory": "دایرکتوری داده:"
},
"toast": {

View File

@@ -1,13 +1,6 @@
{
"about": {
"title": "Lisätietoja Trilium Notes:ista",
"homepage": "Kotisivu:",
"app_version": "Sovelluksen versio:",
"db_version": "Tietokannan versio:",
"build_date": "Koontipäivämäärä:",
"data_directory": "Datakansio:",
"sync_version": "Synkronoinnin versio:",
"build_revision": "Sovelluksen versio:"
"data_directory": "Datakansio:"
},
"toast": {
"critical-error": {
@@ -62,12 +55,10 @@
"also_delete_note": "Poista myös muistio"
},
"delete_notes": {
"delete_notes_preview": "Poista muistion esikatselu",
"close": "Sulje",
"notes_to_be_deleted": "Seuraavat muistiot tullaan poistamaan ({{notesCount}})",
"no_note_to_delete": "Muistioita ei poisteta (vain kopiot).",
"cancel": "Peruuta",
"ok": "OK"
"cancel": "Peruuta"
},
"export": {
"export_note_title": "Vie muistio",

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "À propos de Trilium Notes",
"homepage": "Page d'accueil :",
"app_version": "Version de l'application :",
"db_version": "Version de la base de données :",
"sync_version": "Version de la synchronisation :",
"build_date": "Date du build :",
"build_revision": "Version de build :",
"data_directory": "Répertoire des données :"
},
"toast": {
@@ -88,7 +81,6 @@
"also_delete_note": "Supprimer également la note"
},
"delete_notes": {
"delete_notes_preview": "Supprimer la note",
"close": "Fermer",
"delete_all_clones_description": "Supprimer aussi les clones (peut être annulé dans des modifications récentes)",
"erase_notes_description": "La suppression normale (douce) marque uniquement les notes comme supprimées et elles peuvent être restaurées (dans la boîte de dialogue des Modifications récentes) dans un délai donné. Cocher cette option effacera les notes immédiatement et il ne sera pas possible de les restaurer.",
@@ -97,8 +89,9 @@
"no_note_to_delete": "Aucune note ne sera supprimée (uniquement les clones).",
"broken_relations_to_be_deleted": "Les relations suivantes seront rompues et supprimées ({{ relationCount}})",
"cancel": "Annuler",
"ok": "OK",
"deleted_relation_text": "Note {{- note}} (à supprimer) est référencée dans la relation {{- relation}} provenant de {{- source}}."
"title": "Notes supprimées",
"clones_label": "Clone",
"erase_notes_label": "Supprimer définitivement"
},
"export": {
"export_note_title": "Exporter la note",
@@ -270,33 +263,6 @@
"undelete_link": "annuler la suppression",
"confirm_undelete": "Voulez-vous restaurer cette note et ses sous-notes ?"
},
"revisions": {
"note_revisions": "Versions de la note",
"delete_all_revisions": "Supprimer toutes les versions de cette note",
"delete_all_button": "Supprimer toutes les versions",
"help_title": "Aide sur les versions de notes",
"confirm_delete_all": "Voulez-vous supprimer toutes les versions de cette note ?",
"no_revisions": "Aucune version pour cette note pour l'instant...",
"confirm_restore": "Voulez-vous restaurer cette version ? Le titre et le contenu actuels de la note seront écrasés par cette version.",
"confirm_delete": "Voulez-vous supprimer cette version ?",
"revisions_deleted": "Les versions de notes ont été supprimées.",
"revision_restored": "La version de la note a été restaurée.",
"revision_deleted": "La version de la note a été supprimée.",
"snapshot_interval": "Délai d'enregistrement automatique des versions de notes : {{seconds}}s.",
"maximum_revisions": "Nombre maximal de versions : {{number}}.",
"settings": "Paramètres des versions de notes",
"download_button": "Télécharger",
"mime": "MIME : ",
"file_size": "Taille du fichier :",
"preview_not_available": "L'aperçu n'est pas disponible pour ce type de note.",
"restore_button": "Restaurer",
"delete_button": "Supprimer",
"diff_on": "Afficher les différences",
"diff_off": "Afficher le contenu",
"diff_on_hint": "Cliquer pour afficher les différences avec la note d'origine",
"diff_off_hint": "Cliquer pour afficher le contenu de la note",
"diff_not_available": "La comparaison n'est pas disponible."
},
"sort_child_notes": {
"sort_children_by": "Trier les enfants par...",
"sorting_criteria": "Critères de tri",
@@ -1096,7 +1062,6 @@
},
"database_integrity_check": {
"title": "Vérification de l'intégrité de la base de données",
"description": "Vérifiera que la base de données n'est pas corrompue au niveau SQLite. Cela peut prendre un certain temps, en fonction de la taille de la base de données.",
"check_button": "Vérifier l'intégrité de la base de données",
"checking_integrity": "Vérification de l'intégrité de la base de données...",
"integrity_check_succeeded": "Le contrôle d'intégrité a réussi - aucun problème détecté.",
@@ -1128,10 +1093,7 @@
"note_tree_font": "Police de l'arborescence",
"note_detail_font": "Police du contenu des notes",
"monospace_font": "Police Monospace (code)",
"note_tree_and_detail_font_sizing": "Notez que la taille de la police de larborescence et du contenu est relative au paramètre de taille de police principal.",
"not_all_fonts_available": "Toutes les polices répertoriées peuvent ne pas être disponibles sur votre système.",
"apply_font_changes": "Pour appliquer les modifications de police, cliquez sur",
"reload_frontend": "recharger l'interface",
"generic-fonts": "Polices génériques",
"sans-serif-system-fonts": "Polices système sans serif",
"serif-system-fonts": "Polices système Serif",
@@ -1210,8 +1172,7 @@
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Délai d'effacement des pièces jointes",
"attachment_auto_deletion_description": "Les pièces jointes sont automatiquement supprimées (et effacées) si elles ne sont plus référencées par leur note après un certain délai.",
"erase_attachments_after": "Effacer les pièces jointes inutilisées après :",
"erase_attachments_after": "Effacer les pièces jointes inutilisées après :",
"manual_erasing_description": "Vous pouvez également déclencher l'effacement manuellement (sans tenir compte du délai défini ci-dessus) :",
"erase_unused_attachments_now": "Effacez maintenant les pièces jointes inutilisées",
"unused_attachments_erased": "Les pièces jointes inutilisées ont été effacées."
@@ -1222,7 +1183,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Délai d'effacement des notes",
"note_erasure_description": "Les notes supprimées (et les attributs, versions...) sont seulement marquées comme supprimées et il est possible de les récupérer à partir de la boîte de dialogue Notes récentes. Après un certain temps, les notes supprimées sont « effacées », ce qui signifie que leur contenu n'est plus récupérable. Ce paramètre vous permet de configurer la durée entre la suppression et l'effacement de la note.",
"erase_notes_after": "Effacer les notes après :",
"manual_erasing_description": "Vous pouvez également déclencher l'effacement manuellement (sans tenir compte de la durée définie ci-dessus) :",
"erase_deleted_notes_now": "Effacer les notes supprimées maintenant",
@@ -1306,7 +1266,6 @@
"first-week-contains-first-thursday": "La première semaine contient le premier jeudi de l'année",
"first-week-has-minimum-days": "La première semaine a un nombre minimum de jours",
"min-days-in-first-week": "Nombre minimum de jours dans la première semaine",
"first-week-info": "La première semaine contient le premier jeudi de l'année et est basée sur la norme <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> .",
"first-week-warning": "La modification des options de la première semaine peut entraîner des doublons avec les notes de semaine existantes et les notes de semaine existantes ne seront pas mises à jour en conséquence.",
"formatting-locale": "Format de date et de nombre",
"formatting-locale-auto": "En fonction de la langue de l'application"
@@ -1398,16 +1357,12 @@
"server_address": "Adresse de l'instance du serveur",
"timeout": "Délai d'expiration de la synchronisation (millisecondes)",
"proxy_label": "Serveur proxy de synchronisation (facultatif)",
"note": "Note",
"note_description": "Si vous laissez le paramètre de proxy vide, le proxy système sera utilisé (applicable uniquement à la version de bureau/électronique).",
"special_value_description": "Une autre valeur spéciale est <code>noproxy</code> qui oblige à ignorer même le proxy système et respecte <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"save": "Sauvegarder",
"help": "Aide",
"test_title": "Test de synchronisation",
"test_description": "Testera la connexion et la prise de contact avec le serveur de synchronisation. Si le serveur de synchronisation n'est pas initialisé, cela le configurera pour qu'il se synchronise avec le document local.",
"test_button": "Tester la synchronisation",
"handshake_failed": "Échec de la négociation avec le serveur de synchronisation, erreur : {{message}}",
"timeout_unit": "millisecondes"
"handshake_failed": "Échec de la négociation avec le serveur de synchronisation, erreur : {{message}}"
},
"api_log": {
"close": "Fermer"

View File

@@ -31,13 +31,6 @@
"search_notes": "Cuardaigh nótaí"
},
"about": {
"title": "Maidir le Trilium Notes",
"homepage": "Leathanach baile:",
"app_version": "Leagan an aip:",
"db_version": "Leagan DB:",
"sync_version": "Leagan sioncrónaithe:",
"build_date": "Dáta tógála:",
"build_revision": "Athbhreithniú tógála:",
"data_directory": "Eolaire sonraí:"
},
"toast": {
@@ -72,7 +65,9 @@
"link_title_mirrors": "Léiríonn teideal an naisc teideal reatha an nóta",
"link_title_arbitrary": "is féidir teideal an naisc a athrú go treallach",
"link_title": "Teideal an naisc",
"button_add_link": "Cuir nasc leis"
"button_add_link": "Cuir nasc leis",
"anchor": "Ancaire (roghnach)",
"anchor_none": "Dada (nasc chuig nóta)"
},
"branch_prefix": {
"edit_branch_prefix": "Cuir réimír na brainse in eagar",
@@ -119,17 +114,26 @@
"also_delete_note": "Scrios an nóta freisin"
},
"delete_notes": {
"delete_notes_preview": "Réamhamharc ar scriosadh nótaí",
"close": "Dún",
"delete_all_clones_description": "Scrios gach clón freisin (is féidir é seo a chealú in athruithe le déanaí)",
"erase_notes_description": "Ní mharcálann scriosadh gnáth (bog) ach na nótaí mar scriosta agus is féidir iad a dhíscriosadh (sa dialóg athruithe le déanaí) laistigh de thréimhse ama. Scriosfar na nótaí láithreach má sheiceálann tú an rogha seo agus ní bheidh sé indéanta na nótaí a dhíscriosadh.",
"erase_notes_description": "Scrios nótaí láithreach in ionad scriosadh bog. Ní féidir é seo a chealú agus cuirfidh sé iallach ort an feidhmchlár a athlódáil.",
"erase_notes_warning": "Scrios nótaí go buan (ní féidir é seo a chealú), lena n-áirítear na clónanna go léir. Cuirfidh sé seo iallach ar an bhfeidhmchlár athlódáil.",
"notes_to_be_deleted": "Scriosfar na nótaí seo a leanas ({{notesCount}})",
"notes_to_be_deleted": "Nótaí le scriosadh ({{notesCount}})",
"no_note_to_delete": "Ní scriosfar aon nóta (clóin amháin).",
"broken_relations_to_be_deleted": "Brisfear agus scriosfar na caidrimh seo a leanas ({{ relationCount}})",
"broken_relations_to_be_deleted": "Caidrimh bhriste ({{relationCount}})",
"cancel": "Cealaigh",
"ok": "Ceart go leor",
"deleted_relation_text": "Tá tagairt don nóta {{- note}} (le scriosadh) le gaol {{- relation}} a thagann ó {{- source}}."
"title": "Scrios nótaí",
"clones_label": "Clóin",
"delete_clones_description_one": "Scrios {{count}} clón eile freisin. Is féidir é seo a chealú sna hathruithe is déanaí.",
"delete_clones_description_two": "Scrios {{count}} clóin eile freisin. Is féidir é seo a chealú sna hathruithe is déanaí.",
"delete_clones_description_few": "Scrios {{count}} clóin eile freisin. Is féidir é seo a chealú sna hathruithe is déanaí.",
"delete_clones_description_many": "Scrios {{count}} clóin eile freisin. Is féidir é seo a chealú sna hathruithe is déanaí.",
"delete_clones_description_other": "Scrios {{count}} clóin eile freisin. Is féidir é seo a chealú sna hathruithe is déanaí.",
"erase_notes_label": "Scrios go buan",
"table_note_with_relation": "Nóta le gaol",
"table_relation": "Gaol",
"table_points_to": "Pointí chuig (scriosta)",
"delete": "Scrios"
},
"export": {
"export_note_title": "Nóta easpórtála",
@@ -240,7 +244,8 @@
"box_size_small": "beag (~ 10 líne)",
"box_size_medium": "meánach (~ 30 líne)",
"box_size_full": "lán (taispeánann an bosca an téacs iomlán)",
"button_include": "Cuir nóta san áireamh"
"button_include": "Cuir nóta san áireamh",
"box_size_expandable": "inleathnaithe (fillte de réir réamhshocraithe)"
},
"info": {
"modalTitle": "Teachtaireacht eolais",
@@ -301,33 +306,6 @@
"undelete_link": "díscriosadh",
"confirm_undelete": "Ar mhaith leat an nóta seo agus a fho-nótaí a athscriosadh?"
},
"revisions": {
"note_revisions": "Athbhreithnithe Nótaí",
"delete_all_revisions": "Scrios gach athbhreithniú ar an nóta seo",
"delete_all_button": "Scrios gach athbhreithniú",
"help_title": "Cabhair le hathbhreithnithe nótaí",
"confirm_delete_all": "Ar mhaith leat gach athbhreithniú ar an nóta seo a scriosadh?",
"no_revisions": "Gan aon athbhreithnithe don nóta seo go fóill...",
"restore_button": "Athchóirigh",
"diff_on": "Taispeáin an difríocht",
"diff_off": "Taispeáin ábhar",
"diff_on_hint": "Cliceáil chun difríocht foinse an nóta a thaispeáint",
"diff_off_hint": "Cliceáil chun ábhar an nóta a thaispeáint",
"diff_not_available": "Níl an difríocht ar fáil.",
"confirm_restore": "Ar mhaith leat an t-athbhreithniú seo a athbhunú? Scríobhfaidh sé seo teideal agus ábhar reatha an nóta leis an athbhreithniú seo.",
"delete_button": "Delete",
"confirm_delete": "Ar mhaith leat an t-athbhreithniú seo a scriosadh?",
"revisions_deleted": "Scriosadh athbhreithnithe nótaí.",
"revision_restored": "Tá athbhreithniú an nóta athchóirithe.",
"revision_deleted": "Scriosadh athbhreithniú an nóta.",
"snapshot_interval": "Eatramh Léirmheasa ar Nóta: {{seconds}}s.",
"maximum_revisions": "Teorainn maidir le hathbhreithniú nóta: {{number}}.",
"settings": "Socruithe Athbhreithnithe Nóta",
"download_button": "Íoslódáil",
"mime": "MIME: ",
"file_size": "Méid comhaid:",
"preview_not_available": "Níl réamhamharc ar fáil don chineál nóta seo."
},
"sort_child_notes": {
"sort_children_by": "Sórtáil páistí de réir...",
"sorting_criteria": "Critéir sórtála",
@@ -478,7 +456,9 @@
"print_landscape": "Agus é á onnmhairiú go PDF, athraítear treoshuíomh an leathanaigh go tírdhreach seachas portráid.",
"print_page_size": "Agus é á easpórtáil go PDF, athraítear méid an leathanaigh. Luachanna tacaithe: <code>A0</code>, <code>A1</code>, <code>A2</code>, <code>A3</code>, <code>A4</code>, <code>A5</code>, <code>A6</code>, <code>Legal</code>, <code>Letter</code>, <code>Tabloid</code>, <code>Ledger</code>.",
"color_type": "Dath",
"textarea": "Téacs Il-líne"
"textarea": "Téacs Il-líne",
"print_scale": "Agus é á onnmhairiú go PDF, athraítear scála an ábhair rindreáilte. Tá na luachanna idir 0.1 (10%) agus 2 (200%), is é 1 (100%) an réamhshocrú.",
"print_margins": "Agus é á onnmhairiú go PDF, socraítear corrlaigh leathanaigh. Úsáid luachanna <code>réamhshocraithe</code>, <code>gan aon cheann</code>, <code>íosmhéid</code>, nó luachanna saincheaptha mar <code>barr, deas, bun, clé</code> i milliméadair."
},
"attribute_editor": {
"help_text_body1": "Chun lipéad a chur leis, clóscríobh m.sh. <code>#rock</code> nó más mian leat luach a chur leis freisin ansin m.sh. <code>#year = 2020</code>",
@@ -710,7 +690,13 @@
"export_as_image_png": "PNG (rastar)",
"export_as_image_svg": "SVG (veicteoir)",
"note_map": "Léarscáil nótaí",
"view_ocr_text": "Féach ar théacs OCR"
"view_ocr_text": "Féach ar théacs OCR",
"word_wrap": "Timfhill focal",
"word_wrap_auto": "Uathoibríoch",
"word_wrap_auto_description": "Lean an suíomh domhanda",
"word_wrap_on": "Ar",
"word_wrap_off": "As",
"save_named_revision": "Sábháil athbhreithniú ainmnithe..."
},
"onclick_button": {
"no_click_handler": "Níl aon láimhseálaí cliceáil sainithe ag an ngiuirléid cnaipe '{{componentId}}'"
@@ -812,7 +798,10 @@
"board": "Bord",
"presentation": "Cur i Láthair",
"include_archived_notes": "Taispeáin nótaí cartlannaithe",
"hide_child_notes": "Folaigh nótaí leanaí sa chrann"
"hide_child_notes": "Folaigh nótaí leanaí sa chrann",
"open_all_in_tabs": "Oscail gach rud",
"open_all_in_tabs_tooltip": "Oscail na torthaí go léir i gcluaisíní nua",
"open_all_confirm": "Osclóidh sé seo {{count}} nótaí i gcluaisíní nua. Lean ar aghaidh?"
},
"edited_notes": {
"no_edited_notes_found": "Gan aon nótaí eagarthóireachta ar an lá seo go fóill...",
@@ -866,7 +855,8 @@
"collapse": "Laghdaigh go dtí an gnáthmhéid",
"title": "Léarscáil Nótaí",
"fix-nodes": "Deisigh nóid",
"link-distance": "Fad naisc"
"link-distance": "Fad naisc",
"too-many-notes": "Tá {{count}} nótaí sa fho-chrann seo, rud a sháraíonn an teorainn {{max}} is féidir a thaispeáint sa léarscáil nótaí."
},
"note_paths": {
"title": "Cosáin Nótaí",
@@ -1081,15 +1071,17 @@
"title": "Seiceálacha Comhsheasmhachta",
"find_and_fix_button": "Fadhbanna comhsheasmhachta a aimsiú agus a shocrú",
"finding_and_fixing_message": "Fadhbanna comhsheasmhachta a aimsiú agus a shocrú...",
"issues_fixed_message": "Tá aon fhadhb chomhsheasmhachta a d'fhéadfadh a bheith aimsithe socraithe anois."
"issues_fixed_message": "Tá aon fhadhb chomhsheasmhachta a d'fhéadfadh a bheith aimsithe socraithe anois.",
"find_and_fix_label": "Fadhbanna comhsheasmhachta a aimsiú agus a shocrú",
"find_and_fix_description": "Déan scanadh le haghaidh aon fhadhbanna comhsheasmhachta sonraí sa bhunachar sonraí agus déan iad a dheisiú go huathoibríoch."
},
"database_anonymization": {
"title": "Anaithnidiú Bunachar Sonraí",
"full_anonymization": "Anaithnidiú Iomlán",
"full_anonymization_description": "Cruthóidh an gníomh seo cóip nua den bhunachar sonraí agus déanfaidh sé anaithnidiú air (bainfear gach ábhar nótaí agus fágfar struchtúr agus roinnt meiteashonraí neamhíogaire amháin) le go mbeidh sé in ann é a roinnt ar líne chun críocha dífhabhtaithe gan eagla go sceithfidh tú do shonraí pearsanta.",
"full_anonymization": "Anaithnidiú iomlán",
"full_anonymization_description": "Cruthaíonn sé cóip den bhunachar sonraí agus gach ábhar nótaí bainte, rud a fhágann struchtúr agus meiteashonraí neamhíogaire amháin. Sábháilte le roinnt ar líne agus fadhbanna dífhabhtaithe á ndífhabhtú.",
"save_fully_anonymized_database": "Sábháil bunachar sonraí lán-anaithnid",
"light_anonymization": "Anaithnidiú Éadrom",
"light_anonymization_description": "Cruthóidh an gníomh seo cóip nua den bhunachar sonraí agus déanfaidh sé beagán anaithnidithe air — go sonrach ní bhainfear ach ábhar na nótaí go léir, ach fanfaidh teidil agus tréithe. Ina theannta sin, fanfaidh nótaí scripte tosaigh/cúil JS saincheaptha agus giuirléidí saincheaptha. Soláthraíonn sé seo níos mó comhthéacs chun na fadhbanna a dhífhabhtú.",
"light_anonymization": "Anaithnidiú éadrom",
"light_anonymization_description": "Cruthaíonn sé cóip agus ábhar na nótaí bainte de, ach fanann teidil, tréithe, agus scripteanna/giuirléidí saincheaptha ann. Soláthraíonn sé níos mó comhthéacs le haghaidh dífhabhtaithe.",
"choose_anonymization": "Is féidir leat cinneadh a dhéanamh duit féin an mian leat bunachar sonraí atá anaithnid go hiomlán nó beagán gan ainm a sholáthar. Tá fiú bunachar sonraí atá anaithnid go hiomlán an-úsáideach, ach i gcásanna áirithe is féidir le bunachar sonraí atá anaithnid go héadrom an próiseas chun fabhtanna a aithint agus a shocrú a bhrostú.",
"save_lightly_anonymized_database": "Sábháil bunachar sonraí atá anaithnidithe go héadrom",
"existing_anonymized_databases": "Bunachair shonraí gan ainm atá ann cheana féin",
@@ -1098,15 +1090,17 @@
"error_creating_anonymized_database": "Níorbh fhéidir bunachar sonraí gan ainm a chruthú, seiceáil logaí an chúltaca le haghaidh sonraí",
"successfully_created_fully_anonymized_database": "Cruthaíodh bunachar sonraí lán-anaithnid i {{anonymizedFilePath}}",
"successfully_created_lightly_anonymized_database": "Cruthaíodh bunachar sonraí atá beagán anaithnid i {{anonymizedFilePath}}",
"no_anonymized_database_yet": "Gan aon bhunachar sonraí anaithnidithe go fóill."
"no_anonymized_database_yet": "Gan aon bhunachar sonraí anaithnidithe go fóill.",
"description": "Cruthaigh cóip gan ainm de do bhunachar sonraí le roinnt le forbróirí agus fadhbanna á ndífhabhtú, gan sonraí pearsanta a nochtadh."
},
"database_integrity_check": {
"title": "Seiceáil Ionracais Bunachar Sonraí",
"description": "Déanfaidh sé seo seiceáil nach bhfuil an bunachar sonraí truaillithe ar leibhéal SQLite. Dfhéadfadh sé go dtógfadh sé tamall, ag brath ar mhéid an bhunachair shonraí.",
"check_button": "Seiceáil sláine an bhunachair shonraí",
"checking_integrity": "Ag seiceáil sláine an bhunachair shonraí...",
"integrity_check_succeeded": "Déirigh leis an tseiceáil ionracais - níor aimsíodh aon fhadhbanna.",
"integrity_check_failed": "Theip ar an tseiceáil ionracais: {{results}}"
"integrity_check_failed": "Theip ar an tseiceáil ionracais: {{results}}",
"check_integrity_label": "Seiceáil sláine an bhunachair shonraí",
"check_integrity_description": "Fíoraigh nach bhfuil an bunachar sonraí truaillithe ar leibhéal SQLite."
},
"sync": {
"title": "Sioncrónaigh",
@@ -1116,14 +1110,20 @@
"filling_entity_changes": "Líonadh sraitheanna athruithe eintiteas...",
"sync_rows_filled_successfully": "Líontar na sraitheanna sioncrónaithe go rathúil",
"finished-successfully": "Críochnaíodh an sioncrónú go rathúil.",
"failed": "Theip ar an sioncrónú: {{message}}"
"failed": "Theip ar an sioncrónú: {{message}}",
"force_full_sync_label": "Fórsaigh sioncrónú iomlán",
"force_full_sync_description": "Spreag sioncrónú iomlán leis an bhfreastalaí sioncrónaithe, ag ath-uaslódáil na hathruithe go léir.",
"fill_entity_changes_label": "Athruithe eintitis líonta",
"fill_entity_changes_description": "Athchruthaigh taifid athraithe eintitis. Bain úsáid as seo má tá roinnt athruithe ar iarraidh sa sioncrónú."
},
"vacuum_database": {
"title": "Bunachar Sonraí Folúis",
"description": "Déanfaidh sé seo an bunachar sonraí a atógáil agus de ghnáth beidh comhad bunachar sonraí níos lú mar thoradh air. Ní athrófar aon sonraí i ndáiríre.",
"button_text": "Bunachar sonraí folúis",
"vacuuming_database": "Bunachar sonraí folúsghlanadh...",
"database_vacuumed": "Tá an bunachar sonraí folúsghlanaithe"
"database_vacuumed": "Tá an bunachar sonraí folúsghlanaithe",
"vacuum_label": "Bunachar sonraí folúis",
"vacuum_description": "Athchruthaigh an bunachar sonraí chun méid an chomhaid a laghdú. Ní athrófar aon sonraí."
},
"experimental_features": {
"title": "Roghanna Turgnamhacha",
@@ -1136,16 +1136,13 @@
"fonts": {
"theme_defined": "Téama sainmhínithe",
"fonts": "Clónna",
"main_font": "Príomhchló",
"main_font": "Téacs comhéadain",
"font_family": "Teaghlach clónna",
"size": "Méid",
"note_tree_font": "Cló Crann Nótaí",
"note_detail_font": "Cló Sonraí Nóta",
"monospace_font": "Cló Aonspáis (cód)",
"note_tree_and_detail_font_sizing": "Tabhair faoi deara go bhfuil méid an ch crainn agus mionsonraí i gcoibhneas leis an bpríomhshocrú méid cló.",
"not_all_fonts_available": "Bfhéidir nach bhfuil na clónna uile atá liostaithe ar fáil ar do chóras.",
"apply_font_changes": "Chun athruithe cló a chur i bhfeidhm, cliceáil ar",
"reload_frontend": "athlódáil tosaigh",
"note_tree_font": "Téacs crann nótaí",
"note_detail_font": "Téacs an doiciméid",
"monospace_font": "Téacs aonspáis",
"not_all_fonts_available": "Bfhéidir nach bhfuil na clónna uile atá liostaithe ar fáil ar do chóras",
"generic-fonts": "Clónna ginearálta",
"sans-serif-system-fonts": "Clónna córais Sans-serif",
"serif-system-fonts": "Clónna córais Serif",
@@ -1154,7 +1151,12 @@
"serif": "Serif",
"sans-serif": "Sans Serif",
"monospace": "Aonspás",
"system-default": "Réamhshocrú an chórais"
"system-default": "Réamhshocrú an chórais",
"custom_fonts": "Úsáid clónna saincheaptha",
"preview": "Réamhamharc",
"monospace_font_description": "Úsáidte le haghaidh nótaí cóid agus bloic cóid",
"size_relative_to_general": "Tá an méid i gcoibhneas leis an méid cló ginearálta",
"apply_changes": "Athlódáil chun na hathruithe a chur i bhfeidhm"
},
"max_content_width": {
"title": "Leithead an Ábhair",
@@ -1174,28 +1176,31 @@
"edited_notes_message": "Osclófar an cluaisín ribín Nótaí Eagarthóireachta go huathoibríoch ar nótaí lae"
},
"theme": {
"title": "Téama an Iarratais",
"theme_label": "Téama",
"title": "Comhéadan Úsáideora",
"theme_label": "Téama an iarratais",
"override_theme_fonts_label": "Sáraigh clónna téama",
"auto_theme": "Seanchóras (Lean scéim dathanna an chórais)",
"light_theme": "Oidhreacht (Éadrom)",
"dark_theme": "Oidhreacht (Dorcha)",
"triliumnext": "Trilium (Lean scéim dathanna an chórais)",
"triliumnext-light": "Trilium (Éadrom)",
"triliumnext-dark": "Trilium (Dorcha)",
"auto_theme": "Lean scéim dathanna an chórais",
"light_theme": "Solas",
"dark_theme": "Dorcha",
"triliumnext": "Lean scéim dathanna an chórais",
"triliumnext-light": "Solas",
"triliumnext-dark": "Dorcha",
"layout": "Leagan Amach",
"layout-vertical-title": "Ingearach",
"layout-horizontal-title": "Cothrománach",
"layout-vertical-description": "tá barra lainseála ar chlé (réamhshocraithe)",
"layout-horizontal-description": "Tá barra an lainseálaí faoin mbarra cluaisín, tá an barra cluaisín lánleithead anois."
"layout-horizontal-description": "Tá barra an lainseálaí faoin mbarra cluaisín, tá an barra cluaisín lánleithead anois.",
"modern_themes": "Nua-Aimseartha",
"legacy_themes": "Oidhreacht",
"custom_themes": "Saincheaptha"
},
"ui-performance": {
"title": "Feidhmíocht",
"enable-motion": "Cumasaigh aistrithe agus beochana",
"enable-shadows": "Cumasaigh scáthanna",
"enable-backdrop-effects": "Cumasaigh éifeachtaí cúlra do bhiachláir, fuinneoga aníos agus painéil",
"enable-smooth-scroll": "Cumasaigh scrollú réidh",
"app-restart-required": "(tá atosú an fheidhmchláir ag teastáil chun an t-athrú a chur i bhfeidhm)"
"enable-motion": "Aistrithe agus beochana",
"enable-shadows": "Scáthanna",
"enable-backdrop-effects": "Éifeachtaí cúlra do bhiachláir, fuinneoga aníos agus painéil",
"enable-smooth-scroll": "Scrolláil réidh",
"app-restart-required": "Éilíonn atosú an aip"
},
"zoom_factor": {
"title": "Fachtóir Súmáil (leagan deisce amháin)",
@@ -1204,11 +1209,13 @@
"code_auto_read_only_size": {
"title": "Méid Uathoibríoch Léite Amháin",
"description": "Is é méid uathoibríoch nótaí inléite amháin an méid tar éis a dtaispeánfar nótaí i mód inléite amháin (ar chúiseanna feidhmíochta).",
"label": "Méid inléite amháin uathoibríoch (nótaí cóid)",
"label": "Méid inléite amháin uathoibríoch",
"unit": "carachtair"
},
"code-editor-options": {
"title": "Eagarthóir"
"title": "Eagarthóir",
"tab_width": "Leithead an chluaisín",
"tab_width_unit": "spásanna"
},
"code_mime_types": {
"title": "Cineálacha MIME atá ar fáil sa roghchlár anuas",
@@ -1250,61 +1257,70 @@
"batch_ocr_error": "Earráid le linn próiseála baisce: {{error}}"
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Am Teorann Scriosadh Ceangaltáin",
"attachment_auto_deletion_description": "Scriostar ceangaltáin go huathoibríoch (agus scriostar iad) mura ndéantar tagairt dóibh ina nóta a thuilleadh tar éis tréimhse ama socraithe.",
"erase_attachments_after": "Scrios ceangaltáin neamhúsáidte tar éis:",
"manual_erasing_description": "Is féidir leat scriosadh a spreagadh de láimh freisin (gan an t-am críochnaithe a shainmhínítear thuas a chur san áireamh):",
"erase_unused_attachments_now": "Scrios nótaí ceangaltáin neamhúsáidte anois",
"unused_attachments_erased": "Scriosadh ceangaltáin neamhúsáidte."
"attachment_erasure_timeout": "Ceangaltáin Neamhúsáidte",
"erase_attachments_after": "Scrios ceangaltáin neamhúsáidte ina dhiaidh sin",
"manual_erasing_description": "Spreag scriosadh de láimh, ag neamhaird den am scoir thuas.",
"erase_unused_attachments_now": "Scrios ceangaltáin neamhúsáidte anois",
"unused_attachments_erased": "Scriosadh ceangaltáin neamhúsáidte.",
"description": "Meastar nach n-úsáidtear ceangaltáin nach ndéantar tagairt dóibh a thuilleadh in aon nóta agus is féidir iad a scriosadh go huathoibríoch tar éis tréimhse ama.",
"erase_attachments_after_description": "Am sula scriostar ceangaltáin neamhúsáidte go buan."
},
"network_connections": {
"network_connections_title": "Naisc Líonra",
"check_for_updates": "Seiceáil le haghaidh nuashonruithe go huathoibríoch"
"network_connections_title": "Líonra",
"check_for_updates": "Seiceáil le haghaidh nuashonruithe go huathoibríoch",
"check_for_updates_description": "Seiceálann sé le haghaidh leaganacha nua ar GitHub agus taispeánann sé fógra sa roghchlár domhanda nuair a bhíonn sé ar fáil."
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Am Scriosadh Nótaí",
"note_erasure_description": "Ní dhéantar nótaí scriosta (agus tréithe, athbhreithnithe...) a mharcáil ach mar scriosta ar dtús agus is féidir iad a aisghabháil ón dialóg Nótaí Le Déanaí. Tar éis tamaill, déantar nótaí scriosta a \"scriosadh\" rud a chiallaíonn nach féidir a n-ábhar a aisghabháil a thuilleadh. Ligeann an socrú seo duit fad na tréimhse idir an nóta a scriosadh agus a scriosadh a chumrú.",
"erase_notes_after": "Scrios nótaí tar éis:",
"manual_erasing_description": "Is féidir leat scriosadh a spreagadh de láimh freisin (gan an t-am críochnaithe a shainmhínítear thuas a chur san áireamh):",
"note_erasure_timeout_title": "Nótaí Scriosta",
"erase_notes_after": "Scrios nótaí ina dhiaidh",
"manual_erasing_description": "Spreag scriosadh de láimh, ag neamhaird den am scoir thuas.",
"erase_deleted_notes_now": "Scrios nótaí scriosta anois",
"deleted_notes_erased": "Tá nótaí scriosta scriosta."
"deleted_notes_erased": "Tá nótaí scriosta scriosta.",
"description": "Ní dhéantar nótaí scriosta a mharcáil ach mar scriosta ar dtús agus is féidir iad a aisghabháil ó Nótaí Le Déanaí. Tar éis tamaill, scriostar go buan iad.",
"erase_notes_after_description": "An t-am sula scriostar nótaí scriosta go buan."
},
"revisions_snapshot_interval": {
"note_revisions_snapshot_interval_title": "Eatramh Léirmheasa ar Nóta",
"note_revisions_snapshot_description": "Is é an t-eatramh pictiúr athbhreithnithe nóta an t-am ina dhiaidh a chruthófar athbhreithniú nóta nua don nóta. Féach <doc>vicí</doc> le haghaidh tuilleadh eolais.",
"snapshot_time_interval_label": "Eatramh ama pictiúr athbhreithnithe nóta:"
"snapshot_time_interval_label": "Eatramh pictiúr",
"note_revisions_snapshot_description_short": "An t-am a gcruthófar athbhreithniú nóta nua ina dhiaidh."
},
"revisions_snapshot_limit": {
"note_revisions_snapshot_limit_title": "Teorainn ar Ghrianghraf Athbhreithnithe Nóta",
"note_revisions_snapshot_limit_description": "Tagraíonn an teorainn ar líon na n-athbhreithnithe nótaí don líon uasta athbhreithnithe is féidir a shábháil do gach nóta. Ciallaíonn -1 gan aon teorainn, ciallaíonn 0 scriosadh na hathbhreithnithe go léir. Is féidir leat an líon uasta athbhreithnithe a shocrú do nóta aonair tríd an lipéad #versioningLimit.",
"snapshot_number_limit_label": "Teorainn líon na n-íomhánna athbhreithnithe nóta:",
"snapshot_number_limit_label": "Uasmhéid athbhreithnithe",
"snapshot_number_limit_unit": "léargais",
"erase_excess_revision_snapshots": "Scrios na léargais athbhreithnithe breise anois",
"erase_excess_revision_snapshots_prompt": "Scriosadh na léargais bhreise athbhreithnithe."
"erase_excess_revision_snapshots_prompt": "Scriosadh na léargais bhreise athbhreithnithe.",
"note_revisions_snapshot_limit_description_short": "Uasmhéid athbhreithnithe in aghaidh an nóta. Úsáid -1 le haghaidh neamhtheoranta, 0 le díchumasú.",
"erase_excess_revision_snapshots_description": "Scrios athbhreithnithe a sháraíonn an teorainn do na nótaí uile."
},
"search_engine": {
"title": "Inneall Cuardaigh",
"custom_search_engine_info": "Éilíonn inneall cuardaigh saincheaptha go socrófar ainm agus URL araon. Mura socraítear ceachtar acu seo, úsáidfear DuckDuckGo mar an t-inneall cuardaigh réamhshocraithe.",
"predefined_templates_label": "Teimpléid inneall cuardaigh réamhshainithe",
"custom_search_engine_info": "Úsáidtear é seo agus téacs roghnaithe á chuardach ar an ngréasán. Mura bhfuil sé cumraithe, úsáidfear DuckDuckGo.",
"predefined_templates_label": "Réamhshocruithe",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo",
"google": "Google",
"custom_name_label": "Ainm innill chuardaigh saincheaptha",
"custom_name_placeholder": "Saincheap ainm an innill chuardaigh",
"custom_url_label": "Ba chóir go mbeadh {keyword} san áireamh mar áitchoinneálaí don téarma cuardaigh i URL inneall cuardaigh saincheaptha.",
"custom_url_placeholder": "Saincheap URL an innill chuardaigh",
"save_button": "Sábháil"
"custom_name_label": "Ainm",
"custom_name_placeholder": "Ainm an innill chuardaigh",
"custom_url_label": "URL",
"custom_url_placeholder": "URL inneall cuardaigh",
"save_button": "Sábháil",
"custom_url_description": "Úsáid {keyword} mar áitchoinneálaí don téarma cuardaigh."
},
"tray": {
"title": "Tráidire an Chórais",
"enable_tray": "Cumasaigh an tráidire (ní mór Trilium a atosú le go dtiocfaidh an t-athrú seo i bhfeidhm)"
"enable_tray": "Deilbhín tráidire",
"enable_tray_description": "Caithfear Trilium a atosú chun go dtiocfaidh an t-athrú seo i bhfeidhm."
},
"heading_style": {
"title": "Stíl Ceannteidil",
"title": "Stíl ceannteidil",
"plain": "Simplí",
"underline": "Folínigh",
"markdown": "Stíl marcála síos"
"markdown": "Stíl marcála síos",
"description": "Stíl amhairc do cheannteidil i nótaí téacs."
},
"highlights_list": {
"title": "Liosta Buaicphointí",
@@ -1328,14 +1344,16 @@
"text_auto_read_only_size": {
"title": "Méid Uathoibríoch Léite Amháin",
"description": "Is é méid uathoibríoch nótaí inléite amháin an méid tar éis a dtaispeánfar nótaí i mód inléite amháin (ar chúiseanna feidhmíochta).",
"label": "Méid inléite amháin uathoibríoch (nótaí téacs)",
"label": "Méid inléite amháin uathoibríoch",
"unit": "carachtair"
},
"custom_date_time_format": {
"title": "Formáid Dáta/Am Saincheaptha",
"title": "Formáid dáta/ama",
"description": "Saincheap formáid an dáta agus an ama a chuirtear isteach trí <shortcut /> nó an barra uirlisí. Féach ar <doc>doiciméid Day.js</doc> le haghaidh na gcomharthaí formáide atá ar fáil.",
"format_string": "Formáid teaghrán:",
"formatted_time": "Dáta/am formáidithe:"
"format_string": "Formáid teaghrán",
"formatted_time": "Dáta/am formáidithe",
"description_short": "Saincheap formáid an dáta agus an ama a chuirtear isteach tríd an mbarra uirlisí.",
"preview": "Réamhamharc: {{preview}}"
},
"i18n": {
"title": "Logánú",
@@ -1350,20 +1368,19 @@
"sunday": "Dé Domhnaigh",
"first-week-of-the-year": "An chéad seachtain den bhliain",
"first-week-contains-first-day": "Tá an chéad lá den bhliain sa chéad seachtain",
"first-week-contains-first-thursday": "Tá an chéad Déardaoin den bhliain sa chéad seachtain",
"first-week-contains-first-thursday": "Tá an chéad Déardaoin sa chéad seachtain (ISO 8601)",
"first-week-has-minimum-days": "Tá an chéad seachtain ag an íosmhéid laethanta",
"min-days-in-first-week": "Íosmhéid laethanta sa chéad seachtain",
"first-week-info": "Tá an chéad seachtain ina bhfuil an chéad Déardaoin den bhliain bunaithe ar chaighdeán <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
"first-week-warning": "Dfhéadfadh sé go mbeadh dúblach le Nótaí Seachtaine atá ann cheana féin mar thoradh ar athrú roghanna na chéad seachtaine agus ní dhéanfar na Nótaí Seachtaine atá ann cheana a nuashonrú dá réir.",
"first-week-warning": "Dfhéadfadh sé go mbeadh dúblaigh le Nótaí Seachtaine atá ann cheana féin mar thoradh ar athrú seo.",
"formatting-locale": "Formáid dáta agus uimhreach",
"formatting-locale-auto": "Bunaithe ar theanga an fheidhmchláir"
},
"backup": {
"automatic_backup": "Cúltaca uathoibríoch",
"automatic_backup_description": "Is féidir le Trilium cúltaca den bhunachar sonraí a dhéanamh go huathoibríoch:",
"enable_daily_backup": "Cumasaigh cúltaca laethúil",
"enable_weekly_backup": "Cumasaigh cúltaca seachtainiúil",
"enable_monthly_backup": "Cumasaigh cúltaca míosúil",
"enable_daily_backup": "Cúltaca laethúil",
"enable_weekly_backup": "Cúltaca seachtainiúil",
"enable_monthly_backup": "Cúltaca míosúil",
"backup_recommendation": "Moltar an cúltaca a choinneáil casta air, ach is féidir leis seo moill a chur ar thosú feidhmchlár le bunachair shonraí móra agus/nó gléasanna stórála mall.",
"backup_now": "Cúltaca anois",
"backup_database_now": "Cúltaca bunachar sonraí anois",
@@ -1371,7 +1388,9 @@
"date-and-time": "Dáta & am",
"path": "Cosán",
"database_backed_up_to": "Tá cúltaca déanta den bhunachar sonraí chuig {{backupFilePath}}",
"no_backup_yet": "gan aon chúltaca fós"
"no_backup_yet": "gan aon chúltaca fós",
"download": "Íoslódáil",
"title": "Cúltaca"
},
"etapi": {
"title": "ETAPI",
@@ -1406,18 +1425,22 @@
"new_password": "Pasfhocal nua",
"new_password_confirmation": "Deimhniú pasfhocail nua",
"change_password": "Athraigh an focal faire",
"protected_session_timeout": "Am Teorann Seisiúin Chosanta",
"protected_session_timeout_description": "Is tréimhse ama í an t-am scoir seisiúin chosanta a scriostar an seisiún cosanta ó chuimhne an bhrabhsálaí ina dhiaidh. Déantar é seo a thomhas ón idirghníomhaíocht dheireanach le nótaí cosanta. Féach",
"protected_session_timeout": "Seisiún faoi Chosaint",
"protected_session_timeout_description": "Am neamhghníomhaíochta sula nglanfar an seisiún ó chuimhne an bhrabhsálaí. Féach",
"wiki": "vicí",
"for_more_info": "le haghaidh tuilleadh eolais.",
"protected_session_timeout_label": "Am scoir seisiúin faoi chosaint:",
"protected_session_timeout_label": "Dún seisiún go huathoibríoch ina dhiaidh sin",
"reset_confirmation": "Trí an focal faire a athshocrú caillfidh tú rochtain go deo ar do nótaí cosanta go léir atá ann cheana féin. An bhfuil tú cinnte gur mhaith leat an focal faire a athshocrú?",
"reset_success_message": "Athshocraíodh an focal faire. Socraigh focal faire nua le do thoil",
"change_password_heading": "Athraigh Pasfhocal",
"set_password_heading": "Socraigh Pasfhocal",
"set_password": "Socraigh Pasfhocal",
"password_mismatch": "Ní hionann pasfhocail nua.",
"password_changed_success": "Athraíodh an focal faire. Athlódálfar Trilium tar éis duit brúigh OK."
"password_changed_success": "Athraíodh an focal faire. Athlódálfar Trilium tar éis duit brúigh OK.",
"change_password_description": "Nuashonraigh do phasfhocal reatha",
"reset_password": "Athshocraigh an focal faire",
"reset_password_description": "Caill rochtain ar nótaí faoi chosaint go buan",
"cancel": "Cealaigh"
},
"multi_factor_authentication": {
"title": "Fíordheimhniú Ilfhachtóireach",
@@ -1480,20 +1503,19 @@
"related_description": "Cumraigh teangacha seiceála litrithe agus foclóir saincheaptha."
},
"sync_2": {
"config_title": "Cumraíocht Sioncrónaithe",
"server_address": "Seoladh sampla an fhreastalaí",
"timeout": "Am scoir sioncrónaithe",
"timeout_unit": "milleasoicindí",
"proxy_label": "Sioncrónaigh freastalaí seachfhreastalaí (roghnach)",
"note": "Nóta",
"note_description": "Má fhágann tú an socrú seachfhreastalaí bán, úsáidfear seachfhreastalaí an chórais (baineann sé le tógáil deisce/leictreon amháin).",
"special_value_description": "Luach speisialta eile is ea <code>noproxy</code> a chuireann iallach neamhaird a dhéanamh fiú ar an seachfhreastalaí córais agus a thugann meas ar <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"config_title": "Freastalaí Sioncrónaithe",
"server_address": "Seoladh an fhreastalaí",
"timeout": "Am críochnaithe nasc",
"proxy_label": "Freastalaí seachfhreastalaí",
"save": "Sábháil",
"help": "Cabhair",
"test_title": "Tástáil Sioncrónaithe",
"test_description": "Déanfaidh sé seo tástáil ar an nasc agus ar an gcroitheadh láimhe leis an bhfreastalaí sioncrónaithe. Mura bhfuil an freastalaí sioncrónaithe tosaithe, socróidh sé seo é chun sioncrónú leis an doiciméad áitiúil.",
"test_title": "Tástáil Ceangal",
"test_description": "Déan tástáil ar an nasc leis an bhfreastalaí sioncrónaithe. Mura ndéantar é a thosú, socróidh sé seo sioncrónú.",
"test_button": "Tástáil sioncrónaithe",
"handshake_failed": "Theip ar chroitheadh láimhe an fhreastalaí sioncrónaithe, earráid: {{message}}"
"handshake_failed": "Theip ar chroitheadh láimhe an fhreastalaí sioncrónaithe, earráid: {{message}}",
"timeout_description": "Am fanacht sula dtugann tú suas ar nasc mall.",
"server_address_description": "URL an fhreastalaí Trilium le sioncrónú leis.",
"proxy_description": "Fág bán chun seachfhreastalaí córais a úsáid (deasc amháin). Bain úsáid as \"noproxy\" chun na seachfhreastalaithe go léir a sheachaint."
},
"api_log": {
"close": "Dún"
@@ -1596,7 +1618,8 @@
"new-feature": "Nua",
"collections": "Bailiúcháin",
"spreadsheet": "Scarbhileog",
"llm-chat": "Comhrá AI"
"llm-chat": "Comhrá AI",
"markdown": "Markdown"
},
"protect_note": {
"toggle-on": "Cosain an nóta",
@@ -1679,7 +1702,7 @@
"note_detail": {
"could_not_find_typewidget": "Níorbh fhéidir typeWidget a aimsiú don chineál '{{type}}'",
"printing": "Priontáil ar siúl...",
"printing_pdf": "Ag easpórtáil go PDF ar siúl...",
"printing_pdf": "Réamhamharc priontála á ullmhú...",
"print_report_title": "Tuarascáil a phriontáil",
"print_report_collection_content_one": "Níorbh fhéidir nóta {{count}} sa bhailiúchán a phriontáil mar nach dtacaítear leo nó mar go bhfuil siad faoi chosaint.",
"print_report_collection_content_two": "Níorbh fhéidir {{count}} nótaí sa bhailiúchán a phriontáil mar nach dtacaítear leo nó mar go bhfuil siad faoi chosaint.",
@@ -1761,7 +1784,9 @@
"entrypoints": {
"note-revision-created": "Cruthaíodh athbhreithniú nóta.",
"note-executed": "Nóta curtha i gcrích.",
"sql-error": "Tharla earráid agus fiosrúchán SQL á fhorghníomhú: {{message}}"
"sql-error": "Tharla earráid agus fiosrúchán SQL á fhorghníomhú: {{message}}",
"save-named-revision-title": "Sábháil athbhreithniú ainmnithe",
"save-named-revision-message": "Cuir isteach ainm don athbhreithniú seo (fág folamh mura bhfuil ainm ar bith ann):"
},
"branches": {
"cannot-move-notes-here": "Ní féidir nótaí a bhogadh anseo.",
@@ -1807,7 +1832,10 @@
"theme_none": "Gan aon aibhsiú comhréire",
"theme_group_light": "Téamaí éadroma",
"theme_group_dark": "Téamaí dorcha",
"copy_title": "Cóipeáil chuig an ghearrthaisce"
"copy_title": "Cóipeáil chuig an ghearrthaisce",
"click_to_copy": "Cliceáil chun cóipeáil",
"tab_width": "Leithead an chluaisín",
"tab_width_unit": "spásanna"
},
"classic_editor_toolbar": {
"title": "Formáidiú"
@@ -1826,7 +1854,8 @@
"title": "Seasta",
"description": "Feictear uirlisí eagarthóireachta sa chluaisín ribín \"Formáidiú\"."
},
"multiline-toolbar": "Taispeáin an barra uirlisí ar illínte mura n-oireann sé."
"multiline-toolbar": "Taispeáin an barra uirlisí ar illínte mura n-oireann sé",
"toolbar_style": "Stíl an bharra uirlisí"
}
},
"electron_context_menu": {
@@ -1893,7 +1922,7 @@
"days": "Laethanta"
},
"share": {
"title": "Socruithe Comhroinnte",
"title": "Comhroinn",
"redirect_bare_domain": "Atreoraigh fearann lom chuig an leathanach Comhroinnte",
"redirect_bare_domain_description": "Atreoraigh úsáideoirí gan ainm chuig an leathanach Comhroinnte in ionad Logáil Isteach a thaispeáint",
"show_login_link": "Taispeáin nasc Logála Isteach sa téama Comhroinnte",
@@ -1957,12 +1986,12 @@
},
"editorfeatures": {
"title": "Gnéithe",
"emoji_completion_enabled": "Cumasaigh uath-chomhlánú Emoji",
"emoji_completion_description": "Más cumasaithe é, is féidir emojis a chur isteach i dtéacs go héasca trí `:` a chlóscríobh, agus ainm emoji ina dhiaidh sin.",
"note_completion_enabled": "Cumasaigh uath-chríochnú nótaí",
"note_completion_description": "Más cumasaithe é, is féidir naisc chuig nótaí a chruthú trí `@` a chlóscríobh agus teideal an nóta ina dhiaidh sin.",
"slash_commands_enabled": "Cumasaigh orduithe slaise",
"slash_commands_description": "Más cumasaithe é, is féidir orduithe eagarthóireachta amhail briseadh líne nó ceannteidil a chur isteach a athrú trí `/` a chlóscríobh."
"emoji_completion_enabled": "Uath-chomhlánú emoji",
"emoji_completion_description": "Uath-líonadh emoji Is féidir emojis a chur isteach i dtéacs go héasca trí `:` a chlóscríobh, agus ainm emoji ina dhiaidh sin.",
"note_completion_enabled": "Uath-chomhlánú nótaí",
"note_completion_description": "Is féidir naisc chuig nótaí a chruthú trí `@` a chlóscríobh agus teideal an nóta ina dhiaidh sin.",
"slash_commands_enabled": "Orduithe slaise",
"slash_commands_description": "Is féidir orduithe eagarthóireachta amhail briseadh líne nó ceannteidil a chur isteach a athrú trí `/` a chlóscríobh."
},
"table_view": {
"new-row": "Sraith nua",
@@ -2066,7 +2095,9 @@
"related_code_notes": "Scéim dathanna le haghaidh nótaí cóid",
"ui": "Comhéadan úsáideora",
"ui_old_layout": "Leagan amach sean",
"ui_new_layout": "Leagan amach nua"
"ui_new_layout": "Leagan amach nua",
"ui_layout_style": "Stíl leagan amach",
"ui_layout_orientation": "Treoshuíomh an bharra lainseálaí"
},
"units": {
"percentage": "%"
@@ -2165,7 +2196,19 @@
"note_paths_many": "{{count}} cosáin",
"note_paths_other": "{{count}} cosáin",
"note_paths_title": "Cosáin nótaí",
"code_note_switcher": "Athraigh mód teanga"
"code_note_switcher": "Athraigh mód teanga",
"tab_width": "Leithead an Chluaisín: {{width}}",
"tab_width_title": "Athraigh leithead an chluaisín",
"tab_width_spaces": "{{count}} spásanna",
"tab_width_spaces_short": "Spásanna: {{width}}",
"tab_width_tabs": "Cluaisíní: {{width}}",
"tab_width_use_default": "Úsáid an réamhshocrú ({{width}})",
"tab_width_use_default_style": "Úsáid réamhshocraithe ({{style}})",
"tab_width_display_header": "Leithead taispeána",
"tab_width_reindent_header": "Ath-eangaigh ábhar go",
"tab_width_style_header": "Líon isteach ag baint úsáide as",
"tab_width_style_spaces": "Spásanna",
"tab_width_style_tabs": "Cluaisíní"
},
"attributes_panel": {
"title": "Tréithe Nóta"
@@ -2332,7 +2375,8 @@
"note_context_disabled": "Cliceáil chun an nóta reatha a chur san áireamh i gcomhthéacs",
"no_provider_message": "Níl aon soláthraí AI cumraithe. Cuir ceann leis chun comhrá a thosú.",
"add_provider": "Cuir Soláthraí AI leis",
"sources_summary": "{{count}} foinsí ó {{sites}} suíomhanna"
"sources_summary": "{{count}} foinsí ó {{sites}} suíomhanna",
"stop": "Stop"
},
"sidebar_chat": {
"title": "Comhrá AI",
@@ -2396,7 +2440,11 @@
"web_search": "Cuardach gréasáin",
"note_in_parent": "<Note/> i <Parent/>",
"get_attachment": "Faigh ceangaltán",
"get_attachment_content": "Léigh ábhar an cheangail"
"get_attachment_content": "Léigh ábhar an cheangail",
"rename_note": "Athainmnigh an nóta",
"delete_note": "Scrios nóta",
"move_note": "Bog nóta",
"clone_note": "Clónáil nóta"
}
},
"ocr": {
@@ -2414,5 +2462,126 @@
"processing_complete": "Próiseáil OCR críochnaithe.",
"text_filtered_low_confidence": "Bhraith OCR téacs le muinín {{confidence}}%, ach caitheadh leis é mar is é {{threshold}}% an tairseach íosta atá agat.",
"open_media_settings": "Oscail Socruithe"
},
"database": {
"title": "Bunachar Sonraí"
},
"search": {
"title": "Cuardaigh",
"fuzzy_matching_label": "Caoinfhulaingt clóscríofa sa chuardach",
"fuzzy_matching_description": "Bíonn tionchar aige ar chuardach tapa agus ar chuardach iomlán. Faightear focail chomhchosúla nuair nach leor na meaitseáil chruinne.",
"autocomplete_fuzzy_label": "Caoinfhulaingt clóscríofa in uathchríochnú",
"autocomplete_fuzzy_description": "Bíonn tionchar aige ar léim-go-nóta agus ar roghnóirí nótaí. Níos moille ach glactar le clóscríobh."
},
"text_editor": {
"title": "Eagarthóir"
},
"link": {
"failed_to_open": "Theip ar oscailt an nasc '{{- href}}': {{- message}}"
},
"print_preview": {
"title": "Réamhamharc priontála",
"close": "Dún",
"save": "Sábháil mar PDF",
"print": "Priontáil",
"export_pdf": "Easpórtáil mar PDF",
"system_print": "Priontáil ag baint úsáide as dialóg an chórais",
"destination": "Ceann Scríbe",
"destination_pdf": "Sábháil mar PDF",
"destination_printers": "Printéirí",
"destination_default": "Réamhshocrú",
"orientation": "Treoshuíomh",
"portrait": "Portráid",
"landscape": "Tírdhreach",
"page_size": "Méid leathanaigh",
"scale": "Scála",
"margins": "Imill",
"render_error": "Ní féidir PDF a rindreáil leis na socruithe reatha. Seiceáil na corrlaigh agus an scála le do thoil.",
"margins_default": "Réamhshocrú",
"margins_none": "Dada",
"margins_minimum": "Íosmhéid",
"margins_custom": "Saincheaptha",
"margin_top": "Barr",
"margin_right": "Ar dheis",
"margin_bottom": "Bun",
"margin_left": "Ar chlé",
"page_ranges": "Leathanaigh",
"page_ranges_hint": "Fág folamh chun na leathanaigh go léir a phriontáil.",
"page_ranges_invalid": "Formáid neamhbhailí. Úsáid m.sh. 1-5, 8, 11-13.",
"page_ranges_placeholder": "m.sh. 1-5, 8, 11-13"
},
"revisions": {
"note_revisions": "Athbhreithnithe Nótaí",
"delete_all_revisions": "Scrios gach athbhreithniú ar an nóta seo",
"delete_all_button": "Scrios gach athbhreithniú",
"help_title": "Cabhair le hathbhreithnithe nótaí",
"confirm_delete_all": "Ar mhaith leat gach athbhreithniú ar an nóta seo a scriosadh?",
"no_revisions": "Gan aon athbhreithnithe don nóta seo go fóill...",
"restore_button": "Athchóirigh",
"highlight_changes": "Aibhsigh athruithe",
"diff_on": "Taispeáin an difríocht",
"diff_off": "Taispeáin ábhar",
"diff_on_hint": "Cliceáil chun difríocht foinse an nóta a thaispeáint",
"diff_off_hint": "Cliceáil chun ábhar an nóta a thaispeáint",
"diff_not_available": "Níl an difríocht ar fáil.",
"confirm_restore": "Ar mhaith leat an t-athbhreithniú seo a athbhunú? Scríobhfaidh sé seo teideal agus ábhar reatha an nóta leis an athbhreithniú seo.",
"delete_button": "Scrios",
"confirm_delete": "Ar mhaith leat an t-athbhreithniú seo a scriosadh?",
"revisions_deleted": "Scriosadh athbhreithnithe nótaí.",
"revision_restored": "Tá athbhreithniú an nóta athchóirithe.",
"revision_deleted": "Scriosadh athbhreithniú an nóta.",
"snapshot_interval": "Eatramh Léirmheasa ar Nóta: {{seconds}}s.",
"maximum_revisions": "Teorainn maidir le hathbhreithniú nóta: {{number}}.",
"save_revision_now": "Sábháil athbhreithniú anois",
"save_named_revision": "Sábháil athbhreithniú ainmnithe...",
"snapshot_header": "Léargas athbhreithnithe nóta",
"snapshot_interval_value": "Eatramh: {{seconds}}s",
"snapshot_limit_value": "Teorainn: {{number}}",
"settings": "Socruithe Athbhreithnithe Nóta",
"menu_tooltip": "Roghanna athbhreithnithe",
"download_button": "Íoslódáil",
"mime": "MIME: ",
"file_size": "Méid comhaid:",
"preview_not_available": "Níl réamhamharc ar fáil don chineál nóta seo.",
"save_revision": "Sábháil athbhreithniú",
"save_revision_tooltip": "Sábháil pictiúr den nóta reatha de láimh",
"description_placeholder": "Ainmnigh an t-athbhreithniú seo",
"revision_saved": "Tá athbhreithniú an nóta sábháilte.",
"edit_description": "Cuir ainm in eagar",
"description_updated": "Tá ainm an athbhreithnithe nuashonraithe.",
"source_auto": "Uath-shábháil",
"source_manual": "Sábháil de láimh",
"source_etapi": "ETAPI",
"source_llm": "LLM",
"source_restore": "Athchóirigh",
"source_unknown": "Roghbhlúire",
"date_today": "Inniu",
"date_yesterday": "Inné",
"date_this_week": "An tseachtain seo",
"date_this_month": "An mhí seo",
"source_description_auto": "Sábháilte go huathoibríoch ag an gcóras ag eatraimh rialta",
"source_description_manual": "Sábháilte de láimh ag an úsáideoir",
"source_description_etapi": "Cruthaithe tríd an API Seachtrach Trilium",
"source_description_llm": "Cruthaithe ag an gcúntóir AI",
"source_description_restore": "Sábháilte roimh athchóiriú an athbhreithnithe roimhe seo",
"source_description_unknown": "Foinse gan fáil"
},
"auto_link_attribute_list": {
"title": "Tréithe an Chórais"
},
"revisions_snapshot": {
"title": "Athbhreithnithe Nótaí"
},
"launcher_button_context_menu": {
"remove_from_launch_bar": "Bain den bharra lainseála"
},
"display_mode": {
"source": "Radharc foinse",
"split": "Radharc scoilte",
"preview": "Réamhamharc"
},
"common": {
"save": "Sábháil",
"cancel": "Cealaigh"
}
}

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "ट्रिलियम नोट्स के बारें में",
"build_date": "निर्माण की तारीख:",
"app_version": "ऐप वर्ज़न:",
"db_version": "DB वर्ज़न:",
"build_revision": "बिल्ड रिविज़न:",
"homepage": "मुखपृष्ठ:",
"sync_version": "सिंक वर्शन:",
"data_directory": "डेटा डायरेक्टरी:"
},
"toast": {
@@ -94,7 +87,6 @@
"if_you_dont_check": "अगर आप इसे चेक नहीं करते हैं, तो नोट केवल रिलेशन मैप से हटाया जाएगा।"
},
"delete_notes": {
"delete_notes_preview": "नोट्स प्रिव्यू डिलीट करें",
"close": "बंद करें",
"delete_all_clones_description": "सभी क्लोन भी डिलीट करें (हाल के बदलावों में वापस ला सकते हैं)",
"erase_notes_description": "सामान्य (सॉफ्ट) डिलीट करने पर नोट केवल 'डिलीटेड' मार्क होते हैं और उन्हें एक निश्चित समय के भीतर (हाल के बदलावों वाले डायलॉग में) वापस लाया जा सकता है। इस विकल्प को चुनने पर नोट तुरंत पूरी तरह मिटा दिए जाएंगे और उन्हें वापस लाना संभव नहीं होगा।",
@@ -102,9 +94,7 @@
"notes_to_be_deleted": "निम्नलिखित नोट डिलीट कर दिए जाएंगे ({{notesCount}})",
"no_note_to_delete": "कोई भी नोट डिलीट नहीं होगा (केवल क्लोन हटाए जाएंगे)।",
"broken_relations_to_be_deleted": "निम्नलिखित रिलेशन टूट जाएंगे और डिलीट हो जाएंगे ({{relationCount}})",
"cancel": "रद्द करें",
"ok": "ठीक है",
"deleted_relation_text": "नोट {{- note}} (जिसे डिलीट किया जाना है) का संदर्भ {{- source}} से शुरू होने वाले रिलेशन {{- relation}} में दिया गया है।"
"cancel": "रद्द करें"
},
"branch_prefix": {
"edit_branch_prefix": "ब्रांच प्रीफ़िक्स एडिट करें",
@@ -286,33 +276,6 @@
"undelete_link": "वापस लाएं",
"confirm_undelete": "क्या आप इस नोट और इसके सब-नोट्स को वापस लाना चाहते हैं?"
},
"revisions": {
"note_revisions": "नोट रिविज़न",
"delete_all_revisions": "इस नोट के सभी रिविज़न डिलीट करें",
"delete_all_button": "सभी रिविज़न डिलीट करें",
"help_title": "नोट रिविज़न पर मदद",
"confirm_delete_all": "क्या आप इस नोट के सभी रिविज़न डिलीट करना चाहते हैं?",
"no_revisions": "इस नोट के लिए अभी तक कोई रिविज़न नहीं है..।",
"restore_button": "रिस्टोर करें",
"diff_on": "Diff दिखाएं",
"diff_off": "कंटेंट दिखाएं",
"diff_on_hint": "नोट सोर्स का अंतर (diff) देखने के लिए क्लिक करें",
"diff_off_hint": "नोट कंटेंट देखने के लिए क्लिक करें",
"diff_not_available": "Diff उपलब्ध नहीं है।",
"confirm_restore": "क्या आप इस रिविज़न को रिस्टोर करना चाहते हैं? इससे नोट का मौजूदा टाइटल और कंटेंट इस रिविज़न से बदल जाएगा।",
"delete_button": "डिलीट करें",
"confirm_delete": "क्या आप इस रिविज़न को डिलीट करना चाहते हैं?",
"revisions_deleted": "नोट रिविज़न डिलीट कर दिए गए हैं।",
"revision_restored": "नोट रिविज़न रिस्टोर कर दिया गया है।",
"revision_deleted": "नोट रिविज़न डिलीट कर दिया गया है।",
"snapshot_interval": "नोट रिविज़न स्नैपशॉट अंतराल: {{seconds}}s।",
"maximum_revisions": "नोट रिविज़न स्नैपशॉट लिमिट: {{number}}।",
"settings": "नोट रिविज़न सेटिंग्स",
"download_button": "डाउनलोड करें",
"mime": "MIME: ",
"file_size": "फ़ाइल साइज़:",
"preview_not_available": "इस नोट टाइप के लिए प्रिव्यू उपलब्ध नहीं है।"
},
"sort_child_notes": {
"sort_children_by": "सब-नोट्स को इसके अनुसार सॉर्ट करें..।",
"sorting_criteria": "सॉर्टिंग का आधार",
@@ -1110,7 +1073,6 @@
},
"database_integrity_check": {
"title": "डेटाबेस इंटीग्रिटी चेक (Database Integrity Check)",
"description": "यह चेक करेगा कि डेटाबेस SQLite लेवल पर खराब तो नहीं हुआ है। डेटाबेस के साइज़ के हिसाब से इसमें कुछ समय लग सकता है।",
"check_button": "डेटाबेस इंटीग्रिटी चेक करें",
"checking_integrity": "डेटाबेस इंटीग्रिटी चेक की जा रही है..।",
"integrity_check_succeeded": "इंटीग्रिटी चेक सफल रहा - कोई समस्या नहीं मिली।",
@@ -1148,10 +1110,7 @@
"note_tree_font": "नोट ट्री फ़ॉन्ट",
"note_detail_font": "नोट डिटेल फ़ॉन्ट",
"monospace_font": "मोनोस्पेस (कोड) फ़ॉन्ट",
"note_tree_and_detail_font_sizing": "ध्यान दें कि ट्री और डिटेल फ़ॉन्ट का साइज़ मुख्य फ़ॉन्ट साइज़ के हिसाब से होता है।",
"not_all_fonts_available": "हो सकता है कि लिस्ट में दिए गए सभी फ़ॉन्ट्स आपके सिस्टम पर न हों।",
"apply_font_changes": "फ़ॉन्ट के बदलाव लागू करने के लिए, यहाँ क्लिक करें",
"reload_frontend": "फ्रंटेंड रीलोड करें",
"generic-fonts": "सामान्य फ़ॉन्ट्स",
"sans-serif-system-fonts": "Sans-serif सिस्टम फ़ॉन्ट्स",
"serif-system-fonts": "Serif सिस्टम फ़ॉन्ट्स",
@@ -1241,7 +1200,6 @@
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "अटैचमेंट मिटाने का समय (Erasure Timeout)",
"attachment_auto_deletion_description": "अगर अटैचमेंट का उनके नोट में कोई लिंक नहीं बचता, तो वे तय समय के बाद अपने-आप डिलीट (और मिटा) दिए जाते हैं।",
"erase_attachments_after": "इतने समय बाद बिना इस्तेमाल वाले अटैचमेंट्स मिटाएं:",
"manual_erasing_description": "आप इसे खुद भी मिटा सकते हैं (बिना ऊपर दिए समय का इंतज़ार किए):",
"erase_unused_attachments_now": "बिना इस्तेमाल वाले अटैचमेंट नोट्स अभी मिटाएं",
@@ -1253,7 +1211,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "नोट मिटाने का समय (Erasure Timeout)",
"note_erasure_description": "डिलीट किए गए नोट्स (और एट्रीब्यूट्स, रिवीजन्स...) पहले सिर्फ 'डिलीट' मार्क किए जाते हैं और उन्हें 'Recent Notes' से वापस लाया जा सकता है। कुछ समय बाद ये नोट्स 'मिटा' (erase) दिए जाते हैं जिसके बाद इन्हें वापस नहीं लाया जा सकता। यह सेटिंग डिलीट और मिटाने के बीच के समय को तय करती है।",
"erase_notes_after": "इतने समय बाद नोट्स मिटाएं:",
"manual_erasing_description": "आप नोट्स को खुद भी मिटा सकते हैं (बिना ऊपर दिए समय का इंतज़ार किए):",
"erase_deleted_notes_now": "डिलीट किए गए नोट्स अभी मिटाएं",
@@ -1343,7 +1300,6 @@
"first-week-contains-first-thursday": "पहले हफ्ते में साल का पहला गुरुवार शामिल है",
"first-week-has-minimum-days": "पहले हफ्ते में कम-से-कम इतने दिन हों",
"min-days-in-first-week": "पहले हफ्ते में न्यूनतम दिन",
"first-week-info": "\"पहले हफ्ते में साल का पहला गुरुवार\" ISO 8601 स्टैण्डर्ड पर आधारित है।",
"first-week-warning": "पहले हफ्ते की सेटिंग्स बदलने से पुराने 'Week Notes' में गड़बड़ी हो सकती है।",
"formatting-locale": "तारीख और नंबर फॉर्मेट",
"formatting-locale-auto": "ऐप की भाषा के अनुसार"
@@ -1467,11 +1423,7 @@
"config_title": "सिंक कॉन्फ़िगरेशन",
"server_address": "सर्वर एड्रेस (Address)",
"timeout": "सिंक समय-सीमा (Timeout)",
"timeout_unit": "मिलीसेकंड (milliseconds)",
"proxy_label": "सिंक प्रॉक्सी सर्वर (वैकल्पिक)",
"note": "नोट",
"note_description": "अगर आप प्रॉक्सी खाली छोड़ते हैं, तो सिस्टम प्रॉक्सी का इस्तेमाल होगा।",
"special_value_description": "एक खास वैल्यू <code>noproxy</code> भी है जो सिस्टम प्रॉक्सी को नज़रअंदाज़ करने के लिए मजबूर करती है।",
"save": "सेव करें",
"help": "मदद",
"test_title": "सिंक टेस्ट",

View File

@@ -1,13 +1,6 @@
{
"about": {
"title": "A Trilium Notes-ról",
"homepage": "Kezdőlap:",
"app_version": "Alkalmazás verziója:",
"db_version": "Adatbázis verzió:",
"sync_version": "Verzió szinkronizálás :",
"build_revision": "Build revízió:",
"data_directory": "Adatkönyvtár:",
"build_date": "Build dátum:"
"data_directory": "Adatkönyvtár:"
},
"toast": {
"critical-error": {

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Tentang Trilium Notes",
"homepage": "Halaman utama:",
"app_version": "Versi Aplikasi:",
"db_version": "Versi DB:",
"sync_version": "Versi sinkronisasi:",
"build_date": "Tanggal pembuatan:",
"build_revision": "Revisi pembuatan:",
"data_directory": "Direktori data:"
},
"toast": {
@@ -76,7 +69,6 @@
"confirmation": "Konfirmasi"
},
"delete_notes": {
"delete_notes_preview": "Hapus pratinjau catatan",
"close": "Tutup",
"delete_all_clones_description": "Hapus seluruh duplikat (bisa dikembalikan di menu revisi)",
"erase_notes_description": "Penghapusan normal hanya menandai catatan sebagai dihapus dan dapat dipulihkan (melalui dialog versi revisi) dalam jangka waktu tertentu. Mencentang opsi ini akan menghapus catatan secara permanen seketika dan catatan tidak akan bisa dipulihkan kembali.",
@@ -84,9 +76,7 @@
"notes_to_be_deleted": "Catatan-catatan berikut akan dihapuskan ({{notesCount}})",
"no_note_to_delete": "Tidak ada Catatan yang akan dihapus (hanya duplikat).",
"broken_relations_to_be_deleted": "Hubungan berikut akan diputus dan dihapus ({{ relationCount}})",
"cancel": "Batalkan",
"ok": "Setuju",
"deleted_relation_text": "Catatan {{- note}} (yang akan dihapus) dirujuk oleh relasi {{- relation}} yang berasal dari {{- source}}."
"cancel": "Batalkan"
},
"clone_to": {
"clone_notes_to": "Duplikat catatan ke…",

View File

@@ -1,13 +1,6 @@
{
"about": {
"app_version": "Versione dell'app:",
"db_version": "Versione DB:",
"sync_version": "Versione Sync:",
"data_directory": "Cartella dati:",
"title": "Informazioni su Trilium Notes",
"build_date": "Data della build:",
"build_revision": "Revisione della build:",
"homepage": "Homepage:"
"data_directory": "Cartella dati:"
},
"toast": {
"critical-error": {
@@ -88,17 +81,24 @@
"also_delete_note": "Rimuove anche la nota"
},
"delete_notes": {
"ok": "OK",
"close": "Chiudi",
"delete_notes_preview": "Anteprima di eliminazione delle note",
"delete_all_clones_description": "Elimina anche tutti i cloni (può essere ripristinato nella sezione cambiamenti recenti)",
"erase_notes_description": "L'eliminazione normale (soft) marca le note come eliminate e potranno essere recuperate entro un certo lasso di tempo (dalla finestra dei cambiamenti recenti). Selezionando questa opzione le note si elimineranno immediatamente e non sarà possibile recuperarle.",
"erase_notes_description": "Cancella immediatamente le note invece di effettuare una cancellazione temporanea. Questa operazione non può essere annullata e comporterà il riavvio dell'applicazione.",
"erase_notes_warning": "Elimina le note in modo permanente (non potrà essere disfatto), compresi tutti i cloni. Ciò forzerà un nuovo caricamento dell'applicazione.",
"cancel": "Annulla",
"notes_to_be_deleted": "Le seguenti note saranno eliminate ({{notesCount}})",
"notes_to_be_deleted": "Note da eliminare ({{notesCount}})",
"no_note_to_delete": "Nessuna nota sarà eliminata (solo i cloni).",
"broken_relations_to_be_deleted": "Le seguenti relazioni saranno interrotte ed eliminate ({{relationCount}})",
"deleted_relation_text": "La nota {{- note}} (da eliminare) è referenziata dalla relazione {{- relation}} originata da {{- source}}."
"broken_relations_to_be_deleted": "Relazioni interrotte ({{relationCount}})",
"title": "Eliminazione note",
"clones_label": "Cloni",
"delete_clones_description_one": "Elimina anche {{count}} altro clone. L'operazione può essere annullata nella pagina delle modifiche recenti.",
"delete_clones_description_many": "Elimina anche {{count}} altri cloni. L'operazione può essere annullata nella pagina delle modifiche recenti.",
"delete_clones_description_other": "Elimina anche {{count}} altri cloni. L'operazione può essere annullata nella pagina delle modifiche recenti.",
"erase_notes_label": "Elimina definitivamente",
"table_note_with_relation": "Nota relativa a",
"table_relation": "Relazione",
"table_points_to": "Punti verso (eliminato)",
"delete": "Eliminazione"
},
"info": {
"okButton": "OK",
@@ -463,7 +463,8 @@
"enable_daily_backup": "Abilita i backup giornalieri",
"no_backup_yet": "Ancora nessuna archiviazione",
"automatic_backup": "Backup Automatico",
"automatic_backup_description": "Trilium può eseguire automaticamente il backup del database:"
"automatic_backup_description": "Trilium può eseguire automaticamente il backup del database:",
"download": "Scarica"
},
"backend_log": {
"refresh": "Aggiorna"
@@ -478,7 +479,6 @@
"check_button": "Controllo dell'integrità del database",
"checking_integrity": "Controllo dell'integrità del database in corso...",
"title": "Controllo di Integrità del database",
"description": "Controllerà che il database non sia corrotto a livello SQLite. Può durare un po' di tempo, a seconda della grandezza del DB.",
"integrity_check_failed": "Controllo di integrità fallito: {{results}}",
"integrity_check_succeeded": "Controllo di integrità riuscito: nessun problema riscontrato."
},
@@ -497,16 +497,13 @@
"proxy_label": "Server Proxy per la sincronizzazione (opzionale)",
"test_title": "Test di sincronizzazione",
"timeout": "Timeout per la sincronizzazione",
"timeout_unit": "millisecondi",
"save": "Salva",
"help": "Aiuto",
"server_address": "Indirizzo dell'istanza del server",
"note": "Nota",
"note_description": "Se si lascia vuota l'impostazione del proxy, verrà utilizzato il proxy di sistema (valido solo per le build desktop/electron).",
"special_value_description": "Un altro valore speciale è <code>noproxy</code> che forza l'ignoramento anche del proxy di sistema e rispetta <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"test_description": "Questo testerà la connessione e l'handshake con il server di sincronizzazione. Se il server di sincronizzazione non è inizializzato, questo lo imposterà per la sincronizzazione con il documento locale.",
"test_button": "Test di sincronizzazione",
"handshake_failed": "Handshake del server di sincronizzazione non riuscito, errore: {{message}}"
"handshake_failed": "Handshake del server di sincronizzazione non riuscito, errore: {{message}}",
"timeout_description": "Quanto tempo aspettare prima di rinunciare con una connessione lenta. Aumenta questo intervallo se hai una rete instabile."
},
"search_engine": {
"save_button": "Salva",
@@ -651,7 +648,6 @@
"first-week-contains-first-thursday": "La prima settimana contiene il primo giovedì dell'anno",
"first-week-has-minimum-days": "La prima settimana ha giorni ridotti",
"min-days-in-first-week": "Giorni minimi nella prima settimana",
"first-week-info": "La prima settimana che contiene il primo giovedì dell'anno si basa su <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> standard.",
"first-week-warning": "La modifica delle opzioni della prima settimana può causare duplicati con le note settimanali esistenti e queste ultime non verranno aggiornate di conseguenza.",
"formatting-locale": "Formato data e numero",
"formatting-locale-auto": "In base alla lingua dell'applicazione",
@@ -699,7 +695,8 @@
"box_size_small": "piccola (~ 10 righe)",
"box_size_medium": "media (~ 30 righe)",
"box_size_full": "completa (la casella mostra il testo completo)",
"button_include": "Includi nota"
"button_include": "Includi nota",
"box_size_expandable": "espandibile (nascosto per impostazione predefinita)"
},
"jump_to_note": {
"search_placeholder": "Cerca una nota per nome oppure digita > per i comandi...",
@@ -741,33 +738,6 @@
"undelete_link": "ripristinare",
"confirm_undelete": "Vuoi ripristinare questa nota e le sue sotto-note?"
},
"revisions": {
"note_revisions": "Note Revisioni",
"delete_all_revisions": "Elimina tutte le revisioni di questa nota",
"delete_all_button": "Elimina tutte le revisioni",
"help_title": "Aiuto sulle revisioni delle note",
"confirm_delete_all": "Vuoi eliminare tutte le revisioni di questa nota?",
"no_revisions": "Ancora nessuna revisione per questa nota...",
"restore_button": "Ripristina",
"diff_on": "Mostra differenze",
"diff_off": "Mostra contenuto",
"diff_on_hint": "Clicca per mostrare la fonte della nota diff",
"diff_off_hint": "Clicca per visualizzare il contenuto della nota",
"diff_not_available": "Diff non è disponibile.",
"confirm_restore": "Vuoi ripristinare questa revisione? Questo sovrascriverà il titolo e il contenuto attuali della nota con questa revisione.",
"delete_button": "Elimina",
"confirm_delete": "Vuoi eliminare questa revisione?",
"revisions_deleted": "Le revisioni delle note sono state eliminate.",
"revision_restored": "La revisione della nota è stata ripristinata.",
"revision_deleted": "La revisione della nota è stata eliminata.",
"snapshot_interval": "Nota Intervallo di revisione istantanea: {{seconds}}.",
"maximum_revisions": "Nota Limite istantaneo di revisione: {{number}}.",
"settings": "Nota Impostazioni di revisione",
"download_button": "Scarica",
"mime": "MIME: ",
"file_size": "Dimensione del file:",
"preview_not_available": "L'anteprima non è disponibile per questo tipo di nota."
},
"sort_child_notes": {
"sort_children_by": "Ordina i bambini per...",
"sorting_criteria": "Criteri di ordinamento",
@@ -1248,7 +1218,10 @@
"expand_first_level": "Espandi figli diretti",
"expand_nth_level": "Espandi {{depth}} livelli",
"expand_all_levels": "Espandi tutti i livelli",
"hide_child_notes": "Nascondi note secondarie nell'albero"
"hide_child_notes": "Nascondi note secondarie nell'albero",
"open_all_in_tabs": "Apri tutto",
"open_all_in_tabs_tooltip": "Apri tutti i risultati in nuove schede",
"open_all_confirm": "Verranno aperte {{count}} note in nuove schede. Vuoi continuare?"
},
"edited_notes": {
"no_edited_notes_found": "Nessuna nota modificata per questo giorno...",
@@ -1302,7 +1275,8 @@
"collapse": "Ritorna alle dimensioni normali",
"title": "Nota Mappa",
"fix-nodes": "Fissare i nodi",
"link-distance": "Distanza del collegamento"
"link-distance": "Distanza del collegamento",
"too-many-notes": "Questo sottoalbero contiene {{count}} note, un numero superiore al limite di {{max}} che può essere visualizzato nella mappa delle note."
},
"note_paths": {
"title": "Percorsi delle note",
@@ -1459,10 +1433,7 @@
"note_tree_font": "Carattere dell'albero delle note",
"note_detail_font": "Nota Dettaglio Carattere",
"monospace_font": "Monospace (codice) Font",
"note_tree_and_detail_font_sizing": "Si noti che le dimensioni dei caratteri dell'albero e dei dettagli sono relative all'impostazione della dimensione del carattere principale.",
"not_all_fonts_available": "Non tutti i font elencati potrebbero essere disponibili sul tuo sistema.",
"apply_font_changes": "Per applicare le modifiche al carattere, fare clic su",
"reload_frontend": "ricarica frontend",
"generic-fonts": "Caratteri generici",
"sans-serif-system-fonts": "Caratteri di sistema sans-serif",
"serif-system-fonts": "Caratteri di sistema Serif",
@@ -1568,7 +1539,6 @@
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Timeout cancellazione allegato",
"attachment_auto_deletion_description": "Gli allegati vengono eliminati (e cancellati) automaticamente se non vengono più menzionati nella nota dopo un timeout definito.",
"erase_attachments_after": "Cancella gli allegati non utilizzati dopo:",
"manual_erasing_description": "È anche possibile attivare la cancellazione manualmente (senza considerare il timeout definito sopra):",
"erase_unused_attachments_now": "Cancella subito le note degli allegati non utilizzati",
@@ -1580,7 +1550,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Timeout cancellazione nota",
"note_erasure_description": "Le note eliminate (e gli attributi, le revisioni...) vengono inizialmente contrassegnate come eliminate ed è possibile recuperarle dalla finestra di dialogo Note recenti. Dopo un certo periodo di tempo, le note eliminate vengono \"cancellate\", il che significa che il loro contenuto non è più recuperabile. Questa impostazione consente di configurare l'intervallo di tempo tra l'eliminazione e la cancellazione definitiva della nota.",
"erase_notes_after": "Cancella le note dopo:",
"manual_erasing_description": "È anche possibile attivare la cancellazione manualmente (senza considerare il timeout definito sopra):",
"erase_deleted_notes_now": "Cancella subito le note eliminate",
@@ -1901,7 +1870,8 @@
"theme_none": "Nessuna evidenziazione della sintassi",
"theme_group_light": "Temi chiari",
"theme_group_dark": "Temi scuri",
"copy_title": "Copia negli appunti"
"copy_title": "Copia negli appunti",
"click_to_copy": "Clicca per copiare"
},
"classic_editor_toolbar": {
"title": "Formattazione"
@@ -2302,7 +2272,8 @@
"note_context_disabled": "Clicca per includere la nota corrente nel contesto",
"no_provider_message": "Non è stato configurato alcun fornitore di IA. Aggiungine uno per iniziare a chattare.",
"add_provider": "Aggiungi un fornitore di IA",
"sources_summary": "{{count}} fonti provenienti da {{sites}} siti"
"sources_summary": "{{count}} fonti provenienti da {{sites}} siti",
"stop": "Stop"
},
"sidebar_chat": {
"title": "Chat AI",
@@ -2352,7 +2323,11 @@
"web_search": "Ricerca sul web",
"note_in_parent": "<Note/> in <Parent/>",
"get_attachment": "Scarica l'allegato",
"get_attachment_content": "Leggi il contenuto dell'allegato"
"get_attachment_content": "Leggi il contenuto dell'allegato",
"rename_note": "Rinomina nota",
"delete_note": "Elimina nota",
"move_note": "Sposta nota",
"clone_note": "Clona nota"
}
},
"ocr": {
@@ -2384,5 +2359,12 @@
"linkBidirectional": "Collegamento bidirezionale",
"clickTips": "Clicca sul nodo di destinazione",
"summary": "Sommario"
},
"search": {
"title": "Cerca",
"fuzzy_matching_label": "Tolleranza agli errori di battitura nella ricerca",
"fuzzy_matching_description": "Si applica alla ricerca rapida e alla ricerca completa. Trova parole simili quando non ci sono corrispondenze esatte.",
"autocomplete_fuzzy_label": "Tolleranza agli errori di battitura nel completamento automatico",
"autocomplete_fuzzy_description": "Influisce sui comandi \"Vai alla nota\" e sui selettori di note. È più lento, ma tollera gli errori di digitazione."
}
}

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Trilium Notesについて",
"homepage": "ホームページ:",
"app_version": "アプリのバージョン:",
"db_version": "データベースのバージョン:",
"sync_version": "同期のバージョン:",
"build_date": "Build の日時:",
"build_revision": "Build のバージョン:",
"data_directory": "データの場所:"
},
"toast": {
@@ -41,7 +34,9 @@
"help_on_links": "リンクに関するヘルプ",
"search_note": "ノート名で検索",
"link_title_mirrors": "リンクタイトルはノートタイトルの変更を反映します",
"link_title_arbitrary": "リンクタイトルは自由に変更可能"
"link_title_arbitrary": "リンクタイトルは自由に変更可能",
"anchor": "アンカー(任意)",
"anchor_none": "なし(ノートへのリンク)"
},
"branch_prefix": {
"save": "保存",
@@ -106,16 +101,21 @@
},
"delete_notes": {
"delete_all_clones_description": "すべてのクローンも削除(最近の変更では元に戻すことができる)",
"erase_notes_description": "通常の(ソフト)削除では、ノートは削除されたものとしてマークされ、一定期間内に(最近の変更で)削除を取り消すことができます。このオプションをオンにすると、ノートは即座に削除され、削除を取り消すことはできません。",
"erase_notes_description": "ノートを一時保存せずに完全に削除します。この操作は元に戻すことができず、アプリケーションが再読み込みされます。",
"erase_notes_warning": "すべてのクローンを含め、ノートを完全に消去します(元に戻せません)。これにより、アプリケーションは強制的にリロードされます。",
"notes_to_be_deleted": "以下のノートが削除されます ({{notesCount}})",
"notes_to_be_deleted": "削除対象のノート ({{notesCount}})",
"no_note_to_delete": "ノートは削除されません(クローンのみ)。",
"cancel": "キャンセル",
"ok": "OK",
"close": "閉じる",
"delete_notes_preview": "ノートのプレビューを削除",
"broken_relations_to_be_deleted": "次のリレーション ({{relationCount}})は壊れているので消去されます",
"deleted_relation_text": "削除予定のノート{{- note}}は{{- source}}からリレーション{{- relation}}によって参照されています."
"broken_relations_to_be_deleted": "壊れたリレーション ({{relationCount}})",
"title": "ノートを削除",
"clones_label": "クローン",
"delete_clones_description_other": "他の {{count}} 件のクローンも削除します。最近の変更履歴から元に戻すことができます。",
"erase_notes_label": "完全に消去",
"table_note_with_relation": "リレーションがあるノート",
"table_relation": "リレーション",
"table_points_to": "参照先 (削除済み)",
"delete": "削除"
},
"calendar": {
"mon": "月",
@@ -178,11 +178,10 @@
"monday": "月曜日",
"first-week-of-the-year": "年の最初の週",
"first-week-contains-first-day": "最初の週には、元日が含まれる",
"first-week-contains-first-thursday": "最初の週には、その年の最初の木曜日が含まれる",
"first-week-contains-first-thursday": "最初の週には、最初の木曜日が含まれるISO 8601",
"first-week-has-minimum-days": "最初の週は最低日数",
"min-days-in-first-week": "最初の週の最低日数",
"first-week-info": "最初の週は、その年の最初の木曜日を含む週を指し、<a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>規格に基づいています。",
"first-week-warning": "最初の週のオプションを変更すると、既存のウィークノートと重複する可能性があり、既存のウィークノートはそれに応じて更新されません。",
"first-week-warning": "この設定を変更すると、既存のウィークノートと重複が発生する可能性があります。",
"formatting-locale": "日付と数値のフォーマット",
"formatting-locale-auto": "アプリケーションの言語に基づいて",
"tuesday": "火曜日",
@@ -487,7 +486,13 @@
"export_as_image": "画像としてエクスポート",
"export_as_image_png": "PNG (raster)",
"export_as_image_svg": "SVG (vector)",
"view_ocr_text": "OCR テキストを表示"
"view_ocr_text": "OCR テキストを表示",
"word_wrap": "行の折り返し",
"word_wrap_auto": "自動",
"word_wrap_auto_description": "グローバル設定に従う",
"word_wrap_on": "オン",
"word_wrap_off": "オフ",
"save_named_revision": "名前を付けて変更履歴を保存..."
},
"command_palette": {
"export_note_title": "ノートをエクスポート",
@@ -576,7 +581,10 @@
"expand_first_level": "直下の子を展開",
"expand_nth_level": "{{depth}} 階層下まで展開",
"expand_all_levels": "すべての階層を展開",
"hide_child_notes": "ツリー内の子ノートを非表示"
"hide_child_notes": "ツリー内の子ノートを非表示",
"open_all_in_tabs": "すべて開く",
"open_all_in_tabs_tooltip": "すべての結果を新しいタブで開く",
"open_all_confirm": "{{count}} 件のノートが新しいタブで開かれます。続行しますか?"
},
"note_types": {
"geo-map": "ジオマップ",
@@ -603,7 +611,8 @@
"collections": "コレクション",
"ai-chat": "AI チャット",
"spreadsheet": "スプレッドシート",
"llm-chat": "AI チャット"
"llm-chat": "AI チャット",
"markdown": "Markdown"
},
"edited_notes": {
"no_edited_notes_found": "この日の編集されたノートはまだありません...",
@@ -647,33 +656,6 @@
"upload_success": "新しい画像の変更がアップロードされました。",
"upload_failed": "新しい画像の変更のアップロードに失敗しました: {{message}}"
},
"revisions": {
"download_button": "ダウンロード",
"delete_button": "削除",
"note_revisions": "ノートの変更履歴",
"delete_all_revisions": "このノートの変更履歴をすべて削除",
"delete_all_button": "変更履歴をすべて削除",
"help_title": "変更履歴のヘルプ",
"confirm_delete_all": "このノートのすべての変更履歴を削除しますか?",
"no_revisions": "このノートに変更履歴はまだありません...",
"restore_button": "復元",
"confirm_restore": "この変更を復元しますか?現在のノートのタイトルとコンテンツはこの変更で上書きされます。",
"confirm_delete": "この変更履歴を削除しますか?",
"revisions_deleted": "ノートの変更履歴は削除されました。",
"revision_restored": "ノートの変更が復元されました。",
"revision_deleted": "ノートの変更履歴は削除されました。",
"settings": "ノートの変更履歴の設定",
"file_size": "ファイルサイズ:",
"preview_not_available": "このノートタイプではプレビューは利用できません。",
"diff_on": "差分を表示",
"diff_off": "内容を表示",
"diff_on_hint": "クリックしてノートソースとの差分を表示",
"diff_off_hint": "クリックしてノートの内容を表示",
"diff_not_available": "差分は利用できません。",
"snapshot_interval": "ノートの変更履歴の記録間隔: {{seconds}} 秒。",
"maximum_revisions": "ノートの変更履歴の記録制限: {{number}}.",
"mime": "MIME: "
},
"attachments_actions": {
"download": "ダウンロード",
"open_externally": "外部で開く",
@@ -809,7 +791,8 @@
"label_note": "ノート",
"box_size_small": "スモール (~ 10 行)",
"box_size_medium": "ミディアム (~ 30 行)",
"box_size_full": "フル (ボックスに全文が表示されます)"
"box_size_full": "フル (ボックスに全文が表示されます)",
"box_size_expandable": "展開可能 (デフォルトでは折りたたまれています)"
},
"ancestor": {
"placeholder": "ノート名で検索",
@@ -841,20 +824,21 @@
"filling_entity_changes": "エンティティ変更行を入力中...",
"sync_rows_filled_successfully": "同期行が正常に入力されました",
"finished-successfully": "同期が正常に完了しました。",
"failed": "同期に失敗しました: {{message}}"
"failed": "同期に失敗しました: {{message}}",
"force_full_sync_label": "強制的な完全同期",
"force_full_sync_description": "同期サーバーとの完全同期を実行し、すべての変更を再アップロードします。",
"fill_entity_changes_label": "エンティティの変更を反映",
"fill_entity_changes_description": "エンティティの変更履歴を再構築します。同期処理で一部の変更が反映されていない場合に使用してください。"
},
"fonts": {
"fonts": "フォント",
"main_font": "インフォント",
"main_font": "インターフェース テキスト",
"font_family": "フォントファミリー",
"size": "サイズ",
"note_tree_font": "ノートツリーフォント",
"note_detail_font": "ノート詳細フォント",
"monospace_font": "等幅(コード)フォント",
"note_tree_and_detail_font_sizing": "ツリーと詳細のフォントサイズは、メインのフォントサイズに対して相対的であることに注意してください。",
"not_all_fonts_available": "リストされているすべてのフォントが、お使いのシステムで利用できるとは限りません。",
"apply_font_changes": "フォントの変更を適用するには、クリックしてください",
"reload_frontend": "フロントエンドをリロード",
"note_tree_font": "ノートツリー テキスト",
"note_detail_font": "ドキュメント テキスト",
"monospace_font": "等幅フォント",
"not_all_fonts_available": "リストにあるすべてのフォントが、お使いのシステムで利用できるとは限りません",
"generic-fonts": "一般的なフォント",
"sans-serif-system-fonts": "サンセリフのシステムフォント",
"serif-system-fonts": "セリフのシステムフォント",
@@ -864,7 +848,12 @@
"sans-serif": "サンセリフ",
"monospace": "等幅",
"system-default": "システムのデフォルト",
"theme_defined": "テーマが定義されました"
"theme_defined": "テーマが定義されました",
"custom_fonts": "カスタムフォントを使用",
"preview": "プレビュー",
"monospace_font_description": "コードノートとコードブロックに使用されます",
"size_relative_to_general": "サイズは一般的なフォントサイズを基準としています",
"apply_changes": "変更を適用するには再読み込みしてください"
},
"max_content_width": {
"title": "コンテンツ幅",
@@ -874,20 +863,23 @@
"centerContent": "コンテンツを中央に配置"
},
"theme": {
"title": "アプリのテーマ",
"theme_label": "テーマ",
"title": "ユーザーインターフェース",
"theme_label": "アプリケーションのテーマ",
"override_theme_fonts_label": "テーマのフォントを上書き",
"auto_theme": "レガシー(システムの配色に従う",
"light_theme": "レガシー(ライト",
"dark_theme": "レガシー(ダーク",
"triliumnext": "Triliumシステムの配色に従う",
"triliumnext-light": "Triliumライト",
"triliumnext-dark": "Triliumダーク",
"auto_theme": "システムの配色に従う",
"light_theme": "ライト",
"dark_theme": "ダーク",
"triliumnext": "システムの配色に従う",
"triliumnext-light": "ライト",
"triliumnext-dark": "ダーク",
"layout": "レイアウト",
"layout-vertical-title": "垂直",
"layout-horizontal-title": "水平",
"layout-vertical-description": "ランチャーバーは左側(デフォルト)",
"layout-horizontal-description": "ランチャーバーはタブバーの下にあり、タブバーは全幅に。"
"layout-horizontal-description": "ランチャーバーはタブバーの下にあり、タブバーは全幅に。",
"modern_themes": "モダン",
"legacy_themes": "レガシー",
"custom_themes": "カスタム"
},
"vim_key_bindings": {
"use_vim_keybindings_in_code_notes": "Vimキーバインド",
@@ -924,27 +916,30 @@
},
"search_engine": {
"title": "検索エンジン",
"custom_search_engine_info": "カスタム検索エンジンは、名前とURLの両方を設定する必要があります。どちらも設定されていない場合、DuckDuckGoがデフォルトの検索エンジンとして使用されます。",
"predefined_templates_label": "定義済みの検索エンジンのテンプレート",
"custom_search_engine_info": "選択したテキストをウェブ上で検索する際に使用します。設定されていない場合、DuckDuckGo が使用されます。",
"predefined_templates_label": "プリセット",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo",
"google": "Google",
"custom_name_label": "カスタム検索エンジンの名前",
"custom_name_placeholder": "カスタム検索エンジンの名前",
"custom_url_label": "カスタム検索エンジンのURLには、検索語句のプレースホルダーとして {keyword} を含める必要があります。",
"custom_url_placeholder": "検索エンジンの URL をカスタマイズ",
"save_button": "保存"
"custom_name_label": "名前",
"custom_name_placeholder": "検索エンジン",
"custom_url_label": "URL",
"custom_url_placeholder": "検索エンジンの URL",
"save_button": "保存",
"custom_url_description": "検索語句の代わりに {keyword} を使用してください。"
},
"tray": {
"title": "システムトレイ",
"enable_tray": "トレイを有効にする (この変更を適用にするには、Triliumを再起動する必要があります)"
"enable_tray": "トレイアイコン",
"enable_tray_description": "この変更を有効にするには、Trilium を再起動する必要があります。"
},
"heading_style": {
"title": "見出しのスタイル",
"plain": "プレーン",
"underline": "下線",
"markdown": "Markdownスタイル"
"markdown": "Markdownスタイル",
"description": "テキストノート内の見出しの表示スタイル。"
},
"highlights_list": {
"title": "ハイライトリスト",
@@ -973,20 +968,22 @@
"text_auto_read_only_size": {
"title": "自動読み取り専用のサイズ",
"description": "自動読み取り専用のノートサイズは、ノートが読み取り専用モード(パフォーマンス上の理由)で表示されるようになるサイズです。",
"label": "自動読み取り専用のサイズ(テキストノート)",
"label": "自動読み取り専用になるサイズ",
"unit": "文字"
},
"code_auto_read_only_size": {
"title": "自動読み取り専用のサイズ",
"description": "自動読み取り専用のノートサイズは、ノートが読み取り専用モード(パフォーマンス上の理由)で表示されるようになるサイズです。",
"unit": "文字",
"label": "自動読み取り専用のサイズ(コードノート)"
"label": "自動読み取り専用になるサイズ"
},
"custom_date_time_format": {
"title": "日付/時刻フォーマットのカスタム",
"title": "日付/時刻の形式",
"description": "<shortcut />またはツールバーから挿入される日付と時刻のフォーマットをカスタマイズする。 利用可能なトークンについては <doc>Day.js ドキュメント</doc> を参照してください。",
"format_string": "文字列形式:",
"formatted_time": "日付/時刻形式:"
"format_string": "書式文字列",
"formatted_time": "日付/時刻形式",
"description_short": "ツールバーから挿入する日付と時刻の形式をカスタマイズできます。",
"preview": "プレビュー: {{preview}}"
},
"backup": {
"automatic_backup": "自動バックアップ",
@@ -1001,7 +998,9 @@
"date-and-time": "日時",
"path": "パス",
"database_backed_up_to": "データベースは{{backupFilePath}}にバックアップされました",
"no_backup_yet": "バックアップがありません"
"no_backup_yet": "バックアップがありません",
"download": "ダウンロード",
"title": "バックアップ"
},
"password": {
"wiki": "wiki",
@@ -1013,16 +1012,20 @@
"new_password_confirmation": "新パスワードの確認",
"change_password": "パスワードの変更",
"change_password_heading": "パスワードの変更",
"protected_session_timeout": "保護されたセッションのタイムアウト",
"protected_session_timeout_description": "保護されたセッションのタイムアウトは、保護されたセッションがブラウザのメモリから消去される時間です。これは、保護されたノートとの最後のやり取りから測定されます。参照",
"protected_session_timeout": "保護されたセッション",
"protected_session_timeout_description": "ブラウザのメモリからセッションが削除されるまでの非アクティブ時間。詳細はこちら",
"for_more_info": "詳細はこちら。",
"protected_session_timeout_label": "保護されたセッションのタイムアウト:",
"protected_session_timeout_label": "セッションが自動で終了するまでの時間",
"reset_confirmation": "パスワードをリセットすると、保護されているすべてのノートにアクセスできなくなります。本当にパスワードをリセットしますか?",
"reset_success_message": "パスワードがリセットされました。新しいパスワードを設定してください",
"set_password_heading": "パスワードの設定",
"set_password": "パスワードの設定",
"password_mismatch": "新しいパスワードが同じではありません。",
"password_changed_success": "パスワードが変更されました。OKを押すとTriliumがリロードされます。"
"password_changed_success": "パスワードが変更されました。OKを押すとTriliumがリロードされます。",
"change_password_description": "現在のパスワードを更新",
"reset_password": "パスワードをリセット",
"reset_password_description": "保護されたノートへのアクセス権を完全に失います",
"cancel": "キャンセル"
},
"spellcheck": {
"title": "スペルチェック",
@@ -1038,20 +1041,19 @@
"related_description": "スペルチェック対応言語とカスタム辞書を設定します。"
},
"sync_2": {
"config_title": "同期設定",
"server_address": "サーバーインスタンスのアドレス",
"timeout": "同期タイムアウト",
"timeout_unit": "ミリ秒",
"proxy_label": "同期プロキシサーバー(任意)",
"note": "注",
"note_description": "プロキシ設定を空白のままにすると、システムプロキシが使用されます(デスクトップ/electronビルドにのみ適用されます。",
"special_value_description": "もう一つの特別な値は <code>noproxy</code> で、これはシステムプロキシさえも無視して、 <code>NODE_TLS_REJECT_UNAUTHORIZED</code> を尊重するように強制します。",
"config_title": "同期サーバー",
"server_address": "サーバーアドレス",
"timeout": "接続タイムアウト",
"proxy_label": "プロキシサーバー",
"save": "保存",
"help": "ヘルプ",
"test_title": "同期のテスト",
"test_description": "これは同期サーバの接続とハンドシェイクをテストします。同期サーバーが初期化されていない場合、ローカルドキュメントと同期するように設定します。",
"test_title": "接続テスト",
"test_description": "同期サーバーへの接続をテストします。初期化されていない場合は、同期の設定を行います。",
"test_button": "同期試行",
"handshake_failed": "同期サーバーのハンドシェイクに失敗しました。エラー: {{message}}"
"handshake_failed": "同期サーバーのハンドシェイクに失敗しました。エラー: {{message}}",
"timeout_description": "接続が遅い場合に接続を断念するまでの待機時間。",
"server_address_description": "同期先の Trilium サーバーの URL。",
"proxy_description": "システムのプロキシを使用する場合は空欄のままにしてください(デスクトップ版のみ)。すべてのプロキシをバイパスするには \"noproxy\" を使用してください。"
},
"api_log": {
"close": "閉じる"
@@ -1202,7 +1204,9 @@
"and_more": "...その他 {{count}} 件。",
"print_landscape": "PDF にエクスポートするときに、ページの向きを縦向きではなく横向きに変更します。",
"print_page_size": "PDF にエクスポートするときに、ページのサイズを変更します。サポートされる値: <code>A0</code>, <code>A1</code>, <code>A2</code>, <code>A3</code>, <code>A4</code>, <code>A5</code>, <code>A6</code>, <code>Legal</code>, <code>Letter</code>, <code>Tabloid</code>, <code>Ledger</code>。",
"textarea": "複数行テキスト"
"textarea": "複数行テキスト",
"print_scale": "PDF にエクスポートする際に、レンダリングされるコンテンツの縮尺を変更します。値の範囲は 0.110%)から 2200%)までで、デフォルト値は 1100%)です。",
"print_margins": "PDF に書き出す際に、ページ余白を設定します。<code>デフォルト</code>, <code>なし</code>, <code>最小</code>, または <code>上、右、下、左</code> のようなカスタム値をミリメートル単位で指定できます。"
},
"link_context_menu": {
"open_note_in_popup": "クイック編集",
@@ -1353,7 +1357,10 @@
"theme_none": "シンタックスハイライトなし",
"theme_group_light": "ライトテーマ",
"theme_group_dark": "ダークテーマ",
"copy_title": "クリップボードにコピー"
"copy_title": "クリップボードにコピー",
"click_to_copy": "クリックしてコピー",
"tab_width": "タブ幅",
"tab_width_unit": "スペース"
},
"editor": {
"title": "エディター"
@@ -1369,7 +1376,8 @@
"title": "固定",
"description": "編集ツールは「書式設定」のリボンタブに表示されます。"
},
"multiline-toolbar": "ツールバーが収まりきらない場合は複数行で表示する。"
"multiline-toolbar": "ツールバーが収まりきらない場合は複数行で表示",
"toolbar_style": "ツールバーのスタイル"
}
},
"electron_context_menu": {
@@ -1390,7 +1398,7 @@
"days": "日"
},
"share": {
"title": "共有設定",
"title": "共有",
"redirect_bare_domain": "ネイキッドドメインを共有ページにリダイレクト",
"redirect_bare_domain_description": "匿名のユーザーをログイン画面ではなく共有ページにリダイレクトします",
"show_login_link_description": "共有ページの下部にログインリンクを追加",
@@ -1435,12 +1443,12 @@
"message_macos": "TriliumNext は現在、Rosetta 2による翻訳環境で実行されています。つまり、Apple Silicon MacではIntel (x64)バージョンを使用していることになります。これはパフォーマンスとバッテリー寿命に重大な影響を及ぼします。"
},
"editorfeatures": {
"emoji_completion_enabled": "絵文字のオートコンプリートを有効",
"note_completion_enabled": "ノートのオートコンプリートを有効",
"emoji_completion_description": "有効にすると、「:」に続けて絵文字の名前を入力することで、テキストに絵文字を簡単に挿入できます。",
"note_completion_description": "有効にすると、「@」 に続けてノートのタイトルを入力することで、ノートへのリンクを作成できます。",
"slash_commands_enabled": "スラッシュコマンドを有効",
"slash_commands_description": "有効にすると、改行や見出しの挿入などの編集コマンドは、「/」 と入力して切り替えることができます。",
"emoji_completion_enabled": "絵文字のオートコンプリート",
"note_completion_enabled": "ノートのオートコンプリート",
"emoji_completion_description": "絵文字は \":\" の後に絵文字の名前を入力することで、テキストに絵文字を簡単に挿入できます。",
"note_completion_description": "ノートへのリンクは \"@\" の後にノートのタイトルを入力することで作成できます。",
"slash_commands_enabled": "スラッシュコマンド",
"slash_commands_description": "改行や見出しの挿入などの編集コマンドは \"/\" を入力して切り替えることができます。",
"title": "機能"
},
"table_context_menu": {
@@ -1542,7 +1550,8 @@
"collapse": "通常サイズに折りたたむ",
"title": "ノートマップ",
"link-distance": "リンク距離",
"fix-nodes": "ノードを修正"
"fix-nodes": "ノードを修正",
"too-many-notes": "このサブツリーには {{count}} 件のノートが含まれており、ノートマップに表示できる {{max}} の上限を超えています。"
},
"owned_attribute_list": {
"owned_attributes": "所有属性"
@@ -1578,11 +1587,11 @@
},
"database_anonymization": {
"title": "データベースの匿名化",
"full_anonymization": "完全匿名化",
"full_anonymization_description": "この操作により、データベースの新しいコピーが作成され、匿名化されます(すべてのノートの内容を削除し、構造と一部の非機密メタデータのみを残します)。これにより、個人データが漏洩する心配なく、デバッグ目的でオンライン共有できます。",
"full_anonymization": "完全匿名化",
"full_anonymization_description": "ノートの内容をすべて削除し、構造と機密性の低いメタデータのみを残したデータベースのコピーを作成します。問題のデバッグ時にオンライン共有しても安全です。",
"save_fully_anonymized_database": "完全に匿名化されたデータベースを保存",
"light_anonymization": "軽い匿名化",
"light_anonymization_description": "この操作により、データベースの新しいコピーが作成され、軽い匿名化が適用されます。具体的には、すべてのノートの内容のみが削除され、タイトル属性はそのまま残ります。さらに、カスタムJSフロントエンド/バックエンドスクリプトノートとカスタムウィジェットもそのまま残ります。これにより、問題のデバッグのためのコンテキストがより多く提供されます。",
"light_anonymization_description": "ノートの内容は削除しますが、タイトル属性、カスタムスクリプト/ウィジェットは残します。デバッグのためのコンテキストがより多く提供されます。",
"choose_anonymization": "完全に匿名化したデータベースを提供するか、軽く匿名化したデータベースを提供するかは、あなた自身が決めることができます。完全に匿名化されたDBであっても非常に有用ですが、場合によっては軽く匿名化されたDBの方がバグの特定と修正のプロセスを速めることができます。",
"save_lightly_anonymized_database": "軽く匿名化されたデータベースを保存",
"existing_anonymized_databases": "既存の匿名化データベース",
@@ -1591,18 +1600,22 @@
"error_creating_anonymized_database": "匿名化データベースの作成に失敗しました。詳細はバックエンドログを確認してください",
"successfully_created_fully_anonymized_database": "完全に匿名化されたデータベースを {{anonymizedFilePath}} に作成",
"successfully_created_lightly_anonymized_database": "軽く匿名化されたデータベースを {{anonymizedFilePath}} に作成",
"no_anonymized_database_yet": "匿名化されたデータベースはまだありません。"
"no_anonymized_database_yet": "匿名化されたデータベースはまだありません。",
"description": "問題のデバッグ時に開発者と共有するために、個人データを公開することなく、データベースの匿名化されたコピーを作成します。"
},
"database_integrity_check": {
"title": "データベースの整合性チェック",
"description": "これは、データベースがSQLiteレベルで破損がないかをチェックします。DBのサイズによっては時間がかかる場合があります。",
"check_button": "データベースの整合性をチェック",
"checking_integrity": "データベースの整合性をチェックしています...",
"integrity_check_succeeded": "整合性チェックに成功 - 問題は見つかりませんでした。",
"integrity_check_failed": "整合性チェックに失敗: {{results}}"
"integrity_check_failed": "整合性チェックに失敗: {{results}}",
"check_integrity_label": "データベースの整合性チェック",
"check_integrity_description": "SQLite レベルでデータベースが破損していないことを確認します。"
},
"code-editor-options": {
"title": "エディター"
"title": "エディター",
"tab_width": "タブ幅",
"tab_width_unit": "スペース"
},
"search_string": {
"title_column": "文字列検索:",
@@ -1746,14 +1759,18 @@
"find_and_fix_button": "一貫性の問題を見つけて修正する",
"finding_and_fixing_message": "一貫性の問題を見つけて修正中…",
"title": "一貫性をチェック",
"issues_fixed_message": "発見された可能性のある一貫性の問題はすべて修正されました。"
"issues_fixed_message": "発見された可能性のある一貫性の問題はすべて修正されました。",
"find_and_fix_label": "整合性の問題を検出して修正",
"find_and_fix_description": "データベース内のデータ整合性の問題をスキャンし、自動的に修復します。"
},
"vacuum_database": {
"title": "データベースのバキューム",
"description": "これによりデータベースが再構築され、通常はデータベースファイルのサイズが小さくなります。実際のデータは変更されません。",
"button_text": "データベースをバキューム",
"vacuuming_database": "データベースのバキュームを実行中...",
"database_vacuumed": "データベースのバキューム処理が完了しました"
"database_vacuumed": "データベースのバキューム処理が完了しました",
"vacuum_label": "データベースのバキューム",
"vacuum_description": "データベースを再構築してファイルサイズを削減します。データは変更されません。"
},
"ribbon": {
"promoted_attributes_message": "プロモート属性がノートに存在する場合、プロモート属性のリボンタブが自動的に開きます",
@@ -1761,12 +1778,12 @@
"widgets": "リボンウィジェット"
},
"ui-performance": {
"enable-motion": "トランジションとアニメーションを有効にする",
"enable-shadows": "影を有効にする",
"enable-backdrop-effects": "メニュー、ポップアップ、パネルの背景効果を有効にする",
"enable-motion": "画面遷移とアニメーション",
"enable-shadows": "影",
"enable-backdrop-effects": "メニュー、ポップアップ、パネルの背景効果",
"title": "パフォーマンス",
"enable-smooth-scroll": "スムーズスクロールを有効にする",
"app-restart-required": "(変更を有効にするにはアプリケーションの再起動が必要です"
"enable-smooth-scroll": "スムーズスクロール",
"app-restart-required": "アプリの再起動が必要です"
},
"code_mime_types": {
"title": "ドロップダウンで利用可能なMIMEタイプ",
@@ -1775,37 +1792,43 @@
"tooltip_code_note_syntax": "コードノート"
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "添付ファイル消去のタイムアウト",
"attachment_auto_deletion_description": "定義されたタイムアウト後にノートによって参照されなくなった場合、添付ファイルは自動的に削除 (および消去) されます。",
"erase_attachments_after": "使用されていない添付ファイルを消去する期間:",
"manual_erasing_description": "手動で消去をトリガーすることもできます (上記で定義したタイムアウトを考慮せずに):",
"erase_unused_attachments_now": "使用されていない添付ノートを今すぐ消去",
"unused_attachments_erased": "使用されていない添付ファイルは削除されました。"
"attachment_erasure_timeout": "未使用の添付ファイル",
"erase_attachments_after": "未使用の添付ファイルを削除するまでの期間",
"manual_erasing_description": "上記のタイムアウト設定を無視して、手動で削除を実行する。",
"erase_unused_attachments_now": "未使用の添付ノートを今すぐ削除",
"unused_attachments_erased": "使用されていない添付ファイルは削除されました。",
"description": "どのノートからも参照されていない添付ファイルは未使用とみなされ、一定期間経過後に自動的に削除されま。",
"erase_attachments_after_description": "未使用の添付ファイルが完全に削除されるまでの時間。"
},
"network_connections": {
"network_connections_title": "ネットワーク接続",
"check_for_updates": "アップデートを自動的に確認する"
"network_connections_title": "ネットワーク",
"check_for_updates": "アップデートを自動的に確認する",
"check_for_updates_description": "GitHub で新しいバージョンをチェックし、利用可能な場合はグローバルメニューに通知を表示します。"
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "ノート消去のタイムアウト",
"note_erasure_description": "削除されたノート(および属性、変更履歴など)最初は削除済みとしてマークされるだけで、「最近の変更」ダイアログから復元できます。一定期間が経過すると、削除されたノートは「消去」され、内容は復元できなくなります。この設定では、ノートを削除してから消去するまでの期間を設定できます。",
"erase_notes_after": "ノートを消去する間隔:",
"manual_erasing_description": "手動で消去をトリガーすることもできます (上記で定義したタイムアウトを考慮せずに):",
"note_erasure_timeout_title": "削除されたノート",
"erase_notes_after": "ノートを削除するまでの期間",
"manual_erasing_description": "上記のタイムアウト設定を無視して、手動で削除を実行する。",
"erase_deleted_notes_now": "削除したノートを今すぐ消去",
"deleted_notes_erased": "削除されたノートは消去されました。"
"deleted_notes_erased": "削除されたノートは消去されました。",
"description": "削除されたノートは、最初は削除済みとしてマークされるだけで最近の変更から復元できます。一定期間が経過すると、完全に削除されます。",
"erase_notes_after_description": "削除されたノートが完全に削除されるまでの時間。"
},
"revisions_snapshot_interval": {
"note_revisions_snapshot_interval_title": "ノートの変更履歴の記録間隔",
"note_revisions_snapshot_description": "ノートの変更履歴の記録間隔は、そのノートに対して新しい変更が作成されるまでの時間です。詳細については、<doc>wiki</doc> をご覧ください。",
"snapshot_time_interval_label": "ノートの変更履歴が記憶される時間:"
"snapshot_time_interval_label": "スナップショットの間隔",
"note_revisions_snapshot_description_short": "新しいノートの変更履歴が作成されるまでの時間。"
},
"revisions_snapshot_limit": {
"note_revisions_snapshot_limit_title": "ノートの変更履歴の記録制限",
"note_revisions_snapshot_limit_description": "ノートの変更履歴の記録制限とは、各ノートに保存できる変更履歴の最大数を指します。-1 は制限なし、0 はすべての変更履歴を削除することを意味します。#versioningLimit ラベルを使用して、1 つのノートの最大変更数を設定できます。",
"snapshot_number_limit_label": "ノートの変更履歴の記録数の制限:",
"snapshot_number_limit_label": "最大変更履歴数",
"snapshot_number_limit_unit": "スナップショット",
"erase_excess_revision_snapshots": "余分な変更履歴を今すぐ消去",
"erase_excess_revision_snapshots_prompt": "余分な変更履歴が消去されました。"
"erase_excess_revision_snapshots_prompt": "余分な変更履歴が消去されました。",
"note_revisions_snapshot_limit_description_short": "ノートごとの最大変更履歴数。無制限の場合は -1、無効にする場合は 0 を指定してください。",
"erase_excess_revision_snapshots_description": "すべてのノートで、制限を超えた変更履歴を削除します。"
},
"editability_select": {
"note_is_read_only": "ノートは読み取り専用ですが、ボタンをクリックすると編集できます。",
@@ -1829,7 +1852,7 @@
"note_detail": {
"could_not_find_typewidget": "タイプ {{type}} の typeWidget が見つかりませんでした",
"printing": "印刷中です...",
"printing_pdf": "PDF へのエクスポート中です...",
"printing_pdf": "印刷プレビューを準備中...",
"print_report_title": "レポートを印刷",
"print_report_collection_content_other": "コレクション内の {{count}} 件のノートは、サポートされていないか保護されているため、印刷できませんでした。",
"print_report_collection_details_button": "詳細を見る",
@@ -1849,7 +1872,9 @@
"entrypoints": {
"note-revision-created": "ノートの改訂版が作成されました。",
"sql-error": "SQL クエリの実行中にエラーが発生しました: {{message}}",
"note-executed": "ノートが実行されました。"
"note-executed": "ノートが実行されました。",
"save-named-revision-title": "名前を付けて変更履歴を保存",
"save-named-revision-message": "この変更履歴の名前を入力してください(名前なしの場合は空欄のままにしてください):"
},
"branches": {
"cannot-move-notes-here": "ここにノートを移動することはできません。",
@@ -1941,7 +1966,9 @@
"related_code_notes": "コードノートの配色",
"ui": "ユーザーインターフェース",
"ui_old_layout": "旧レイアウト",
"ui_new_layout": "新しいレイアウト"
"ui_new_layout": "新しいレイアウト",
"ui_layout_style": "レイアウトスタイル",
"ui_layout_orientation": "ランチャーバーの方向"
},
"units": {
"percentage": "%"
@@ -2113,7 +2140,19 @@
"code_note_switcher": "言語モードを変更",
"backlinks_other": "{{count}} バックリンク",
"attachments_other": "{{count}} 件の添付ファイル",
"note_paths_other": "{{count}} 個のパス"
"note_paths_other": "{{count}} 個のパス",
"tab_width": "タブ幅: {{width}}",
"tab_width_title": "タブ幅を変更",
"tab_width_spaces": "{{count}} スペース",
"tab_width_spaces_short": "スペース: {{width}}",
"tab_width_tabs": "タブ: {{width}}",
"tab_width_use_default": "デフォルトを使用 ({{width}})",
"tab_width_use_default_style": "デフォルトを使用 ({{style}})",
"tab_width_display_header": "表示幅",
"tab_width_reindent_header": "コンテンツのインデントを再設定",
"tab_width_style_header": "インデントを使用",
"tab_width_style_spaces": "スペース",
"tab_width_style_tabs": "タブ"
},
"breadcrumb": {
"hoisted_badge": "ホイスト",
@@ -2272,7 +2311,8 @@
"note_context_disabled": "クリックして現在のノートをコンテキストに含める",
"no_provider_message": "AI プロバイダーが設定されていません。チャットを開始するには、プロバイダーを追加してください。",
"add_provider": "AI プロバイダーを追加",
"sources_summary": "{{count}} 件のソースを {{sites}} サイトから取得"
"sources_summary": "{{count}} 件のソースを {{sites}} サイトから取得",
"stop": "停止"
},
"sidebar_chat": {
"title": "AI チャット",
@@ -2336,7 +2376,11 @@
"web_search": "Web 検索",
"note_in_parent": "<Note/> を <Parent/>",
"get_attachment": "添付ファイルを取得",
"get_attachment_content": "添付ファイルの内容を読み取る"
"get_attachment_content": "添付ファイルの内容を読み取る",
"rename_note": "ノート名を変更",
"delete_note": "ノートを削除",
"move_note": "ノートを移動",
"clone_note": "ノートをクローン"
}
},
"ocr": {
@@ -2354,5 +2398,126 @@
"processing_complete": "OCR 処理が完了しました。",
"text_filtered_low_confidence": "OCR は {{confidence}}% の信頼度でテキストを検出しましたが、最小しきい値が {{threshold}}% であるため、破棄されました。",
"open_media_settings": "設定を開く"
},
"database": {
"title": "データベース"
},
"search": {
"title": "検索",
"fuzzy_matching_label": "検索時の入力ミス許容度",
"fuzzy_matching_description": "クイック検索とフル検索に影響します。完全一致しない場合でも類似語を検索します。",
"autocomplete_fuzzy_label": "オートコンプリート時の入力ミス許容度",
"autocomplete_fuzzy_description": "ノートへのジャンプとノートの選択に影響します。処理速度は低下しますが、入力ミスを許容します。"
},
"text_editor": {
"title": "エディター"
},
"link": {
"failed_to_open": "'{{- href}}' のリンクを開けなせんでした: {{- message}}"
},
"print_preview": {
"title": "印刷プレビュー",
"close": "閉じる",
"save": "PDF として保存",
"orientation": "向き",
"portrait": "縦向き",
"landscape": "横向き",
"page_size": "ページサイズ",
"scale": "縮尺",
"margins": "余白",
"render_error": "現在の設定では PDF を生成できません。余白と縮尺を確認してください。",
"margins_default": "デフォルト",
"margins_none": "なし",
"margins_minimum": "最小",
"margins_custom": "カスタム",
"margin_top": "上",
"margin_right": "右",
"margin_bottom": "下",
"margin_left": "左",
"page_ranges": "ページ",
"page_ranges_hint": "全ページを印刷する場合は空欄のままにしてください。",
"page_ranges_invalid": "無効な形式です。例: 1-5, 8, 11-13 のように指定してください。",
"page_ranges_placeholder": "例: 1-5, 8, 11-13",
"print": "印刷",
"export_pdf": "PDF としてエクスポート",
"system_print": "システムダイアログを使用して印刷",
"destination": "出力先",
"destination_pdf": "PDF として保存",
"destination_printers": "プリンター",
"destination_default": "デフォルト"
},
"revisions": {
"note_revisions": "ノートの変更履歴",
"delete_all_revisions": "このノートのすべての変更履歴を削除",
"delete_all_button": "すべての変更履歴を削除",
"help_title": "ノートの変更履歴に関するヘルプ",
"confirm_delete_all": "このノートのすべての変更履歴を削除しますか?",
"no_revisions": "このノートにはまだ変更履歴がありません...",
"restore_button": "復元",
"diff_on": "差分を表示",
"diff_off": "内容を表示",
"diff_on_hint": "クリックしてノートのソース差分を表示",
"diff_off_hint": "クリックしてノートの内容を表示",
"diff_not_available": "差分は利用できません。",
"confirm_restore": "この変更履歴を復元しますか? 復元すると、ノートの現在のタイトルと内容がこの変更履歴で上書きされます。",
"delete_button": "削除",
"confirm_delete": "この変更履歴を削除しますか?",
"revisions_deleted": "ノートの変更履歴が削除されました。",
"revision_restored": "ノートの変更履歴が復元されました。",
"revision_deleted": "ノートの変更履歴が削除されました。",
"snapshot_interval": "ノートの変更履歴スナップショット間隔: {{seconds}} 秒。",
"maximum_revisions": "ノートの変更履歴スナップショット制限: {{number}}。",
"settings": "ノートの変更履歴設定",
"download_button": "ダウンロード",
"mime": "MIME: ",
"file_size": "ファイルサイズ:",
"preview_not_available": "このノートタイプではプレビューは利用できません。",
"highlight_changes": "変更箇所をハイライト",
"save_revision_now": "今すぐ変更履歴を保存",
"save_named_revision": "名前を付けた変更履歴を保存...",
"snapshot_header": "ノートの変更履歴スナップショット",
"snapshot_interval_value": "間隔: {{seconds}} 秒",
"snapshot_limit_value": "制限: {{number}}",
"menu_tooltip": "変更履歴オプション",
"save_revision": "変更履歴を保存",
"save_revision_tooltip": "現在のノートのスナップショットを手動で保存",
"description_placeholder": "この変更履歴に名前を付ける",
"revision_saved": "ノートの変更履歴が保存されました。",
"edit_description": "名前を編集",
"description_updated": "変更履歴名が更新されました。",
"source_auto": "自動保存",
"source_manual": "手動保存",
"source_etapi": "ETAPI",
"source_llm": "LLM",
"source_restore": "復元",
"source_unknown": "スナップショット",
"date_today": "今日",
"date_yesterday": "昨日",
"date_this_week": "今週",
"date_this_month": "今月",
"source_description_auto": "システムにより定期的に自動保存",
"source_description_manual": "ユーザーにより手動保存",
"source_description_etapi": "外部 Trilium API 経由で作成",
"source_description_llm": "AI アシスタントにより作成",
"source_description_restore": "以前の変更履歴を復元する前に保存しました",
"source_description_unknown": "ソースが利用できません"
},
"revisions_snapshot": {
"title": "ノートの変更履歴"
},
"launcher_button_context_menu": {
"remove_from_launch_bar": "ランチャーバーから削除"
},
"display_mode": {
"source": "ソースビュー",
"split": "分割ビュー",
"preview": "プレビュー"
},
"auto_link_attribute_list": {
"title": "システム属性"
},
"common": {
"save": "保存",
"cancel": "キャンセル"
}
}

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Trilium Notes에 대해서",
"homepage": "홈페이지:",
"app_version": "앱 버전:",
"db_version": "DB 버전:",
"sync_version": "동기화 버전:",
"build_date": "빌드 날짜:",
"build_revision": "빌드 리비전:",
"data_directory": "데이터 경로:"
},
"toast": {
@@ -100,9 +93,6 @@
"no_note_to_delete": "삭제되는 노트가 없습니다 (클론만 삭제됩니다).",
"broken_relations_to_be_deleted": "다음 관계가 끊어지고 삭제됩니다({{ relationCount}})",
"cancel": "취소",
"ok": "OK",
"deleted_relation_text": "삭제 예정인 노트 {{- note}} (은)는 {{- source}}에서 시작된 관계 {{- relation}}에 의해 참조되고 있습니다.",
"delete_notes_preview": "노트 미리보기 삭제",
"close": "닫기",
"delete_all_clones_description": "모든 복제본 삭제(최근 변경 사항에서 되돌릴 수 있습니다)"
},

View File

@@ -1,13 +1,6 @@
{
"about": {
"title": "Om Trilium Notes",
"app_version": "App versjon:",
"db_version": "DB versjon:",
"sync_version": "Synk versjon:",
"build_date": "Byggdato:",
"build_revision": "Bygg versjon:",
"data_directory": "Datamappe:",
"homepage": "Hjemmeside:"
"data_directory": "Datamappe:"
},
"experimental_features": {
"new_layout_description": "Prøv det nye grensesnittet for et mer moderne utseende og forbedret brukervenlighet. Det må påregnes betydelige endringer i kommende versjoner."
@@ -39,8 +32,7 @@
},
"delete_notes": {
"close": "Lukk",
"cancel": "Avbryt",
"ok": "OK"
"cancel": "Avbryt"
},
"export": {
"close": "Lukk",

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Over Trilium Notes",
"homepage": "Homepagina:",
"app_version": "App versie:",
"db_version": "DB Versie:",
"sync_version": "Sync Versie:",
"build_date": "Build datum:",
"build_revision": "Build revisie:",
"data_directory": "Gegevensmap:"
},
"toast": {

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "O Trilium Notes",
"homepage": "Strona domowa:",
"app_version": "Wersja aplikacji:",
"db_version": "Wersja bazy danych:",
"sync_version": "Wersja synchronizacji:",
"build_date": "Data kompilacji:",
"build_revision": "Rewizja:",
"data_directory": "Katalog danych:"
},
"toast": {
@@ -78,15 +71,12 @@
"delete_notes": {
"cancel": "Anuluj",
"close": "Zamknij",
"delete_notes_preview": "Podgląd usuwania notatek",
"delete_all_clones_description": "Usuń również wszystkie klony (można cofnąć w oknie Ostatnie zmiany)",
"erase_notes_description": "Normalne (miękkie) usuwanie jedynie oznacza notatki jako usunięte i można je przywrócić (w oknie Ostatnie zmiany) przez pewien czas. Zaznaczenie tej opcji spowoduje natychmiastowe wymazanie notatek i nie będzie możliwe ich przywrócenie.",
"erase_notes_warning": "Wymaż notatki trwale (nie można cofnąć), w tym wszystkie klony. Wymusi to przeładowanie aplikacji.",
"notes_to_be_deleted": "Następujące notatki zostaną usunięte ({{notesCount}})",
"no_note_to_delete": "Żadna notatka nie zostanie usunięta (tylko klony).",
"broken_relations_to_be_deleted": "Następujące relacje zostaną zerwane i usunięte ({{ relationCount}})",
"ok": "OK",
"deleted_relation_text": "Notatka {{- note}} (do usunięcia) jest powiązana relacją {{- relation}} pochodzącą z {{- source}}."
"broken_relations_to_be_deleted": "Następujące relacje zostaną zerwane i usunięte ({{ relationCount}})"
},
"export": {
"close": "Zamknij",
@@ -798,33 +788,6 @@
"undelete_link": "przywróć",
"confirm_undelete": "Czy chcesz przywrócić tę notatkę i jej pod-notatki?"
},
"revisions": {
"note_revisions": "Wersje notatki",
"delete_all_revisions": "Usuń wszystkie wersje tej notatki",
"delete_all_button": "Usuń wszystkie wersje",
"help_title": "Pomoc dotycząca wersji notatki",
"confirm_delete_all": "Czy chcesz usunąć wszystkie wersje tej notatki?",
"no_revisions": "Brak wersji dla tej notatki...",
"restore_button": "Przywróć",
"diff_on": "Pokaż różnice",
"diff_off": "Pokaż treść",
"diff_on_hint": "Kliknij, aby pokazać różnice w źródle notatki",
"diff_off_hint": "Kliknij, aby pokazać treść notatki",
"diff_not_available": "Różnice nie są dostępne.",
"confirm_restore": "Czy chcesz przywrócić tę wersję? Spowoduje to nadpisanie obecnego tytułu i treści notatki tą wersją.",
"delete_button": "Usuń",
"confirm_delete": "Czy chcesz usunąć tę wersję?",
"revisions_deleted": "Wersje notatki zostały usunięte.",
"revision_restored": "Wersja notatki została przywrócona.",
"revision_deleted": "Wersja notatki została usunięta.",
"snapshot_interval": "Interwał zrzutu wersji notatki: {{seconds}}s.",
"maximum_revisions": "Limit zrzutów wersji notatki: {{number}}.",
"settings": "Ustawienia wersji notatki",
"download_button": "Pobierz",
"mime": "MIME: ",
"file_size": "Rozmiar pliku:",
"preview_not_available": "Podgląd nie jest dostępny dla tego typu notatki."
},
"sort_child_notes": {
"sort_children_by": "Sortuj elementy podrzędne według...",
"sorting_criteria": "Kryteria sortowania",
@@ -1320,7 +1283,6 @@
},
"database_integrity_check": {
"title": "Sprawdzanie integralności bazy danych",
"description": "To sprawdzi, czy baza danych nie jest uszkodzona na poziomie SQLite. Może to zająć trochę czasu, w zależności od rozmiaru bazy danych.",
"check_button": "Sprawdź integralność bazy danych",
"checking_integrity": "Sprawdzanie integralności bazy danych...",
"integrity_check_succeeded": "Sprawdzanie integralności powiodło się - nie znaleziono problemów.",
@@ -1352,10 +1314,7 @@
"note_tree_font": "Czcionka drzewa notatek",
"note_detail_font": "Czcionka szczegółów notatki",
"monospace_font": "Czcionka o stałej szerokości (kod)",
"note_tree_and_detail_font_sizing": "Zauważ, że rozmiar czcionki drzewa i szczegółów jest względny do ustawienia rozmiaru głównej czcionki.",
"not_all_fonts_available": "Nie wszystkie wymienione czcionki mogą być dostępne w twoim systemie.",
"apply_font_changes": "Aby zastosować zmiany czcionek, kliknij na",
"reload_frontend": "przeładuj frontend",
"generic-fonts": "Czcionki ogólne",
"sans-serif-system-fonts": "Systemowe czcionki bezszeryfowe",
"serif-system-fonts": "Systemowe czcionki szeryfowe",
@@ -1445,7 +1404,6 @@
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Limit czasu wymazywania załączników",
"attachment_auto_deletion_description": "Załączniki są automatycznie usuwane (i wymazywane), jeśli nie są już powiązane z ich notatką po określonym czasie.",
"erase_attachments_after": "Wymaż nieużywane załączniki po:",
"manual_erasing_description": "Możesz również wywołać wymazywanie ręcznie (bez uwzględniania zdefiniowanego powyżej limitu czasu):",
"erase_unused_attachments_now": "Wymaż nieużywane załączniki teraz",
@@ -1457,7 +1415,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Limit czasu wymazywania notatek",
"note_erasure_description": "Usunięte notatki (oraz atrybuty, wersje...) są początkowo tylko oznaczane jako usunięte i możliwe jest ich odzyskanie z okna Ostatnie notatki. Po pewnym czasie usunięte notatki są \"wymazywane\", co oznacza, że ich zawartość nie jest już możliwa do odzyskania. To ustawienie pozwala skonfigurować długość okresu między usunięciem a wymazaniem notatki.",
"erase_notes_after": "Wymaż notatki po:",
"manual_erasing_description": "Możesz również wywołać wymazywanie ręcznie (bez uwzględniania zdefiniowanego powyżej limitu czasu):",
"erase_deleted_notes_now": "Wymaż usunięte notatki teraz",
@@ -1547,7 +1504,6 @@
"first-week-contains-first-thursday": "Pierwszy tydzień zawiera pierwszy czwartek roku",
"first-week-has-minimum-days": "Pierwszy tydzień ma minimalną liczbę dni",
"min-days-in-first-week": "Minimalna liczba dni w pierwszym tygodniu",
"first-week-info": "Pierwszy tydzień zawiera pierwszy czwartek roku bazuje na standardzie <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
"first-week-warning": "Zmiana opcji pierwszego tygodnia może spowodować duplikację istniejących notatek tygodniowych, a istniejące notatki tygodniowe nie zostaną odpowiednio zaktualizowane.",
"formatting-locale": "Format daty i liczb",
"formatting-locale-auto": "Na podstawie języka aplikacji"
@@ -1671,11 +1627,7 @@
"config_title": "Konfiguracja synchronizacji",
"server_address": "Adres instancji serwera",
"timeout": "Limit czasu synchronizacji",
"timeout_unit": "milisekund",
"proxy_label": "Serwer proxy synchronizacji (opcjonalnie)",
"note": "Uwaga",
"note_description": "Jeśli pozostawisz ustawienie proxy puste, zostanie użyte proxy systemowe (dotyczy tylko wersji desktop/electron).",
"special_value_description": "Inną wartością specjalną jest <code>noproxy</code>, która wymusza ignorowanie nawet proxy systemowego i respektuje <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"save": "Zapisz",
"help": "Pomoc",
"test_title": "Test synchronizacji",

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Sobre o Trilium Notes",
"app_version": "Versão da App:",
"homepage": "Página inicial:",
"db_version": "Versão da base de dados:",
"sync_version": "Versão de sincronização:",
"build_date": "Data de compilação:",
"build_revision": "Revisão da compilação:",
"data_directory": "Diretório de dados:"
},
"toast": {
@@ -88,7 +81,6 @@
"also_delete_note": "Também apagar a nota"
},
"delete_notes": {
"delete_notes_preview": "Apagar pré-visualização de notas",
"close": "Fechar",
"delete_all_clones_description": "Apagar também todos os clones (pode ser desfeito em alterações recentes)",
"erase_notes_description": "Apagar normal (suave) apenas marca as notas como apagadas, permitindo que sejam recuperadas (no diálogo de alterações recentes) num período. Se esta opção for marcada, as notas serão apagadas imediatamente e não será possível restaurá-las.",
@@ -96,9 +88,7 @@
"notes_to_be_deleted": "As seguintes notas serão apagadas ({{notesCount}})",
"no_note_to_delete": "Nenhuma nota será apagada (apenas os clones).",
"broken_relations_to_be_deleted": "As seguintes relações serão quebradas e apagadas ({{ relationCount}})",
"cancel": "Cancelar",
"ok": "OK",
"deleted_relation_text": "A nota {{- note}} (a ser apagada) está referenciada pela relação {{- relation}} originada de {{- source}}."
"cancel": "Cancelar"
},
"export": {
"export_note_title": "Exportar nota",
@@ -270,33 +260,6 @@
"undelete_link": "Restaurar",
"confirm_undelete": "Deseja restaurar esta nota e as suas subnotas?"
},
"revisions": {
"note_revisions": "Versões da nota",
"delete_all_revisions": "Apagar todas as versões desta nota",
"delete_all_button": "Apagar todas as versões",
"help_title": "Ajuda sobre as versões da nota",
"confirm_delete_all": "Quer apagar todas as versões desta nota?",
"no_revisions": "Ainda não há versões para esta nota...",
"restore_button": "Recuperar",
"confirm_restore": "Deseja restaurar esta versão? Isto irá substituir o título e o conteúdo atuais da nota por esta versão.",
"delete_button": "Apagar",
"confirm_delete": "Deseja apagar esta versão?",
"revisions_deleted": "As versões da nota foram removidas.",
"revision_restored": "A versão da nota foi restaurada.",
"revision_deleted": "A versão da nota foi apagada.",
"snapshot_interval": "Intervalo de captura das versões da nota: {{seconds}}s.",
"maximum_revisions": "Limite de capturas das versões da nota: {{number}}.",
"settings": "Configurações de versões da nota",
"download_button": "Descarregar",
"mime": "MIME: ",
"file_size": "Tamanho do ficheiro:",
"preview_not_available": "A visualização não está disponível para este tipo de nota.",
"diff_on": "Mostrar diferenças",
"diff_off": "Mostrar conteúdos",
"diff_on_hint": "Carregar para mostrar diferenças da fonte da nota",
"diff_off_hint": "Carregar para mostrar conteúdos da nota",
"diff_not_available": "Diferenças não disponível."
},
"sort_child_notes": {
"sort_children_by": "Ordenar notas filhas por...",
"sorting_criteria": "Critérios de ordenação",
@@ -1091,7 +1054,6 @@
},
"database_integrity_check": {
"title": "Verificação de Integridade da Base de Dados",
"description": "Isto verificará se a base de dados não está corrompida no nível SQLite. Pode levar algum tempo, dependendo do tamanho da base de dados.",
"check_button": "Verificar integridade da base de dados",
"checking_integrity": "A verificar integridade da base de dados…",
"integrity_check_succeeded": "Verificação de integridade bem sucedida - nenhum problema encontrado.",
@@ -1123,10 +1085,7 @@
"note_tree_font": "Fonte da Árvore de Notas",
"note_detail_font": "Fonte Padrão da Nota",
"monospace_font": "Fonte Monospace (código)",
"note_tree_and_detail_font_sizing": "Note que o tamanho da fonte da árvore e dos pormenores é relativo à configuração principal do tamanho de fonte.",
"not_all_fonts_available": "Nem todas as fontes listadas podem estar disponíveis no seu sistema.",
"apply_font_changes": "Para aplicar as alterações de fonte, clique em",
"reload_frontend": "recarregar frontend",
"generic-fonts": "Fontes genéricas",
"sans-serif-system-fonts": "Fontes sem serifa de sistema",
"serif-system-fonts": "Fontes serifadas de sistema",
@@ -1216,7 +1175,6 @@
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Tempo Limite para Apagar um Anexo",
"attachment_auto_deletion_description": "Os anexos são automaticamente apagados (e apagados) se já não forem referenciados pela sua nota após um tempo definido.",
"erase_attachments_after": "Apagar anexos não utilizados após:",
"manual_erasing_description": "Também pode ativar a apagar manualmente (sem considerar o timeout definido acima):",
"erase_unused_attachments_now": "Apagar anexos não utilizados agora",
@@ -1228,7 +1186,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Tempo Limite para Apagar uma Nota",
"note_erasure_description": "Notas apagadas (e atributos, revisões...) inicialmente são apenas marcadas como apagadas e é possível recuperá-las a partir do diálogo de Notas Recentes. Depois de um tempo, as notas apagadas são \"apagadas\", o que significa que o seu conteúdo já não é recuperável. Esta configuração permite configurar o período entre apagar e apagar a nota.",
"erase_notes_after": "Apagar notas após:",
"manual_erasing_description": "Também pode ativar a apagar manualmente (sem considerar o timeout definido acima):",
"erase_deleted_notes_now": "Apagar as notas apagadas agora",
@@ -1313,7 +1270,6 @@
"first-week-contains-first-thursday": "Primeira semana que contenha a primeira quinta-feira do ano",
"first-week-has-minimum-days": "Primeira semana que contenha um mínimo de dias",
"min-days-in-first-week": "Mínimo de dias da primeira semana",
"first-week-info": "Primeira semana que contenha a primeira Quinta-feira do ano é baseado na <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
"first-week-warning": "Alterar as opções de primeira semana pode causar duplicidade nas Notas Semanais existentes e estas Notas não serão atualizadas de acordo.",
"formatting-locale": "Formato de data e número",
"tuesday": "Terça-feira",
@@ -1441,11 +1397,7 @@
"config_title": "Configuração da Sincronização",
"server_address": "Endereço da instância do Servidor",
"timeout": "Tempo limite da sincronização",
"timeout_unit": "milisegundos",
"proxy_label": "Servidor proxy para sincronização (opcional)",
"note": "Nota",
"note_description": "Se deixar a configuração de proxy em branco, o proxy do sistema será usado (aplica-se apenas à versão desktop/Electron).",
"special_value_description": "Outro valor especial é <code>noproxy</code>, que força a ignorar até mesmo o proxy do sistema e respeita <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"save": "Gravar",
"help": "Ajuda",
"test_title": "Teste de Sincronização",

View File

@@ -7,13 +7,6 @@
"copy_title": "Copiar para a área de transferência"
},
"about": {
"title": "Sobre o Trilium Notes",
"homepage": "Página inicial:",
"app_version": "Versão do App:",
"db_version": "Versão do banco de dados:",
"sync_version": "Versão de sincronização:",
"build_date": "Data de compilação:",
"build_revision": "Revisão da compilação:",
"data_directory": "Diretório de dados:"
},
"toast": {
@@ -94,7 +87,6 @@
"also_delete_note": "Também excluir a nota"
},
"delete_notes": {
"delete_notes_preview": "Excluir pré-visualização de notas",
"close": "Fechar",
"delete_all_clones_description": "Excluir também todos os clones (pode ser desfeito em alterações recentes)",
"erase_notes_description": "A exclusão normal (suave) apenas marca as notas como excluídas, permitindo que sejam recuperadas (no diálogo de alterações recentes) dentro de um período de tempo. Se esta opção for marcada, as notas serão apagadas imediatamente e não será possível restaurá-las.",
@@ -102,9 +94,7 @@
"notes_to_be_deleted": "As seguintes notas serão excluídas ({{notesCount}})",
"no_note_to_delete": "Nenhuma nota será excluída (apenas os clones).",
"broken_relations_to_be_deleted": "As seguintes relações serão quebradas e excluídas ({{ relationCount}})",
"cancel": "Cancelar",
"ok": "OK",
"deleted_relation_text": "A nota {{- note}} (a ser excluída) está referenciada pela relação {{- relation}} originada de {{- source}}."
"cancel": "Cancelar"
},
"export": {
"export_note_title": "Exportar nota",
@@ -276,33 +266,6 @@
"undelete_link": "Restaurar",
"confirm_undelete": "Você deseja restaurar esta nota e suas subnotas?"
},
"revisions": {
"note_revisions": "Versões da nota",
"delete_all_revisions": "Excluir todas as versões desta nota",
"delete_all_button": "Excluir todas as versões",
"help_title": "Ajuda sobre as versões da nota",
"confirm_delete_all": "Você quer excluir todas as versões desta nota?",
"no_revisions": "Ainda não há versões para esta nota...",
"restore_button": "Recuperar",
"confirm_restore": "Deseja restaurar esta versão? Isso irá substituir o título e o conteúdo atuais da nota por esta versão.",
"delete_button": "Excluir",
"confirm_delete": "Deseja excluir esta versão?",
"revisions_deleted": "As versões da nota foram removidas.",
"revision_restored": "A versão da nota foi restaurada.",
"revision_deleted": "A versão da nota foi excluída.",
"snapshot_interval": "Intervalo de captura das versões da nota: {{seconds}}s.",
"maximum_revisions": "Limite de capturas das versões da nota: {{number}}.",
"settings": "Configurações de versões da nota",
"download_button": "Download",
"mime": "MIME: ",
"file_size": "Tamanho do arquivo:",
"preview_not_available": "A visualização não está disponível para este tipo de nota.",
"diff_on": "Exibir diferença",
"diff_off": "Exibir conteúdo",
"diff_on_hint": "Clique para exibir a diferença de fonte da nota",
"diff_off_hint": "Clique para exibir o conteúdo da nota",
"diff_not_available": "A diferença não está disponível."
},
"sort_child_notes": {
"sort_children_by": "Ordenar notas filhas por...",
"sorting_criteria": "Critérios de ordenação",
@@ -1141,8 +1104,7 @@
"checking_integrity": "Verificando integridade do banco de dados…",
"integrity_check_succeeded": "Verificação de integridade bem sucedida - nenhum problema encontrado.",
"integrity_check_failed": "Verificação de integridade falhou: {{results}}",
"title": "Verificação de Integridade do Banco de Dados",
"description": "Isso verificará se o banco de dados não está corrompido no nível SQLite. Pode levar algum tempo, dependendo do tamanho do banco de dados."
"title": "Verificação de Integridade do Banco de Dados"
},
"sync": {
"title": "Sincronizar",
@@ -1171,8 +1133,6 @@
"note_detail_font": "Fonte Padrão da Nota",
"monospace_font": "Fonte Monospace (código)",
"not_all_fonts_available": "Nem todas as fontes listadas podem estar disponíveis em seu sistema.",
"apply_font_changes": "Para aplicar as alterações de fonte, clique em",
"reload_frontend": "recarregar frontend",
"generic-fonts": "Fontes genéricas",
"sans-serif-system-fonts": "Fontes sem serifa de sistema",
"serif-system-fonts": "Fontes serifadas de sistema",
@@ -1181,8 +1141,7 @@
"serif": "Serifa",
"sans-serif": "Sem Serifa",
"monospace": "Monoespaçado",
"system-default": "Padrão do Sistema",
"note_tree_and_detail_font_sizing": "Note que o tamanho da fonte da árvore e dos detalhes é relativo à configuração principal do tamanho de fonte."
"system-default": "Padrão do Sistema"
},
"max_content_width": {
"title": "Largura do Conteúdo",
@@ -1292,7 +1251,6 @@
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Tempo Limite para Exclusão de um Anexo",
"attachment_auto_deletion_description": "Os anexos são automaticamente excluídos (e apagados) se não forem mais referenciados por sua nota após um tempo definido.",
"erase_attachments_after": "Apagar anexos não utilizados após:",
"manual_erasing_description": "Você também pode ativar a exclusão manualmente (sem considerar o timeout definido acima):",
"erase_unused_attachments_now": "Apagar anexos não utilizados agora",
@@ -1304,7 +1262,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Tempo Limite para Exclusão de uma Nota",
"note_erasure_description": "Notas excluídas (e atributos, revisões...) inicialmente são apenas marcadas como excluídas e é possível recuperá-las a partir do diálogo de Notas Recentes. Depois de um tempo, as notas excluídas são \"apagadas\", o que significa que seu conteúdo não é mais recuperável. Esta configuração permite configurar o período entre excluir e apagar a nota.",
"erase_notes_after": "Apagar notas após:",
"manual_erasing_description": "Você também pode ativar a exclusão manualmente (sem considerar o timeout definido acima):",
"erase_deleted_notes_now": "Apague as notas excluídas agora",
@@ -1389,7 +1346,6 @@
"first-week-contains-first-thursday": "Primeira semana que contenha a primeira quinta-feira do ano",
"first-week-has-minimum-days": "Primeira semana contendo um mínimo de dias",
"min-days-in-first-week": "Mínimo de dias da primeira semana",
"first-week-info": "Primeira semana que contenha a primeira Quinta-feira do ano é baseado na <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
"first-week-warning": "Alterar as opções de primeira semana pode causar duplicidade nas Notas Semanais existentes e estas Notas não serão atualizadas de acordo.",
"formatting-locale": "Formato de data e número",
"tuesday": "Terça-feira",
@@ -1950,11 +1906,7 @@
"config_title": "Configuração da Sincronização",
"server_address": "Endereço da instância do Servidor",
"timeout": "Tempo limite da sincronização",
"timeout_unit": "milisegundos",
"proxy_label": "Servidor proxy para sincronização (opcional)",
"note": "Nota",
"note_description": "Se você deixar a configuração de proxy em branco, o proxy do sistema será usado (aplica-se apenas à versão desktop/Electron).",
"special_value_description": "Outro valor especial é <code>noproxy</code>, que força a ignorar até mesmo o proxy do sistema e respeita <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"save": "Salvar",
"help": "Ajuda",
"test_title": "Teste de Sincronização",

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Despre Trilium Notes",
"homepage": "Site web:",
"app_version": "Versiune aplicație:",
"db_version": "Versiune bază de date:",
"sync_version": "Versiune sincronizare:",
"build_date": "Data compilării:",
"build_revision": "Revizia compilării:",
"data_directory": "Directorul de date:"
},
"abstract_bulk_action": {
@@ -74,7 +67,6 @@
"will_be_deleted_soon": "Acest atașament va fi șters automat în curând"
},
"attachment_erasure_timeout": {
"attachment_auto_deletion_description": "Atașamentele se șterg automat (permanent) dacă nu sunt referențiate de către notița lor părinte după un timp prestabilit de timp.",
"attachment_erasure_timeout": "Perioadă de ștergere a atașamentelor",
"erase_attachments_after": "Șterge atașamentele neutilizate după:",
"erase_unused_attachments_now": "Elimină atașamentele șterse acum",
@@ -433,7 +425,6 @@
"database_integrity_check": {
"check_button": "Verifică integritatea bazei de date",
"checking_integrity": "Se verifică integritatea bazei de date...",
"description": "Se va verifica să nu existe coruperi ale bazei de date la nivelul SQLite. Poate dura ceva timp, în funcție de dimensiunea bazei de date.",
"integrity_check_failed": "Probleme la verificarea integrității: {{results}}",
"integrity_check_succeeded": "Verificarea integrității a fost făcută cu succes și nu a fost identificată nicio problemă.",
"title": "Verificarea integrității bazei de date"
@@ -459,13 +450,10 @@
"broken_relations_to_be_deleted": "Următoarele relații vor fi întrerupte și șterse ({{ relationCount}})",
"cancel": "Anulează",
"delete_all_clones_description": "Șterge și toate clonele (se pot recupera în ecranul Schimbări recente)",
"delete_notes_preview": "Previzualizare ștergerea notițelor",
"erase_notes_description": "Ștergerea obișnuită doar marchează notițele ca fiind șterse și pot fi recuperate (în ecranul Schimbări recente) pentru o perioadă de timp. Dacă se bifează această opțiune, notițele vor fi șterse imediat fără posibilitatea de a le recupera.",
"erase_notes_warning": "Șterge notițele permanent (nu se mai pot recupera), incluzând toate clonele. Va forța reîncărcarea aplicației.",
"no_note_to_delete": "Nicio notiță nu va fi ștearsă (doar clonele).",
"notes_to_be_deleted": "Următoarele notițe vor fi șterse ({{notesCount}})",
"ok": "OK",
"deleted_relation_text": "Notița {{- note}} ce va fi ștearsă este referențiată de relația {{- relation}}, originând din {{- source}}.",
"close": "Închide"
},
"delete_relation": {
@@ -578,16 +566,13 @@
"upload_success": "Noua revizie a fișierului a fost încărcată cu succes."
},
"fonts": {
"apply_font_changes": "Pentru a aplica schimbările de font, click pe",
"font_family": "Familia de fonturi",
"fonts": "Fonturi",
"main_font": "Fontul principal",
"monospace_font": "Fontul monospace (pentru cod)",
"not_all_fonts_available": "Nu toate fonturile listate aici pot fi disponibile pe acest sistem.",
"note_detail_font": "Fontul pentru detaliile notițelor",
"note_tree_and_detail_font_sizing": "Dimensiunea arborelui și a fontului pentru detalii este relativă la dimensiunea fontului principal.",
"note_tree_font": "Fontul arborelui de notițe",
"reload_frontend": "reîncarcă interfața",
"size": "Mărime",
"theme_defined": "Definit de temă",
"generic-fonts": "Fonturi generice",
@@ -718,7 +703,6 @@
"first-week-contains-first-thursday": "Prima săptămână conține prima zi de joi din an",
"first-week-has-minimum-days": "Prima săptămână are numărul minim de zile",
"min-days-in-first-week": "Numărul minim de zile pentru prima săptămână",
"first-week-info": "Opțiunea de prima săptămână conține prima zi de joi din an este bazată pe standardul <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
"first-week-warning": "Schimbarea opțiunii primei săptămâni poate cauza duplicate cu notițele săptămânale existente deoarece acestea nu vor fi actualizate retroactiv.",
"tuesday": "Marți",
"wednesday": "Miercuri",
@@ -893,7 +877,6 @@
"erase_deleted_notes_now": "Elimină notițele șterse acum",
"erase_notes_after": "Elimină notițele șterse după:",
"manual_erasing_description": "Se poate rula o eliminare manuală (fără a lua în considerare timpul definit mai sus):",
"note_erasure_description": "Notițele șterse (precum și atributele, reviziile) sunt prima oară doar marcate drept șterse și este posibil să fie recuperate din ecranul Notițe recente. După o perioadă de timp, notițele șterse vor fi „eliminate”, caz în care conținutul lor nu se poate recupera. Această setare permite configurarea duratei de timp dintre ștergerea și eliminarea notițelor.",
"note_erasure_timeout_title": "Timpul de eliminare automată a notițelor șterse"
},
"note_info_widget": {
@@ -1093,33 +1076,6 @@
"rename_relation_from": "Redenumește relația din",
"to": "În"
},
"revisions": {
"confirm_delete": "Doriți ștergerea acestei revizii?",
"confirm_delete_all": "Doriți ștergerea tuturor reviziilor acestei notițe?",
"confirm_restore": "Doriți restaurarea acestei revizii? Acest lucru va suprascrie titlul și conținutul curent cu cele ale acestei revizii.",
"delete_all_button": "Șterge toate reviziile",
"delete_all_revisions": "Șterge toate reviziile acestei notițe",
"delete_button": "Şterge",
"download_button": "Descarcă",
"file_size": "Dimensiune fișier:",
"help_title": "Informații despre reviziile notițelor",
"mime": "MIME: ",
"no_revisions": "Nu există încă nicio revizie pentru această notiță...",
"note_revisions": "Revizii ale notiței",
"preview_not_available": "Nu este disponibilă o previzualizare pentru acest tip de notiță.",
"restore_button": "Restaurează",
"revision_deleted": "Revizia notiței a fost ștearsă.",
"revision_restored": "Revizia notiței a fost restaurată.",
"revisions_deleted": "Notița reviziei a fost ștearsă.",
"maximum_revisions": "Numărul maxim de revizii pentru notița curentă: {{number}}.",
"settings": "Setări revizii ale notițelor",
"snapshot_interval": "Intervalul de creare a reviziilor pentru notițe: {{seconds}}s.",
"diff_on": "Evidențiază diferențele",
"diff_off": "Afișează conținutul",
"diff_on_hint": "Clic pentru a afișa diferențele față de revizia anterioară, la nivel de cod sursă",
"diff_off_hint": "Clic pentru a afișa întregul conținut al reviziei",
"diff_not_available": "Diferențele nu pot fi evidențiate."
},
"revisions_button": {
"note_revisions": "Revizii ale notiței"
},
@@ -1257,17 +1213,13 @@
"config_title": "Configurația sincronizării",
"handshake_failed": "Comunicarea cu serverul de sincronizare a eșuat, eroare: {{message}}",
"help": "Informații",
"note": "Notiță",
"note_description": "Dacă lăsați câmpul de proxy necompletat, proxy-ul de sistem va fi utilizat (se aplică doar pentru aplicația desktop).",
"proxy_label": "Server-ul proxy utilizat pentru sincronizare (opțional)",
"save": "Salvează",
"server_address": "Adresa instanței de server",
"special_value_description": "O altă valoare specială este <code>noproxy</code> ce ignoră proxy-ul de sistem și respectă <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"test_button": "Probează sincronizarea",
"test_description": "Această opțiune va testa conexiunea și comunicarea cu serverul de sincronizare. Dacă serverul de sincronizare nu este inițializat, acest lucru va rula și o sincronizare cu documentul local.",
"test_title": "Probează sincronizarea",
"timeout": "Timp limită de sincronizare",
"timeout_unit": "milisecunde"
"timeout": "Timp limită de sincronizare"
},
"table_of_contents": {
"description": "Cuprinsul va apărea în notițele de tip text atunci când notița are un număr de titluri mai mare decât cel definit. Acest număr se poate personaliza:",

View File

@@ -1,13 +1,6 @@
{
"about": {
"app_version": "Версия приложения:",
"db_version": "Версия базы данных:",
"sync_version": "Версия синхронизации:",
"build_date": "Дата сборки:",
"build_revision": "Номер сборки:",
"data_directory": "Каталог с данными:",
"title": "О Trilium Notes",
"homepage": "Домашняя страница:"
"data_directory": "Каталог с данными:"
},
"toast": {
"critical-error": {
@@ -77,21 +70,28 @@
},
"delete_notes": {
"close": "Закрыть",
"erase_notes_description": "Обычное (мягкое) удаление только отмечает заметки как удалённые, и их можно восстановить (в диалоговом окне последних изменений) в течение определённого времени. Если выбрать этот параметр, заметки будут удалены немедленно, и восстановить их будет невозможно.",
"erase_notes_description": "Стереть заметки немедленно вместо мягкого удаления. Это действие необратимо и вызовет перезагрузку приложения.",
"delete_all_clones_description": "Удалить также все клоны (можно отменить в последних изменениях)",
"erase_notes_warning": "Удалить заметки без возможности восстановления, включая все клоны. Это приведёт к принудительной перезагрузке приложения.",
"notes_to_be_deleted": "Следующие заметки будут удалены ({{notesCount}})",
"notes_to_be_deleted": "Заметки, подлежащие удалению ({{notesCount}})",
"no_note_to_delete": "Заметка не будет удалена (только клоны).",
"broken_relations_to_be_deleted": "Следующие отношения будут разорваны и удалены ({{relationCount}})",
"broken_relations_to_be_deleted": "Разорванные отношения ({{relationCount}})",
"cancel": "Отмена",
"ok": "ОК",
"deleted_relation_text": "Примечание {{- note}} (подлежит удалению) ссылается на отношение {{- relation}}, происходящее из {{- source}}.",
"delete_notes_preview": "Предпросмотр удаляемых заметок"
"title": "Удалить заметки",
"clones_label": "Клоны",
"delete_clones_description_one": "Также удалить {{count}} другой клон. Можно отменить в последних изменениях.",
"delete_clones_description_few": "Также удалить {{count}} других клона. Можно отменить в последних изменениях.",
"delete_clones_description_many": "Также удалить {{count}} других клонов. Можно отменить в последних изменениях.",
"erase_notes_label": "Стереть навсегда",
"table_note_with_relation": "Заметка с отношением",
"table_relation": "Отношение",
"table_points_to": "Указывает на (удалено)",
"delete": "Удалить"
},
"database_anonymization": {
"light_anonymization_description": "Это действие создаст новую копию базы данных и выполнит её лёгкую анонимизацию — в частности, будет удалён только контент всех заметок, но заголовки и атрибуты останутся. Кроме того, будут сохранены пользовательские заметки, содержащие JavaScript-скрипты frontend/backend и пользовательские виджеты. Это даёт больше контекста для отладки проблем.",
"light_anonymization_description": "Создает копию с удалением содержимого заметок, но заголовками, атрибутами и пользовательскими скриптами/виджетами. Даёт больше контекста для отладки.",
"choose_anonymization": "Вы можете самостоятельно решить, хотите ли вы предоставить полностью или частично анонимизированную базу данных. Даже полностью анонимизированная база данных очень полезна, однако в некоторых случаях частично анонимизированная база данных может ускорить процесс выявления и исправления ошибок.",
"full_anonymization_description": "Это действие создаст новую копию базы данных и анонимизирует ее (удалит все содержимое заметок и оставит только структуру и некоторые неконфиденциальные метаданные) для совместного использования в Интернете в целях отладки без опасения утечки ваших личных данных.",
"full_anonymization_description": "Создает копию базы данных с удалением всего содержимого заметок, оставляя только структуру и неконфиденциальные метаданные. Безопасно для обмена в сети при отладке проблем.",
"title": "Анонимизация базы данных",
"full_anonymization": "Полная анонимизация",
"light_anonymization": "Легкая анонимизация",
@@ -139,20 +139,23 @@
"title": "Языки контента"
},
"theme": {
"theme_label": "Тема",
"theme_label": "Тема приложения",
"override_theme_fonts_label": "Переопределить шрифты темы",
"triliumnext": "Trilium (следует системной цветовой схеме)",
"triliumnext-light": "Trilium (Светлая)",
"triliumnext-dark": "Trilium (Темная)",
"title": "Тема приложения",
"triliumnext": "Использовать цветовую схему системы",
"triliumnext-light": "Светлая",
"triliumnext-dark": "Тёмная",
"title": "Пользовательский интерфейс",
"layout": "Макет",
"layout-vertical-title": "Вертикальный",
"layout-horizontal-title": "Горизонтальный",
"auto_theme": "Legacy (следует системной цветовой схеме)",
"light_theme": "Legacy (светлая)",
"dark_theme": "Legacy (темная)",
"auto_theme": "Использовать цветовую схему системы",
"light_theme": "Светлая",
"dark_theme": "Тёмная",
"layout-horizontal-description": "панель запуска находится под панелью вкладок, панель вкладок теперь занимает всю ширину.",
"layout-vertical-description": "панель запуска находится слева (по умолчанию)"
"layout-vertical-description": "панель запуска находится слева (по умолчанию)",
"modern_themes": "Современные",
"legacy_themes": "Устаревшие",
"custom_themes": "Пользовательские"
},
"tasks": {
"due": {
@@ -372,33 +375,6 @@
"deleted_notes_message": "Удаленные заметки были стерты окончательно.",
"confirm_undelete": "Вы хотите восстановить эту заметку и ее подзаметки?"
},
"revisions": {
"restore_button": "Восстановить",
"delete_button": "Удалить",
"note_revisions": "Версии заметки",
"delete_all_revisions": "Удалить все версии этой заметки",
"delete_all_button": "Удалить все версии",
"help_title": "Помощь по версиям заметок",
"confirm_delete_all": "Вы хотите удалить все версии этой заметки?",
"confirm_restore": "Хотите восстановить эту версию? Текущее название и содержание заметки будут перезаписаны этой версией.",
"confirm_delete": "Вы хотите удалить эту версию?",
"revisions_deleted": "Версии заметки были удалены.",
"revision_restored": "Версия заметки была восстановлена.",
"revision_deleted": "Версия заметки была удалена.",
"download_button": "Скачать",
"file_size": "Размер файла:",
"preview_not_available": "Предпосмотр недоступен для заметки этого типа.",
"mime": "MIME: ",
"settings": "Настройка версионирования заметок",
"no_revisions": "У этой заметки еще нет версий...",
"snapshot_interval": "Интервал создания версии заметки: {{seconds}} с.",
"maximum_revisions": "Максимальное количество версий заметки: {{number}}.",
"diff_on": "Сравнить",
"diff_off": "Показать содержимое",
"diff_on_hint": "Отобразить сравнение исходного кода заметки",
"diff_off_hint": "Отобразить контент заметки",
"diff_not_available": "Сравнение недоступно."
},
"sort_child_notes": {
"sort_children_by": "Сортировать дочерние заметки по...",
"sorting_criteria": "Критерии сортировки",
@@ -1068,7 +1044,10 @@
"expand_nth_level": "Развернуть уровни: {{depth}} шт.",
"expand_first_level": "Развернуть прямые дочерние уровни",
"expand_tooltip": "Разщвернуть дочерние элементы этой коллекции (на один уровень вложенности). Для получения дополнительных параметров нажмите стрелку справа.",
"hide_child_notes": "Скрыть дочерние заметки в дереве"
"hide_child_notes": "Скрыть дочерние заметки в дереве",
"open_all_in_tabs": "Открыть все",
"open_all_in_tabs_tooltip": "Открыть все результаты в новых вкладках",
"open_all_confirm": "Это откроет заметки ({{count}}) в новых вкладках. Продолжить?"
},
"edited_notes": {
"deleted": "(удалено)",
@@ -1239,23 +1218,24 @@
"size": "Размер",
"serif": "С засечками",
"monospace": "Моноширинный",
"main_font": "Основной шрифт",
"main_font": "Текст интерфейса",
"font_family": "Семейство шрифтов",
"reload_frontend": "перезагрузить интерфейс",
"sans-serif": "Без засечек",
"system-default": "Системный по умолчанию",
"theme_defined": "Определяется темой",
"generic-fonts": "Стандартные шрифты",
"note_tree_font": "Шрифт дерева заметок",
"note_detail_font": "Шрифт заметки",
"monospace_font": "Моноширинный шрифт (для кода)",
"note_tree_font": "Текст дерева заметок",
"note_detail_font": "Текст документа",
"monospace_font": "Моноширинный текст",
"sans-serif-system-fonts": "Системные шрифты без засечек",
"serif-system-fonts": "Системные шрифты с засечками",
"monospace-system-fonts": "Моноширинные системные шрифты",
"handwriting-system-fonts": "Шрифты системы рукописного ввода",
"note_tree_and_detail_font_sizing": "Обратите внимание, что размер шрифта дерева и детальной страницы зависит от настройки размера основного шрифта.",
"apply_font_changes": "Чтобы применить изменения шрифта, нажмите",
"not_all_fonts_available": "Не все перечисленные шрифты могут быть доступны в вашей системе."
"not_all_fonts_available": "Не все перечисленные шрифты могут быть доступны в вашей системе",
"preview": "Предпросмотр",
"monospace_font_description": "Используется для заметок кода и блоков кода",
"size_relative_to_general": "Размер относительно общего размера шрифта",
"apply_changes": "Перезагрузить, чтобы применить изменения"
},
"max_content_width": {
"max_width_unit": "пикселей",
@@ -1275,11 +1255,14 @@
"images": {
"images_section_title": "Изображения",
"max_image_dimensions_unit": "пикселей",
"download_images_automatically": "Автоматическая загрузка изображений для использования в автономном режиме.",
"download_images_description": "Вставленный HTML-код может содержать ссылки на онлайн-изображения. Trilium найдет эти ссылки и загрузит изображения, чтобы они были доступны офлайн.",
"enable_image_compression": "Включить сжатие изображений",
"max_image_dimensions": "Максимальная ширина/высота изображения (размер изображения будет изменен, если он превысит этот параметр).",
"jpeg_quality_description": "Качество JPEG (10 — худшее качество, 100 — наилучшее качество, рекомендуется 50 — 85)"
"download_images_automatically": "Автоматическая загрузка изображений",
"download_images_description": "Скачивать изображения указанные в вставленном HTML-коде, чтобы они были доступны офлайн.",
"enable_image_compression": "Сжатие изображений",
"max_image_dimensions": "Максимальные размеры изображения",
"jpeg_quality_description": "Рекомендуемый диапазон - 5085. Более низкие значения уменьшают размер файла, более высокие - сохраняют детализацию.",
"enable_image_compression_description": "Сжимать и изменять размер изображений при их загрузке или вставке.",
"max_image_dimensions_description": "Размер изображений, превышающих этот размер, будет изменен автоматически.",
"jpeg_quality": "Качество JPEG"
},
"search_engine": {
"bing": "Bing",
@@ -1325,7 +1308,6 @@
"first-week-contains-first-thursday": "Первая неделя содержит первый четверг года",
"first-week-has-minimum-days": "Первая неделя имеет минимальное количество дней",
"min-days-in-first-week": "Минимальное количество дней в первой неделе",
"first-week-info": "Первая неделя содержит первый четверг года в соответствии со стандартом <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
"first-week-warning": "Изменение параметров первой недели может привести к дублированию существующих недельных заметок, и существующие недельные заметки не будут обновлены соответствующим образом.",
"formatting-locale": "Формат даты и числа",
"formatting-locale-auto": "Выбирать на основе языка приложения",
@@ -1419,15 +1401,11 @@
"no_results": "Не найдено ярлыков, соответствующих '{{filter}}'"
},
"sync_2": {
"timeout_unit": "миллисекунд",
"note": "Заметка",
"save": "Сохранить",
"help": "Помощь",
"config_title": "Настройка синхронизации",
"server_address": "Адрес экземпляра сервера",
"proxy_label": "Прокси-сервер (необязательно)",
"note_description": "Если оставить настройки прокси-сервера пустыми, будет использоваться системный прокси-сервер (применимо только к сборкам Desktop/Electron).",
"special_value_description": "Еще одно специальное значение - <code>noproxy</code>, которое заставляет игнорировать даже системный прокси и учитывает <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"timeout": "Тайм-аут синхронизации",
"test_description": "Это проверит подключение и подтверждение связи с сервером синхронизации. Если сервер синхронизации не инициализирован, он будет настроен на синхронизацию с локальным документом.",
"test_title": "Тест синхронизации",
@@ -1578,7 +1556,7 @@
"unit": "символов",
"title": "Автоматическое переключение в режим \"только для чтения\"",
"description": "Максимальный размер заметки до переключения в режим только для чтения — это размер, после которого заметки будут отображаться в режиме «только для чтения» (из соображений производительности).",
"label": "Максимальный размер заметки до переключения в режим только для чтения (заметки с кодом)"
"label": "Максимальный размер заметки до переключения в режим только для чтения"
},
"inherited_attribute_list": {
"title": "Унаследованные атрибуты",
@@ -1636,14 +1614,16 @@
"note_already_in_diagram": "Заметка \"{{title}}\" уже есть на диаграмме.",
"connection_exists": "Связь '{{name}}' между этими заметками уже существует.",
"specify_new_relation_name": "Укажите новое имя связи (допустимые символы: буквы, цифры, двоеточие и подчеркивание):",
"start_dragging_relations": "Начните перетягивать отношения отсюда на другую заметку."
"start_dragging_relations": "Начните перетягивать отношения отсюда на другую заметку.",
"rename_relation": "Переименовать отношение"
},
"vacuum_database": {
"title": "Уменьшение размера файла базы данных",
"description": "Это приведет к перестройке базы данных, что, скорее всего, уменьшит размер её файла. Данные не будут изменены.",
"button_text": "Уменьшить размер файла базы данных",
"vacuuming_database": "Уменьшение размера файла базы данных...",
"database_vacuumed": "База данных была перестроена"
"database_vacuumed": "База данных была перестроена",
"vacuum_label": "Уменьшить размер файла базы данных"
},
"vim_key_bindings": {
"use_vim_keybindings_in_code_notes": "Сочетания клавиш Vim",
@@ -1761,17 +1741,18 @@
},
"database_integrity_check": {
"title": "Проверка целостности базы данных",
"description": "Это позволит проверить базу данных на предмет повреждений на уровне SQLite. Это может занять некоторое время в зависимости от размера базы данных.",
"check_button": "Проверить целостность базы данных",
"checking_integrity": "Проверка целостности базы данных...",
"integrity_check_succeeded": "Проверка целостности прошла успешно - проблем не обнаружено.",
"integrity_check_failed": "Проверка целостности завершена с ошибками: {{results}}"
"integrity_check_failed": "Проверка целостности завершена с ошибками: {{results}}",
"check_integrity_label": "Проверить целостность базы данных"
},
"consistency_checks": {
"find_and_fix_button": "Найти и устранить проблемы целостности",
"finding_and_fixing_message": "Поиск и устранение проблем целостности...",
"title": "Проверки целостности",
"issues_fixed_message": "Все обнаруженные проблемы с согласованностью теперь устранены."
"issues_fixed_message": "Все обнаруженные проблемы с согласованностью теперь устранены.",
"find_and_fix_label": "Найти и устранить проблемы целостности"
},
"call_to_action": {
"next_theme_message": "В настоящее время вы используете старую тему оформления. Хотите попробовать новую тему?",
@@ -1819,7 +1800,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Срок окончательного удаления заметок",
"note_erasure_description": "Удалённые заметки (и атрибуты, версии и т.д.) сначала помечаются как удалённые, и их можно восстановить из диалогового окна «Недавние заметки». По истечении определённого времени удалённые заметки «стираются», то есть их содержимое больше не подлежит восстановлению. Этот параметр позволяет настроить длительность периода между пометкой на удаление и окончательным удалением заметки.",
"erase_notes_after": "Стереть заметки после:",
"manual_erasing_description": "Вы также можете запустить стирание вручную (без учета срока, определенного выше):",
"erase_deleted_notes_now": "Окончательно удалить заметки, помеченные к удалению сейчас",
@@ -1827,7 +1807,6 @@
},
"attachment_erasure_timeout": {
"erase_unused_attachments_now": "Удалить неиспользуемые вложения прямо сейчас",
"attachment_auto_deletion_description": "Вложения автоматически удаляются, если в заметке на них больше не ссылаются по истечении определенного времени.",
"attachment_erasure_timeout": "Тайм-аут удаления вложения",
"erase_attachments_after": "Удалять неиспользуемые вложения через:",
"unused_attachments_erased": "Неиспользуемые вложения были удалены.",
@@ -2010,11 +1989,11 @@
},
"ui-performance": {
"title": "Производительность",
"enable-motion": "Включить визуальные эффекты и анимации",
"enable-shadows": "Включить тени",
"enable-backdrop-effects": "Включить эффекты размытия фона меню, всплывающих окон и панелей",
"enable-smooth-scroll": "Включить плавную прокрутку",
"app-restart-required": "(для вступления изменений в силу требуется перезапуск приложения)"
"enable-motion": "Визуальные эффекты и анимации",
"enable-shadows": "Тени",
"enable-backdrop-effects": "Эффекты размытия фона меню, всплывающих окон и панелей",
"enable-smooth-scroll": "Плавная прокрутку",
"app-restart-required": "Требуется перезапуск приложения"
},
"collections": {
"rendering_error": "Невозможно отобразить содержимое из-за ошибки."
@@ -2315,6 +2294,15 @@
"delete_provider_confirmation": "Вы уверены, что желаете удалить провайдера \"{{name}}\"?",
"api_key": "Ключ API",
"api_key_placeholder": "Введите ваш ключ API",
"cancel": "Отмена"
"cancel": "Отмена",
"tools": {
"clone_note": "Клонировать заметку",
"move_note": "Переместить заметку",
"delete_note": "Удалить заметку",
"rename_note": "Переименовать заметку"
}
},
"database": {
"title": "База данных"
}
}

View File

@@ -1,9 +1 @@
{
"about": {
"title": "Podrobnosti Trilium Notes",
"homepage": "Domača stran:",
"app_version": "Verzija aplikacije:",
"db_version": "Verzija DB:",
"sync_version": "Verzija Sync:"
}
}
{}

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "O Trilium Belеškama",
"homepage": "Početna stranica:",
"app_version": "Verzija aplikacije:",
"db_version": "Verzija baze podataka:",
"sync_version": "Verzija sinhronizacije:",
"build_date": "Datum izgradnje:",
"build_revision": "Revizija izgradnje:",
"data_directory": "Direktorijum sa podacima:"
},
"toast": {
@@ -76,7 +69,6 @@
"also_delete_note": "Takođe obriši belešku"
},
"delete_notes": {
"delete_notes_preview": "Obriši pregled beleške",
"close": "Zatvori",
"delete_all_clones_description": "Obriši i sve klonove (može biti poništeno u skorašnjim izmenama)",
"erase_notes_description": "Normalno (blago) brisanje samo označava beleške kao obrisane i one mogu biti vraćene (u dijalogu skorašnjih izmena) u određenom vremenskom periodu. Biranje ove opcije će momentalno obrisati beleške i ove beleške neće biti moguće vratiti.",
@@ -84,9 +76,7 @@
"notes_to_be_deleted": "Sledeće beleške će biti obrisane ({{- noteCount}})",
"no_note_to_delete": "Nijedna beleška neće biti obrisana (samo klonovi).",
"broken_relations_to_be_deleted": "Sledeći odnosi će biti prekinuti i obrisani ({{- relationCount}})",
"cancel": "Otkaži",
"ok": "U redu",
"deleted_relation_text": "Beleška {{- note}} (za brisanje) je referencirana sa odnosom {{- relation}} koji potiče iz {{- source}}."
"cancel": "Otkaži"
},
"export": {
"export_note_title": "Izvezi belešku",
@@ -251,28 +241,6 @@
"undelete_link": "poništi brisanje",
"confirm_undelete": "Da li želite da poništite brisanje ove beleške i njenih podbeleški?"
},
"revisions": {
"note_revisions": "Revizije beleški",
"delete_all_revisions": "Obriši sve revizije ove beleške",
"delete_all_button": "Obriši sve revizije",
"help_title": "Pomoć za Revizije beleški",
"confirm_delete_all": "Da li želite da obrišete sve revizije ove beleške?",
"no_revisions": "Još uvek nema revizija za ovu belešku...",
"restore_button": "Vrati",
"confirm_restore": "Da li želite da vratite ovu reviziju? Ovo će prepisati trenutan naslov i sadržaj beleške sa ovom revizijom.",
"delete_button": "Obriši",
"confirm_delete": "Da li želite da obrišete ovu reviziju?",
"revisions_deleted": "Revizije beleške su obrisane.",
"revision_restored": "Revizija beleške je vraćena.",
"revision_deleted": "Revizija beleške je obrisana.",
"snapshot_interval": "Interval snimanja revizije beleške: {{seconds}}s.",
"maximum_revisions": "Ograničenje broja slika revizije beleške: {{number}}.",
"settings": "Podešavanja revizija beleški",
"download_button": "Preuzmi",
"mime": "MIME: ",
"file_size": "Veličina datoteke:",
"preview_not_available": "Pregled nije dostupan za ovaj tip beleške."
},
"sort_child_notes": {
"sort_children_by": "Sortiranje podbeleški po...",
"sorting_criteria": "Kriterijum za sortiranje",

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "Om Trilium Notes",
"homepage": "Hemsida:",
"app_version": "App version:",
"db_version": "DB version:",
"sync_version": "Sync version:",
"build_date": "Bygg datum:",
"build_revision": "Bygg version:",
"data_directory": "Data sökväg:"
},
"toast": {

View File

@@ -1,13 +1,6 @@
{
"about": {
"homepage": "Anasayfa:",
"app_version": "Uygulama versiyonu:",
"db_version": "Veritabanı versiyonu:",
"title": "Trilium Notes Hakkında",
"sync_version": "Eşleştirme versiyonu:",
"data_directory": "Veri dizini:",
"build_date": "Derleme tarihi:",
"build_revision": "Derleme revizyonu:"
"data_directory": "Veri dizini:"
},
"branch_prefix": {
"save": "Kaydet",
@@ -21,16 +14,13 @@
},
"delete_notes": {
"close": "Kapat",
"delete_notes_preview": "Not önizlemesini sil",
"delete_all_clones_description": "Tüm klonları da sil (son değişikliklerden geri alınabilir)",
"erase_notes_description": "Normal (yazılımsal) silme işlemi, notları yalnızca silinmiş olarak işaretler ve belirli bir süre içinde (son değişiklikler iletişim kutusunda) geri alınabilir. Bu seçeneği işaretlemek, notları hemen siler ve notların geri alınması mümkün olmaz.",
"erase_notes_warning": "Notları, tüm kopyaları da dahil olmak üzere kalıcı olarak silin (geri alınamaz). Bu işlem, uygulamanın yeniden yüklenmesine neden olacaktır.",
"notes_to_be_deleted": "Aşağıdaki notlar silinecektir. ({{notesCount}})",
"no_note_to_delete": "Hiçbir not silinmeyecek (sadece kopyaları silinecek).",
"broken_relations_to_be_deleted": "Aşağıdaki ilişkiler koparılacak ve silinecektir ({{ relationCount}})",
"cancel": "İptal",
"ok": "Tamam",
"deleted_relation_text": "{{- note}} (silinecek) notu, {{- source}} kaynağından kaynaklanan {{- relation}} ilişkisi tarafından referans alınmaktadır."
"cancel": "İptal"
},
"export": {
"close": "Kapat",

View File

@@ -1,12 +1,5 @@
{
"about": {
"title": "關於 Trilium Notes",
"homepage": "項目主頁:",
"app_version": "程式版本:",
"db_version": "資料庫版本:",
"sync_version": "同步版本:",
"build_date": "編譯日期:",
"build_revision": "編譯版本:",
"data_directory": "資料目錄:"
},
"toast": {
@@ -41,7 +34,9 @@
"link_title_mirrors": "連結標題跟隨筆記標題變化",
"link_title_arbitrary": "連結標題可隨意修改",
"link_title": "連結標題",
"button_add_link": "新增連結"
"button_add_link": "新增連結",
"anchor": "錨點(可選)",
"anchor_none": "無(連結至筆記)"
},
"branch_prefix": {
"edit_branch_prefix": "編輯分支前綴",
@@ -88,17 +83,23 @@
"also_delete_note": "同時刪除筆記"
},
"delete_notes": {
"delete_notes_preview": "刪除筆記預覽",
"delete_all_clones_description": "同時刪除所有克隆(可以在最近修改中撤消)",
"erase_notes_description": "通常(軟)刪除僅標記筆記為已刪除,可以在一段時間內透過最近修改對話方塊撤消。勾選此選項將立即擦除筆記,無法撤銷。",
"erase_notes_description": "立即刪除筆記,而非執行軟刪除。此操作無法撤銷,且會強制重新載入應用程式。",
"erase_notes_warning": "永久擦除筆記(無法撤銷),包括所有克隆。這將強制應用程式重新載入。",
"notes_to_be_deleted": "刪除以下筆記 ({{notesCount}})",
"notes_to_be_deleted": "刪除筆記 ({{notesCount}})",
"no_note_to_delete": "沒有筆記將被刪除(僅克隆)。",
"broken_relations_to_be_deleted": "將刪除以下關聯並斷開連接 ({{ relationCount}})",
"broken_relations_to_be_deleted": "斷開的關聯 ({{ relationCount}})",
"cancel": "取消",
"ok": "確定",
"deleted_relation_text": "筆記 {{- note}}(將被刪除筆記)被以下關聯 {{- relation}} 引用,來自 {{- source}}。",
"close": "關閉"
"close": "關閉",
"title": "刪除筆記",
"clones_label": "克隆",
"delete_clones_description_one": "同時刪除 {{count}} 個其他克隆。此操作可在最近修改中撤銷。",
"delete_clones_description_other": "",
"erase_notes_label": "永久擦除",
"table_note_with_relation": "有關聯的筆記",
"table_relation": "關聯",
"table_points_to": "指向 (已刪除)",
"delete": "刪除"
},
"export": {
"export_note_title": "匯出筆記",
@@ -209,7 +210,8 @@
"box_size_small": "小型(顯示大約 10 行)",
"box_size_medium": "中型 (顯示大約30行)",
"box_size_full": "完整顯示(完整文字框)",
"button_include": "內嵌筆記"
"button_include": "內嵌筆記",
"box_size_expandable": "可展開(預設為摺疊狀態)"
},
"info": {
"modalTitle": "資訊消息",
@@ -270,33 +272,6 @@
"undelete_link": "取消刪除",
"confirm_undelete": "您確定要還原此筆記及其子筆記嗎?"
},
"revisions": {
"note_revisions": "筆記歷史版本",
"delete_all_revisions": "刪除此筆記的所有歷史版本",
"delete_all_button": "刪除所有歷史版本",
"help_title": "關於筆記歷史版本的說明",
"confirm_delete_all": "您是否要刪除此筆記的所有歷史版本?",
"no_revisions": "此筆記暫無歷史版本…",
"confirm_restore": "您是否要還原此歷史版本?這將使用此歷史版本覆寫筆記的目前標題和內容。",
"confirm_delete": "您是否要刪除此歷史版本?",
"revisions_deleted": "已刪除筆記歷史版本。",
"revision_restored": "已還原筆記歷史版本。",
"revision_deleted": "已刪除筆記歷史版本。",
"snapshot_interval": "筆記快照儲存間隔: {{seconds}}秒。",
"maximum_revisions": "目前筆記的最大歷史數量: {{number}}。",
"settings": "筆記歷史設定",
"download_button": "下載",
"mime": "MIME類型 ",
"file_size": "檔案大小:",
"preview_not_available": "無法預覽此類型的筆記。",
"restore_button": "還原",
"delete_button": "刪除",
"diff_on": "顯示差異",
"diff_off": "顯示內容",
"diff_on_hint": "點擊以顯示筆記原始碼差異",
"diff_off_hint": "點擊以顯示筆記內容",
"diff_not_available": "差異不可用。"
},
"sort_child_notes": {
"sort_children_by": "依…排序子筆記",
"sorting_criteria": "排序條件",
@@ -695,7 +670,7 @@
"export_note": "匯出筆記",
"delete_note": "刪除筆記",
"print_note": "列印筆記",
"save_revision": "儲存筆記歷史",
"save_revision": "儲存筆記修訂",
"convert_into_attachment_failed": "筆記 '{{title}}' 轉換失敗。",
"convert_into_attachment_successful": "筆記 '{{title}}' 已成功轉換為附件。",
"convert_into_attachment_prompt": "確定要將筆記 '{{title}}' 轉換為父級筆記的附件嗎?",
@@ -803,7 +778,10 @@
"expand_first_level": "展開直接子級",
"expand_nth_level": "展開 {{depth}} 層",
"expand_all_levels": "展開所有層級",
"hide_child_notes": "隱藏樹中的子筆記"
"hide_child_notes": "隱藏樹中的子筆記",
"open_all_in_tabs": "全部打開",
"open_all_in_tabs_tooltip": "在新分頁中開啟所有結果",
"open_all_confirm": "這將在新分頁中開啟 {{count}} 則筆記。要繼續嗎?"
},
"edited_notes": {
"no_edited_notes_found": "今天還沒有編輯過的筆記...",
@@ -857,7 +835,8 @@
"collapse": "收摺到正常大小",
"title": "筆記地圖",
"fix-nodes": "固定節點",
"link-distance": "連結距離"
"link-distance": "連結距離",
"too-many-notes": "此子樹包含 {{count}} 則筆記,已超過筆記地圖中可顯示的 {{max}} 則上限。"
},
"note_paths": {
"title": "筆記路徑",
@@ -1062,7 +1041,8 @@
"note_already_in_diagram": "筆記 \"{{title}}\" 已經在圖中。",
"enter_title_of_new_note": "輸入新筆記的標題",
"default_new_note_title": "新筆記",
"click_on_canvas_to_place_new_note": "點擊畫布以放置新筆記"
"click_on_canvas_to_place_new_note": "點擊畫布以放置新筆記",
"rename_relation": "重新命名關聯"
},
"backend_log": {
"refresh": "重新整理"
@@ -1092,7 +1072,6 @@
},
"database_integrity_check": {
"title": "資料庫完整性檢查",
"description": "檢查 SQLite 資料庫是否損壞。根據資料庫的大小,這可能會需要一些時間。",
"check_button": "檢查資料庫完整性",
"checking_integrity": "正在檢查資料庫完整性…",
"integrity_check_succeeded": "完整性檢查成功——未發現問題。",
@@ -1124,10 +1103,7 @@
"note_tree_font": "筆記樹字型",
"note_detail_font": "筆記內容字型",
"monospace_font": "等寬(程式碼)字型",
"note_tree_and_detail_font_sizing": "請注意,筆記樹字型和詳細字型的大小為相對於主字型大小設定。",
"not_all_fonts_available": "並非所有列出的字型都在您的系統上可用。",
"apply_font_changes": "要套用字型更改,請點擊",
"reload_frontend": "重新載入前端",
"generic-fonts": "通用字型",
"sans-serif-system-fonts": "無襯線系統字型",
"serif-system-fonts": "襯線系統字型",
@@ -1222,7 +1198,6 @@
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "附件清理超時",
"attachment_auto_deletion_description": "如果附件在一段時間後不再被筆記引用,它們將被自動刪除(並被清理)。",
"manual_erasing_description": "您還可以手動觸發清理(而不考慮上述定義的超時時間):",
"erase_unused_attachments_now": "立即清理未使用的附件筆記",
"unused_attachments_erased": "已刪除未使用的附件。",
@@ -1234,7 +1209,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "筆記清理超時",
"note_erasure_description": "被刪除的筆記(以及屬性、歷史版本等)最初僅被標記為「刪除」,可以從「最近修改」對話方塊中還原它們。經過一段時間後,已刪除的筆記會被「清理」,這意味著它們的內容將無法被還原。此設定允許您設定從刪除到清除筆記之間的時間長度。",
"manual_erasing_description": "您還可以手動觸發清理(而不考慮上述定義的超時時間):",
"erase_deleted_notes_now": "立即清理已刪除的筆記",
"deleted_notes_erased": "已清理已刪除的筆記。",
@@ -1308,7 +1282,6 @@
"first-week-contains-first-thursday": "年度第一週包含第一個週四",
"first-week-has-minimum-days": "第一週有最少天數",
"min-days-in-first-week": "第一週的最少天數",
"first-week-info": "年度第一週包含第一個週四是基於 <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a> 標準。",
"first-week-warning": "變更第一週選項可能導致與現有的「週筆記」重複,現有的「週筆記」將不會相應更新。",
"formatting-locale": "日期和數字格式",
"tuesday": "週二",
@@ -1331,7 +1304,8 @@
"date-and-time": "日期和時間",
"path": "路徑",
"database_backed_up_to": "資料庫已備份至 {{backupFilePath}}",
"no_backup_yet": "尚無備份"
"no_backup_yet": "尚無備份",
"download": "下載"
},
"etapi": {
"title": "ETAPI",
@@ -1396,25 +1370,28 @@
"spellcheck": {
"title": "拼寫檢查",
"description": "這些選項僅適用於桌面版,瀏覽器將使用其原生的拼寫檢查功能。",
"enable": "啟用拼寫檢查",
"language_code_label": "語言代碼",
"restart-required": "拼寫檢查選項的更改將在應用重啟後生效。"
"enable": "拼寫檢查",
"language_code_label": "拼寫檢查語言",
"restart-required": "拼寫檢查選項的更改將在應用重啟後生效。",
"custom_dictionary_title": "自訂字典",
"custom_dictionary_description": "新增至字典的詞彙會同步至您所有的裝置。",
"custom_dictionary_edit": "自訂詞彙",
"custom_dictionary_edit_description": "編輯拼寫檢查器不應標記的詞彙清單。變更將於重新啟動後生效。",
"custom_dictionary_open": "編輯字典",
"related_description": "設定拼寫檢查語言及自訂字典。"
},
"sync_2": {
"config_title": "同步設定",
"server_address": "伺服器地址",
"timeout": "同步超時(單位:毫秒)",
"proxy_label": "同步代理伺服器(可選)",
"note": "注意",
"note_description": "代理設定留空則使用系統代理(僅桌面版有效)。",
"special_value_description": "另一個特殊值是 <code>noproxy</code>,它強制忽略系統代理並遵守 <code>NODE_TLS_REJECT_UNAUTHORIZED</code>。",
"save": "儲存",
"help": "說明",
"test_title": "同步測試",
"test_description": "測試和同步伺服器之間的連接。如果同步伺服器沒有初始化,這會將本地文件同步至同步伺服器上。",
"test_button": "測試同步",
"handshake_failed": "同步伺服器握手失敗,錯誤:{{message}}",
"timeout_unit": "毫秒"
"timeout_description": "在放棄慢速同步連線前應等待多久。若網路不穩定,請延長等待時間。"
},
"api_log": {
"close": "關閉"
@@ -1458,7 +1435,7 @@
"expand-subtree": "展開子階層",
"collapse-subtree": "收摺子階層",
"sort-by": "排序方式…",
"recent-changes-in-subtree": "子階層中的最近改",
"recent-changes-in-subtree": "子階層中的最近改",
"convert-to-attachment": "轉換為附件",
"copy-note-path-to-clipboard": "複製筆記路徑至剪貼簿",
"protect-subtree": "保護子階層",
@@ -2285,7 +2262,7 @@
"ocr": {
"processing_complete": "OCR 處理已完成。",
"processing_failed": "無法啟動 OCR 處理",
"text_filtered_low_confidence": "OCR 偵測到的信賴度為 {{confidence}}%,但因您的最低閾值設定為 {{threshold}}%,故該結果已被捨棄。",
"text_filtered_low_confidence": "OCR 偵測到的文字信賴度為 {{confidence}}%,但因您的最低閾值設定為 {{threshold}}%,故該結果已被捨棄。",
"open_media_settings": "開啟設定",
"view_extracted_text": "檢視擷取的文字 (OCR)",
"extracted_text": "已擷取的文字 (OCR)",
@@ -2362,5 +2339,55 @@
"history": "對話歷史",
"recent_chats": "最近的對話",
"no_chats": "無先前的對話記錄"
},
"revisions": {
"note_revisions": "筆記歷史版本",
"delete_all_revisions": "刪除此筆記的所有歷史版本",
"delete_all_button": "刪除所有歷史版本",
"help_title": "關於筆記歷史版本的說明",
"confirm_delete_all": "您要刪除此筆記的所有歷史版本嗎?",
"no_revisions": "尚無此筆記的歷史版本...",
"restore_button": "還原",
"highlight_changes": "高亮變更",
"diff_on": "顯示差異",
"diff_off": "顯示內容",
"diff_on_hint": "點擊以顯示筆記來源差異",
"diff_off_hint": "點擊以顯示筆記內容",
"diff_not_available": "差異比較不可用。",
"confirm_restore": "您要還原此版本嗎?此操作將以該版本覆寫筆記目前的標題和內容。",
"delete_button": "刪除",
"confirm_delete": "您要刪除此版本嗎?",
"revisions_deleted": "筆記歷史版本已被刪除。",
"revision_restored": "筆記歷史版本已被還原。",
"revision_deleted": "筆記歷史版本已被刪除。",
"snapshot_interval": "筆記歷史版本快照間隔:{{seconds}} 秒。",
"maximum_revisions": "筆記歷史版本快照限制:{{number}}。",
"save_revision_now": "立即儲存修訂",
"save_named_revision": "儲存命名修訂…",
"snapshot_header": "筆記歷史版本快照",
"snapshot_interval_value": "間隔:{{seconds}} 秒",
"snapshot_limit_value": "限制:{{number}}",
"settings": "筆記歷史版本設定",
"menu_tooltip": "歷史版本選項",
"download_button": "下載",
"mime": "MIME 類型: ",
"file_size": "檔案大小:",
"preview_not_available": "此筆記類型不支援預覽功能。",
"save_revision": "儲存筆記修訂",
"save_revision_tooltip": "手動儲存目前筆記的快照",
"description_placeholder": "命名此歷史版本",
"revision_saved": "筆記修訂已儲存。",
"edit_description": "編輯名稱",
"description_updated": "歷史版本名稱已更新。",
"source_auto": "自動儲存",
"source_manual": "手動儲存",
"source_etapi": "ETAPI",
"source_llm": "大語言模型",
"source_restore": "還原",
"source_unknown": "快照",
"date_today": "今天",
"date_yesterday": "昨天",
"date_this_week": "這週",
"date_this_month": "這個月"
}
}

View File

@@ -0,0 +1,413 @@
{
"about": {
"data_directory": "سانلىق مەلۇمات مۇندەرىجىسى:"
},
"toast": {
"critical-error": {
"title": "ئېغىر خاتالىق",
"message": "قوللىنىشچان پروگراممىنىڭ قوزغىلىشىغا توسالغۇ بولىدىغان ئېغىر خاتالىق كۆرۈلدى:\n\n{{message}}\n\nبۇ ئادەتتە script نىڭ كۈتۈلمىگەن خاتالىقىدىن كېلىپ چىقىدۇ. پروگراممىنى بىخەتەر ھالەتتە (safe mode) قوزغىتىپ مەسىلىنى ھەل قىلىپ بېقىڭ。"
},
"widget-error": {
"title": "كىچىك زاپچاسلار دەسلەپكى قەدەمدە مەغلۇپ بولدى",
"message-custom": "ID نومۇرى \"{{id}}\"، تېمىسى \"{{title}}\" بولغان خاتىرىدىن كەلگەن ئۆزلەشتۈرۈلگەن ۋىجېت (Custom widget) تۆۋەندىكى سەۋەب تۈپەيلىدىن قوزغىتىلمىدى:\n\n{{message}}",
"message-unknown": "نامەلۇم كىچىك زاپچاسلار تۆۋەندىكى سەۋەبلەر تۈپەيلىدىن دەسلەپكى قەدەمدە بولالمايدۇ:\n\n{{message}}"
},
"bundle-error": {
"title": "scriptنى يۈكلەش مەغلۇپ بولدى",
"message": "scriptنى ئىجرا قىلغىلى بولمىدى:\n\n{{message}}"
},
"widget-list-error": {
"title": "serverدىن تىزىملىكىنى ئالغىلى بولمىدى"
},
"widget-render-error": {
"title": "ئۆزلەشتۈرۈلگەن React ۋىجېتىنى تەقدىم قىلىش (Render) مەغلۇپ بولدى"
},
"widget-missing-parent": "ئۆزگەرتىلگەن كىچىك زاپچاستا زۆرۈر بولغان’{{property}} خاسلىقى بەلگىلەنمىگەن.\n\nئەگەر بۇ سكريپت UI ئېلېمېنتلىرىسىز ئىجرا بولۇشقا مەجبۇر بولسا، \"#run=frontendStartup\" نى ئىشلىتىڭ.",
"open-script-note": "script خاتىرىنى ئېچىش",
"scripting-error": "Custom script خاتالىقى: {{title}}"
},
"add_link": {
"add_link": "ئۇلانما قوشۇش",
"help_on_links": "ئۇلانما ياردىمى",
"note": "خاتىرە",
"search_note": "خاتىرىنى نامى بويىچە ئىزدەش",
"link_title_mirrors": "ئۇلانما تېمىسى خاتىرىنىڭ ھازىرقى تېمىسى بىلەن ماس قەدەم بولىدۇ",
"link_title_arbitrary": "ئۇلانما تېمىسىنى خالىغانچە ئۆزگەرتىشكە بولىدۇ",
"link_title": "ئۇلانما تېمىسى",
"button_add_link": "ئۇلانما قوشۇش",
"anchor_none": "يوق (خاتىرىگە ئۇلاش)"
},
"branch_prefix": {
"edit_branch_prefix": "شاخچە ئالدى قوشۇمچىسىنى تەھرىرلەش",
"edit_branch_prefix_multiple": "{{count}} دانە شاخچىنىڭ ئالدى قوشۇمچىسىنى تەھرىرلەش",
"help_on_tree_prefix": "دەرەخ ئالدى قوشۇمچىسى ياردىمى",
"prefix": "ئالدى قوشۇمچە:· ",
"save": "ساقلاش",
"branch_prefix_saved": "شاخچە ئالدى قوشۇمچىسى ساقلاندى.",
"branch_prefix_saved_multiple": "{{count}} دانە شاخچىغا ئالدى قوشۇمچە ساقلاندى.",
"affected_branches": "تەسىرگە ئۇچرىغان شاخچىلار {{count}}:"
},
"bulk_actions": {
"bulk_actions": "تۈركۈملاپ بىر تەرەپ قىلىش",
"affected_notes": "تەسىرگە ئۇچرايدىغان خاتىرىلەر",
"include_descendants": "تاللانغان خاتىرىلەرنىڭ تارماق خاتىرىلىرىنى ئۆز ئىچىگە ئالسۇن",
"available_actions": "ئىشلەتكىلى بولىدىغان مەشغۇلاتلار",
"chosen_actions": "تاللانغان مەشغۇلاتلار",
"execute_bulk_actions": "تۈركۈملەپ بىر تەرەپ قىلىشنى ئىجرا قىلىش",
"bulk_actions_executed": "تۈركۈملەپ بىر تەرەپ قىلىش مۇۋەپپەقىيەتلىك تاماملاندى.",
"none_yet": "ھازىرچە مەشغۇلات يوق... ئۈستىدىكى مەشغۇلاتتىن تاللاڭ.",
"labels": "بەلگە",
"relations": "مۇناسىۋەتلەر",
"notes": "خاتىرىلەر",
"other": "باشقىلار"
},
"clone_to": {
"clone_notes_to": "خاتىرىلەرنى كۆچۈرۈش...",
"help_on_links": "ئۇلانما ياردىمى",
"notes_to_clone": "كۆچۈرۈلىدىغان خاتىرىلەر",
"target_parent_note": "نىشان تۈپ خاتىرە",
"search_for_note_by_its_name": "نامى بويىچە خاتىرە ئىزدەش",
"cloned_note_prefix_title": "كۆچۈرۈلگەن خاتىرىگە ئالدى قوشۇمچە بېرىلىدۇ",
"prefix_optional": "ئالدى قوشۇمچە (ئىختىيارىي)",
"clone_to_selected_note": "تاللانغان خاتىرىگە كۆچۈرۈش",
"no_path_to_clone_to": "كۆچۈرۈش يولى يوق.",
"note_cloned": "\"{{clonedTitle}}\" خاتىرە\"{{targetTitle}}\" غا كۆچۈرۈلدى"
},
"confirm": {
"confirmation": "جەزملەشتۈرۈش",
"cancel": "بىكار قىلىش",
"ok": "تامام",
"are_you_sure_remove_note": "\"{{title}}\" ناملىق خاتىرىنى مۇناسىۋەت خەرىتىسىدىن ئۆچۈرۈۋېتىشنى جەزملەشتۈرەمسىز؟ ",
"if_you_dont_check": "ئەگەر بۇنى تاللىمىسىڭىز، خاتىرە پەقەت مۇناسىۋەت خەرىتىسىدىنلا ئۆچۈرۈلىدۇ (خاتىرىنىڭ ئۆزى ئۆچۈرۈلمەيدۇ).",
"also_delete_note": "خاتىرىنىمۇ ئۆچۈرۈۋېتىش"
},
"delete_notes": {
"title": "خاتىرىلەرنى ئۆچۈرۈش",
"close": "ياپ",
"clones_label": "كۆچۈرۈلمىلەر",
"delete_clones_description_one": "يەنە {{count}} دانە باشقا كۆچۈرۈلمىنىمۇ ئۆچۈرىدۇ. يېقىنقى ئۆزگىرىشلەردىن ئەسلىگە كەلتۈرگىلى بولىدۇ.",
"delete_clones_description_other": "يەنە {{count}} دانە باشقا كۆچۈرۈلمىلەرنىمۇ ئۆچۈرىدۇ. يېقىنقى ئۆزگىرىشلەردىن ئەسلىگە كەلتۈرگىلى بولىدۇ.",
"delete_all_clones_description": "بارلىق كۆچۈرۈلمىلەرنىمۇ ئۆچۈرۈش (يېقىنقى ئۆزگىرىشلەردىن ئەسلىگە كەلتۈرگىلى بولىدۇ)",
"erase_notes_label": "مەڭگۈلۈك ئۆچۈرۈش",
"erase_notes_description": "يۇمشاق ئۆچۈرۈشنىڭ ئورنىغا خاتىرىنى دەرھال مەڭگۈلۈك ئۆچۈرىدۇ. بۇنى قايتۇرغىلى بولمايدۇ ۋە قوللىنىشنى قايتا يۈكلەيدۇ.",
"erase_notes_warning": "خاتىرىلەرنى مەڭگۈلۈك ئۆچۈرۈش (قايتۇرغىلى بولمايدۇ)، بارلىق كۆچۈرۈلمىلەرنىمۇ ئۆز ئىچىگە ئالىدۇ. بۇ قوللىنىشنى قايتا يۈكلەيدۇ.",
"notes_to_be_deleted": "ئۆچۈرۈلىدىغان خاتىرىلەر ({{notesCount}})",
"no_note_to_delete": "ھېچقانداق خاتىرە ئۆچۈرۈلمەيدۇ (پەقەت كۆچۈرۈلمىلەر).",
"broken_relations_to_be_deleted": "بۇزۇلغان مۇناسىۋەتلە ({{relationCount}})",
"table_note_with_relation": "مۇناسىۋەتلىك خاتىرە",
"table_relation": "مۇناسىۋەت",
"table_points_to": "ئورۇنغا ئۇلىنىدۇ(ئۆچۈرۈلگەن)",
"cancel": "بىكار قىلىش",
"delete": "ئۆچۈرۈش"
},
"export": {
"export_note_title": "خاتىرىنى چىقىرىش",
"close": "يېپىش",
"export_type_subtree": "بۇ خاتىرە ۋە ئۇنىڭ بارلىق تارماقلىرى",
"format_html": "HTML - بارلىق فورماتلارنى ساقلاپ قالىدىغان بولغاچقا تەۋسىيە قىلىنىدۇ",
"format_html_zip": "ZIP ئارخىپىدىكى HTML - بارلىق پىچىملارنى ساقلاپ قالىدىغان بولغاچقا، بۇ تاللاش تەۋسىيە قىلىنىدۇ.",
"format_markdown": "Markdown - بۇ كۆپ قىسىم فورماتلارنى ساقلاپ قالىدۇ.",
"format_opml": "OPML - پەقەت تېكىست ئۈچۈن ئىشلىتىلىدىغان پىلان (outliner) ئالماشتۇرۇش فورماتى. بۇنىڭغا فورماتلار، رەسىملەر ۋە ھۆججەتلەر كىرمەيدۇ.",
"opml_version_1": "OPML v1.0 - پەقەت ساپ تېكىستلا",
"opml_version_2": "HTML OPMLv2 - نىمۇ قوللايدۇ",
"export_type_single": "تارماقلىرىنى ئۆز ئىچىگە ئالمايدۇ، پەقەت مۇشۇ خاتىرىنىڭ ئۆزىلا",
"export": "چىقىرىش",
"choose_export_type": "ئالدى بىلەن چىقىرىش تۈرىنى تاللاڭ",
"export_status": "چىقىرىش ھالىتى",
"export_in_progress": "چىقىرىلىۋاتىدۇ: {{progressCount}}",
"export_finished_successfully": "چىقىرىش مۇۋەپپەقىيەتلىك تاماملاندى.",
"format_pdf": "PDF - بېسىپ چىقىرىش ياكى ھەمبەھرلەش مەقسىتىدە ئىشلىتىلىدۇ.",
"share-format": "توردا ئېلان قىلىش ئۈچۈن HTML - ھەمبەھرلەنگەن خاتىرىلەر بىلەن ئوخشاش تېمىنى ئىشلىتىدۇ، لېكىن تۇراقلىق تور بېكەت سۈپىتىدە ئېلان قىلىشقا بولىدۇ."
},
"help": {
"title": "ئاساسىي كۇنۇپكىلار",
"editShortcuts": "كۇنۇپكا تېزلەتمىلىرىنى تەھرىرلەش",
"noteNavigation": "خاتىرە يولباشچىسى",
"goUpDown": "خاتىرە تىزىملىكىدە يۇقىرى/تۆۋەنگە يۆتكىلىش",
"collapseExpand": "تۈرنى قاتلاش/يېيىش",
"notSet": "بېكىتىلمىگەن",
"goBackForwards": "تارىختا كەينىگە/ئالدىغا يۆتكىلىش",
"scrollToActiveNote": "نۆۋەتتىكى خاتىرىگە سىيرىپ بېرىش",
"jumpToParentNote": "تۈپ خاتىرىگە تېز يۆتكىلىش",
"collapseWholeTree": "بارلىق خاتىرە دەرىخىنى يىغىش",
"collapseSubTree": "تارماق تۈرلەرنى يىغىش",
"tabShortcuts": "بەتكۈچ تېزلەتمىلىرى",
"newTabNoteLink": "خاتىرە ئۇلىنىشىنى چەككەندە، خاتىرىنى يېڭى بەتكۈچتە ئېچىش",
"newTabWithActivationNoteLink": "خاتىرە ئۇلىنىشىنى يېڭى بەتكۈچتە ئېچىش ۋە ئاكتىپلاش",
"openEmptyTab": "بوش بەتكۈچ ئېچىش",
"creatingNotes": "خاتىرە قۇرۇش",
"createNoteAfter": "ئاكتىپ خاتىرىدىن كېيىن يېڭى خاتىرە قۇرۇش",
"createNoteInto": "ئاكتىپ خاتىرىنىڭ ئىچىگە يېڭى تارماق خاتىرە قۇرۇش",
"movingCloningNotes": "خاتىرە يۆتكەش / كۆچۈرۈش",
"moveNoteUpDown": "خاتىرىنى تىزىملىكتە ئاستىغا/ئۈستىگە يۆتكەش",
"moveNoteUpHierarchy": "خاتىرىنى دەرىجە بويىچە ئۈستىگە يۆتكەش",
"multiSelectNote": "ئۈستى/ئاستىدىكى خاتىرىلەرنى كۆپ تاللاش",
"selectAllNotes": "ھازىرقى دەرىجىدىكى بارلىق خاتىرىلەرنى تاللاش",
"selectNote": "خاتىرىنى تاللاش",
"cutNotes": "نۆۋەتتىكى خاتىرىنى (ياكى تاللانغانلارنى) كېسىپ چاپلاش تاختىسىغا ئېلىش (يۆتكەش ئۈچۈن ئىشلىتىلىدۇ)",
"pasteNotes": "خاتىرىنى ئاكتىپ خاتىرىنىڭ ئىچىگە تارماق خاتىرە قىلىپ چاپلاش",
"deleteNotes": "خاتىرە ياكى تارماق تۈرلەرنى ئۆچۈرۈش",
"editingNotes": "خاتىرىلەرنى تەھرىرلەش",
"createEditLink": "سىرتقى ئۇلانما قۇرۇش / تەھرىرلەش",
"createInternalLink": "ئىچكى ئۇلانما قۇرۇش",
"followLink": "نۇر بەلگىسى ئاستىدىكى ئۇلانمىغا ئەگىشىش",
"insertDateTime": "نۆۋەتتىكى ۋاقىت ۋە كۈننى قىستۇرۇش",
"jumpToTreePane": "خاتىرە تىزىملىكىگە ئۆتۈش ۋە ئاكتىپ خاتىرىنى كۆرسىتىش",
"markdownAutoformat": "Markdown شەكىللىك ئاپتوماتىك فورماتلاش",
"troubleshooting": "مەسىلە ھەل قىلىش",
"reloadFrontend": "Trilium نىڭ ئالدى يۈزىنى قايتا يۈكلەش",
"showDevTools": "تەتقىقاتچى قوراللىرىنى كۆرسىتىش",
"showSQLConsole": "SQL كونترول سۇپىسىنى كۆرسىتىش",
"other": "باشقىلار",
"quickSearch": "نۇر بەلگىسىنى تېز ئىزدەش رامكىسىغا يۆتكەش",
"inPageSearch": "بەت ئىچىدە ئىزدەش",
"showJumpToNoteDialog": "كۆرسىتىش<a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/note-navigation.html#jump-to-note\">\"بۇنىڭغا ئاتلاش\" سۆزلىشىش رامكىسى</a>",
"closeActiveTab": "ئاكتىپ بەتكۈچنى يېپىش",
"activateNextTab": "كېيىنكى بەتكۈچنى ئاكتىپلاش",
"activatePreviousTab": "ئالدىنقى بەتكۈچنى ئاكتىپلاش",
"editNoteTitle": "دەرەخسىمان خاتىرە تىزىملىكىدە، فوكۇس خاتىرە دەرىخىدىن خاتىرە ماۋزۇسىغا يۆتكىلىدۇ. Enter كۇنۇپكىسىنى باسسىڭىز فوكۇس خاتىرە ماۋزۇسىدىن تېكىست تەھرىرلىگۈچكە يۆتكىلىدۇ. <kbd>Ctrl+.</kbd> كۇنۇپكىسىنى باسسىڭىز فوكۇس تەھرىرلىگۈچتىن يەنە خاتىرە دەرىخىگە قايتىدۇ.",
"onlyInDesktop": "پەقەت Desktop نۇسخىسى (Electron build)",
"editBranchPrefix": "ئاكتىپ خاتىرە كوپىيىسىنىڭ تەھرىرلەش <a class=\"external\" href=\"https://triliumnext.github.io/Docs/Wiki/tree-concepts.html#prefix\">ئالدى قوشۇمچە</a>"
},
"import": {
"importIntoNote": "خاتىرىگە كىرگۈزۈش",
"chooseImportFile": "كىرگۈزىدىغان ھۆججەتنى تاللاش",
"importDescription": "تاللانغان ھۆججەت مەزمۇنلىرى تارماق خاتىرە سۈپىتىدە كىرگۈزۈلىدىغان ئورۇن",
"importZipRecommendation": "ZIP ھۆججىتىنى كىرگۈزگەندە، ھۆججەت قىسقۇچلارنىڭ ئورۇنلاشتۇرۇلۇشىغا ئاساسەن ئاپتوماتىك تارماق خاتىرىلەر قۇرۇلىدۇ.",
"options": "تاللانمىلار",
"safeImport": "بىخەتەر كىرگۈزۈش",
"shrinkImages": "«رەسىملەرنى كىچىكلىتىش",
"textImportedAsText": "ئۇچۇرى ئېنىق بولمىغان HTML، Markdown ۋە TXT لارنى تېكىست خاتىرىسىگە ئايلاندۇرۇش",
"replaceUnderscoresWithSpaces": "ئەكىرىلگەن خاتىرە ناملىرىدىكى ئاستى سىزىقلارنى بوشلۇققا ئالماشتۇرۇش",
"import": "كىرگۈزۈش",
"failed": "ئەكىرىش مەغلۇپ بولدى: {{message}}.",
"html_import_tags": {
"title": "HTML ئەكىرىش بەلگىلىرى",
"description": "خاتىرىلەرنى ئەكىرگەندە قايسى HTML بەلگىلىرىنى ساقلاپ قېلىشنى سەپلەڭ. بۇ تىزىملىكتە بولمىغان بەلگىلەر ئەكىرىش جەريانىدا ئۆچۈرۈۋېتىلىدۇ. بەزى بەلگىلەر (مەسىلەن 'script') بىخەتەرلىك ئۈچۈن ھەمىشە ئۆچۈرۈۋېتىلىدۇ.",
"placeholder": "ھەر بىر قۇرغا بىر HTML بەلگىسىدىن كىرگۈزۈڭ",
"reset_button": "ئەسلىدىكى تىزىملىككە ئەسلىگە قايتۇرۇش"
},
"import-status": "كىرگۈزۈش ھالىتى",
"in-progress": "ئەكىرىلىۋاتىدۇ: {{progress}}",
"successful": "كىرگۈزۈش مۇۋەپپەقىيەتلىك تاماملاندى.",
"explodeArchives": "<code>.zip</code>、<code>.enex</code> ۋە<code>.opml</code> ئارخىپ ھۆججەتلىرىنىڭ مەزمۇنىنى ئوقۇش.",
"codeImportedAsCode": "ئەگەر مېتا سانلىق مەلۇماتى ئېنىق بولمىسا، پەرقلەندۈرۈلگەن كود ھۆججىتىنى (مەسىلەن<code>.json</code>) كود خاتىرىسى سۈپىتىدە ئەكىرىش"
},
"include_note": {
"dialog_title": "خاتىرىنى ئۆز ئىچىگە ئېلىش",
"label_note": "خاتىرە",
"placeholder_search": "خاتىرىنى نامى بويىچە ئىزدەش",
"box_size_prompt": "ئۆز ئىچىگە ئالغان خاتىرىنىڭ رامكا چوڭلۇقى:",
"box_size_small": "كىچىك (10 قۇر ئەتراپىدا)",
"box_size_medium": "ئوتتۇراھال (30 قۇر ئەتراپىدا)",
"box_size_full": "تولۇق (رامكىدا پۈتۈن تېكىست كۆرسىتىلىدۇ)",
"box_size_expandable": "يېيىلىدىغان (ئەسلىدىكى ھالەتتە يىغىلغان)",
"button_include": "خاتىرىنى ئۆز ئىچىگە ئېلىش"
},
"info": {
"modalTitle": "ئۇچۇر ئۇقتۇرۇشى",
"closeButton": "تاقاش",
"okButton": "OK",
"copy_to_clipboard": "چاپلاش تاختىسىغا كۆچۈرۈش"
},
"jump_to_note": {
"search_placeholder": "خاتىرىنى نامى ياكى تىپى بويىچە ئىزدەڭ، بۇيرۇق ئۈچۈن >بەلگىسىنى كىرگۈزۈڭ...",
"search_button": "تولۇق تېكىست بويىچە ئىزدەش"
},
"markdown_import": {
"dialog_title": "Markdown نى كىرگۈزۈش",
"import_button": "كىرگۈزۈش",
"import_success": "Markdown مەزمۇنى ھۆججەتكە مۇۋەپپەقىيەتلىك كىرگۈزۈلدى."
},
"move_to": {
"dialog_title": "خاتىرىنى يۆتكەش...",
"notes_to_move": "يۆتكىلىدىغان خاتىرە",
"target_parent_note": "نىشان تۈپ خاتىرە",
"search_placeholder": "خاتىرىنى نامى بويىچە ئىزدەش",
"move_button": "تاللانغان خاتىرىگە يۆتكەش",
"error_no_path": "يۆتكىلىدىغان ئورۇن تېپىلمىدى。",
"move_success_message": "تاللانغان خاتىرە مۇشۇ يەرگە يۆتكەلدى "
},
"note_type_chooser": {
"change_path_prompt": "يېڭى خاتىرە قۇرۇش ئورنىنى ئۆزگەرتىش:",
"search_placeholder": "يولنى نامى بويىچە ئىزدەش (ئەسلى ھالىتى بېكىتىلمىگەن)",
"modal_title": "خاتىرە تۈرىنى تاللاش",
"modal_body": "يېڭى خاتىرە تۈرى ياكى template تاللاش:",
"builtin_templates": "ئىچكى Templates"
},
"password_not_set": {
"title": "مەخپىي نومۇر بېكىتىلمىگەن",
"body1": "قوغدىلىدىغان خاتىرىلەر ئىشلەتكۈچى مەخپىي نومۇرى بىلەن شىفىرلىنىدۇ، ئەمما مەخپىي نومۇر تېخى بېكىتىلمىگەن.",
"body2": "خاتىرىنى قوغداش ئۈچۈن، تۆۋەندىكى كۇنۇپكىنى بېسىپ «تاللانما» سۆزلىشىش رامكىسىنى ئېچىڭ ھەمدە مەخپىي نومۇر بېكىتىڭ.",
"go_to_password_options": "مەخپىي نومۇر تاللانمىسىغا يۆتكەش"
},
"prompt": {
"title": "ئەسكەرتىش",
"ok": "OK",
"defaultTitle": "ئەسكەرتىش"
},
"protected_session_password": {
"modal_title": "قوغدىلىدىغان session",
"help_title": "خاتىرىنى قوغداش ھەققىدىكى ياردەم",
"close_label": "تاقاش",
"form_label": "مەشغۇلاتنى داۋاملاشتۇرۇش ئۈچۈن، مەخپىي نومۇرنى كىرگۈزۈپ قوغدىلىدىغان session باشلىشىڭىز كېرەك:",
"start_button": "قوغدىلىدىغان sessionنى باشلاش"
},
"recent_changes": {
"title": "يېقىنقى ئۆزگىرىشلەر",
"erase_notes_button": "ئۆچۈرۈلگەن خاتىرىلەرنى ھازىرلا تۈپتىن يوقىتىش",
"deleted_notes_message": "ئۆچۈرۈلگەن خاتىرىلەر تۈپتىن يوقىتىلدى.",
"no_changes_message": "تېخى ھېچقانداق ئۆزگىرىش يوق...",
"undelete_link": "ئۆچۈرۈلگەننى ئەسلىگە كەلتۈرۈش",
"confirm_undelete": "بۇ خاتىرە ۋە ئۇنىڭ تارماق خاتىرىلىرىنى ئەسلىگە كەلتۈرۈشنى جەزملەشتۈرەمسىز؟"
},
"revisions": {
"note_revisions": "خاتىرە تەھرىرلىرى",
"delete_all_revisions": "بۇ خاتىرىنىڭ بارلىق تەھرىرلىرىنى ئۆچۈرۈش",
"delete_all_button": "بارلىق تەھرىرلەرنى ئۆچۈرۈش",
"help_title": "خاتىرە تەھرىرلىرى ھەققىدىكى ياردەم",
"confirm_delete_all": "بۇ خاتىرىنىڭ بارلىق تەھرىرلىرىنى ئۆچۈرۈشنى جەزملەشتۈرەمسىز؟",
"no_revisions": "بۇ خاتىرىنىڭ تېخى تەھرىرلەش خاتىرىسى يوق...",
"restore_button": "ئەسلىگە كەلتۈرۈش",
"highlight_changes": "ئۆزگىرىشلەرنى گەۋدىلەندۈرۈش",
"diff_on": "پەرقىنى كۆرسىتىش",
"diff_off": "مەزمۇننى كۆرسىتىش",
"diff_on_hint": "بۇ يەرنى چېكىپ خاتىرە مەنبەسىنىڭ پەرقىنى كۆرۈڭ",
"diff_off_hint": "بۇ يەرنى چېكىپ خاتىرە مەزمۇنىنى كۆرۈڭ",
"diff_not_available": "پەرقىنى كۆرسەتكىلى بولمايدۇ.",
"confirm_restore": "بۇ تەھرىرنى ئەسلىگە كەلتۈرۈشنى جەزملەشتۈرەمسىز؟ بۇ مەشغۇلات خاتىرىنىڭ نۆۋەتتىكى تېمىسى ۋە مەزمۇنىنى مۇشۇ تەھرىرگە ئالماشتۇرۇۋېتىدۇ.",
"delete_button": "ئۆچۈرۈش",
"confirm_delete": "بۇ تەھرىرنى ئۆچۈرۈشنى جەزملەشتۈرەمسىز؟",
"revisions_deleted": "خاتىرە تەھرىرلىرى ئۆچۈرۈلدى.",
"revision_restored": "خاتىرە تەھرىرى ئەسلىگە كەلتۈرۈلدى.",
"revision_deleted": "خاتىرە تەھرىرى ئۆچۈرۈلدى.",
"snapshot_interval": "خاتىرە تەھرىرى نۇسخىسىنى ساقلاش ئارىلىقى: {{seconds}} سېكۇنت.",
"maximum_revisions": "خاتىرە تەھرىرى نۇسخىسىنىڭ چەكلىمىسى: {{number}}.",
"save_revision_now": "تەھرىر نۇسخىسىنى ھازىر ساقلاش",
"save_named_revision": "ناملىق تەھرىر نۇسخىسىنى ساقلاش...",
"snapshot_header": "خاتىرە تەھرىرى نۇسخىسى",
"snapshot_interval_value": "ئارىلىقى: {{seconds}} سېكۇنت",
"snapshot_limit_value": "چەكلىمىسى: {{number}}",
"settings": "خاتىرە تەھرىرى تەڭشەكلىرى",
"menu_tooltip": "تەھرىر تاللانمىلىرى",
"download_button": "چۈشۈرۈش",
"mime": "MIME تىپى: ",
"file_size": "ھۆججەت چوڭلۇقى:",
"preview_not_available": "بۇ خىلدىكى خاتىرىنى ئالدىن كۆرگىلى بولمايدۇ.",
"save_revision": "تەھرىرنى ساقلاش",
"save_revision_tooltip": "نۆۋەتتىكى خاتىرىنىڭ نۇسخىسىنى قولدا ساقلاش",
"description_placeholder": "بۇ تەھرىرگە نام قويۇش",
"revision_saved": "خاتىرىنىڭ تەھرىر نۇسخىسى ساقلاندى.",
"edit_description": "نامىنى تەھرىرلەش",
"description_updated": "تەھرىر نامى يېڭىلاندى.",
"source_auto": "ئاپتوماتىك ساقلاش",
"source_manual": "قولدا ساقلاش",
"source_restore": "ئەسلىگە كەلتۈرۈش",
"date_today": "بۈگۈن",
"date_yesterday": "تۆنۈگۈن",
"date_this_week": "بۇ ھەپتە",
"date_this_month": "بۇ ئاي",
"source_description_auto": "سىستېما تەرىپىدىن قەرەللىك ئاپتوماتىك ساقلانغان",
"source_description_manual": "ئىشلەتكۈچى تەرىپىدىن قولدا ساقلانغان",
"source_description_etapi": "سىرتقى Trilium API ئارقىلىق قۇرۇلغان",
"source_description_llm": "AI ياردەمچىسى تەرىپىدىن قۇرۇلغان",
"source_description_restore": "ئىلگىرىكى تەھرىرنى ئەسلىگە كەلتۈرۈشتىن بۇرۇن ساقلانغان"
},
"sort_child_notes": {
"sort_children_by": "تارماق تۈرلەرنى تەرتىپلەش...",
"sorting_criteria": "تەرتىپلەش ئۆلچىمى",
"title": "ماۋزۇسى",
"date_created": "قۇرۇلغان ۋاقتى",
"date_modified": "ئۆزگەرتىلگەن ۋاقتى",
"sorting_direction": "تەرتىپلەش يۆنىلىشى",
"ascending": "ئۆرلەش تەرتىپى",
"descending": "تۆۋەنلەش تەرتىپى",
"folders": "ھۆججەت قىسقۇچى",
"sort_folders_at_top": "ھۆججەت قىسقۇچىنى ئالدىدا تەرتىپلەش",
"natural_sort": "تەبىئىي تەرتىپلەش",
"sort_with_respect_to_different_character_sorting": "ئوخشاش بولمىغان تىل ياكى رايونلارنىڭ ھەرپ تەرتىپى ۋە قائىدىسى بويىچە تەرتىپلەش.",
"natural_sort_language": "تىل بويىچە تەبىئىي تەرتىپلەش",
"the_language_code_for_natural_sort": "تەبىئىي تەرتىپلەشتە ئىشلىتىلىدىغان تىل كودى، مەسىلەن، خەنزۇچە ئۈچۈن «zh-CN».",
"sort": "تەرتىپلەش"
},
"upload_attachments": {
"upload_attachments_to_note": "قوشۇمچە ھۆججەتلەرنى خاتىرىگە يۈكلەش",
"choose_files": "ھۆججەتنى تاللاش",
"files_will_be_uploaded": "ھۆججەتلەر قوشۇمچە سۈپىتىدە {{noteTitle}} غا يۈكلىنىدۇ",
"options": "تاللانمىلار",
"shrink_images": "رەسىمنى كىچىكلىتىش",
"upload": "يۈكلەش",
"tooltip": "ئەگەر بۇ تاللانمىنى تاللىسىڭىز، Trilium يۈكلەنگەن رەسىملەرنى چوڭ-كىچىكلىكىنى تەڭشەش ۋە ئەلالاشتۇرۇش ئارقىلىق كىچىكلىتىشكە ئۇرۇنىدۇ، بۇ رەسىمنىڭ سۈپىتىگە تەسىر كۆرسىتىشى مۇمكىن. ئەگەر تاللانمىسا، رەسىملەر ئەسلىدىكى پېتى، ھېچقانداق ئۆزگەرتىشسىز يۈكلىنىدۇ."
},
"attribute_detail": {
"attr_detail_title": "خاسلىق تەپسىلات ماۋزۇسى",
"close_button_title": "ئۆزگەرتىشلەردىن ۋاز كېچىش ۋە تاقاش",
"attr_is_owned_by": "خاسلىق ئىگىسى",
"attr_name_title": "خاسلىق ئىسمى پەقەت ھەرپ-سانلار، ئىككى چېكىت (:) ۋە ئاستى سىزىقتىن (_) لا تەركىب تاپىدۇ",
"name": "نامى",
"value": "قىممىتى",
"target_note_title": "باغلىنىش بولسا مەنبە خاتىرە بىلەن نىشان خاتىرە ئوتتۇرىسىدىكى نام بېرىلگەن بىر خىل ئۇلىنىشتۇر.",
"target_note": "نىشان خاتىرە",
"promoted_title": "ئۆستۈرۈلگەن خاسلىق خاتىرىدە كۆرۈنەرلىك كۆرسىتىلىدۇ.",
"promoted": "ئۆستۈرۈلگەن",
"promoted_alias_title": "ئۆستۈرۈلگەن خاسلىقلار كۆرۈنمە يۈزىدە كۆرسىتىلىدىغان نام.",
"promoted_alias": "تەخەللۇس",
"multiplicity_title": "دەرىجىسى ئوخشاش ناملىق خاسلىقتىن قانچىنى قۇرغىلى بولىدىغانلىقىنى بەلگىلەيدۇ — ئەڭ كۆپ بولغاندا بىر ياكى بىردىن كۆپ.",
"multiplicity": "تەكرارلىقى",
"single_value": "يەككە قىممەت",
"multi_value": "كۆپ قىممەت",
"label_type_title": "بەلگە تىپى Trilium نىڭ بەلگە قىممىتىنى كىرگۈزۈشتە مۇۋاپىق كۆرۈنمە يۈزىنى تاللىشىغا ياردەم بېرىدۇ.",
"label_type": "تىپى",
"text": "تېكىست",
"textarea": "كۆپ قۇرلىق تېكىست",
"number": "سان",
"date": "چېسلا",
"date_time": "چېسلا ۋە ۋاقىت",
"time": "ۋاقىت",
"url": "تور ئادرېسى",
"precision_title": "قىممەت تەڭشەش كۆرۈنمە يۈزىدە، چېكىتتىن كېيىن قانچە خانىلىق سان كۆرسىتىلىشى .",
"precision": "ئېنىقلىقى",
"digits": "چېكىتتىن كېيىنكى خانە سانى",
"inverse_relation_title": "قايتۇرما مۇناسىۋەتنى بەلگىلەيدىغان تاللانما تەڭشەك. مەسىلەن: «دادا» ۋە «ئوغلان» بىر-بىرىگە قايتۇرما مۇناسىۋەتتۇر.",
"inverse_relation": "قايتۇرما مۇناسىۋەت",
"inheritable_title": "ۋارىسلىق قىلغىلى بولىدىغان خاسلىق شۇ دەرەخ قۇرۇلمىسى ئاستىدىكى بارلىق تارماقلارغا ۋارىسلىق قىلىنىدۇ.",
"inheritable": "ۋارىسلىق",
"save_and_close": "ساقلاش ۋە يېپىش <kbd>Ctrl+Enter</kbd>",
"delete": "ئۆچۈرۈش",
"related_notes_title": "مۇشۇ بەلگە قويۇلغان باشقا خاتىرىلەر",
"more_notes": "تېخىمۇ كۆپ خاتىرىلەر",
"label": "بەلگە تەپسىلاتى",
"label_definition": "بەلگە ئېنىقلىمىسى تەپسىلاتى",
"relation": "مۇناسىۋەت تەپسىلاتى",
"relation_definition": "مۇناسىۋەت ئېنىقلىمىسى تەپسىلاتى",
"disable_versioning": "ئاپتوماتىك نۇسخا باشقۇرۇشنى چەكلەيدۇ. بۇ چوڭ ھەجىملىك ئەمما مۇھىم بولمىغان خاتىرىلەرگە (مەسىلەن: قوليازما سىنارىيەسىدە ئىشلىتىلىدىغان چوڭ تىپتىكى JS ئامبارلىرىغا) ماس كېلىدۇ",
"calendar_root": "بۇ بەلگە كۈندىلىك خاتىرىلەرنىڭ يىلتىزىنى بەلگىلەيدۇ. پەقەت بىرلا خاتىرىگە مۇشۇ بەلگىنى قويۇش كېرەك.",
"archived": "مۇشۇ بەلگە قويۇلغان خاتىرىلەر ئىزدەش نەتىجىسىدە (شۇنداقلا «تېز ئۆتۈش»، «ئۇلانما قوشۇش» كۆزنىكى قاتارلىقلاردا) كۆرۈنمەيدۇ.",
"exclude_from_export": "خاتىرىلەر (ۋە ئۇنىڭ تارماق دەرەخلىرى) ھېچقانداق ئېكسپورت قىلىش مەشغۇلاتىغا كىرگۈزۈلمەيدۇ",
"run": "قوليازما script قايسى ھادىسىلەردە ئىجرا قىلىنىدىغانلىقىنى بەلگىلەيدۇ. تۆۋەندىكى قىممەتلەرنى تاللاشقا بولىدۇ:\n\n<ul>\n<li><strong>frontendStartup</strong> - Trilium ئالدى يۈزى قوزغالغاندا (ياكى يېڭىلانغاندا) ئىجرا قىلىنىدۇ، لېكىن كۆچمە تېلېفوننى ئۆز ئىچىگە ئالمايدۇ.</li>\n<li><strong>mobileStartup</strong> - Trilium ئالدى يۈزى كۆچمە تېلېفوندا قوزغالغاندا (ياكى يېڭىلانغاندا) ئىجرا قىلىنىدۇ.</li>\n<li><strong>backendStartup</strong> - Trilium ئارقا سۇپىسى قوزغالغاندا ئىجرا قىلىنىدۇ.</li>\n<li><strong>hourly</strong> - ھەر سائەتتە بىر قېتىم ئىجرا قىلىنىدۇ. سىز <code>runAtHour</code> قوشۇمچە بەلگىسىنى ئىشلىتىپ، كونكرېت قايسى سائەتتە ئىجرا قىلىنىدىغانلىقىنى بەلگىلىسىڭىز بولىدۇ.</li>\n<li><strong>daily</strong> - ھەر كۈنى بىر قېتىم ئىجرا قىلىنىدۇ.</li>\n</ul>",
"run_on_instance": "قايسى Trilium نۇسخىسىدا (instance) ئىجرا قىلىنىدىغانلىقىنى بەلگىلەيدۇ. ئەسلىدىكى تەڭشەكتە بارلىق نۇسخىلاردا ئىجرا قىلىنىدۇ.",
"run_at_hour": "قايسى سائەتتە ئىجرا قىلىنىدىغانلىقىنى بەلگىلەيدۇ. بۇنى <code>#run=hourly</code> بىلەن بىرلىكتە ئىشلىتىش كېرەك. بىر كۈندە كۆپ قېتىم ئىجرا قىلىش ئۈچۈن، بۇ بەلگىنى بىر نەچچە قېتىم تەكرار بەلگىلەشكە بولىدۇ.",
"disable_inclusion": "بۇ بەلگە قويۇلغان قوليازمىلار ئاساسىي قوليازما (parent script) ئىجرا قىلىنغاندا ئۇنىڭغا كىرگۈزۈلمەيدۇ.",
"sorted": "تارماق خاتىرىلەرنى ماۋزۇسىنىڭ ھەرىپ تەرتىپى بويىچە رەتلەيدۇ",
"sort_folders_first": "ھۆججەت قىسقۇچلار (تارماق خاتىرىسى بارلار) ئەڭ ئۈستىدە رەتلىنىشى كېرەك",
"top": "خاتىرىنى ئاساسىي خاتىرە (parent) ئىچىدە ئەڭ ئۈستىدە ساقلايدۇ (پەقەت رەتلەنگەن ئاساسىي خاتىرىلەرگىلا ماس كېلىدۇ)",
"hide_promoted_attributes": "بۇ خاتىرىدىكى كۆتۈرۈلگەن خاسلىقلارنى يوشۇرۇش",
"read_only": "تەھرىرلىگۈچنى «پەقەت ئوقۇش» ھالىتىگە تەڭشەيدۇ. بۇ پەقەت تېكىست ۋە كود تىپىدىكى خاتىرىلەرگىلا ماس كېلىدۇ.",
"auto_read_only_disabled": "تېكىست ياكى كود خاتىرىلىرى بەك چوڭ بولغاندا، ئاپتوماتىك «پەقەت ئوقۇش» ھالىتىگە تەڭشىلىدۇ. مۇشۇ بەلگىنى قوشۇش ئارقىلىق، شۇ خاتىرىنىڭ ئاپتوماتىك ئۆزگىرىش ئىقتىدارىنى چەكلەپ قويالايسىز",
"app_css": "Trilium غا يۈكلىنىدىغان CSS خاتىرىلىرىنى بەلگىلەيدۇ. بۇ ئارقىلىق Trilium نىڭ كۆرۈنۈش ئۇسلۇبىنى ئۆزگەرتىش ئىمكانىيىتىگە ئىگە بولىسىز.",
"app_theme": "Trilium نىڭ تولۇق ئۇسلۇب (Theme) CSSخاتىرىلىرىنى بەلگىلەيدۇ. بۇ خاتىرىلەر Trilium تەڭشىكىدىكى «تېما» تاللانمىلىرىدا كۆرۈنىدۇ.",
"app_theme_base": "TriliumNext ئۇسلۇبىنى ئاساس قىلىش ئۈچۈن، «next» قىلىپ تەڭشەڭ. بۇ كونا ئۇسلۇبتىكى ئاساسنىڭ ئورنىغا ئىشلىتىلىدۇ.",
"css_class": "مۇشۇ بەلگىنىڭ قىممىتى دەرەخسىمان قۇرۇلمىدىكى شۇ خاتىرىگە CSS class سۈپىتىدە قوشۇلىدۇ. بۇ يۇقىرى دەرىجىلىك ئۇسلۇب (theming) تەڭشەشلىرى ئۈچۈن ئىنتايىن پايدىلىق. بۇنى قېلىپ خاتىرىلىرى (template notes) ئىچىدە ئىشلىتىشكە بولىدۇ.",
"icon_class": "مۇشۇ بەلگىنىڭ قىممىتى دەرەخسىمان قۇرۇلمىدىكى سىنبەلگىگە CSS class قىلىپ قوشۇلىدۇ، بۇ خاتىرىلەرنى كۆرۈنۈش جەھەتتىن پەرقلەندۈرۈشكە ياردەم بېرىدۇ. مەسىلەن: bx bx-home؛ سىنبەلگىلەر boxicons دىن ئېلىنىدۇ. قېلىپ خاتىرىلىرى (template notes) ئىچىدە ئىشلىتىشكە بولىدۇ.",
"page_size": "خاتىرە تىزىملىكىنىڭ ھەر بىر بېتىدە كۆرۈنىدىغان تۈر سانى",
"widget": "بۇ خاتىرىنى Trilium نىڭ زاپچاس دەرىخىگە (component tree) قوشۇلىدىغان ئىختىيارىي كىچىك قورال (custom widget) قىلىپ بەلگىلەيدۇ",
"workspace": "بۇ خاتىرىنى «خىزمەت بوشلۇقى» قىلىپ بەلگىلەيدۇ، بۇ تېز سۈرەتتە شۇ قاتلامغا مەركەزلىشىش (hoisting) ئىمكانىيىتىنى يارىتىپ بېرىدۇ",
"workspace_icon_class": "بۇ خاتىرىگە مەركەزلەشكەندە (hoist قىلىنغاندا)، بەتكۈچتە (tab) كۆرۈنىدىغان box icon نىڭ CSS class نى بەلگىلەيدۇ",
"workspace_tab_background_color": "بۇ خاتىرىگە مەركەزلەشكەندە (hoist قىلىنغاندا)، خاتىرە بەتكۈچىدە (tab) ئىشلىتىلىدىغان CSS رەڭگىنى بەلگىلەيدۇ",
"workspace_calendar_root": "ھەر بىر خىزمەت بوشلۇقىنىڭ كالېندار ئاساسىي مۇندەرىجىسىنى بەلگىلەيدۇ",
"workspace_template": "يېڭى خاتىرە قۇرغاندا، بۇ قېلىپنى تاللاش تىزىملىكىدىن تاپقىلى بولىدۇ. ئەمما بۇ پەقەت مۇشۇ قېلىپنى ئۆز ئىچىگە ئالغان خىزمەت بوشلۇقىغا مەركەزلەشكەندە (hoist قىلىنغاندا) ئاندىن كۆرۈنىدۇ",
"search_home": "يېڭىدىن قۇرۇلغان ئىزدەش خاتىرىلىرى مۇشۇ خاتىرىنىڭ تارماق خاتىرىسى (تارماق تۈگۈنى) سۈپىتىدە قوشۇلىدۇ",
"workspace_search_home": "مۇشۇ خىزمەت بوشلۇقى خاتىرىسىنىڭ ھەرقانداق بىر يۇقىرى قاتلام تۈگۈنىگە مەركەزلەشكەندە (hoist قىلىنغاندا)، يېڭى ئىزدەش خاتىرىلىرى مۇشۇ خاتىرىنىڭ تارماق خاتىرىسى سۈپىتىدە قۇرۇلىدۇ",
"inbox": "يان تىزىملىكتىكى «يېڭى خاتىرە» كۇنۇپكىسى ئارقىلىق خاتىرە قۇرغاندا، سۈكۈتتىكى كىرىش ساندۇقى (inbox) ئورنىنى بەلگىلەيدۇ. يېڭى خاتىرە <code>#inbox</code> بەلگىسى قويۇلغان خاتىرىنىڭ تارماق خاتىرىسى سۈپىتىدە قۇرۇلىدۇ."
}
}

View File

@@ -20,14 +20,7 @@
"affected_branches": "Уражені гілки ({{count}}):"
},
"about": {
"app_version": "Версія програми:",
"db_version": "Версія БД:",
"build_date": "Дата збірки:",
"build_revision": "Ревізія збірки:",
"data_directory": "Каталог даних:",
"homepage": "Домашня сторінка:",
"title": "Про Trilium Notes",
"sync_version": "Версія синхронізації:"
"data_directory": "Каталог даних:"
},
"global_menu": {
"about": "Про Trilium Notes",
@@ -186,7 +179,6 @@
"also_delete_note": "Також видалити нотатку"
},
"delete_notes": {
"delete_notes_preview": "Видалити попередній перегляд нотаток",
"close": "Закрити",
"delete_all_clones_description": "Видалити також усі клони (можна скасувати в останніх змінах)",
"erase_notes_description": "Звичайне (м’яке) видалення лише позначає нотатки як видалені і їх можна відновити (у діалоговому вікні останніх змін) протягом певного періоду часу. Якщо позначити цю опцію, нотатки будуть видалені негайно і їх неможливо буде відновити.",
@@ -194,9 +186,7 @@
"notes_to_be_deleted": "Наступні нотатки будуть видалені ({{notesCount}})",
"no_note_to_delete": "Жодну нотатку не буде видалено (лише клони).",
"broken_relations_to_be_deleted": "Наступні зв'язки будуть розірвані та видалені ({{ relationCount}})",
"cancel": "Скасувати",
"ok": "ОК",
"deleted_relation_text": "Нотатка {{- note}} (буде видалена) посилається на зв'язок {{- relation}}, що походить з {{- source}}."
"cancel": "Скасувати"
},
"export": {
"export_note_title": "Експорт нотатки",
@@ -319,33 +309,6 @@
"undelete_link": "відновити",
"confirm_undelete": "Ви хочете відновити цю нотатку та її піднотатки?"
},
"revisions": {
"note_revisions": "Версії нотаток",
"delete_all_revisions": "Видалити всі версії цієї нотатки",
"delete_all_button": "Видалити всі версії",
"help_title": "Довідка щодо Версій нотаток",
"confirm_delete_all": "Ви хочете видалити всі версії цієї нотатки?",
"no_revisions": "Поки що немає версій цієї нотатки...",
"restore_button": "Відновити",
"confirm_restore": "Ви хочете відновити цю версію? Це замінить поточний заголовок та вміст нотатки цієї версії.",
"delete_button": "Видалити",
"confirm_delete": "Ви хочете видалити цю версію?",
"revisions_deleted": "Версії нотаток видалено.",
"revision_restored": "Версію нотатки відновлено.",
"revision_deleted": "Версію нотатки видалено.",
"snapshot_interval": "Інтервал знімків версій нотатки: {{seconds}}s.",
"maximum_revisions": "Ліміт знімків версій нотатки: {{number}}.",
"settings": "Налаштування Версії Нотатки",
"download_button": "Завантажити",
"mime": "МІМЕ: ",
"file_size": "Розмір файлу:",
"preview_not_available": "Попередній перегляд недоступний для цього типу нотатки.",
"diff_on": "Показати різницю",
"diff_off": "Показати вміст",
"diff_on_hint": "Натисніть, щоб показати різницю в джерелі нотатки",
"diff_off_hint": "Натисніть, щоб показати вміст нотатки",
"diff_not_available": "Різниця недоступна."
},
"include_note": {
"dialog_title": "Включити нотатку",
"label_note": "Нотатка",
@@ -1195,7 +1158,6 @@
},
"database_integrity_check": {
"title": "Перевірка цілісності Бази даних",
"description": "Це перевірить, чи не пошкоджена база даних на рівні SQLite. Це може зайняти деякий час, залежно від розміру бази даних.",
"check_button": "Перевірка цілісності бази даних",
"checking_integrity": "Перевірка цілісності бази даних...",
"integrity_check_succeeded": "Перевірка цілісності пройшла успішно — проблем не виявлено.",
@@ -1227,10 +1189,7 @@
"note_tree_font": "Шрифт Дерева нотатки",
"note_detail_font": "Шрифт деталей нотатки",
"monospace_font": "Monospace (кодовий) шрифт",
"note_tree_and_detail_font_sizing": "Зверніть увагу, що розмір шрифту дерева та деталей залежить від основного налаштування розміру шрифту.",
"not_all_fonts_available": "Не всі перелічені шрифти можуть бути доступні у вашій системі.",
"apply_font_changes": "Щоб застосувати зміни шрифту, натисніть на",
"reload_frontend": "перезавантажити інтерфейс",
"generic-fonts": "Загальні шрифти",
"sans-serif-system-fonts": "Системні шрифти Sans-serif",
"serif-system-fonts": "Системні шрифти Serif",
@@ -1369,7 +1328,6 @@
},
"attachment_erasure_timeout": {
"attachment_erasure_timeout": "Тайм-аут стирання вкладень",
"attachment_auto_deletion_description": "Вкладення автоматично видаляються (і стираються), якщо на них більше не посилаються в нотатці після певного часу очікування.",
"erase_attachments_after": "Стерти невикористані вкладення після:",
"manual_erasing_description": "Ви також можете запустити стирання вручну (без урахування часу очікування, визначеного вище):",
"erase_unused_attachments_now": "Стерти невикористані вкладення нотаток зараз",
@@ -1381,7 +1339,6 @@
},
"note_erasure_timeout": {
"note_erasure_timeout_title": "Тайм-аут стирання нотатки",
"note_erasure_description": "Видалені нотатки (а також атрибути, версії...) спочатку лише позначаються як видалені, і їх можна відновити з діалогового вікна Останні нотатки. Через певний проміжок часу видалені нотатки стираються, що означає, що їхній вміст більше не можна відновити. Цей параметр дозволяє налаштувати тривалість періоду між видаленням і стиранням нотатки.",
"erase_notes_after": "Стерти нотатки після:",
"manual_erasing_description": "Ви також можете запустити стирання вручну (без урахування часу очікування, визначеного вище):",
"erase_deleted_notes_now": "Стерти видалені нотатки зараз",
@@ -1466,7 +1423,6 @@
"first-week-contains-first-thursday": "Перший тиждень включає перший четвер року",
"first-week-has-minimum-days": "Перший тиждень має мінімальну кількість днів",
"min-days-in-first-week": "Мінімальна кількість днів у першому тижні",
"first-week-info": "Перший тиждень, що містить перший четвер року, базується на стандарті <a href=\"https://en.wikipedia.org/wiki/ISO_week_date#First_week\">ISO 8601</a>.",
"first-week-warning": "Зміна параметрів першого тижня може призвести до дублювання з існуючими нотатками тижня, і існуючі нотатки тижня не будуть оновлені відповідно.",
"formatting-locale": "Формат дати & числа"
},
@@ -1750,11 +1706,7 @@
"config_title": "Конфігурація синхронізації",
"server_address": "Адреса екземпляра сервера",
"timeout": "Тайм-аут синхронізації",
"timeout_unit": "мілісекунди",
"proxy_label": "Синхронізація проксі-сервера (необов'язково)",
"note": "Нотатка",
"note_description": "Якщо залишити налаштування проксі-сервера порожнім, буде використано системний проксі-сервер (стосується лише збірки для ПК/електронної версії).",
"special_value_description": "Інше спеціальне значення — <code>noproxy</code>, яке змушує ігнорувати навіть системний проксі-сервер та враховує <code>NODE_TLS_REJECT_UNAUTHORIZED</code>.",
"save": "Зберегти",
"help": "Довідка",
"test_title": "Тест синхронізації",

View File

@@ -1,12 +1,5 @@
{
"about": {
"homepage": "Trang chủ:",
"title": "Về Trilium Notes",
"app_version": "Phiên bản:",
"db_version": "Phiên bản DB:",
"sync_version": "Phiên bản liên kết:",
"build_date": "Ngày build:",
"build_revision": "Xây dựng bản sửa đổi:",
"data_directory": "Đường dẫn dữ liệu:"
},
"add_link": {
@@ -27,7 +20,6 @@
},
"delete_notes": {
"close": "Đóng",
"ok": "OK",
"cancel": "Huỷ"
},
"export": {
@@ -70,10 +62,6 @@
"protected_session_password": {
"close_label": "Đóng"
},
"revisions": {
"restore_button": "Khôi phục",
"delete_button": "Xoá"
},
"upload_attachments": {
"options": "Tuỳ chọn"
},

View File

@@ -269,6 +269,8 @@ declare namespace Fancytree {
lazy: boolean;
/** Alternative description used as hover banner */
tooltip: string;
/** `<li>` element wrapping this node. `null` if the node has not been rendered yet. */
li: HTMLLIElement | null;
/** Outer element of single nodes */
span: HTMLElement;
/** Outer element of single nodes for table extension */

View File

@@ -1,3 +1,10 @@
declare module "htmldiff-js" {
const HtmlDiff: {
execute(oldHtml: string, newHtml: string): string;
};
export default HtmlDiff;
}
// TODO: Use real @types/ but that one generates a lot of errors.
declare module "draggabilly" {
type DraggabillyEventData = {};

View File

@@ -20,7 +20,8 @@ import tree from "../services/tree";
import { createImageSrcUrl, openInAppHelpFromUrl } from "../services/utils";
import { ViewTypeOptions } from "./collections/interface";
import ActionButton, { ActionButtonProps } from "./react/ActionButton";
import { useIsNoteReadOnly, useNoteLabelBoolean, useTriliumEvent, useTriliumOption, useWindowSize } from "./react/hooks";
import { ButtonGroup } from "./react/Button";
import { useIsNoteReadOnly, useNoteLabel, useNoteLabelBoolean, useTriliumEvent, useTriliumOption, useWindowSize } from "./react/hooks";
import NoteLink from "./react/NoteLink";
import RawHtml from "./react/RawHtml";
@@ -47,8 +48,9 @@ export type FloatingButtonsList = ((context: FloatingButtonContext) => false | V
export const DESKTOP_FLOATING_BUTTONS: FloatingButtonsList = [
RefreshBackendLogButton,
SwitchSplitOrientationButton,
ToggleReadOnlyButton,
SwitchSplitOrientationButton,
DisplayModeSwitcher,
EditButton,
ShowTocWidgetButton,
ShowHighlightsListWidgetButton,
@@ -80,9 +82,13 @@ function RefreshBackendLogButton({ note, parentComponent, noteContext, isDefault
}
function SwitchSplitOrientationButton({ note, isReadOnly, isDefaultViewMode }: FloatingButtonContext) {
const isEnabled = note.type === "mermaid" && note.isContentAvailable() && !isReadOnly && isDefaultViewMode;
const [ displayMode ] = useNoteLabel(note, "displayMode");
const [ splitEditorOrientation, setSplitEditorOrientation ] = useTriliumOption("splitEditorOrientation");
const upcomingOrientation = splitEditorOrientation === "horizontal" ? "vertical" : "horizontal";
const effectiveMode = displayMode === "source" || displayMode === "split" || displayMode === "preview"
? displayMode
: isReadOnly ? "preview" : "split";
const isEnabled = note.type === "mermaid" && note.isContentAvailable() && effectiveMode === "split" && isDefaultViewMode;
return isEnabled && <FloatingButton
text={upcomingOrientation === "vertical" ? t("switch_layout_button.title_vertical") : t("switch_layout_button.title_horizontal")}
@@ -94,7 +100,7 @@ function SwitchSplitOrientationButton({ note, isReadOnly, isDefaultViewMode }: F
function ToggleReadOnlyButton({ note, isDefaultViewMode }: FloatingButtonContext) {
const [ isReadOnly, setReadOnly ] = useNoteLabelBoolean(note, "readOnly");
const isSavedSqlite = note.isTriliumSqlite() && !note.isHiddenCompletely();
const isEnabled = ([ "mermaid", "mindMap", "canvas" ].includes(note.type) || isSavedSqlite)
const isEnabled = ([ "mindMap", "canvas", "spreadsheet" ].includes(note.type) || isSavedSqlite)
&& note.isContentAvailable() && isDefaultViewMode;
return isEnabled && <FloatingButton
@@ -104,6 +110,33 @@ function ToggleReadOnlyButton({ note, isDefaultViewMode }: FloatingButtonContext
/>;
}
function DisplayModeSwitcher({ note, isDefaultViewMode }: FloatingButtonContext) {
const [ displayMode, setDisplayMode ] = useNoteLabel(note, "displayMode");
const isEnabled = (note.isMarkdown() || note.type === "mermaid") && note.isContentAvailable() && isDefaultViewMode;
if (!isEnabled) return false;
const mode = displayMode === "source" || displayMode === "preview" ? displayMode : "split";
const buttons: Array<{ value: "source" | "split" | "preview"; icon: string; text: string }> = [
{ value: "source", icon: "bx bx-code", text: t("display_mode.source") },
{ value: "split", icon: "bx bxs-dock-left", text: t("display_mode.split") },
{ value: "preview", icon: "bx bx-show", text: t("display_mode.preview") }
];
return (
<ButtonGroup size="sm">
{buttons.map(({ value, icon, text }) => (
<FloatingButton
key={value}
icon={icon}
text={text}
active={mode === value}
onClick={() => setDisplayMode(value)}
/>
))}
</ButtonGroup>
);
}
function EditButton({ note, noteContext }: FloatingButtonContext) {
const [animationClass, setAnimationClass] = useState("");
const {isReadOnly, enableEditing} = useIsNoteReadOnly(note, noteContext);

View File

@@ -4,6 +4,7 @@ import clsx from "clsx";
import { isValidElement, VNode } from "preact";
import { useEffect, useRef, useState } from "preact/hooks";
import appContext from "../components/app_context";
import NoteContext from "../components/note_context";
import FNote from "../entities/fnote";
import type { PrintReport } from "../print";
@@ -146,13 +147,21 @@ export default function NoteDetail() {
toast.closePersistent("printing");
handlePrintReport(printReport);
};
const onPreviewResult = (_e: any, { buffer, notePath }: { buffer: Uint8Array; notePath: string }) => {
toast.closePersistent("printing");
if (note) {
appContext.triggerCommand("showPrintPreview", { pdfBuffer: buffer, note, notePath });
}
};
ipcRenderer.on("print-progress", onPrintProgress);
ipcRenderer.on("print-done", onPrintDone);
ipcRenderer.on("export-as-pdf-preview-result", onPreviewResult);
return () => {
ipcRenderer.off("print-progress", onPrintProgress);
ipcRenderer.off("print-done", onPrintDone);
ipcRenderer.off("export-as-pdf-preview-result", onPreviewResult);
};
}, []);
}, [note]);
useTriliumEvent("executeInActiveNoteDetailWidget", ({ callback }) => {
if (!noteContext?.isActive()) return;
@@ -173,54 +182,51 @@ export default function NoteDetail() {
useTriliumEvent("printActiveNote", () => {
if (!noteContext?.isActive() || !note) return;
showToast("printing");
if (isElectron()) {
// On Electron, open the print preview dialog. Actual print/PDF actions
// are triggered from the dialog's footer buttons.
showToast("exporting_pdf");
const { ipcRenderer } = dynamicRequire("electron");
ipcRenderer.send("print-note", {
notePath: noteContext.notePath
ipcRenderer.send("export-as-pdf-preview", {
title: note.title,
notePath: noteContext.notePath,
pageSize: note.getAttributeValue("label", "printPageSize") ?? "Letter",
landscape: note.hasAttribute("label", "printLandscape"),
scale: parseFloat(note.getAttributeValue("label", "printScale") ?? "1") || 1,
margins: note.getAttributeValue("label", "printMargins") ?? "default",
pageRanges: ""
});
} else {
const iframe = document.createElement('iframe');
iframe.src = `?print#${noteContext.notePath}`;
iframe.className = "print-iframe";
document.body.appendChild(iframe);
iframe.onload = () => {
if (!iframe.contentWindow) {
toast.closePersistent("printing");
document.body.removeChild(iframe);
return;
return;
}
// Browser fallback: render the print page in a hidden iframe and use window.print().
showToast("printing");
const iframe = document.createElement('iframe');
iframe.src = `?print#${noteContext.notePath}`;
iframe.className = "print-iframe";
document.body.appendChild(iframe);
iframe.onload = () => {
if (!iframe.contentWindow) {
toast.closePersistent("printing");
document.body.removeChild(iframe);
return;
}
iframe.contentWindow.addEventListener("note-load-progress", (e) => {
showToast("printing", e.detail.progress);
});
iframe.contentWindow.addEventListener("note-ready", (e) => {
toast.closePersistent("printing");
if ("detail" in e) {
handlePrintReport(e.detail as PrintReport);
}
iframe.contentWindow.addEventListener("note-load-progress", (e) => {
showToast("printing", e.detail.progress);
});
iframe.contentWindow.addEventListener("note-ready", (e) => {
toast.closePersistent("printing");
if ("detail" in e) {
handlePrintReport(e.detail as PrintReport);
}
iframe.contentWindow?.print();
document.body.removeChild(iframe);
});
};
}
});
useTriliumEvent("exportAsPdf", () => {
if (!noteContext?.isActive() || !note) return;
showToast("exporting_pdf");
const { ipcRenderer } = dynamicRequire("electron");
ipcRenderer.send("export-as-pdf", {
title: note.title,
notePath: noteContext.notePath,
pageSize: note.getAttributeValue("label", "printPageSize") ?? "Letter",
landscape: note.hasAttribute("label", "printLandscape")
});
iframe.contentWindow?.print();
document.body.removeChild(iframe);
});
};
});
return (
@@ -346,7 +352,9 @@ export async function getExtendedWidgetType(note: FNote | null | undefined, note
resultingType = "readOnlyText";
} else if (note.isTriliumSqlite()) {
resultingType = "sqlConsole";
} else if ((type === "code" || type === "mermaid") && (await noteContext?.isReadOnly())) {
} else if (note.isMarkdown()) {
resultingType = "markdown";
} else if (type === "code" && (await noteContext?.isReadOnly())) {
resultingType = "readOnlyCode";
} else if (type === "text") {
resultingType = "editableText";

View File

@@ -87,7 +87,7 @@ function buildUserAttribute(attr: AttributeWithDefinitions): ComponentChildren {
content = <><Icon icon={value === "true" ? "bx bx-check-square" : "bx bx-square"} />{" "}<strong>{attr.friendlyName}</strong></>;
break;
case "url":
content = <a href={value} target="_blank" rel="noopener noreferrer">{attr.friendlyName}</a>;
content = <a href={value} target="_blank" rel="noopener noreferrer" onClick={(e) => e.stopPropagation()}>{attr.friendlyName}</a>;
break;
case "color":
style = { backgroundColor: value, color: getReadableTextColor(value) };

View File

@@ -267,7 +267,9 @@ const ATTR_HELP: Record<string, Record<string, string>> = {
newNotesOnTop: t("attribute_detail.new_notes_on_top"),
hideHighlightWidget: t("attribute_detail.hide_highlight_widget"),
printLandscape: t("attribute_detail.print_landscape"),
printPageSize: t("attribute_detail.print_page_size")
printPageSize: t("attribute_detail.print_page_size"),
printScale: t("attribute_detail.print_scale"),
printMargins: t("attribute_detail.print_margins")
},
relation: {
runOnNoteCreation: t("attribute_detail.run_on_note_creation"),

View File

@@ -180,11 +180,13 @@ export function useNoteIds(note: FNote | null | undefined, viewType: ViewTypeOpt
// Refresh on alterations to the note subtree.
useTriliumEvent("entitiesReloaded", ({ loadResults }) => {
if (note && loadResults.getBranchRows().some(branch =>
branch.parentNoteId === note.noteId
|| noteIds.includes(branch.parentNoteId ?? ""))
if (note && (
loadResults.getNoteReorderings().includes(note.noteId)
|| loadResults.getBranchRows().some(branch =>
branch.parentNoteId === note.noteId
|| noteIds.includes(branch.parentNoteId ?? ""))
|| loadResults.getAttributeRows().some(attr => attr.name === "archived" && attr.noteId && noteIds.includes(attr.noteId))
) {
)) {
refreshNoteIds();
}
});

Some files were not shown because too many files have changed in this diff Show More