1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-09-02 20:46:21 +02:00

Compare commits

...

517 Commits

Author SHA1 Message Date
Laurent Cozic
e896be48f0 Android release v1.0.310 2019-11-11 07:22:20 +00:00
Laurent Cozic
a806d753c4 Electron release v1.0.171 2019-11-11 07:16:33 +00:00
Helmut K. C. Tessarek
ab4fd9ed53 Update translations 2019-11-11 01:46:03 -05:00
Diego Erdody
9c98fb5312 Desktop: Add new setting to show note counts for folders and tags (#2006)
* Adding node counts for folders and tags

* Add unit tests

* Fix count update when the tag list for a note is updated

* Right align note counts and remove from the settings screen

* Folder note count calculation update to include descendants

* Update Setting.js

* Change count style and fix click on counts

* Fix tag/folder count update on delete/add note

* Review updates
2019-11-11 06:14:56 +00:00
Laurent Cozic
c0dd8d0332 Merge branch 'master' of github.com:laurent22/joplin 2019-11-07 22:38:36 +00:00
Laurent Cozic
60a1f96b4f Desktop, Mobile: Fixes #2030: Fix handling of URLs that contain single quotes 2019-11-07 22:38:22 +00:00
Helmut K. C. Tessarek
40dfb730dc we do not want localization for logging output
/ref https://discourse.joplinapp.org/t/message-in-log-file-translated-by-mistake/4198?u=tessus
2019-11-07 16:35:04 -05:00
Laurent Cozic
4e72a8f3a5 Clipper: Fixes #2034: Better handling of HTML minifying error with fallback to non-minified HTML 2019-11-07 20:32:11 +00:00
Laurent Cozic
3da32f007e Clipper: Fixes #2015: Fix issue with certain PRE code blocks 2019-11-07 20:06:33 +00:00
Laurent Cozic
4af8bb8e8d Clipper: Fixes #1990: Clipper was not saving page URL when taking screenshot 2019-11-07 18:12:14 +00:00
Laurent Cozic
a6f190766c Clipper: Upgrade packages to fix security issue 2019-11-07 18:10:19 +00:00
Shane Kilkelly
fa3f0d2071 Desktop: Resolves #1298: Add keyboard modes to editor (vim, emacs) (#2056)
* Add keyboard modes to editor (vim, emacs, default)

This adds a new option to settings, and then sets the
appropriate keyboard handler in the ace editor.

The "default" option is equivalent to the old keyboard
behaviour.

* Remove stray console.log

* Move the keyboard-mode setting to the general section

* Change `keyboardMode` setting to `editor.keyboardMode`
2019-11-06 21:51:08 +00:00
boring10
8d6cfdc292 Desktop: Fixes #1570: Prevent horizontal scrolling on Linux when a scrollbar is present in note list (#2062)
* Prevent horizontal scrolling on Linux when a scrollbar is present in the note list.

* max-width usage specifically to target Linux horizontal scroll problem.
2019-11-06 21:46:26 +00:00
Helmut K. C. Tessarek
48f0c1c37b All: Resolves #2042: Set user-agent header to Joplin/1.0 (#2064)
closes #2042
2019-11-06 09:54:16 +00:00
Christian Moritz
17584b52af CLI: update sharp tp v0.23.2 (for node 13 compatibility) (#2063) 2019-11-06 09:52:48 +00:00
Caleb John
c05bc899eb Desktop, Mobile: Added link resource icon (#2035)
* Add forkawesome icons

* Add resource icon for specific filetypes

* Ignore resource link styling on mobile

* whtiespace

* render txt icons and adjust icon sizes

* Replace fork-awesome font with inline svg so icons work on mobile

* Add comment describing the source of resource icons
2019-11-05 21:41:36 +00:00
Laurent Cozic
c9f6ce7496 Merge branch 'master' of github.com:laurent22/joplin 2019-11-05 17:16:43 +00:00
Laurent Cozic
67d2c454ee Desktop: Resolves #2031: Prevent window from being shown on startup when it should be hidden in tray 2019-11-05 17:03:24 +00:00
Helmut K. C. Tessarek
83c3c027d0 Desktop, Mobile: Fix TOC with special characters (#2052) 2019-11-05 13:18:05 +00:00
genneko
3cac187023 Translation: Update ja_JP.po (#2061) 2019-11-05 00:30:14 -05:00
Helmut K. C. Tessarek
3800b0bf47 Update de_DE.po 2019-11-04 19:07:56 -05:00
Helmut K. C. Tessarek
41b2eb8871 Update translations 2019-11-04 19:02:39 -05:00
Helmut K. C. Tessarek
bc84cdda7d Translation: pt_BR.po (#2060)
Translation: pt_BR.po
2019-11-04 18:47:51 -05:00
Marton Paulo
6d77394196 Translation: add Esperanto language (eo.po) (#2054)
* Add Esperanto language

* Update Esperanto language to 40% completed

* Update Esperanto language to 51% completed
2019-11-04 18:47:05 -05:00
Marton Paulo
968bba4d8e Updated Brazilian Portuguese language to 100% complete 2019-11-04 18:41:02 -05:00
Helmut K. C. Tessarek
cdd8090f33 Update de_DE.po 2019-11-04 15:40:43 -05:00
Helmut K. C. Tessarek
1be26e4497 Update web site 2019-11-02 09:47:19 -04:00
Laurent Cozic
cc51ba4f90 Tools: Upgraded jasmine and made it easier to filter tests 2019-11-02 10:19:24 +00:00
Laurent Cozic
85984109b5 Merge branch 'master' of github.com:laurent22/joplin 2019-11-01 22:44:50 +00:00
Laurent Cozic
689a12cdfb Cli: Fixes #2039: Handle paths with spaces for text editor 2019-11-01 22:42:05 +00:00
Laurent Cozic
abd74db112 Doc: Removed Hacktoberfest 🎃 banner 2019-11-01 13:20:35 +00:00
m-svo
cb06dab16f fix typo in install_and_update.sh (#2051) 2019-11-01 11:28:25 +00:00
Laurent Cozic
d2a7e46c1a Fix tests 2019-10-31 09:55:39 +00:00
Laurent Cozic
2997b0f2c4 Renamed 'layout' setting to 'layoutButtonSequence' 2019-10-31 08:47:45 +00:00
Subodh Dahal
f450ef09cc Desktop: Resolves #1900: Allow selecting what views should be available from the Layout button (#2028)
* Added options for selecting layout

* Toggle through the layouts based on config

* Used redux state for getting layout settings

* Removed duplicated strings for layout options

* Moved option for selecting layouts to "View" menu
2019-10-31 08:42:17 +00:00
aerotog
316746605e Desktop: Fixes #1790: Stop print command from resetting theme (#1999) 2019-10-31 08:33:40 +00:00
Laurent Cozic
5522d11eed Merge branch 'master' of github.com:laurent22/joplin 2019-10-31 07:25:39 +00:00
Helmut K. C. Tessarek
67266af1ae fix layout issue introduced by #1991 2019-10-30 16:59:32 -04:00
Laurent Cozic
273c0f432c Desktop: Fixed attachment markup when importing ENEX files as HTML so that it works in mobile too 2019-10-30 18:23:37 +00:00
Laurent Cozic
d346cdb897 Added Bosnian language and cleaned up translations 2019-10-30 18:12:06 +00:00
Fernando K
57a4b48c9b Desktop, Mobile: Resolves #2043: Add <kbd> tag support (#2044) 2019-10-30 15:43:58 +00:00
Daniel Landau
c3b1018929 Desktop: Resolves #215: Fill X primary selection from the editor on text selection (#2029)
This fixes the Joplin->"other apps" half of
https://github.com/laurent22/joplin/issues/215.
2019-10-30 15:40:59 +00:00
Laurent Cozic
a2ba64ccf5 Merge branch 'master' of github.com:laurent22/joplin 2019-10-30 13:56:59 +00:00
Helmut K. C. Tessarek
26d91e355a Mobile: Show alarm in correct date and time format (#2026) 2019-10-30 10:24:06 +00:00
Stephanie Foskitt
7bf394d8d5 Desktop: Resolves #1918: Allow custom CSS when printing (#2014)
* Sets `useCustomCss` default to "true".   Updates README.md for reference to Custom CSS.

* Reverse changes to  and .  Correct the spacing in .
2019-10-30 10:21:58 +00:00
Helmut K. C. Tessarek
cdf6f9c436 Desktop, Mobile: Resolves #1953: Update Markdown plugins: toc-done-right, anchor (#2005)
This change fixes a few issues with the toc plugin.
It now allows to set inline options. e.g. to set the max toc depth.

1. set toc depth to 2 levels

```
$<toc{"level":[1,2]}>
```

2. set toc depth to 3 levels and use an ordered list

```
$<toc{"level":[1,2,3],"listType":"ol"}>
```

/ref https://github.com/nagaozen/markdown-it-toc-done-right/issues/16

---

fixes #1953
fixes #1843
fixes https://discourse.joplinapp.org/t/set-depth-of-toc/2899
2019-10-30 10:18:31 +00:00
Helmut K. C. Tessarek
dece5d8de7 Desktop: Resolves #1903: Add Nord theme (#2004)
code by vzsky (PR was abandoned)
closes #1903
2019-10-30 09:55:45 +00:00
Laurent Cozic
33b8da98af Clean up 2019-10-30 09:54:32 +00:00
Hanna Bennett
0386534b3a CLI: Resolves #1974: Add command to list all tags for a note (#2003)
* Add command to list tags associated with a given note

* Update description

* Fix autocompletion to do notes instead of tags when tag-command is notetags
2019-10-30 09:43:47 +00:00
Tommy Bergeron
885858dcb4 Desktop: Resolves #1988: Add menu item to toggle note list (#1991)
* Add menu item to toggle note list #1988

* Hiding the noteList now fully works + standardized casing for noteList #1988

* hiding verticalResizer to fully hide note list and its extra border #1988

* curly braces on the same line #1988

* fa-tasks is "less" worse as an icon for toggle note list #1988

* liking this icon a whole lot more

* removed useless width tweak
2019-10-30 09:40:33 +00:00
Laurent Cozic
8c5d82fab2 Update CONTRIBUTING.md 2019-10-30 09:11:07 +00:00
Laurent Cozic
c683c1b8ec Doc: Added link to good-first-issue tag 2019-10-30 09:06:57 +00:00
Laurent Cozic
cde5aa9b06 Merge branch 'master' of github.com:laurent22/joplin 2019-10-29 11:08:48 +00:00
luzpaz
d3ba6798d7 Doc: Fix documentation and source comment typos (#2037)
* Misc. typo and whitespace fixes

Found via `codespell -q 3 -S *.po,*.pot,./ElectronClient/app/locales,./ReactNativeClient/locales,./CliClient/locales -L adresse,ba,fonction,te,whet`

* Revert a previous change
2019-10-29 09:02:42 +00:00
Helmut K. C. Tessarek
1f42c10c2a Update translations 2019-10-28 21:18:18 -04:00
exponentactivity
14f6108e57 Translation: update Danish (da_DK.po ) (#2033) 2019-10-28 21:00:43 -04:00
Helmut K. C. Tessarek
9512a08810 Update web site 2019-10-28 20:26:19 -04:00
Helmut K. C. Tessarek
78b8648945 add FAQ entry on how to restart Joplin on Windows 2019-10-28 20:22:45 -04:00
Laurent Cozic
71e01e5566 Cli: Handle special shortcuts such as Ctrl+H 2019-10-28 20:10:03 +00:00
Laurent Cozic
01614b5a13 All: Resolves #2002: Handle WebDAV server with empty XML namespaces 2019-10-28 19:15:18 +00:00
Laurent Cozic
7153c06e88 Api: Fixes #2018: Fixed error handling when getting resources of a note that does not exist 2019-10-28 19:02:29 +00:00
Laurent Cozic
30969f8ab6 Desktop: Fixes #1867: Fix scrolling issue when clicking on internal link 2019-10-28 18:56:38 +00:00
Laurent Cozic
19f9c4f540 Desktop: Fixes #2008: Open links in external browser from revision view 2019-10-28 18:47:23 +00:00
Laurent Cozic
5b5e07d4dc Merge branch 'master' of github.com:laurent22/joplin 2019-10-28 18:19:49 +00:00
Laurent Cozic
4ab1fb3ec5 Not needed 2019-10-23 16:17:40 +01:00
abonte
9dedb832fc Translation: update Italian (it_IT.po) (#2009) 2019-10-20 03:07:40 -04:00
Alex Devero
b8b487991d Translation: update Czech cs_CZ.po (#2007) 2019-10-18 06:00:42 -04:00
Laurent Cozic
f10ba28e0c Update lock.yml 2019-10-18 11:32:23 +02:00
Helmut K. C. Tessarek
22398e69c5 Desktop: Add context menu and menu item to create sub-notebook (#1984)
* add context menu and menu item to create sub-notebook

closes #1978 (create sub-notebook by right-clicking on notebook)

* simplify code, remove async
2019-10-17 22:41:13 +02:00
Caleb John
0eb51e6bb0 Desktop: Stop watching external edits when closing editor (#1981)
* Stop watching external edits

* move onClose to options

* Wrap openExternal in promise

* More specific error with locale

* Removed localization of external edit error
2019-10-17 22:40:27 +02:00
genneko
9436075fdf Translation: Update ja_JP.po Japanese (#2000)
* Translate new strings.
* Improve existing strings.
2019-10-17 00:22:13 -04:00
Woosuk Park
409494afbb Translation: update Korean Langauge (ko.po) (#1989)
* Translation - Korean Langauge

Some change of Korean Language

* Translation - Korean Langauge

Some change of Korean Language
2019-10-16 19:47:47 -04:00
Helmut K. C. Tessarek
a544ebd451 update translations 2019-10-16 19:25:55 -04:00
Xaris Ar
8350a6cc12 Translation: new language Greek (el_GR) (#1997)
* Create el_GR.po (part1)

* Update el_GR.po

* Update el_GR.po (part 2)

* Update el_GR.po

* Finished Greek(el_GR) translation

Finished translating all texts.
Update el_GR.po (beta)
2019-10-16 19:15:55 -04:00
Helmut K. C. Tessarek
b5e7dc5304 Update de_DE.po 2019-10-16 19:07:38 -04:00
Helmut K. C. Tessarek
a11171d73a update translations 2019-10-16 18:14:43 -04:00
Laurent Cozic
4706abbc06 Android release v1.0.309 2019-10-16 23:59:46 +02:00
Laurent Cozic
58b307ba02 Mobile: Resolves #1998: Allow selecting camera ratio and fixed camera view aspect ratio. Also made camera type persistent. 2019-10-16 23:52:22 +02:00
Laurent Cozic
3281ab05b1 Merge branch 'master' of github.com:laurent22/joplin 2019-10-15 00:04:37 +02:00
Laurent Cozic
3a32e79001 Doc: Moved API doc to generation script 2019-10-15 00:04:23 +02:00
Helmut K. C. Tessarek
d91b3624e9 Desktop, Mobile: Add typographer support (#1987)
* add typographer support

* add info to readme/markdown.md
2019-10-15 00:01:58 +02:00
Helmut K. C. Tessarek
d02ced59f8 GitHub: Lock issues that have been closed as stale after 1 day 2019-10-14 17:35:54 -04:00
Laurent Cozic
ba3abf7c4c Update website 2019-10-14 23:28:24 +02:00
Laurent Cozic
cc24398e71 Doc: Add mhchem doc 2019-10-14 23:28:00 +02:00
Laurent Cozic
27d0a8f6e7 GitHub: Lock issues that have been closed as stale after 1 day 2019-10-14 15:44:17 +02:00
Laurent Cozic
4788c46e2c Merge branch 'master' of github.com:laurent22/joplin 2019-10-14 10:35:21 +02:00
Laurent Cozic
0370c7b627 All: Allow apps to work with read-only profile 2019-10-14 10:35:04 +02:00
FoxMaSk
5cbae74086 update API doc related to issue #1956 (#1982)
* update doc related to issue #1956

* Space line
2019-10-14 04:21:51 -04:00
Laurent Cozic
008e30bdb7 Apply linter 2019-10-14 01:47:21 +02:00
Laurent Cozic
a5f17fad58 Android release v1.0.308 2019-10-13 23:19:15 +02:00
Laurent Cozic
22c3646fc6 Electron release v1.0.170 2019-10-13 23:13:19 +02:00
Laurent Cozic
a3e7f0b5ef Tools: Fixed building Android app on Windows 2019-10-13 01:21:56 +02:00
Laurent Cozic
9f5da92ab4 Desktop, Mobile: Added support for chemical equations using mhchem for Katex 2019-10-13 00:22:24 +02:00
Laurent Cozic
fdafe3b947 Desktop: Fixes #1854: Prevent note content from being deleted when using certain external editors (in particular Typora) 2019-10-12 22:51:38 +02:00
Laurent Cozic
6dec711a0a Desktop: Fixes #1854: Prevent external editor from clearing the note in some hard to replicate cases 2019-10-12 21:30:38 +02:00
Laurent Cozic
ec67bc7f1a Mobile: Fixes #1910: Make sure side bar text is white when dark theme is used 2019-10-12 20:55:59 +02:00
Laurent Cozic
47aaf639b3 Merge branch 'master' of github.com:laurent22/joplin 2019-10-12 20:49:42 +02:00
Laurent Cozic
51233c2745 Mobile: Fixes #1975: Images were not being displayed just after having been taken or attached 2019-10-12 20:49:10 +02:00
Laurent Cozic
90bc84c010 Clipper: Fixed: Some tables were imported with a duplicate header 2019-10-12 19:36:06 +02:00
Laurent Cozic
7f1e684dab Updated package to fix tests 2019-10-12 10:47:16 +02:00
Helmut K. C. Tessarek
5f28d0ec24 Desktop: Add option to set page dimensions when printing (#1976)
* add setting: export.pdfPageSize

* create 2 settings: size and orientation

* export.pdfPageOrientation: use string instead of boolean

* add other page formats supported by Electron
2019-10-12 01:21:19 +02:00
Matthew Crumley
348c4ad3a3 Desktop: Resolves #1222: Truncate update changelog when it's too long (#1967)
The changelong text is truncated if it's longer than 1000 characters,
but avoids cutting off a partial line, unless that would lead to cutting
off too much of the text. An ellipsis is added to mark the truncation.

Additionally, when the changelong is truncated, it adds a "Full Release Notes"
button that opens the GitHub release page in a browser window.
2019-10-12 00:44:58 +02:00
J0J0 T
f90cc8d67d Desktop, Cli: enex_to_md: Support italic in span tags (#1966)
* Desktop, Cli: enex_to_md: support italic in span tags

* Desktop, Cli: enex_to_md: readd debug message to resolve CI conflict

* Desktop, Cli: enex_to_md: fix CI errors

add spaces to commented out debug messages

* Desktop, Cli: enex_to_md: remove redundant commented out debug message

* Desktop, Cli: enex_to_md: readd redundant commented out debug message

CI wants it in there - maybe remove in another PR
2019-10-12 00:39:13 +02:00
Alan Martins Silva
d3e9ffcaea Mobile: Added duplicate option when selecting notes. (#1969)
* Adding duplicate button on screen-header.js when selecting notes; Adding 'duplicateMultipleNotes' function on Note.js;

* Using for-loop like the rest of the code does

* changing from 'uniqueTitle' to 'ensureUniqueTitle'
2019-10-12 00:37:16 +02:00
Laurent Cozic
b0a4a10dcc Clipper: Fixes #1876: Handle more styles of named anchors, including spans 2019-10-12 00:18:40 +02:00
Laurent Cozic
8ef5c96cb6 Desktop: Fixes #1970: Display error message when notes cannot be exported 2019-10-11 20:20:12 +02:00
Laurent Cozic
6be36ffe17 Desktop: Fixes #1819: Note view was not reloaded after viewing revisions 2019-10-11 20:10:25 +02:00
Laurent Cozic
7d7975daf4 Cli: Allow setting user timestamps with "set" command 2019-10-11 19:49:47 +02:00
Laurent Cozic
c98644b72f All: Allow a sync client to lock a sync target, so that migration operations can be performed on it 2019-10-11 01:03:23 +02:00
Laurent Cozic
8a097fb79c All: Added concept of sync version and client ID to allow upgrading sync targets 2019-10-10 23:23:11 +02:00
Laurent Cozic
f71e7f4fd3 Update ISSUE_TEMPLATE.md 2019-10-09 22:13:14 +02:00
Laurent Cozic
9c8add97e7 Tests: Add EnexToHtml to the list 2019-10-09 22:10:18 +02:00
Laurent Cozic
b099c811cc Merge branch 'master' of github.com:laurent22/joplin 2019-10-09 21:35:33 +02:00
Laurent Cozic
a8ae0f8078 Apply linter config 2019-10-09 21:35:13 +02:00
Laurent Cozic
d355169b60 Tools: Added rules to linter 2019-10-09 21:33:21 +02:00
Helmut K. C. Tessarek
08295525de Desktop: Add checkmark to menu item, if Dev Tools are on (#1949)
* add checkmark to menu item, if Dev Tools are on

If one closed the dev tools window, one could think that the Dev Tools are closed.
This is not the case. After the next action, the window opens again. This can be
confusing, therefore I added a checkmark to the menu item so that it is very clear.

* fix no-case-declarations

* fix reducer issue
2019-10-09 19:55:35 +02:00
Nathan Leiby
fdcf27fc65 Mobile: confirm encryption password (#1939)
* mobile: confirm encryption password

* pr feedback: translatable strings + style refactor

also added placeholder text

* s/did/do
2019-10-08 18:04:25 -04:00
Caleb John
f2c82b05d9 Desktop: Improved resource hover title (#1965)
* Improved resource hover title

* Add mimetype to resource links

* Escape mime type for resource links
2019-10-08 21:39:38 +02:00
Laurent Cozic
add9dda759 Desktop, Cli: Give correct mime type to more file types 2019-10-08 21:36:33 +02:00
Rafael Cavalcanti
fbba4a1ec4 Fix category on Linux installation script (#1964) 2019-10-08 19:45:08 +02:00
Laurent Cozic
154d303463 Merge branch 'master' of github.com:laurent22/joplin 2019-10-07 23:15:14 +02:00
Laurent Cozic
fdef2db232 Desktop, Cli: Fixes #1960: Apply default style to notes in HTML format 2019-10-07 23:14:49 +02:00
Rafael Cavalcanti
d49fa8e42b Minor fix on install script (#1954) 2019-10-07 22:32:17 +02:00
Irvin Dominin
871d3cb87d Fixed italian locale (#1955)
* Fixed italian locale

* Fixed italian locale

* Revert "Fixed italian locale"

This reverts commit b48695593f.
2019-10-07 16:20:31 -04:00
Laurent Cozic
f1d751b356 Tools: Handle Api commit messages 2019-10-07 10:12:10 +02:00
Laurent Cozic
60c1939d26 Api: Resolves #1956: Allow getting the resources of a note 2019-10-07 09:57:24 +02:00
Devon Zuegel
d2aaac22e5 Desktop: Add loading animation to import/export (#1888)
* Add loading animation to import/export

* Removed unecessary CSS prefixes
2019-10-05 22:46:39 +01:00
Andros Fenollosa
c6842a8591 Update Joplin_install_and_update.sh (#1952)
- Add argument: Mutes messages by console.
- Remove unset.
- Variables in capital letters.
2019-10-05 18:14:45 +01:00
Laurent Cozic
60e9abdd61 GitHub: Remove option to create feature requests 2019-10-04 13:54:07 +01:00
Laurent Cozic
9796630aa2 Update markdown.md 2019-10-04 09:14:18 +01:00
Laurent Cozic
7230cdea33 Doc: Added table example to Markdown cheatsheet 2019-10-04 09:13:24 +01:00
Andros Fenollosa
6460907976 Updating translation es_ES.po (#1947)
* Update language es_ES

* Add Last-Translator

* Translation fix
2019-10-03 17:42:07 -04:00
Helmut K. C. Tessarek
d7a50a1b48 Desktop: Resolves #1662: Set cancel as the default in dangerous operations (#1934)
* set cancel as the  default in dangerous operations, rename buttons (delete, remove) and context menu (for tags)

fixes #1662 (partially, because I can't fix the upstream issue, unless we update Electron)

* add default value for buttonLabel
2019-10-03 22:33:49 +01:00
oskar
4a88343372 Mobile: Added Front Camera toggle when taking a picture (#1913)
* added front camera support

* added front camera button and logic
2019-10-03 22:23:43 +01:00
Helmut K. C. Tessarek
74c2bbc2f0 change tense when passwords do not match 2019-10-02 19:32:32 -04:00
Nathan Leiby
5ed5d16716 Desktop: Resolves #1896: Hide some toolbar buttons when editor hidden (#1940)
addresses issue: https://github.com/laurent22/joplin/issues/1896
2019-10-03 00:07:58 +01:00
Subodh Dahal
43083b0b7a Desktop: Resolves #917: Larger search bar (#1933)
* Increased the width of search bar

* Added some margin to the left ofsearch bar

* Reduced left margin for the search bar
2019-10-02 22:55:29 +01:00
fabianskibr
a4e5054008 Doc: Add AUR repository (#1941) 2019-10-02 22:52:22 +01:00
Laurent Cozic
02eb2f2e45 Desktop, Cli: Resolves #1932: Use profile temp dir when exporting files 2019-10-02 19:22:32 +01:00
Laurent Cozic
5d015bf746 All: Fixes #1906: Fixed translation of "Synchronisation Status" 2019-10-02 19:07:51 +01:00
Laurent Cozic
ce5db5a5c1 Add more logging info to ExternalEditWatcher so that I do not need to ask to enable debug mode 2019-10-02 19:04:50 +01:00
Laurent Cozic
cdcc3902c5 Merge branch 'master' of github.com:laurent22/joplin 2019-10-02 19:03:59 +01:00
Laurent Cozic
309835f2fe Clipper: Fixes #1881: Some pages could not be clipped in Firefox due to an issue with dynamic images 2019-10-02 19:03:36 +01:00
Laurent Cozic
eca0ab0ef6 Desktop: Fixes #1829: Fixed alarms that would trigger immediately when they were set too far in future 2019-10-02 18:21:42 +00:00
Laurent Cozic
4ce35ee1ed Desktop: Fixes #1703: Text input context menu was not working in Windows 2019-10-02 18:05:30 +00:00
Laurent Cozic
8856456afd Doc: Update Markdown page 2019-10-02 08:12:03 +01:00
Helmut K. C. Tessarek
4259d900f4 Mobile: Don't display Dracula theme on mobile (#1935) 2019-10-02 07:49:38 +01:00
Nathan Leiby
438c448ef7 CLI: confirm encryption password (#1937)
Successful flow:
https://gyazo.com/354ca9ea412ffe3756ee77938d544341

Flow with error (non-matching passwords):
https://gyazo.com/9adda69278e3631da33d9fb366815d04
2019-10-02 07:48:58 +01:00
Laurent Cozic
0fb5b35212 All: Fixes #1938: App would crash if trying to index a note that has not been decrypted yet 2019-10-02 07:38:16 +01:00
Laurent Cozic
b69efb4970 Added Markdown Guide to website menu 2019-10-01 22:50:30 +01:00
Laurent Cozic
44ea237538 Merge branch 'master' of github.com:laurent22/joplin 2019-10-01 22:36:11 +01:00
Laurent Cozic
a58316b24c Doc: Fixed Markdown cheat sheet so that it looks better on GitHub 2019-10-01 22:33:19 +01:00
Mats Estensen
df95d01f6e update nb_NO translation to be 100 percent complete (#1930) 2019-10-01 17:32:38 -04:00
Laurent Cozic
d6924893e5 Merge branch 'master' of github.com:laurent22/joplin 2019-10-01 22:28:40 +01:00
Laurent Cozic
0f04ea4f70 Doc: Various changes and added Markdown cheat sheet 2019-10-01 22:27:57 +01:00
Laurent Cozic
4b8026cf83 Update PULL_REQUEST_TEMPLATE 2019-10-01 21:37:55 +01:00
JRaiden
a98a586295 Update es_ES.po (#1929)
I added some translations and change a couple more in order to improve there meaning in Spanish.
I am a native spanish speaker so I could help with some more translate if you want.
2019-10-01 16:32:11 -04:00
Laurent Cozic
29ec7ba03a Apply linter 2019-10-01 19:33:46 +01:00
Helmut K. C. Tessarek
a35cc23d28 Update localization de_DE.po (#1928) 2019-10-01 14:08:33 -04:00
Alexey Pyltsyn
20a8ddd841 Improve Russian translation (#1926) 2019-10-01 14:07:58 -04:00
Davide Cazzin
774fc9ce53 Update Italian translation (#1925) 2019-10-01 14:07:36 -04:00
Dom Goodwin
84ab395fae Desktop: Resolves (#1863): Added Dracula theme (#1924)
* Added dracula theme

* Removed package-lock
2019-10-01 12:23:32 +01:00
Reinhart Previano K
edc4dc5801 Doc: Update React Native build documentation (#1922) 2019-10-01 09:03:31 +01:00
Helmut K. C. Tessarek
6e128a7285 update question template
Somebody deleted the label `question`, so I changed the template to use `invalid`, since a question is technically invalid on the issue tracker.
2019-09-30 19:50:46 -04:00
Helmut K. C. Tessarek
ff977cebaf update issue templates 2019-09-30 19:45:44 -04:00
Caleb John
5bcd5f050a Desktop: Code button now detects multiline (#1915)
* Code button now detects multiline

* Fix text selection for code insertion
2019-09-30 23:24:07 +01:00
Laurent Cozic
fe57f163f3 Merge branch 'master' of github.com:laurent22/joplin 2019-09-30 23:19:31 +01:00
Laurent Cozic
cb24db4e39 Renamed "feature request" to "enhancement" (which is already for feature requests) 2019-09-30 14:57:45 +01:00
Laurent Cozic
e93d96193c eslint 2019-09-29 22:11:36 +00:00
Laurent Cozic
637a4dc1f9 Improve eslint rules and run them from CI 2019-09-29 22:01:10 +00:00
Laurent Cozic
2c522637ef Update website 2019-09-29 15:32:11 +01:00
Laurent Cozic
8fbb1fd246 A bit shorter 2019-09-29 15:32:00 +01:00
Laurent Cozic
75b7e7d999 Update website 2019-09-29 15:30:19 +01:00
Laurent Cozic
7e2e901035 Added note about Hacktoberfest 2019-09-29 15:30:01 +01:00
Laurent Cozic
a73a1f896c Merge branch 'master' of github.com:laurent22/joplin 2019-09-29 14:46:18 +01:00
Laurent Cozic
ae7f0e8ffb Tools: Disable build for macOS on pull requests due to electron-builder bug 2019-09-29 14:46:05 +01:00
abonte
08343e6be9 update translation (#1911) 2019-09-29 14:31:17 +01:00
Laurent Cozic
9cb3496159 Updated Russian translation (Thanks Kirill Keller) 2019-09-29 14:26:51 +01:00
Helmut K. C. Tessarek
37b035d0d0 update issue templates
Some people still ignore the templates. This update makes the important statements more prominent.
2019-09-28 20:48:01 -04:00
genneko
f37ac8b5de Update ja_JP.po Japanese translation. (#1902)
* Translate new strings.
* Check and update 'fuzzy' strings.
2019-09-27 21:31:55 -04:00
Robert
343d04b05d Update nl_NL.po (#1901)
Updated for missing translations in  1.0.168
2019-09-27 21:30:48 -04:00
Laurent Cozic
e92741edd6 CLI v1.0.149 2019-09-27 22:19:13 +01:00
Laurent Cozic
8565cd7d40 Cli: Resolves #1905: Add support to Termux by returning a default when platform name cannot be determined 2019-09-27 22:18:22 +01:00
Laurent Cozic
58e299383d CLI v1.0.148 2019-09-27 19:43:22 +01:00
Laurent Cozic
bcb44aa532 Android release v1.0.307 2019-09-27 19:09:14 +01:00
Laurent Cozic
0c552feb57 Electron release v1.0.169 2019-09-27 19:02:09 +01:00
Laurent Cozic
cd1aa57243 Merge branch 'master' of github.com:laurent22/joplin 2019-09-27 19:01:51 +01:00
Laurent Cozic
c9098b0489 All: Improves deletion fail-safe so it is based on percentage of notes deleted. And display warning on sidebar. 2019-09-27 18:12:28 +00:00
Valentin Deville
117ce52597 Desktop: Add support for Deepin desktop environment in install script (#1884)
* Add support for Deepin desktop environment

* Update Joplin_install_and_update.sh
2019-09-26 21:53:11 +01:00
Laurent Cozic
1836b9a0b0 Merge branch 'master' of github.com:laurent22/joplin 2019-09-26 21:00:28 +01:00
FoxMaSk
563a4b7bd8 Repo: Drop emoji in tag name (#1899) 2019-09-26 20:46:42 +01:00
Laurent Cozic
2a5648d1a7 Tools: Fix build for Android 9 debugging 2019-09-26 19:26:18 +00:00
Laurent Cozic
5b425f9178 Android: Fixes "Row too big to fit into CursorWindow" error by allowing notes up to 50MB in size 2019-09-26 19:11:55 +00:00
Laurent Cozic
820e32ddca Doc: Removed default title in new issue templates
Because otherwise people leave them in, but they are redundant with
the automatically attached tag.
2019-09-26 15:21:00 +01:00
Laurent Cozic
b873e706ca Removed invalid files 2019-09-26 00:54:36 +01:00
Laurent Cozic
f0f6e7c856 Update website 2019-09-26 00:53:57 +01:00
Laurent Cozic
1ff3c7d074 Merge branch 'master' of github.com:laurent22/joplin 2019-09-26 00:53:34 +01:00
Laurent Cozic
393bb8993e Update readme 2019-09-25 22:42:59 +01:00
Helmut K. C. Tessarek
00ddb1eb64 update stale.yml 2019-09-25 17:41:39 -04:00
Laurent Cozic
cd518776a9 Update website 2019-09-25 22:28:48 +01:00
Laurent Cozic
391f7d22a3 CLI v1.0.147 2019-09-25 22:27:58 +01:00
Laurent Cozic
effbf10571 All: Log last requests in case of a sync error 2019-09-25 18:58:15 +00:00
Laurent Cozic
4405e94e0c Android release v1.0.306 2019-09-25 19:52:01 +01:00
Laurent Cozic
69f1b72127 Electron release v1.0.168 2019-09-25 18:54:50 +01:00
Laurent Cozic
383fa2e278 Update translations 2019-09-25 18:54:25 +01:00
Laurent Cozic
573100c203 Merge branch 'master' of github.com:laurent22/joplin 2019-09-25 18:46:52 +01:00
Laurent Cozic
348efdd7b6 All: Added fail-safe to prevent data from being wiped out when the sync target is empty 2019-09-25 18:40:04 +00:00
Laurent Cozic
cb9cc95e6a Doc: Fix email address 2019-09-25 16:29:21 +01:00
Laurent Cozic
1994b334fa Create SECURITY.md 2019-09-25 16:28:34 +01:00
Laurent Cozic
3e5a9cdb97 Tests: Make all tests use asyncTest for better error handling 2019-09-23 23:23:10 +01:00
Laurent Cozic
ae863c95c7 Tests: Make tests and CLI app less dependent on building the translations 2019-09-23 23:01:05 +01:00
Laurent Cozic
e89e5efb62 CI: Fix npm install 2019-09-23 22:45:07 +01:00
Laurent Cozic
9f2ce06829 CI: Build pull requests too 2019-09-23 22:41:22 +01:00
Laurent Cozic
ec89ebc6b0 Make build fail if tests don't pass 2019-09-23 22:37:14 +01:00
Laurent Cozic
f3e9668eb7 Tests: Fail test units when an uncaught exception is thrown inside asyncTest 2019-09-23 22:30:25 +01:00
Laurent Cozic
cc7e2fc456 Merge branch 'master' of github.com:laurent22/joplin 2019-09-23 22:27:16 +01:00
Devon Zuegel
172d925f0f Desktop: Fix import interop service (#1887)
* Revert "Revert "Desktop: Add ENEX to HTML export (#1795)""

This reverts commit 50b66cceca.

* Revert "Revert "Desktop, Cli: Fixed interop service so that it still allow auto-detecting importer based on format (required for Cli and for test units)""

This reverts commit c7c57ab2a5.

* Fix the .md importer

* Add comment re future refactor

* Rm importerClass for .md importer

* Fix EnexToMd module name
2019-09-23 22:18:30 +01:00
Laurent Cozic
8a8ecaade3 Update BUILD.md 2019-09-22 10:54:14 +01:00
Helmut K. C. Tessarek
d21a3f0bca update stale.yml 2019-09-21 14:55:26 -04:00
Helmut K. C. Tessarek
9322212601 update issue templates 2019-09-21 14:50:20 -04:00
Laurent Cozic
691eefec2f Desktop, CLI: Also allow importing TXT files with markdown 2019-09-20 23:00:59 +01:00
Laurent Cozic
50b66cceca Revert "Desktop: Add ENEX to HTML export (#1795)"
This reverts commit 2f14832c34.

Reverting PR #1795 due to broken MD import and other issues
2019-09-20 22:18:09 +01:00
Laurent Cozic
c7c57ab2a5 Revert "Desktop, Cli: Fixed interop service so that it still allow auto-detecting importer based on format (required for Cli and for test units)"
Reverting PR #1795 due to broken MD import and other issues

This reverts commit 558b6443bc.
2019-09-20 22:13:34 +01:00
Laurent Cozic
558b6443bc Desktop, Cli: Fixed interop service so that it still allow auto-detecting importer based on format (required for Cli and for test units) 2019-09-19 23:26:33 +01:00
Laurent Cozic
335b43ead4 Chore: Fixed a few formatting issues 2019-09-19 23:02:29 +01:00
Laurent Cozic
e648392330 Chore: Apply eslint rules 2019-09-19 22:51:18 +01:00
Laurent Cozic
ab29d7e872 Chore: Add line break style, and use of template to eslint rules 2019-09-19 22:49:17 +01:00
Woosuk Park
d7fae6b5b8 Update ko.po - korean language support (#1875) 2019-09-17 20:43:38 -04:00
Devon Zuegel
4ba4910a9c Mobile: Custom mobile editor font (#1797)
* Make editor font "Menlo"

* Add .vscode/* to .gitignore

* Add "editor font" config UI

* Render "editor font" chosen in config

* Add shim.mobilePlatform()

* Use style.editor.fontFamily rather than editorFont

* Add default font option

* Fixed for Android
2019-09-17 21:32:00 +01:00
Laurent Cozic
fe9a037cf9 Chore: Fixed package.json files and updated BUILD instructions 2019-09-17 21:29:37 +01:00
Devon Zuegel
2f14832c34 Desktop: Add ENEX to HTML export (#1795)
* Add `escape` to go back from Dropbox Login screen

* Add .vscode/ to .gitignore

* Remove call to enexXmlToMd

* The 2 enex importers have distinct functionality!

* Add tmp #deleteAllNotebooks

* checkbox state still not persisting

* images now fixed, but checkboxes still broken

* Figured out that #ipcProxySendToHost is important for handling checkbox

* cleanup closing br and en-todo tags + add notes

* Handle en-media, add NOTEs & TODOs, & format html

* Clean up some of the logging

* cleanHtml is a nice beautifier, but callback hell ensues...

* Rm #htmlFormat

* Recreating the xml actually seems to work

* Add test (not functional rn)

* Add test for checkboxes

* Add test for image en-media

* Separate tests into 2 function calls

* Clean up test

* Add `en-media-audio` test

* Add bad resource test

* Misc cleanup

* Rm SlateEditor files

* Misc cleanup

* Remove #deleteAllNotebooks button

* Add names to tests

* Extract resourceUtils

* Rm DropboxLoginScreen esc behavior, part of another PR

* Misc cleanup

* Improve audioElement, add attachment import support

* Misc cleanup

* Add svg test for enex_to_html

* Clean up test

* Set markup_language to MARKUP_LANGUAGE_HTML to tell renderer that the content is only HTML

* Rename to newModuleByFormat_ for clarity

* Add comment to clarify newModuleFromPath_
2019-09-17 21:19:32 +01:00
Laurent Cozic
52ace55db0 Mobile: Remove empty sections from config screen 2019-09-16 22:59:45 +01:00
Laurent Cozic
224a4d786b Desktop: Fixed broken menu bar 2019-09-16 22:54:40 +01:00
腹肌抽筋了
3ea97ad9ff Update zh_CN.po Chinese translation (#1871) 2019-09-15 00:02:53 -04:00
Laurent Cozic
e7a56bb2b1 ios-v10.0.37 2019-09-13 22:08:13 +01:00
Laurent Cozic
e4aed469d7 Chore: Add reslect to package 2019-09-13 22:05:02 +01:00
Laurent Cozic
15a42a3729 Chore: Apply eslint no-unused-vars eslint config and add TypeScript config 2019-09-12 22:16:42 +00:00
Laurent Cozic
0b9e007b46 Merge branch 'master' of github.com:laurent22/joplin 2019-09-12 22:48:49 +01:00
Laurent Cozic
88561a6c3c Desktop, CLI: Fixed import of notes that contain links with hashes 2019-09-12 22:48:10 +01:00
genneko
e6b77c3381 Update ja_JP.po Japanese translation (#1868)
* Update Japanese translation (Fix typos).

* Update Japanese translation (Improve the wording).

* Update Japanese translation (Add new items).
2019-09-12 17:38:48 -04:00
abonte
f7e1589476 Update it_IT.po (#1866) 2019-09-12 17:37:34 -04:00
Laurent Cozic
0379523eaf Desktop, Mobile: Fixes #1870: Support non-alphabetical characters in note link anchors 2019-09-12 21:57:23 +01:00
Laurent Cozic
5db7502fe4 Merge branch 'tidy_config' 2019-09-11 23:00:03 +01:00
Laurent Cozic
1578188fde Update website 2019-09-11 11:18:44 +01:00
Laurent Cozic
e8e1a0fe4d Desktop: Cleaned up and improved config screen design, move all screens under same one, and added section buttons 2019-09-10 23:53:01 +00:00
Laurent Cozic
8059009ff3 Android release v1.0.305 2019-09-10 09:31:48 +01:00
Laurent Cozic
32865f065c Electron release v1.0.167 2019-09-10 09:26:26 +01:00
Laurent Cozic
e03ef78049 All: Fixed link issue following last update 2019-09-10 09:25:58 +01:00
Laurent Cozic
45a820bb35 Update website 2019-09-09 19:03:22 +01:00
Laurent Cozic
3c26159b79 Doc: Add link to 32-bit Android APK to readme and website 2019-09-09 18:58:35 +01:00
Laurent Cozic
cf67e0d4af Tools: Allow specifying "to" commit option in git-changelog 2019-09-09 18:50:04 +01:00
Laurent Cozic
1b2767167d Cli: Upgrade joplin-turndown-plugin-gfm to fix import of certain Enex tables 2019-09-09 18:35:22 +01:00
Laurent Cozic
f07bb5c275 Android release v1.0.304 2019-09-09 18:26:55 +01:00
Laurent Cozic
0e2cc418e2 Electron release v1.0.166 2019-09-09 18:22:42 +01:00
Laurent Cozic
0340456d55 Update translations 2019-09-09 18:22:20 +01:00
Laurent Cozic
7aea2cec69 Desktop: Resolves #1490: Add support for anchor hashes in note links 2019-09-09 18:16:00 +01:00
Laurent Cozic
fa83107840 Doc: Update CLI installation info 2019-09-08 20:21:14 +01:00
Laurent Cozic
bb0bf46f81 CLI v1.0.146 2019-09-08 20:12:49 +01:00
Laurent Cozic
694c3fed2d Cli: Fixed regression that was making installation fail 2019-09-08 20:12:25 +01:00
Laurent Cozic
772e39b710 Tools: Improved git-changelog so that it is less error prone 2019-09-08 17:54:41 +01:00
Laurent Cozic
05e0a2c29d CLI v1.0.145 2019-09-08 17:24:00 +01:00
Laurent Cozic
78e0efb95f Trying CLI release 2019-09-08 17:19:22 +01:00
Laurent Cozic
a5f749cfd2 Tools: Added moment package 2019-09-08 17:18:44 +01:00
Laurent Cozic
3d6c932e1b Cli: Added headless server command (Beta) (#1860)
* Trying to implement headless server

* Cli: Cleaned up and completed server command so that it is usable. Added warnings as it is advanced usage only at this point.

* Restored welcome assets
2019-09-08 17:16:45 +01:00
archont00
4488a1b95f Doc: Update explanation of enabling E2EE (#1859)
As per https://discourse.joplinapp.org/t/totally-confused-re-e2ee/3295, I tried to improve the explanation of the process to avoid multiple encryption keys.
2019-09-08 16:35:10 +01:00
archont00
e2808a90c6 Doc: Update re. impossibility to delete unused Master Keys (#1858)
As per discussion at https://discourse.joplinapp.org/t/totally-confused-re-e2ee/3295/2, I propose to add info about Master Keys persistence.
2019-09-08 16:34:37 +01:00
Laurent Cozic
755a972e02 Update website 2019-09-08 11:09:02 +01:00
Laurent Cozic
8b1de22049 Merge branch 'master' of github.com:laurent22/joplin 2019-09-08 11:07:54 +01:00
Laurent Cozic
a9735123b7 Doc: Added warning to generated HTML files 2019-09-08 11:06:53 +01:00
Laurent Cozic
5ccafa2838 Doc: Added warning to generated HTML files 2019-09-08 10:46:35 +01:00
archont00
e2926a4f82 Doc: Update explanation of enabling E2EE (#1856)
As per https://discourse.joplinapp.org/t/totally-confused-re-e2ee/3295, I tried to improve the explanation of the process to avoid multiple encryption keys.
2019-09-08 10:35:15 +01:00
Laurent Cozic
09df315639 Desktop: Fixes #1833: Do not scroll text when search is open and user type in note 2019-09-07 11:57:31 +01:00
Laurent Cozic
5a9b3b6c7c Desktop, Mobile: Resolves #1832: Only support checkboxes that start with a dash 2019-09-07 11:18:07 +01:00
Laurent Cozic
6da6f35ddd Merge branch 'master' of github.com:laurent22/joplin 2019-09-07 10:47:51 +01:00
Laurent Cozic
dcb5590842 Clipper: Fixes #1851: Fixed error when trying to import certain pages using "Clip simplified page" feature 2019-09-07 10:47:31 +01:00
Laurent Cozic
5135c8a782 Clipper: Fixes #1783: Fixed importing tables that contain pipes 2019-09-07 10:32:52 +01:00
Laurent Cozic
1b2f4fb036 Update bug_report.md 2019-09-07 10:09:05 +01:00
Laurent Cozic
76a4a445f0 Doc: Added info about SKIP_PREFLIGHT_CHECK 2019-09-07 09:56:06 +01:00
Helmut K. C. Tessarek
20abb125a5 infrastructure: skip preflight check for building clipper 2019-09-06 13:53:35 -04:00
Laurent Cozic
be9e50b4a1 Update FUNDING.yml 2019-09-06 18:48:05 +01:00
Helmut K. C. Tessarek
02bfcf577d Clipper release v1.0.18 2019-09-06 13:37:55 -04:00
Laurent Cozic
038efa10f2 Update website 2019-09-06 18:34:47 +01:00
Laurent Cozic
dfa692569b Update translations 2019-09-06 18:33:30 +01:00
Laurent Cozic
9abc6a2e44 CLI: Fixes #1779: Make sure setting side-effects are applied even when running in command line mode 2019-09-06 18:29:40 +01:00
Laurent Cozic
11f23f4e00 Android release v1.0.303 2019-09-06 17:51:38 +01:00
Laurent Cozic
6a7d40d171 Merge branch 'master' of github.com:laurent22/joplin 2019-09-06 17:50:39 +01:00
Laurent Cozic
bf5601429e Mobile: Fixes #1767: Fixed broken search when certain notes are too large 2019-09-06 17:39:36 +01:00
abonte
73ae8aaf2f Update it_IT.po (#1853) 2019-09-05 22:45:36 -04:00
axq
7eb7bd98f3 Doc: Minor English improvements in README.md (#1852) 2019-09-05 17:11:45 +01:00
Laurent Cozic
10e22654ea Desktop: Fixes #1815: Fixed cropped content issue when printing or exporting to PDF 2019-09-04 20:11:35 +01:00
Joan Montané
ccfc80ad04 Update ca.po (#1836) 2019-08-29 17:39:35 +01:00
stellarpower
5e95278084 Fix Cinnamon Detection (#1828)
$desktop was converted to lowercase, but matched against 'X-Cinnamon'
2019-08-29 17:39:10 +01:00
Helmut K. C. Tessarek
d69ba6bc75 All: fix typo on encryption options screen (#1823)
fixes #1798
2019-08-29 17:38:54 +01:00
Caleb John
d28fbe2d3b Desktop: Apply current locale to date and time (#1822) 2019-08-29 17:38:24 +01:00
Caleb John
415e7b84da Desktop: Change localeCompare functiion for tags (#1811)
* change localeCompare functin for tags

* Fix spacing
2019-08-29 17:36:53 +01:00
Caleb John
ac4986b620 Desktop: Fixes #1803: Use correct date format for templates (#1810) 2019-08-29 17:35:43 +01:00
Caleb John
9a4f4cbb65 Desktop: Change template prompt to sans and sort templates (#1806)
* Change template prompt to sans and sort templates

* Sort templates by filename to ensure order
2019-08-29 17:34:54 +01:00
Helmut K. C. Tessarek
8e32957111 Infrastructure: build-translation.js - add support for macOS (#1804)
* remove unnecessary comment

It's totally fine to add the double quotes after -i.
Using gsed would mean that people had to install GNU sed. For what, if the same is possible with the system's sed with a slight modification.
Checking for gsed and using it is more trouble than it's worth.

* build-translation.js: add support for macOS

* implement requested changes
2019-08-29 17:34:05 +01:00
Helmut K. C. Tessarek
91aa3703d4 CLI: Fixes fatal error with cli 1.0.141 on start (#1791)
- updated terminal-kit to 1.30.0
- do not call method, if object does not exist

fixes #1778
2019-08-29 17:05:20 +01:00
FoxMaSk
a889762056 Update README.md
Double line fixed
2019-08-21 10:14:15 +02:00
Robert
6478d6c9c9 Update nl_NL.po (#1821) 2019-08-19 17:59:43 -04:00
FoxMaSk
7a681d0a4a README: add Discord Community Server (#1800)
* Discord Community Server

* Discord Server Link fixed

* improvment
2019-08-19 13:34:43 -04:00
Rafael Teixeira
83b6eba8bd Updated Last Translator pt_BR (#1813) 2019-08-17 02:36:25 -04:00
Helmut K. C. Tessarek
2766ded5f6 Update website 2019-08-16 19:55:27 -04:00
Rafael Teixeira
ca0d966ed9 Translation: Translation Update pt_BR (#1809)
* Updated translation pt-BR

* New updates translation pt_BR
2019-08-16 03:58:07 -04:00
Woosuk Park
386c583b0e Translation : Korean Translation #2 (#1802)
* Korean Language Support

Korean Language 100% Translated, but something is roughted. soon fix it ;)

* some improved

Some Improved

* Improve v2

some polished

* Ok, now Completed

For Now, Completed Polish(Change Respect of Users, and several fixing & polishing) + 100% Translated. Ready to Shipping

* Korean Language Update #2

1. 조플린 -> Joplin (Sorry i forgot)
2. Fuzzy correction.

Korean Language Update #2

1. 조플린 -> Joplin (Sorry i forgot)
2. Fuzzy correction.
2019-08-15 13:15:32 -04:00
Laurent Cozic
b3d34ad7e9 Android release v1.0.299 2019-08-14 23:47:38 +02:00
Laurent Cozic
ba5c636dda Android: Fixed AndroidX transition issue 2019-08-14 23:44:57 +02:00
Laurent Cozic
ea16f6e0b1 Revert "Trying to fix Android buikld"
This reverts commit 0dd0dc5489.
2019-08-14 23:23:27 +02:00
Laurent Cozic
0dd0dc5489 Trying to fix Android buikld 2019-08-14 23:22:52 +02:00
Laurent Cozic
f3ab21ff43 Electron release v1.0.165 2019-08-14 23:17:25 +02:00
Laurent Cozic
5ac6b46efd Desktop: Fixed theme options for Solarized theme 2019-08-14 23:17:02 +02:00
Laurent Cozic
6548f30a4b Electron release v1.0.164 2019-08-14 22:49:45 +02:00
Laurent Cozic
849d7983f6 Desktop: Added support for Fountain screenwriting language 2019-08-14 12:40:06 +02:00
Helmut K. C. Tessarek
e32e4423db change feature request template 2019-08-14 02:08:35 -04:00
Laurent Cozic
7f5bf131a8 Add back files that might have been modified by linter 2019-07-30 11:40:33 +02:00
Laurent Cozic
87a639df2b Mobile: Disabled solarized themes on mobile 2019-07-30 11:37:52 +02:00
Laurent Cozic
bdd8eab87e Mobile: Make it clearer when there are no notebooks and added a button create one 2019-07-30 11:36:56 +02:00
Laurent Cozic
b9e5c8a387 Electron release v1.0.163 2019-07-30 09:52:26 +02:00
Laurent Cozic
d646a2dd01 Fix Linux and macOS build to go around this bug: https://github.com/electron-userland/electron-builder/issues/3179 2019-07-30 09:52:16 +02:00
Laurent Cozic
71a3a0176e Android release v1.0.294 2019-07-30 09:42:09 +02:00
Laurent Cozic
a363d119cf Electron release v1.0.162 2019-07-30 09:37:23 +02:00
Laurent Cozic
ff08bdbc0b Merge branch 'master' of github.com:laurent22/joplin 2019-07-30 09:35:49 +02:00
Laurent Cozic
71efff6827 Linter update (#1777)
* Update eslint config

* Applied linter to lib

* Applied eslint config to CliClient/app

* Removed prettier due to https://github.com/prettier/prettier/pull/4765

* First pass on test units

* Applied linter config to test units

* Applied eslint config to clipper

* Applied to plugin dir

* Applied to root of ElectronClient

* Applied on RN root

* Applied on CLI root

* Applied on Clipper root

* Applied config to tools

* test hook

* test hook

* test hook

* Added pre-commit hook

* Applied rule no-trailing-spaces

* Make sure root packages are installed when installing sub-dir

* Added doc
2019-07-30 09:35:42 +02:00
Laurent Cozic
7595fe4a8c Merge branch 'master' of github.com:laurent22/joplin 2019-07-30 09:32:34 +02:00
Laurent Cozic
7697e75466 Update eslint config 2019-07-29 21:23:14 +02:00
Helmut K. C. Tessarek
b8fbaa2029 Update en_US.po 2019-07-29 11:34:52 -04:00
Helmut K. C. Tessarek
38bc750ecf Update de_DE.po 2019-07-29 11:34:02 -04:00
Laurent Cozic
6cfacb1a48 Second pass at linting lib dir 2019-07-29 15:58:33 +02:00
Laurent Cozic
0b9078d034 config 2019-07-29 15:58:17 +02:00
Laurent Cozic
86dc72b204 First pass at linting lib dir 2019-07-29 15:43:53 +02:00
Laurent Cozic
64b7bc3d62 More config 2019-07-29 15:43:39 +02:00
Laurent Cozic
086f9e1123 Started applying config to Electron app 2019-07-29 14:13:23 +02:00
Laurent Cozic
4fe70fe8ee Ignore some files 2019-07-29 14:13:09 +02:00
Laurent Cozic
95a1f40404 Tweaked linter config 2019-07-29 14:10:07 +02:00
Laurent Cozic
88f04509ee Also added prettier config 2019-07-29 13:48:43 +02:00
Laurent Cozic
7eebd544d6 Fixed eslint 2019-07-29 12:55:50 +02:00
Laurent Cozic
e369a8decf Added eslint config 2019-07-29 12:55:39 +02:00
Helmut K. C. Tessarek
ad8054ba4b Desktop: Better handling of adding the title to print and export to PDF (#1744)
fixes #1743
2019-07-29 12:33:40 +02:00
J0J0 T
b47cb4e29a Desktop, Cli: Improved bold formatting support in Enex import (#1708)
* Dekstop,CLI: enex_to_md: add html/md test file pairs

* one pair for basic text formatting tags: strong, b, i, em
* and one using span tags with inline styles for bold formatting

Note: The html files include the Evernote-typical "linebreak tags inside of separate <div> tags"
to represent empty lines!

* Desktop,Cli: enex_to_md: support bold in span tags using inline styles

* function isSpanWithStyle() checks if further processing of a span tag
  makes sense
* function isSpanStyleBold() checks if bold formatting via styles is
  used - a similar function could be written for each span-inline-style-format
  that should be supported

* Desktop,Cli: enex_to_md: fix saving span attrs in state object

pushing attributes of span tag to state object now
happens outside of isSpanWithStyle()
2019-07-29 12:25:25 +02:00
Laurent Cozic
8c42ddf6c3 Merge branch 'master' of github.com:laurent22/joplin 2019-07-29 12:17:33 +02:00
tfinnberg
f7fcabbf41 Desktop: Create fileURLs via drag and drop (#1653)
* enable drag and drop fileURLs

* fix windows fileURL syntax

* introduce encodeURI function

* fixed encoding issue

* use path-utils.js to deal with fileURL path conversion

* add changes as requested

* Minor rewording 'On the' -> 'In the', additional info about attaching files

* change call of toFileProtocolPath

* enable test script to check syntax for all OS-platforms
2019-07-29 12:16:47 +02:00
Shane Kilkelly
38a51070fc Desktop: add depthColor for solarized light and dark themes (#1765) 2019-07-29 12:08:49 +02:00
Laurent Cozic
44fa099a77 Desktop: No longer crash if certain theme properties are not set 2019-07-29 12:05:58 +02:00
sumomo-99
af6f3999df Update ja_JP.po (#1776) 2019-07-29 11:55:02 +02:00
Laurent Cozic
6fbeb35951 Update translations 2019-07-29 11:52:19 +02:00
Laurent Cozic
b2eadffde0 Using British English by default for consistency 2019-07-29 11:51:09 +02:00
Laurent Cozic
200ba2775f All: Resolves #1459: Make translation files smaller by not including untranslated strings. Also add percentage translated to config screen. 2019-07-29 11:47:50 +02:00
Laurent Cozic
39ba021a79 Merge branch 'master' of github.com:laurent22/joplin 2019-07-29 10:12:45 +02:00
Laurent Cozic
2c6b291b9b Desktop: Only repeat failed requests up to 3 times during sync 2019-07-29 10:12:23 +02:00
Devon Zuegel
770846be2e Doc: Add docs to clarify how to test (#1775) 2019-07-29 09:42:10 +02:00
Laurent Cozic
af4aa01b75 Mobile: Upgraded packages to fix security issues 2019-07-28 23:03:54 +02:00
Laurent Cozic
1bf2bec805 CLI v1.0.141 2019-07-28 22:54:45 +02:00
Laurent Cozic
3a41ac9be0 CLI: Upgraded packages to fix security issues 2019-07-28 22:54:29 +02:00
Laurent Cozic
f2c9cdd7f1 Desktop: Upgraded packages to fix security issue 2019-07-28 22:48:30 +02:00
Laurent Cozic
058f418cc7 Tools: Do not display full release info when releasing Android app 2019-07-28 22:43:33 +02:00
Laurent Cozic
5fa84b0dfb Android release v1.0.293 2019-07-28 18:36:36 +02:00
Laurent Cozic
ec8ec3e38d Android release v1.0.292 2019-07-28 18:34:44 +02:00
Laurent Cozic
0e6190b42b Tools: Allow creating multiple Android releases 2019-07-28 18:33:48 +02:00
Laurent Cozic
fcfee36c8c Android release v1.0.291 2019-07-28 18:32:33 +02:00
Laurent Cozic
1d3d3b99bb Tools: Allow creating multiple Android releases 2019-07-28 18:31:31 +02:00
Laurent Cozic
2f80bf9647 Android release v1.0.290 2019-07-28 18:29:07 +02:00
Laurent Cozic
675a4c795f Android release v1.0.289 2019-07-28 18:22:33 +02:00
Laurent Cozic
ed3361df57 Merge branch 'master' of github.com:laurent22/joplin 2019-07-28 18:22:33 +02:00
Laurent Cozic
87396572e4 Tools: Allow creating multiple Android releases 2019-07-28 18:19:41 +02:00
Woosuk Park
143b610291 Korean Language Support (#1769)
* Korean Language Support

Korean Language 100% Translated, but something is roughted. soon fix it ;)

* some improved

Some Improved

* Improve v2

some polished

* Ok, now Completed

For Now, Completed Polish(Change Respect of Users, and several fixing & polishing) + 100% Translated. Ready to Shipping
2019-07-26 23:18:47 -04:00
Laurent Cozic
c952c4591f Android release v1.0.284 2019-07-26 23:11:08 +02:00
Laurent Cozic
e418701e68 Mobile: Fixes #1764 (maybe): Upgrading React-Native to 0.59.10 to try to fix crash in certain Samsung phone due to 64-bit version
See also:

https://github.com/facebook/react-native/issues/24261#issuecomment-514332549
2019-07-26 23:08:11 +02:00
Laurent Cozic
6fc0ee3062 Android release v1.0.283 2019-07-26 21:26:24 +02:00
Laurent Cozic
7b42d7d2c8 Mobile: Fixed freeze when last notebook was the conflict one and there are no longer any conflicted notes 2019-07-26 21:23:18 +02:00
Mr. Traduttore
eb083ae925 [Mobile/Desktop] Changed cancel, directory and delete translations (ITALIAN) (#1759)
* Changed cancel and delete translation (ITALIAN)

Changed cancel from "cancellare" to "annullare" (whic is used more to express the cancelling operations) and delete from "cancellare" to "eliminare". I think that doing this will help people understanding what is the main task of these option since they use the same verbs in the current translation.

* Update it_IT.po
2019-07-22 14:15:11 +01:00
Helmut K. C. Tessarek
905e65365f Update en_US.po 2019-07-22 06:28:04 -04:00
Helmut K. C. Tessarek
a0c04c0e6a Update de_DE.po 2019-07-22 06:27:55 -04:00
Laurent Cozic
635baa5b6f Updated translations 2019-07-22 00:02:25 +00:00
Laurent Cozic
7591b614c5 typos 2019-07-21 22:27:13 +00:00
Helmut K. C. Tessarek
5b5ec682c0 Update en_US.po 2019-07-21 22:18:35 -04:00
Helmut K. C. Tessarek
b0a80ddf65 Update de_DE.po 2019-07-21 22:17:25 -04:00
Laurent Cozic
893531f8c7 Desktop: Make depthColor theme property optional 2019-07-21 17:30:36 +01:00
Shane Kilkelly
3d498e7a75 Desktop: Add solarized themes to desktop client (#1733) 2019-07-21 17:27:42 +01:00
Laurent Cozic
45ad201132 Mobile: Fixed colour of placeholder text in dark theme 2019-07-21 17:16:15 +01:00
Laurent Cozic
6e64b950ca Merge branch 'master' of github.com:laurent22/joplin 2019-07-21 17:05:09 +01:00
Laurent Cozic
6d4e67769c Desktop: Fixed Back button icon on Config screen 2019-07-21 16:49:53 +01:00
Laurent Cozic
3aa0394062 Mobile: Fixes #1684: Trying to fix problem when attaching file that contains spaces in name 2019-07-21 14:39:52 +01:00
Laurent Cozic
b65767a43c Mobile: Fixes #1746: Populate note side menu when swiping right 2019-07-21 14:11:30 +01:00
Laurent Cozic
3a9817d11e Android release v1.0.282 2019-07-21 14:04:18 +01:00
Laurent Cozic
6a42ef50ec All: Fixes #1732: Fixed note order when dragging a note outside a notebook 2019-07-21 13:55:25 +01:00
Laurent Cozic
35b6b3fc46 Merge branch 'clipper_html_mode' 2019-07-21 13:46:54 +01:00
Laurent Cozic
f5515e3496 Doc: Fixed template doc 2019-07-21 09:07:33 +01:00
Laurent Cozic
fd509bb4af Doc: Fixed template table 2019-07-21 08:57:50 +01:00
Laurent Cozic
b21c0f5d69 Doc: Fixed website templating 2019-07-21 08:55:44 +01:00
Laurent Cozic
1033b3626f Update translations 2019-07-21 08:49:49 +01:00
Laurent Cozic
f407c8d756 Added Serbian translation - thanks Željko! 2019-07-21 08:19:32 +01:00
Laurent Cozic
6436dff94b Api: Fixed handling of markup language 2019-07-21 00:31:29 +01:00
Laurent Cozic
3f7b4e10b6 Merge branch 'master' into clipper_html_mode 2019-07-21 00:24:25 +01:00
Laurent Cozic
36168a9a5d Use regex instead of jsdom for compability with mobile app 2019-07-21 00:18:51 +01:00
Helmut K. C. Tessarek
118540c733 add config for stale bot 2019-07-20 17:41:49 -04:00
Caleb John
cd5d412c69 Desktop: Added support for templates (#1647)
* First pass of adding support for templates

* remove default value from template prompt

* Add template placeholder text

* Add mustache templates with datetime support for new notes

* Moved template code to utils, added separate prompt for templates

* Add templates to menu and allow for keyboad only use

* update template prompt for dark theme

* update with laurents suggestions, add refresh button

* revert template command, remove new note prompt
2019-07-20 22:13:10 +01:00
Helmut K. C. Tessarek
e29fb3eb66 new issue templates 2019-07-19 15:01:32 -04:00
Laurent Cozic
8ff1668c8f Minor changes 2019-07-19 18:18:05 +01:00
Laurent Cozic
14fc73b388 Use markupToHtml everywhere 2019-07-19 17:48:38 +01:00
Laurent Cozic
f34330f101 Doc: Contributor list on rows of 5 2019-07-18 20:46:01 +01:00
Laurent Cozic
2ba50321d4 Doc: Added contributors 2019-07-18 18:36:29 +01:00
Laurent Cozic
38177c7e54 All: Optimised loading of multiple items 2019-07-17 22:50:12 +01:00
Laurent Cozic
687e308a73 Desktop: Added markup language to property dialog 2019-07-17 22:49:40 +01:00
Laurent Cozic
490db0db62 Desktop: Disable Markdown actions for HTML notes 2019-07-17 22:49:12 +01:00
Laurent Cozic
feb5f17479 Clipper: Generate better HTML so that it loads faster in text editor 2019-07-17 22:48:13 +01:00
Laurent Cozic
fbb3543818 Desktop: Fixed race condition when loading a note while another one is still loading. Improved performance when loading large note. 2019-07-17 22:42:53 +01:00
Laurent Cozic
30d0dfb424 Clipper: Fixed sizing issue when importing HTML pages 2019-07-16 22:58:44 +01:00
Laurent Cozic
7239a2013c Clipper: Improved clipping of images in HTML mode 2019-07-16 22:23:04 +01:00
Laurent Cozic
2361c5a5e7 Clipper: Better handling of images when multiple images have the same source but with different dimensions 2019-07-16 21:47:44 +01:00
Laurent Cozic
38e8a881d5 More refactoring to easily handle multiple renderers 2019-07-16 19:05:47 +01:00
Helmut K. C. Tessarek
d45d1b4225 Mobile: Show correct time/date (as specified in settings) for note properties (#1749) 2019-07-16 15:11:58 +01:00
Helmut K. C. Tessarek
e9c88dfdc4 Update de_DE.po 2019-07-15 23:21:46 -04:00
Laurent Cozic
fbb0ac5892 Clipper: Refactored image rules to re-use more code 2019-07-15 20:43:28 +00:00
Helmut K. C. Tessarek
7a902bbd25 Desktop, Mobile: Update Markdown plugins: footnote, toc-done-right, anchor (#1741) 2019-07-15 01:29:44 +01:00
Laurent Cozic
c75618eb8f Clipper: Minor fixes 2019-07-15 01:17:17 +01:00
Laurent Cozic
74ee629266 Clipper: Fixed issue with relative links when importing HTML 2019-07-15 00:44:45 +01:00
Caleb John
8ecc58e1bf Desktop: Add support for cinnamon to install script (#1738) 2019-07-15 00:29:09 +01:00
Laurent Cozic
71078637db Android release v1.0.281 2019-07-14 19:56:46 +01:00
Laurent Cozic
5460a977b1 Clipper: Fixed issues related to viewing images and to HTML comments that were incorrectly being displayed 2019-07-14 19:52:57 +01:00
Laurent Cozic
a0dd0702fb Clipper: Adding support for clipping page as HTML 2019-07-14 16:00:02 +01:00
Laurent Cozic
3e48992eb4 Clipper: Disabled preview for now as too many problems with it and not so useful 2019-07-14 09:46:06 +01:00
Laurent Cozic
bdb31f2890 Mobile: Fixed issue that could slow down app when displaying large list of notes 2019-07-13 23:55:28 +01:00
Laurent Cozic
0255546ae1 Mobile: Auto-save after toggling to-do state 2019-07-13 23:49:35 +01:00
Laurent Cozic
d066350eea Electron release v1.0.161 2019-07-13 19:18:34 +01:00
Laurent Cozic
a1e3260309 Clipper: Resolves #1160: Allow importing MathJax formulas, in particular from StackExchange 2019-07-13 19:17:28 +01:00
Laurent Cozic
be1f57a8a6 Desktop: Fixes #1727: Keep back button when opening a note link from the search results 2019-07-13 17:58:59 +01:00
Laurent Cozic
ca4dfe0f0f Desktop: Fixes #1724: Improved note selection and scrolling when moving a note to a different notebook 2019-07-13 17:40:09 +01:00
Laurent Cozic
fa69957d3f Desktop, CLI: Fixes #1723: Import Evernote audio files correctly 2019-07-13 17:26:47 +01:00
Laurent Cozic
f7203ed7e2 Desktop: Fixes #1720: Fixed issue with certain commands being repeated in some cases 2019-07-13 16:57:33 +01:00
Laurent Cozic
331858bd4f Desktop: Fixes #1704: Set note title to correct size when zoom is enabled 2019-07-13 16:46:52 +01:00
Laurent Cozic
4d2c9523a3 Desktop: Fixes #1699: Hide toolbar button text when it is below a certain size 2019-07-13 16:42:57 +01:00
Laurent Cozic
4d9d84a8f3 Merge branch 'master' of github.com:laurent22/joplin 2019-07-13 15:58:06 +01:00
Laurent Cozic
ec1089870f All: Fixes #1694: When deleting resource from sync target also delete associated data blob 2019-07-13 15:57:53 +01:00
Helmut K. C. Tessarek
dbedefc021 Desktop: Fixes #1342: Add override for ACE editor shortcut Ctrl+K (#1705) 2019-07-13 14:52:32 +01:00
Kirill Goncharov
f6b0da3f5e Android: Check filesystem permission if filesystem sync target is selected (#1665)
* Android: Check filesystem permission if filesystem sync target is selected

* Android: Change permission error text, don't prevent user from saving settings
2019-07-13 14:51:54 +01:00
Laurent Cozic
85bf89fd97 Android release v1.0.279 2019-07-12 19:44:23 +01:00
Laurent Cozic
c2a80b12f0 Mobile: More rendering optimisations to make animations smoother and to allow typing fast on large notes 2019-07-12 19:36:12 +01:00
Laurent Cozic
981c97cca5 Mobile: Optimising screen rendering to make text input faster 2019-07-12 18:32:08 +01:00
Laurent Cozic
091cbc5355 Mobile: Added sync button animation; Added notebook header; Improved layout of Edit Notebook screen 2019-07-12 18:07:47 +01:00
Laurent Cozic
e5a8114887 Mobile: Added icons to left sidebar 2019-07-11 18:44:26 +01:00
Laurent Cozic
4779fc6f43 Mobile: Remove search and side menu button from config screen 2019-07-11 18:26:04 +01:00
Laurent Cozic
86e7daaec4 Mobile: Cleaned context menu and moved options and metadata to side menu bar 2019-07-11 18:23:29 +01:00
Laurent Cozic
cab73a26e7 Mobile: Adding note side menu 2019-07-11 17:43:55 +01:00
Laurent Cozic
554ddb3b51 Mobile: Grouped file attachment action under one menu 2019-07-11 17:41:13 +01:00
Laurent Cozic
3b22bdb8ae Doc: Fixed Linux install command line for website 2019-07-10 18:18:31 +01:00
Laurent Cozic
5fdd07679e All: Fix: Only log master key ID 2019-07-10 17:35:08 +01:00
Laurent Cozic
69f75a1520 Doc: Updated old links 2019-07-10 17:00:10 +01:00
Laurent Cozic
f9b7acb8b1 Merge branch 'master' of github.com:laurent22/joplin 2019-07-10 16:41:20 +01:00
Laurent Cozic
91f700ad54 Doc: Updated email addresses 2019-07-10 16:41:13 +01:00
Robert
966aca7753 Update nl_NL.po (#1709)
* Update nl_NL.po

* Added ampersands to main menu items 

for the nl-nl translation
2019-07-05 13:00:53 -04:00
Helmut K. C. Tessarek
4de8816ed5 Merge pull request #1710 from Marmo/Marmo-translation-20190705
Translation: minor fixes (de_DE)
2019-07-05 11:26:32 -04:00
Marmo
bea68a1056 Minor translation fixes (de_DE) 2019-07-05 13:54:11 +02:00
Laurent Cozic
6fea7116b6 Mobile: Removed now unneeded Welcome screen 2019-06-29 00:24:00 +01:00
Laurent Cozic
2955914ca5 Mobile: Fixes #1690 (maybe): Process less data simultaneously when building search index to prevent out of memory errors 2019-06-28 23:49:43 +01:00
Laurent Cozic
fd150b5b9d Update website 2019-06-28 16:08:50 +01:00
Laurent Cozic
334ffad196 Doc: Added link to Mastodon feed 2019-06-28 16:04:05 +01:00
Charles
a796a9d179 API: Support is_todo property to allow making a note a todo (#1688) 2019-06-28 13:46:55 +01:00
Helmut K. C. Tessarek
917dcea28a use a command to get the current branch that works with older git versions
closes #1695
2019-06-28 05:02:21 -04:00
Laurent Cozic
c901228dc5 Merge branch 'master' of github.com:laurent22/joplin 2019-06-28 00:51:14 +01:00
Laurent Cozic
da21580785 Mobile: Added 'All notes' screen; Cleaned up header bar buttons; Removed 'body' from note preview object to improve memory usage 2019-06-28 00:51:02 +01:00
Laurent Cozic
4d92187327 Mobile: Added button to fix search engine index 2019-06-28 00:48:52 +01:00
Helmut K. C. Tessarek
207d433fb3 Desktop: Improved: Show git branch and hash in About dialog (#1692)
* show git branch and hash in About dialog

This additional info will only be shown, if the code is not an official release.

An official release is calculated as follows:
- current commit has a tag
- the tag contains the version number of the package

However, the information will always be printed to the console.

* info will now always be shown in About dialog (if available)

ElectronClient/app/compile-package-info.js: added warning
ElectronClient/app/app.js: push info conditionally to the message array

* use sprintf syntax
2019-06-27 15:04:02 +01:00
Laurent Cozic
ffc311d7bd Mobile: Moved slider value to the left so that it is visible while dragging 2019-06-27 00:05:17 +01:00
Laurent Cozic
a1e8e71359 Mobile: Added auto-save 2019-06-26 23:26:26 +01:00
Laurent Cozic
7942e74dc6 Mobile: Fixed field focus logic 2019-06-26 23:21:12 +01:00
Laurent Cozic
c4e21c2b6a Mobile: Added placeholders for note title and body, and focus body by default for notes 2019-06-26 23:00:25 +01:00
Laurent Cozic
0a06aa6f9f Mobile: When inside a note, do not show side menu and search buttons 2019-06-26 22:54:09 +01:00
Laurent Cozic
f985cfa25c Mobile: Removed arrow icon as it is rendered weirdly on device 2019-06-26 18:51:12 +01:00
Laurent Cozic
6e143aef5c Android release v1.0.277 2019-06-26 18:40:43 +01:00
Laurent Cozic
bf16aa6192 All: Better logging in case of error while indexing search 2019-06-26 18:36:42 +01:00
Laurent Cozic
d96c58d192 Mobile: Edit and delete notebooks by long-pressing them, and removed context menu on note lists 2019-06-26 18:28:09 +01:00
Laurent Cozic
e7e0264411 Mobile: Improved side menu: Made button panel fixed at the bottom, and added dark overlay over right side content 2019-06-26 18:05:37 +00:00
Laurent Cozic
430a11282b Mobile: Moved 'New notebook' button to sidebar 2019-06-26 01:10:15 +01:00
Laurent Cozic
9957b2798c Mobile: Moved config menu item to button on side bar 2019-06-26 00:35:26 +01:00
Laurent Cozic
2c5b0010bf Mobile: Removed concept of Advanced Options and move tools to Config screen to clean up context menu 2019-06-26 00:13:13 +01:00
Laurent Cozic
1e3c6ed98c Desktop: When doing local search do not split query into words 2019-06-25 23:09:53 +01:00
Laurent Cozic
484f290eb0 Clipper: Improved clipping selection by removing unecessary elements 2019-06-25 22:11:12 +01:00
Helmut K. C. Tessarek
06ad539941 Clipper release v1.0.17 2019-06-23 23:23:07 -04:00
Laurent Cozic
5b84e80ac4 Clipper: Fixes #1214: Include data from form fields when clipping forms 2019-06-24 00:57:39 +01:00
Laurent Cozic
ca0f349348 Merge branch 'master' of github.com:laurent22/joplin 2019-06-24 00:00:24 +01:00
Laurent Cozic
d79089aea3 Clipper: Fixes #1682: Do not clip elements that should be hidden 2019-06-24 00:00:11 +01:00
Eugene Odeluga
03611ad5ca Desktop: For Ubuntu users, added unity to if condition for desktop icon creation (#1683) 2019-06-23 22:24:58 +01:00
Helmut K. C. Tessarek
c78c1cd3cf Clipper release v1.0.16 2019-06-23 03:06:34 -04:00
水货
55afa7b5b7 Update zh_CN.po (#1681) 2019-06-23 03:00:41 -04:00
Laurent Cozic
a6c407b62b Doc: Mentioned Goto Anything feature 2019-06-22 19:06:54 +01:00
Laurent Cozic
21897a3cd4 Clipper: Resolves #1669: Handle special case of code block used on Microsoft website 2019-06-22 18:57:41 +01:00
Laurent Cozic
5796dd2098 Update translations 2019-06-22 13:10:13 +01:00
abonte
d050071437 update it_IT.po (#1680) 2019-06-22 12:45:35 +01:00
Laurent Cozic
eaf8510f49 Doc: Added requirement for unit tests 2019-06-22 12:44:31 +01:00
Laurent Cozic
6ee2595dce Desktop: Fixes #1676: Preserve user timestamps when adding note via API 2019-06-22 12:31:04 +01:00
Laurent Cozic
0ecf2d6d9a Merge branch 'master' of github.com:laurent22/joplin 2019-06-22 11:23:35 +01:00
Laurent Cozic
50fd075168 Desktop, CLI: Fixes #1672: Fix line break issue when importing certain notes from Evernotes 2019-06-22 11:23:22 +01:00
Helmut K. C. Tessarek
6fa76bb83a fix minor typo in README.md 2019-06-21 23:58:44 -04:00
Laurent Cozic
b175c1fc94 Desktop: Resolves #1649: Cache code blocks in notes to speed up rendering 2019-06-21 08:28:59 +01:00
Caleb John
b461625518 Desktop: Fixed issue with issue with watching file on Linux (#1659)
Watch for rename events in the external editor and re-watch file
2019-06-20 00:44:51 +01:00
Laurent Cozic
3819897ba1 Merge branch 'master' of github.com:laurent22/joplin 2019-06-20 00:02:29 +01:00
Laurent Cozic
6a031857ba Desktop: Fixes #1664: Disable certain menu items when no note or multiple notes are selected, and fixed menu item to set tag 2019-06-20 00:02:13 +01:00
Laurent Cozic
0e57b7eb46 iOS v10.0.36 2019-06-19 23:22:35 +01:00
Laurent Cozic
e21a0ba5b7 Update translations 2019-06-19 23:18:24 +01:00
Laurent Cozic
78f731e616 Merge branch 'master' of github.com:laurent22/joplin 2019-06-19 23:16:45 +01:00
Laurent Cozic
f6688a65ae iOS: Fixed bug that was preventing images from displaying 2019-06-19 23:16:37 +01:00
Laurent Cozic
035b9c6d1a Android: This is now needed to build the app 2019-06-19 21:51:22 +01:00
Laurent Cozic
266ff244d9 Revert "Mobile: Added button to clear local sync state"
Can cause too many issues.

This reverts commit 6ce091f4d8.
2019-06-19 21:50:26 +01:00
Laurent Cozic
de1bfa5c34 Android release v1.0.276 2019-06-19 15:08:44 +01:00
Laurent Cozic
478b8f00d8 Fix release script 2019-06-19 15:04:46 +01:00
Laurent Cozic
860d2fd7f5 Merge branch 'master' of github.com:laurent22/joplin 2019-06-19 15:04:16 +01:00
Laurent Cozic
6ce091f4d8 Mobile: Added button to clear local sync state 2019-06-19 14:57:59 +01:00
Laurent Cozic
ce595ac5e4 Mentioned that it works on FreeBSD 2019-06-19 12:29:15 +01:00
Laurent Cozic
267436a00d Merge pull request #1660 from delta-emil/bulgarian-translation
Localization: add bulgarian
2019-06-18 22:54:52 +01:00
Helmut K. C. Tessarek
97e0f4258a Update localization en_US.po 2019-06-18 12:32:56 -04:00
delta-emil
faa6ccc150 add bulgarian translation 2019-06-16 23:39:20 +03:00
Laurent Cozic
349cade946 All: Optimised resource download queue by exiting early if resources are already downloaded 2019-06-15 21:48:37 +01:00
Laurent Cozic
0200aa92de Doc: Added doc for resource download mode 2019-06-15 21:28:31 +01:00
Laurent Cozic
60ed2cbee5 Mobile: Fixed bug where photo was not displayed just after having taken it 2019-06-15 21:23:30 +01:00
Laurent Cozic
0e7b2f36c8 Fixing release process for Android 2019-06-15 18:58:09 +01:00
Laurent Cozic
4083221b21 Android: Added support for 64-bit hardware 2019-06-15 18:48:07 +01:00
567 changed files with 54151 additions and 20127 deletions

48
.eslintignore Normal file
View File

@@ -0,0 +1,48 @@
*.min.js
.git/
.github/
_mydocs/
_releases/
Assets/
CliClient/build
CliClient/locales
CliClient/node_modules
CliClient/tests-build
CliClient/tests/enex_to_md
CliClient/tests/html_to_md
CliClient/tests/logs
CliClient/tests/support
CliClient/tests/sync
CliClient/tests/tmp
Clipper/joplin-webclipper/content_scripts/JSDOMParser.js
Clipper/joplin-webclipper/content_scripts/Readability-readerable.js
Clipper/joplin-webclipper/content_scripts/Readability.js
Clipper/joplin-webclipper/dist
Clipper/joplin-webclipper/icons
Clipper/joplin-webclipper/popup/build
Clipper/joplin-webclipper/popup/node_modules
docs/
ElectronClient/app/dist
ElectronClient/app/lib
ElectronClient/app/lib/vendor/sjcl-rn.js
ElectronClient/app/lib/vendor/sjcl.js
ElectronClient/app/locales
ElectronClient/app/node_modules
highlight.pack.js
node_modules/
ReactNativeClient/android
ReactNativeClient/ios
ReactNativeClient/lib/vendor/
ReactNativeClient/lib/welcomeAssets.js
ReactNativeClient/locales
ReactNativeClient/node_modules
readme/
Tools/node_modules
Tools/PortableAppsLauncher
Server/.git/
Server/.github/
Server/docs/
Server/dist/
Server/bin/
Server/node_modules/
ElectronClient/app/packageInfo.js

85
.eslintrc.js Normal file
View File

@@ -0,0 +1,85 @@
module.exports = {
'env': {
'browser': true,
'es6': true,
'node': true,
},
"parser": "@typescript-eslint/parser",
'extends': ['eslint:recommended'],
'globals': {
'Atomics': 'readonly',
'SharedArrayBuffer': 'readonly',
// Jasmine variables
'expect': 'readonly',
'describe': 'readonly',
'it': 'readonly',
'beforeEach': 'readonly',
'jasmine': 'readonly',
// React Native variables
'__DEV__': 'readonly',
// Clipper variables
'browserSupportsPromises_': true,
'chrome': 'readonly',
'browser': 'readonly',
},
'parserOptions': {
'ecmaVersion': 2018,
"ecmaFeatures": {
"jsx": true,
},
"sourceType": "module",
},
'rules': {
// -------------------------------
// Code correctness
// -------------------------------
"react/jsx-uses-react": "error",
"react/jsx-uses-vars": "error",
"no-unused-vars": "error",
"no-constant-condition": 0,
"no-prototype-builtins": 0,
// This error is always a false positive so far since it detects
// possible race conditions in contexts where we know it cannot happen.
"require-atomic-updates": 0,
// "no-lonely-if": "error",
// -------------------------------
// Formatting
// -------------------------------
"space-in-parens": ["error", "never"],
"semi": ["error", "always"],
"eol-last": ["error", "always"],
"quotes": ["error", "single"],
"indent": ["error", "tab"],
"comma-dangle": ["error", "always-multiline"],
"no-trailing-spaces": "error",
"linebreak-style": ["error", "unix"],
"prefer-template": ["error"],
"template-curly-spacing": ["error", "never"],
"key-spacing": ["error", {
"beforeColon": false,
"afterColon": true,
"mode": "strict"
}],
"block-spacing": ["error"],
"brace-style": ["error", "1tbs", { "allowSingleLine": true }],
"no-spaced-func": ["error"],
"func-call-spacing": ["error"],
"space-before-function-paren": ["error", {
"anonymous": "never",
"named": "never",
"asyncArrow": "always"
}],
"multiline-comment-style": ["error", "separate-lines"],
"space-before-blocks": "error",
"spaced-comment": ["error", "always"],
"keyword-spacing": ["error", { "before": true, "after": true }]
},
"plugins": [
"react",
"@typescript-eslint",
],
};

1
.github/FUNDING.yml vendored
View File

@@ -1,4 +1,5 @@
# These are supported funding model platforms # These are supported funding model platforms
patreon: joplin patreon: joplin
github: laurent22
custom: https://joplinapp.org/donate/ custom: https://joplinapp.org/donate/

9
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,9 @@
👉 Please follow one of these issue templates:
- https://github.com/laurent22/joplin/issues/new/choose
⚠️
The GitHub issue tracker is for **bugs** and **security issues** ONLY. For feature requests and support, please use the forum:
https://discourse.joplinapp.org/
⚠️
Note: to keep the backlog clean and actionable, issues may be immediately closed if they do not follow one of the above issue templates.

48
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,48 @@
---
name: "🐛 Bug Report"
about: Report a reproducible bug or regression in Joplin.
title: ''
labels: 'bug'
---
<!--
Please provide a clear and concise description of what the bug is. (In the section Steps To Reproduce.)
Include screenshots if needed.
Please test using the latest Joplin release to make sure your issue has not already been fixed.
-->
<!--
IMPORTANT: If you are reporting a clipper bug, please include an example URL that shows the issue.
Without the URL the issue is likely to be closed.
-->
## Environment
Joplin version:
Platform:
OS specifcs:
<!--
Platform can be one of: macOS, Linux, Windows, Android, iOS, terminal (or a combination)
OS specifcs: e.g. OS version, Linux distribution, Android/iOS version, ...
-->
## Steps To Reproduce
1.
2.
<!--
Issues without reproduction steps are likely to stall.
-->
Describe what you expected to happen:
## Logfile
<!--
Please attach a debug log. Issues without a debug log are likely to stall.
For information on how to collect a log file: https://joplinapp.org/debugging/
-->

29
.github/ISSUE_TEMPLATE/question.md vendored Normal file
View File

@@ -0,0 +1,29 @@
---
name: "🤔 Questions and Help"
about: The issue tracker is not for questions. Please ask questions on https://discourse.joplinapp.org/.
title: ''
labels: 'invalid'
---
⚠🚨⛔ The issue tracker is not for questions. ⛔🚨⚠
As it happens, support requests that are created as issues are likely to be closed. We want to make sure you are able to find the help you seek.
## Questions and Help
Please read the [documentation](https://joplinapp.org/) and [FAQ](https://joplinapp.org/faq/) first.
### https://discourse.joplinapp.org/
If you have still questions related to Joplin, please open a topic in the [forum](https://discourse.joplinapp.org/).
You can use your GitHub credentials to login to the forum.
## Links
- Documentation: https://joplinapp.org
- FAQ: https://joplinapp.org/faq/
- Forum: https://discourse.joplinapp.org
- How to enable end-to-end encryption: https://joplinapp.org/e2ee/
- API documentation: https://joplinapp.org/api/
- How to enable debug mode: https://joplinapp.org/debugging/

View File

@@ -6,6 +6,8 @@ Please prefix the title with the platform you are targetting:
- "Mobile" for the mobile app (or "Android" / "iOS" if the pull request only applies to one of the mobile platforms) - "Mobile" for the mobile app (or "Android" / "iOS" if the pull request only applies to one of the mobile platforms)
- "CLI" for the CLI app - "CLI" for the CLI app
If it's not related to any platform (such as a translation, change to the documentation, etc.), simply don't add a platform.
For example: "Desktop: Added new setting to change font", or "Mobile: Fixed config screen error" For example: "Desktop: Added new setting to change font", or "Mobile: Fixed config screen error"
PLEASE READ THE GUIDE FIRST: https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md PLEASE READ THE GUIDE FIRST: https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md

25
.github/lock.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
# Configuration for Lock Threads - https://github.com/dessant/lock-threads
# Number of days of inactivity before a closed issue or pull request is locked
daysUntilLock: 7
# Skip issues and pull requests created before a given timestamp. Timestamp must
# follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable
skipCreatedBefore: false
# Issues and pull requests with these labels will be ignored. Set to `[]` to disable
exemptLabels: []
# Label to add before locking, such as `outdated`. Set to `false` to disable
lockLabel: false
# Comment to post before locking. Set to `false` to disable
lockComment: false
# Assign `resolved` as the reason for locking. Set to `false` to disable
setLockReason: false
# Limit to only `issues` or `pulls`
only: issues
# Optionally, specify configuration settings just for `issues` or `pulls`
# issues:
# exemptLabels:
# - help-wanted
# lockLabel: outdated
# pulls:
# daysUntilLock: 30
# Repository to extend settings from
# _extends: repo

25
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
# Configuration for probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 90
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- "good first issue"
- "essential"
- "essential-reviewed"
- "help wanted"
- "nice to have"
- "upstream"
- "backlog"
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs.
You may also label this issue as "backlog" and I will leave it open.
Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: >
Closing this issue after a prolonged period of inactivity. If this issue is still present in the latest release, please feel free to create a new issue with up-to-date information.
only: issues

3
.gitignore vendored
View File

@@ -42,4 +42,5 @@ ReactNativeClient/lib/csstojs/
ReactNativeClient/lib/rnInjectedJs/ ReactNativeClient/lib/rnInjectedJs/
ElectronClient/app/gui/note-viewer/fonts/ ElectronClient/app/gui/note-viewer/fonts/
ElectronClient/app/gui/note-viewer/lib.js ElectronClient/app/gui/note-viewer/lib.js
Tools/commit_hook.txt Tools/commit_hook.txt
.vscode/*

View File

@@ -1,5 +1,5 @@
# Only build tags (Doesn't work - doesn't build anything) # Only build tags (Doesn't work - doesn't build anything)
if: tag IS present if: tag IS present OR type = pull_request
rvm: 2.3.3 rvm: 2.3.3
@@ -54,8 +54,43 @@ before_install:
script: script:
- | - |
# Install tools
npm install
cd Tools cd Tools
npm install npm install
cd ../ElectronClient/app cd ..
# Run test units
cd CliClient
npm install
./run_test.sh
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
fi
cd ..
# Run linter for pull requests only - this is so that
# bypassing eslint is allowed for urgent fixes.
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
npm run linter-ci ./
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
fi
fi
# Find out if we should run the build or not. Electron-builder gets stuck when
# builing PRs so we disable it in this case. The Linux build should provide
# enough info if the app builds or not.
# https://github.com/electron-userland/electron-builder/issues/4263
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
exit 0
fi
fi
# Prepare the Electron app and build it
cd ElectronClient/app
rsync -aP --delete ../../ReactNativeClient/lib/ lib/ rsync -aP --delete ../../ReactNativeClient/lib/ lib/
npm install && yarn dist npm install && USE_HARD_LINKS=false yarn dist

Binary file not shown.

Before

Width:  |  Height:  |  Size: 986 B

BIN
Assets/AdresseSupport.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@@ -3,6 +3,7 @@
# General information # General information
- All the applications share the same library, which, for historical reasons, is in ReactNativeClient/lib. This library is copied to the relevant directories when building each app. - All the applications share the same library, which, for historical reasons, is in ReactNativeClient/lib. This library is copied to the relevant directories when building each app.
- In general, most of the backend (anything to do with the database, synchronisation, data import or export, etc.) is shared across all the apps, so when making a change please consider how it will affect all the apps.
## macOS dependencies ## macOS dependencies
@@ -18,11 +19,10 @@
# Building the tools # Building the tools
Before building any of the applications, you need to build the tools: Before building any of the applications, you need to build the tools and pre-commit hooks:
``` ```
cd Tools npm install && cd Tools && npm install
npm install
``` ```
# Building the Electron application # Building the Electron application
@@ -65,7 +65,7 @@ The [building\_win32\_tips on this page](./readme/building_win32_tips.md) might
# Building the Mobile application # Building the Mobile application
First you need to setup React Native to build projects with native code. For this, follow the instructions on the [Get Started](https://facebook.github.io/react-native/docs/getting-started.html) tutorial, in the "Building Projects with Native Code" tab. First you need to setup React Native to build projects with native code. For this, follow the instructions on the [Get Started](https://facebook.github.io/react-native/docs/getting-started.html) tutorial, in the "React Native CLI Quickstart" tab.
Then, from `/ReactNativeClient`, run `npm install`, then `react-native run-ios` or `react-native run-android`. Then, from `/ReactNativeClient`, run `npm install`, then `react-native run-ios` or `react-native run-android`.
@@ -78,4 +78,4 @@ npm install
rsync --delete -aP ../ReactNativeClient/locales/ build/locales/ rsync --delete -aP ../ReactNativeClient/locales/ build/locales/
``` ```
Run `run.sh` to start the application for testing. Run `run.sh` to start the application for testing.

View File

@@ -16,10 +16,12 @@ File bugs in the [Github Issue Tracker](https://github.com/laurent22/joplin/issu
Please check that your request has not already been posted in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue). If it has, **up-voting the issue** increases the chances it'll be noticed and implemented in the future. "+1" comments are not tracked. Please check that your request has not already been posted in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue). If it has, **up-voting the issue** increases the chances it'll be noticed and implemented in the future. "+1" comments are not tracked.
As a general rule, suggestions to _improve Joplin_ should be posted first in the [Joplin Forum](https://discourse.joplinapp.org/) for discussion. As a general rule, suggestions to *improve Joplin* should be posted first in the [Joplin Forum](https://discourse.joplinapp.org/) for discussion.
Avoid listing multiple requests in one report in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue). One issue per request makes it easier to track and discuss it. Avoid listing multiple requests in one report in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue). One issue per request makes it easier to track and discuss it.
Finally, when submitting a pull request, don't forget to [test your code](#unit-tests).
# Contribute to the project # Contribute to the project
## Contributing to Joplin's translation ## Contributing to Joplin's translation
@@ -30,7 +32,8 @@ Joplin is available in multiple languages thanks to the help of its users. You c
If you want to start contributing to the project's code, please follow these guidelines before creating a pull request: If you want to start contributing to the project's code, please follow these guidelines before creating a pull request:
- Bug fixes are always welcome. Start by reviewing the list of [essential issues](https://github.com/laurent22/joplin/issues?q=is%3Aissue+is%3Aopen+label%3Aessential) - Bug fixes are always welcome. Start by reviewing the [list of bugs](https://github.com/laurent22/joplin/issues?q=is%3Aissue+is%3Aopen+label%3Abug)
- A good way to easily start contributing is to pick and work on a [good first issue](https://github.com/laurent22/joplin/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). We try to make these issues as clear as possible and provide basic info on how the code should be changed, and if something is unclear feel free to ask for more information on the issue.
- Before adding a new feature, ask about it in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue) or the [Joplin Forum](https://discourse.joplinapp.org/), or check if existing discussions exist to make sure the new functionality is desired. - Before adding a new feature, ask about it in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue) or the [Joplin Forum](https://discourse.joplinapp.org/), or check if existing discussions exist to make sure the new functionality is desired.
- **Changes that will consist in more than 50 lines of code should be discussed the [Joplin Forum](https://discourse.joplinapp.org/)**, so that you don't spend too much time implementing something that might not be accepted. - **Changes that will consist in more than 50 lines of code should be discussed the [Joplin Forum](https://discourse.joplinapp.org/)**, so that you don't spend too much time implementing something that might not be accepted.
@@ -38,7 +41,34 @@ Building the apps is relatively easy - please [see the build instructions](https
## Coding style ## Coding style
There are only two rules, but not following them means the pull request will not be accepted (it can be accepted once the issues are fixed): Coding style is enforced by a pre-commit hook that runs eslint. This hook is installed whenever running `npm install` on any of the application directory. If for some reason the pre-commit hook didn't get installed, you can manually install it by running `npm install` at the root of the repository.
- **Please use tabs, NOT spaces.** ## Unit tests
- **Please do not add or remove optional characters, such as spaces or colons.** Please setup your editor so that it only changes what you are working on and is not making automated changes elsewhere. The reason for this is that small white space changes make diff hard to read and can cause needless conflicts.
When submitting a pull request for a new feature or bug fix, please add unit tests for your code. Unit testing GUI changes is not always possible so it is not required, but any change in a file under /lib for example should be unit tested.
The tests are under CliClient/tests. To get them running, you first need to build the CLI app:
cd CliClient
npm i
To run the test units, you must have an instance of the cli app running. In a first window navigate into `CliClient` and run:
```sh
./run.sh
```
> If you get an error like `Error: Cannot find module '../locales/index.js'`, this means you must (a) rebuild translations or (b) take > them from one of the other apps. To do option b, you can run the following command to copy them from the `ReactNativeClient` directory:>
>
> ```sh
> cd .. # Return to the root of the project
> rsync -aP ./ReactNativeClient/locales/ ./CliClient/build/locales/
> ```
Then run the tests in a second window. To run all the test units:
./run_test.sh
To run just one particular file:
./run_test.sh markdownUtils # Don't add the .js extension

13
CliClient/.eslintrc.js Normal file
View File

@@ -0,0 +1,13 @@
module.exports = {
"overrides": [
{
"files": ["tests/**/*.js"],
'rules': {
// Ignore all unused function arguments, because in some
// case they are kept to indicate the function signature.
"no-unused-vars": ["error", { "argsIgnorePattern": ".*" }],
"@typescript-eslint/no-unused-vars": 0,
}
},
],
};

View File

@@ -1,14 +1,11 @@
const { _ } = require('lib/locale.js');
const { Logger } = require('lib/logger.js'); const { Logger } = require('lib/logger.js');
const Resource = require('lib/models/Resource.js');
const { netUtils } = require('lib/net-utils.js'); const { netUtils } = require('lib/net-utils.js');
const http = require("http"); const http = require('http');
const urlParser = require("url"); const urlParser = require('url');
const enableServerDestroy = require('server-destroy'); const enableServerDestroy = require('server-destroy');
class ResourceServer { class ResourceServer {
constructor() { constructor() {
this.server_ = null; this.server_ = null;
this.logger_ = new Logger(); this.logger_ = new Logger();
@@ -31,7 +28,7 @@ class ResourceServer {
baseUrl() { baseUrl() {
if (!this.port_) return ''; if (!this.port_) return '';
return 'http://127.0.0.1:' + this.port_; return `http://127.0.0.1:${this.port_}`;
} }
setLinkHandler(handler) { setLinkHandler(handler) {
@@ -40,7 +37,7 @@ class ResourceServer {
async start() { async start() {
this.port_ = await netUtils.findAvailablePort([9167, 9267, 8167, 8267]); this.port_ = await netUtils.findAvailablePort([9167, 9267, 8167, 8267]);
if (!this.port_) { if (!this.port_) {
this.logger().error('Could not find available port to start resource server. Please report the error at https://github.com/laurent22/joplin'); this.logger().error('Could not find available port to start resource server. Please report the error at https://github.com/laurent22/joplin');
return; return;
} }
@@ -48,16 +45,15 @@ class ResourceServer {
this.server_ = http.createServer(); this.server_ = http.createServer();
this.server_.on('request', async (request, response) => { this.server_.on('request', async (request, response) => {
const writeResponse = message => {
const writeResponse = (message) => {
response.write(message); response.write(message);
response.end(); response.end();
} };
const url = urlParser.parse(request.url, true); const url = urlParser.parse(request.url, true);
let resourceId = url.pathname.split('/'); let resourceId = url.pathname.split('/');
if (resourceId.length < 2) { if (resourceId.length < 2) {
writeResponse('Error: could not get resource ID from path name: ' + url.pathname); writeResponse(`Error: could not get resource ID from path name: ${url.pathname}`);
return; return;
} }
resourceId = resourceId[1]; resourceId = resourceId[1];
@@ -66,9 +62,10 @@ class ResourceServer {
try { try {
const done = await this.linkHandler_(resourceId, response); const done = await this.linkHandler_(resourceId, response);
if (!done) throw new Error('Unhandled resource: ' + resourceId); if (!done) throw new Error(`Unhandled resource: ${resourceId}`);
} catch (error) { } catch (error) {
response.setHeader('Content-Type', 'text/plain'); response.setHeader('Content-Type', 'text/plain');
// eslint-disable-next-line require-atomic-updates
response.statusCode = 400; response.statusCode = 400;
response.write(error.message); response.write(error.message);
} }
@@ -76,7 +73,7 @@ class ResourceServer {
response.end(); response.end();
}); });
this.server_.on('error', (error) => { this.server_.on('error', error => {
this.logger().error('Resource server:', error); this.logger().error('Resource server:', error);
}); });
@@ -91,7 +88,6 @@ class ResourceServer {
if (this.server_) this.server_.destroy(); if (this.server_) this.server_.destroy();
this.server_ = null; this.server_ = null;
} }
} }
module.exports = ResourceServer; module.exports = ResourceServer;

View File

@@ -5,13 +5,12 @@ const Tag = require('lib/models/Tag.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const Resource = require('lib/models/Resource.js'); const Resource = require('lib/models/Resource.js');
const { cliUtils } = require('./cli-utils.js');
const { reducer, defaultState } = require('lib/reducer.js'); const { reducer, defaultState } = require('lib/reducer.js');
const { splitCommandString } = require('lib/string-utils.js'); const { splitCommandString } = require('lib/string-utils.js');
const { reg } = require('lib/registry.js'); const { reg } = require('lib/registry.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const Entities = require('html-entities').AllHtmlEntities; const Entities = require('html-entities').AllHtmlEntities;
const htmlentities = (new Entities()).encode; const htmlentities = new Entities().encode;
const chalk = require('chalk'); const chalk = require('chalk');
const tk = require('terminal-kit'); const tk = require('terminal-kit');
@@ -20,12 +19,10 @@ const Renderer = require('tkwidgets/framework/Renderer.js');
const DecryptionWorker = require('lib/services/DecryptionWorker'); const DecryptionWorker = require('lib/services/DecryptionWorker');
const BaseWidget = require('tkwidgets/BaseWidget.js'); const BaseWidget = require('tkwidgets/BaseWidget.js');
const ListWidget = require('tkwidgets/ListWidget.js');
const TextWidget = require('tkwidgets/TextWidget.js'); const TextWidget = require('tkwidgets/TextWidget.js');
const HLayoutWidget = require('tkwidgets/HLayoutWidget.js'); const HLayoutWidget = require('tkwidgets/HLayoutWidget.js');
const VLayoutWidget = require('tkwidgets/VLayoutWidget.js'); const VLayoutWidget = require('tkwidgets/VLayoutWidget.js');
const ReduxRootWidget = require('tkwidgets/ReduxRootWidget.js'); const ReduxRootWidget = require('tkwidgets/ReduxRootWidget.js');
const RootWidget = require('tkwidgets/RootWidget.js');
const WindowWidget = require('tkwidgets/WindowWidget.js'); const WindowWidget = require('tkwidgets/WindowWidget.js');
const NoteWidget = require('./gui/NoteWidget.js'); const NoteWidget = require('./gui/NoteWidget.js');
@@ -37,7 +34,6 @@ const StatusBarWidget = require('./gui/StatusBarWidget.js');
const ConsoleWidget = require('./gui/ConsoleWidget.js'); const ConsoleWidget = require('./gui/ConsoleWidget.js');
class AppGui { class AppGui {
constructor(app, store, keymap) { constructor(app, store, keymap) {
try { try {
this.app_ = app; this.app_ = app;
@@ -50,12 +46,12 @@ class AppGui {
// Some keys are directly handled by the tkwidget framework // Some keys are directly handled by the tkwidget framework
// so they need to be remapped in a different way. // so they need to be remapped in a different way.
this.tkWidgetKeys_ = { this.tkWidgetKeys_ = {
'focus_next': 'TAB', focus_next: 'TAB',
'focus_previous': 'SHIFT_TAB', focus_previous: 'SHIFT_TAB',
'move_up': 'UP', move_up: 'UP',
'move_down': 'DOWN', move_down: 'DOWN',
'page_down': 'PAGE_DOWN', page_down: 'PAGE_DOWN',
'page_up': 'PAGE_UP', page_up: 'PAGE_UP',
}; };
this.renderer_ = null; this.renderer_ = null;
@@ -64,7 +60,7 @@ class AppGui {
this.renderer_ = new Renderer(this.term(), this.rootWidget_); this.renderer_ = new Renderer(this.term(), this.rootWidget_);
this.app_.on('modelAction', async (event) => { this.app_.on('modelAction', async event => {
await this.handleModelAction(event.action); await this.handleModelAction(event.action);
}); });
@@ -83,7 +79,7 @@ class AppGui {
reg.setupRecurrentSync(); reg.setupRecurrentSync();
DecryptionWorker.instance().scheduleStart(); DecryptionWorker.instance().scheduleStart();
} catch (error) { } catch (error) {
this.fullScreen(false); if (this.term_) { this.fullScreen(false); }
console.error(error); console.error(error);
process.exit(1); process.exit(1);
} }
@@ -134,7 +130,7 @@ class AppGui {
}; };
folderList.name = 'folderList'; folderList.name = 'folderList';
folderList.vStretch = true; folderList.vStretch = true;
folderList.on('currentItemChange', async (event) => { folderList.on('currentItemChange', async event => {
const item = folderList.currentItem; const item = folderList.currentItem;
if (item === '-') { if (item === '-') {
@@ -169,7 +165,7 @@ class AppGui {
}); });
} }
}); });
this.rootWidget_.connect(folderList, (state) => { this.rootWidget_.connect(folderList, state => {
return { return {
selectedFolderId: state.selectedFolderId, selectedFolderId: state.selectedFolderId,
selectedTagId: state.selectedTagId, selectedTagId: state.selectedTagId,
@@ -196,7 +192,7 @@ class AppGui {
id: note ? note.id : null, id: note ? note.id : null,
}); });
}); });
this.rootWidget_.connect(noteList, (state) => { this.rootWidget_.connect(noteList, state => {
return { return {
selectedNoteId: state.selectedNoteIds.length ? state.selectedNoteIds[0] : null, selectedNoteId: state.selectedNoteIds.length ? state.selectedNoteIds[0] : null,
items: state.notes, items: state.notes,
@@ -210,7 +206,7 @@ class AppGui {
borderBottomWidth: 1, borderBottomWidth: 1,
borderLeftWidth: 1, borderLeftWidth: 1,
}; };
this.rootWidget_.connect(noteText, (state) => { this.rootWidget_.connect(noteText, state => {
return { return {
noteId: state.selectedNoteIds.length ? state.selectedNoteIds[0] : null, noteId: state.selectedNoteIds.length ? state.selectedNoteIds[0] : null,
notes: state.notes, notes: state.notes,
@@ -225,7 +221,7 @@ class AppGui {
borderLeftWidth: 1, borderLeftWidth: 1,
borderRightWidth: 1, borderRightWidth: 1,
}; };
this.rootWidget_.connect(noteMetadata, (state) => { this.rootWidget_.connect(noteMetadata, state => {
return { noteId: state.selectedNoteIds.length ? state.selectedNoteIds[0] : null }; return { noteId: state.selectedNoteIds.length ? state.selectedNoteIds[0] : null };
}); });
noteMetadata.hide(); noteMetadata.hide();
@@ -292,7 +288,7 @@ class AppGui {
if (!cmd) return; if (!cmd) return;
const isConfigPassword = cmd.indexOf('config ') >= 0 && cmd.indexOf('password') >= 0; const isConfigPassword = cmd.indexOf('config ') >= 0 && cmd.indexOf('password') >= 0;
if (isConfigPassword) return; if (isConfigPassword) return;
this.stdout(chalk.cyan.bold('> ' + cmd)); this.stdout(chalk.cyan.bold(`> ${cmd}`));
} }
setupKeymap(keymap) { setupKeymap(keymap) {
@@ -301,7 +297,7 @@ class AppGui {
for (let i = 0; i < keymap.length; i++) { for (let i = 0; i < keymap.length; i++) {
const item = Object.assign({}, keymap[i]); const item = Object.assign({}, keymap[i]);
if (!item.command) throw new Error('Missing command for keymap item: ' + JSON.stringify(item)); if (!item.command) throw new Error(`Missing command for keymap item: ${JSON.stringify(item)}`);
if (!('type' in item)) item.type = 'exec'; if (!('type' in item)) item.type = 'exec';
@@ -408,7 +404,7 @@ class AppGui {
activeListItem() { activeListItem() {
const widget = this.widget('mainWindow').focusedWidget; const widget = this.widget('mainWindow').focusedWidget;
if (!widget) return null; if (!widget) return null;
if (widget.name == 'noteList' || widget.name == 'folderList') { if (widget.name == 'noteList' || widget.name == 'folderList') {
return widget.currentItem; return widget.currentItem;
} }
@@ -430,25 +426,21 @@ class AppGui {
} }
async processFunctionCommand(cmd) { async processFunctionCommand(cmd) {
if (cmd === 'activate') { if (cmd === 'activate') {
const w = this.widget('mainWindow').focusedWidget; const w = this.widget('mainWindow').focusedWidget;
if (w.name === 'folderList') { if (w.name === 'folderList') {
this.widget('noteList').focus(); this.widget('noteList').focus();
} else if (w.name === 'noteList' || w.name === 'noteText') { } else if (w.name === 'noteList' || w.name === 'noteText') {
this.processPromptCommand('edit $n'); this.processPromptCommand('edit $n');
} }
} else if (cmd === 'delete') { } else if (cmd === 'delete') {
if (this.widget('folderList').hasFocus) { if (this.widget('folderList').hasFocus) {
const item = this.widget('folderList').selectedJoplinItem; const item = this.widget('folderList').selectedJoplinItem;
if (!item) return; if (!item) return;
if (item.type_ === BaseModel.TYPE_FOLDER) { if (item.type_ === BaseModel.TYPE_FOLDER) {
await this.processPromptCommand('rmbook ' + item.id); await this.processPromptCommand(`rmbook ${item.id}`);
} else if (item.type_ === BaseModel.TYPE_TAG) { } else if (item.type_ === BaseModel.TYPE_TAG) {
this.stdout(_('To delete a tag, untag the associated notes.')); this.stdout(_('To delete a tag, untag the associated notes.'));
} else if (item.type_ === BaseModel.TYPE_SEARCH) { } else if (item.type_ === BaseModel.TYPE_SEARCH) {
@@ -462,9 +454,7 @@ class AppGui {
} else { } else {
this.stdout(_('Please select the note or notebook to be deleted first.')); this.stdout(_('Please select the note or notebook to be deleted first.'));
} }
} else if (cmd === 'toggle_console') { } else if (cmd === 'toggle_console') {
if (!this.consoleIsShown()) { if (!this.consoleIsShown()) {
this.showConsole(); this.showConsole();
this.minimizeConsole(); this.minimizeConsole();
@@ -475,22 +465,15 @@ class AppGui {
this.maximizeConsole(); this.maximizeConsole();
} }
} }
} else if (cmd === 'toggle_metadata') { } else if (cmd === 'toggle_metadata') {
this.toggleNoteMetadata(); this.toggleNoteMetadata();
} else if (cmd === 'enter_command_line_mode') { } else if (cmd === 'enter_command_line_mode') {
const cmd = await this.widget('statusBar').prompt(); const cmd = await this.widget('statusBar').prompt();
if (!cmd) return; if (!cmd) return;
this.addCommandToConsole(cmd); this.addCommandToConsole(cmd);
await this.processPromptCommand(cmd); await this.processPromptCommand(cmd);
} else { } else {
throw new Error(`Unknown command: ${cmd}`);
throw new Error('Unknown command: ' + cmd);
} }
} }
@@ -501,7 +484,7 @@ class AppGui {
// this.logger().debug('Got command: ' + cmd); // this.logger().debug('Got command: ' + cmd);
try { try {
let note = this.widget('noteList').currentItem; let note = this.widget('noteList').currentItem;
let folder = this.widget('folderList').currentItem; let folder = this.widget('folderList').currentItem;
let args = splitCommandString(cmd); let args = splitCommandString(cmd);
@@ -511,7 +494,7 @@ class AppGui {
args[i] = note ? note.id : ''; args[i] = note ? note.id : '';
} else if (args[i] == '$b') { } else if (args[i] == '$b') {
args[i] = folder ? folder.id : ''; args[i] = folder ? folder.id : '';
} else if (args[i] == '$c') { } else if (args[i] == '$c') {
const item = this.activeListItem(); const item = this.activeListItem();
args[i] = item ? item.id : ''; args[i] = item ? item.id : '';
} }
@@ -523,7 +506,7 @@ class AppGui {
} }
this.widget('console').scrollBottom(); this.widget('console').scrollBottom();
// Invalidate so that the screen is redrawn in case inputting a command has moved // Invalidate so that the screen is redrawn in case inputting a command has moved
// the GUI up (in particular due to autocompletion), it's moved back to the right position. // the GUI up (in particular due to autocompletion), it's moved back to the right position.
this.widget('root').invalidate(); this.widget('root').invalidate();
@@ -603,17 +586,17 @@ class AppGui {
async setupResourceServer() { async setupResourceServer() {
const linkStyle = chalk.blue.underline; const linkStyle = chalk.blue.underline;
const noteTextWidget = this.widget('noteText'); const noteTextWidget = this.widget('noteText');
const resourceIdRegex = /^:\/[a-f0-9]+$/i const resourceIdRegex = /^:\/[a-f0-9]+$/i;
const noteLinks = {}; const noteLinks = {};
const hasProtocol = function(s, protocols) { const hasProtocol = function(s, protocols) {
if (!s) return false; if (!s) return false;
s = s.trim().toLowerCase(); s = s.trim().toLowerCase();
for (let i = 0; i < protocols.length; i++) { for (let i = 0; i < protocols.length; i++) {
if (s.indexOf(protocols[i] + '://') === 0) return true; if (s.indexOf(`${protocols[i]}://`) === 0) return true;
} }
return false; return false;
} };
// By default, before the server is started, only the regular // By default, before the server is started, only the regular
// URLs appear in blue. // URLs appear in blue.
@@ -637,29 +620,31 @@ class AppGui {
const link = noteLinks[path]; const link = noteLinks[path];
if (link.type === 'url') { if (link.type === 'url') {
response.writeHead(302, { 'Location': link.url }); response.writeHead(302, { Location: link.url });
return true; return true;
} }
if (link.type === 'item') { if (link.type === 'item') {
const itemId = link.id; const itemId = link.id;
let item = await BaseItem.loadItemById(itemId); let item = await BaseItem.loadItemById(itemId);
if (!item) throw new Error('No item with ID ' + itemId); // Should be nearly impossible if (!item) throw new Error(`No item with ID ${itemId}`); // Should be nearly impossible
if (item.type_ === BaseModel.TYPE_RESOURCE) { if (item.type_ === BaseModel.TYPE_RESOURCE) {
if (item.mime) response.setHeader('Content-Type', item.mime); if (item.mime) response.setHeader('Content-Type', item.mime);
response.write(await Resource.content(item)); response.write(await Resource.content(item));
} else if (item.type_ === BaseModel.TYPE_NOTE) { } else if (item.type_ === BaseModel.TYPE_NOTE) {
const html = [` const html = [
`
<!DOCTYPE html> <!DOCTYPE html>
<html class="client-nojs" lang="en" dir="ltr"> <html class="client-nojs" lang="en" dir="ltr">
<head><meta charset="UTF-8"/></head><body> <head><meta charset="UTF-8"/></head><body>
`]; `,
html.push('<pre>' + htmlentities(item.title) + '\n\n' + htmlentities(item.body) + '</pre>'); ];
html.push(`<pre>${htmlentities(item.title)}\n\n${htmlentities(item.body)}</pre>`);
html.push('</body></html>'); html.push('</body></html>');
response.write(html.join('')); response.write(html.join(''));
} else { } else {
throw new Error('Unsupported item type: ' + item.type_); throw new Error(`Unsupported item type: ${item.type_}`);
} }
return true; return true;
@@ -679,7 +664,7 @@ class AppGui {
noteLinks[index] = { noteLinks[index] = {
type: 'item', type: 'item',
id: url.substr(2), id: url.substr(2),
}; };
} else if (hasProtocol(url, ['http', 'https', 'file', 'ftp'])) { } else if (hasProtocol(url, ['http', 'https', 'file', 'ftp'])) {
noteLinks[index] = { noteLinks[index] = {
type: 'url', type: 'url',
@@ -691,7 +676,7 @@ class AppGui {
return url; return url;
} }
return linkStyle(this.resourceServer_.baseUrl() + '/' + index); return linkStyle(`${this.resourceServer_.baseUrl()}/${index}`);
}, },
}; };
} }
@@ -710,8 +695,7 @@ class AppGui {
term.grabInput(); term.grabInput();
term.on('key', async (name, matches, data) => { term.on('key', async (name) => {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Handle special shortcuts // Handle special shortcuts
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
@@ -729,13 +713,13 @@ class AppGui {
return; return;
} }
if (name === 'CTRL_C' ) { if (name === 'CTRL_C') {
const cmd = this.app().currentCommand(); const cmd = this.app().currentCommand();
if (!cmd || !cmd.cancellable() || this.commandCancelCalled_) { if (!cmd || !cmd.cancellable() || this.commandCancelCalled_) {
this.stdout(_('Press Ctrl+D or type "exit" to exit the application')); this.stdout(_('Press Ctrl+D or type "exit" to exit the application'));
} else { } else {
this.commandCancelCalled_ = true; this.commandCancelCalled_ = true;
await cmd.cancel() await cmd.cancel();
this.commandCancelCalled_ = false; this.commandCancelCalled_ = false;
} }
return; return;
@@ -744,8 +728,8 @@ class AppGui {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Build up current shortcut // Build up current shortcut
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
const now = (new Date()).getTime(); const now = new Date().getTime();
if (now - this.lastShortcutKeyTime_ > 800 || this.isSpecialKey(name)) { if (now - this.lastShortcutKeyTime_ > 800 || this.isSpecialKey(name)) {
this.currentShortcutKeys_ = [name]; this.currentShortcutKeys_ = [name];
@@ -793,7 +777,7 @@ class AppGui {
} else if (keymapItem.type === 'tkwidgets') { } else if (keymapItem.type === 'tkwidgets') {
this.widget('root').handleKey(this.tkWidgetKeys_[keymapItem.command]); this.widget('root').handleKey(this.tkWidgetKeys_[keymapItem.command]);
} else { } else {
throw new Error('Unknown command type: ' + JSON.stringify(keymapItem)); throw new Error(`Unknown command type: ${JSON.stringify(keymapItem)}`);
} }
} }
@@ -813,7 +797,6 @@ class AppGui {
process.exit(1); process.exit(1);
}); });
} }
} }
AppGui.INPUT_MODE_NORMAL = 1; AppGui.INPUT_MODE_NORMAL = 1;

View File

@@ -1,10 +1,5 @@
const { BaseApplication } = require('lib/BaseApplication'); const { BaseApplication } = require('lib/BaseApplication');
const { createStore, applyMiddleware } = require('redux');
const { reducer, defaultState } = require('lib/reducer.js');
const { JoplinDatabase } = require('lib/joplin-database.js');
const { Database } = require('lib/database.js');
const { FoldersScreenUtils } = require('lib/folders-screen-utils.js'); const { FoldersScreenUtils } = require('lib/folders-screen-utils.js');
const { DatabaseDriverNode } = require('lib/database-driver-node.js');
const ResourceService = require('lib/services/ResourceService'); const ResourceService = require('lib/services/ResourceService');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js'); const Folder = require('lib/models/Folder.js');
@@ -12,21 +7,15 @@ const BaseItem = require('lib/models/BaseItem.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const Tag = require('lib/models/Tag.js'); const Tag = require('lib/models/Tag.js');
const Setting = require('lib/models/Setting.js'); const Setting = require('lib/models/Setting.js');
const { Logger } = require('lib/logger.js');
const { sprintf } = require('sprintf-js');
const { reg } = require('lib/registry.js'); const { reg } = require('lib/registry.js');
const { fileExtension } = require('lib/path-utils.js'); const { fileExtension } = require('lib/path-utils.js');
const { shim } = require('lib/shim.js'); const { _ } = require('lib/locale.js');
const { _, setLocale, defaultLocale, closestSupportedLocale } = require('lib/locale.js');
const os = require('os');
const fs = require('fs-extra'); const fs = require('fs-extra');
const { cliUtils } = require('./cli-utils.js'); const { cliUtils } = require('./cli-utils.js');
const Cache = require('lib/Cache'); const Cache = require('lib/Cache');
const WelcomeUtils = require('lib/WelcomeUtils');
const RevisionService = require('lib/services/RevisionService'); const RevisionService = require('lib/services/RevisionService');
class Application extends BaseApplication { class Application extends BaseApplication {
constructor() { constructor() {
super(); super();
@@ -75,7 +64,7 @@ class Application extends BaseApplication {
// const response = await cliUtils.promptMcq(msg, answers); // const response = await cliUtils.promptMcq(msg, answers);
// if (!response) return null; // if (!response) return null;
return output[response - 1]; // return output[response - 1];
} else { } else {
return output.length ? output[0] : null; return output.length ? output[0] : null;
} }
@@ -97,10 +86,12 @@ class Application extends BaseApplication {
const parent = options.parent ? options.parent : app().currentFolder(); const parent = options.parent ? options.parent : app().currentFolder();
const ItemClass = BaseItem.itemClass(type); const ItemClass = BaseItem.itemClass(type);
if (type == BaseModel.TYPE_NOTE && pattern.indexOf('*') >= 0) { // Handle it as pattern if (type == BaseModel.TYPE_NOTE && pattern.indexOf('*') >= 0) {
// Handle it as pattern
if (!parent) throw new Error(_('No notebook selected.')); if (!parent) throw new Error(_('No notebook selected.'));
return await Note.previews(parent.id, { titlePattern: pattern }); return await Note.previews(parent.id, { titlePattern: pattern });
} else { // Single item } else {
// Single item
let item = null; let item = null;
if (type == BaseModel.TYPE_NOTE) { if (type == BaseModel.TYPE_NOTE) {
if (!parent) throw new Error(_('No notebook has been specified.')); if (!parent) throw new Error(_('No notebook has been specified.'));
@@ -126,15 +117,15 @@ class Application extends BaseApplication {
} }
setupCommand(cmd) { setupCommand(cmd) {
cmd.setStdout((text) => { cmd.setStdout(text => {
return this.stdout(text); return this.stdout(text);
}); });
cmd.setDispatcher((action) => { cmd.setDispatcher(action => {
if (this.store()) { if (this.store()) {
return this.store().dispatch(action); return this.store().dispatch(action);
} else { } else {
return (action) => {}; return () => {};
} }
}); });
@@ -145,10 +136,10 @@ class Application extends BaseApplication {
if (!options.answers) options.answers = options.booleanAnswerDefault === 'y' ? [_('Y'), _('n')] : [_('N'), _('y')]; if (!options.answers) options.answers = options.booleanAnswerDefault === 'y' ? [_('Y'), _('n')] : [_('N'), _('y')];
if (options.type == 'boolean') { if (options.type == 'boolean') {
message += ' (' + options.answers.join('/') + ')'; message += ` (${options.answers.join('/')})`;
} }
let answer = await this.gui().prompt('', message + ' ', options); let answer = await this.gui().prompt('', `${message} `, options);
if (options.type === 'boolean') { if (options.type === 'boolean') {
if (answer === null) return false; // Pressed ESCAPE if (answer === null) return false; // Pressed ESCAPE
@@ -185,12 +176,12 @@ class Application extends BaseApplication {
commands(uiType = null) { commands(uiType = null) {
if (!this.allCommandsLoaded_) { if (!this.allCommandsLoaded_) {
fs.readdirSync(__dirname).forEach((path) => { fs.readdirSync(__dirname).forEach(path => {
if (path.indexOf('command-') !== 0) return; if (path.indexOf('command-') !== 0) return;
const ext = fileExtension(path) const ext = fileExtension(path);
if (ext != 'js') return; if (ext != 'js') return;
let CommandClass = require('./' + path); let CommandClass = require(`./${path}`);
let cmd = new CommandClass(); let cmd = new CommandClass();
if (!cmd.enabled()) return; if (!cmd.enabled()) return;
cmd = this.setupCommand(cmd); cmd = this.setupCommand(cmd);
@@ -257,7 +248,7 @@ class Application extends BaseApplication {
let CommandClass = null; let CommandClass = null;
try { try {
CommandClass = require(__dirname + '/command-' + name + '.js'); CommandClass = require(`${__dirname}/command-${name}.js`);
} catch (error) { } catch (error) {
if (error.message && error.message.indexOf('Cannot find module') >= 0) { if (error.message && error.message.indexOf('Cannot find module') >= 0) {
let e = new Error(_('No such command: %s', name)); let e = new Error(_('No such command: %s', name));
@@ -276,19 +267,27 @@ class Application extends BaseApplication {
dummyGui() { dummyGui() {
return { return {
isDummy: () => { return true; }, isDummy: () => {
prompt: (initialText = '', promptString = '', options = null) => { return cliUtils.prompt(initialText, promptString, options); }, return true;
},
prompt: (initialText = '', promptString = '', options = null) => {
return cliUtils.prompt(initialText, promptString, options);
},
showConsole: () => {}, showConsole: () => {},
maximizeConsole: () => {}, maximizeConsole: () => {},
stdout: (text) => { console.info(text); }, stdout: text => {
fullScreen: (b=true) => {}, console.info(text);
},
fullScreen: () => {},
exit: () => {}, exit: () => {},
showModalOverlay: (text) => {}, showModalOverlay: () => {},
hideModalOverlay: () => {}, hideModalOverlay: () => {},
stdoutMaxWidth: () => { return 100; }, stdoutMaxWidth: () => {
return 100;
},
forceRender: () => {}, forceRender: () => {},
termSaveState: () => {}, termSaveState: () => {},
termRestoreState: (state) => {}, termRestoreState: () => {},
}; };
} }
@@ -300,7 +299,7 @@ class Application extends BaseApplication {
let outException = null; let outException = null;
try { try {
if (this.gui().isDummy() && !this.activeCommand_.supportsUi('cli')) throw new Error(_('The command "%s" is only available in GUI mode', this.activeCommand_.name())); if (this.gui().isDummy() && !this.activeCommand_.supportsUi('cli')) throw new Error(_('The command "%s" is only available in GUI mode', this.activeCommand_.name()));
const cmdArgs = cliUtils.makeCommandArgs(this.activeCommand_, argv); const cmdArgs = cliUtils.makeCommandArgs(this.activeCommand_, argv);
await this.activeCommand_.action(cmdArgs); await this.activeCommand_.action(cmdArgs);
} catch (error) { } catch (error) {
@@ -316,24 +315,24 @@ class Application extends BaseApplication {
async loadKeymaps() { async loadKeymaps() {
const defaultKeyMap = [ const defaultKeyMap = [
{ "keys": [":"], "type": "function", "command": "enter_command_line_mode" }, { keys: [':'], type: 'function', command: 'enter_command_line_mode' },
{ "keys": ["TAB"], "type": "function", "command": "focus_next" }, { keys: ['TAB'], type: 'function', command: 'focus_next' },
{ "keys": ["SHIFT_TAB"], "type": "function", "command": "focus_previous" }, { keys: ['SHIFT_TAB'], type: 'function', command: 'focus_previous' },
{ "keys": ["UP"], "type": "function", "command": "move_up" }, { keys: ['UP'], type: 'function', command: 'move_up' },
{ "keys": ["DOWN"], "type": "function", "command": "move_down" }, { keys: ['DOWN'], type: 'function', command: 'move_down' },
{ "keys": ["PAGE_UP"], "type": "function", "command": "page_up" }, { keys: ['PAGE_UP'], type: 'function', command: 'page_up' },
{ "keys": ["PAGE_DOWN"], "type": "function", "command": "page_down" }, { keys: ['PAGE_DOWN'], type: 'function', command: 'page_down' },
{ "keys": ["ENTER"], "type": "function", "command": "activate" }, { keys: ['ENTER'], type: 'function', command: 'activate' },
{ "keys": ["DELETE", "BACKSPACE"], "type": "function", "command": "delete" }, { keys: ['DELETE', 'BACKSPACE'], type: 'function', command: 'delete' },
{ "keys": [" "], "command": "todo toggle $n" }, { keys: [' '], command: 'todo toggle $n' },
{ "keys": ["tc"], "type": "function", "command": "toggle_console" }, { keys: ['tc'], type: 'function', command: 'toggle_console' },
{ "keys": ["tm"], "type": "function", "command": "toggle_metadata" }, { keys: ['tm'], type: 'function', command: 'toggle_metadata' },
{ "keys": ["/"], "type": "prompt", "command": "search \"\"", "cursorPosition": -2 }, { keys: ['/'], type: 'prompt', command: 'search ""', cursorPosition: -2 },
{ "keys": ["mn"], "type": "prompt", "command": "mknote \"\"", "cursorPosition": -2 }, { keys: ['mn'], type: 'prompt', command: 'mknote ""', cursorPosition: -2 },
{ "keys": ["mt"], "type": "prompt", "command": "mktodo \"\"", "cursorPosition": -2 }, { keys: ['mt'], type: 'prompt', command: 'mktodo ""', cursorPosition: -2 },
{ "keys": ["mb"], "type": "prompt", "command": "mkbook \"\"", "cursorPosition": -2 }, { keys: ['mb'], type: 'prompt', command: 'mkbook ""', cursorPosition: -2 },
{ "keys": ["yn"], "type": "prompt", "command": "cp $n \"\"", "cursorPosition": -2 }, { keys: ['yn'], type: 'prompt', command: 'cp $n ""', cursorPosition: -2 },
{ "keys": ["dn"], "type": "prompt", "command": "mv $n \"\"", "cursorPosition": -2 } { keys: ['dn'], type: 'prompt', command: 'mv $n ""', cursorPosition: -2 },
]; ];
// Filter the keymap item by command so that items in keymap.json can override // Filter the keymap item by command so that items in keymap.json can override
@@ -341,10 +340,10 @@ class Application extends BaseApplication {
const itemsByCommand = {}; const itemsByCommand = {};
for (let i = 0; i < defaultKeyMap.length; i++) { for (let i = 0; i < defaultKeyMap.length; i++) {
itemsByCommand[defaultKeyMap[i].command] = defaultKeyMap[i] itemsByCommand[defaultKeyMap[i].command] = defaultKeyMap[i];
} }
const filePath = Setting.value('profileDir') + '/keymap.json'; const filePath = `${Setting.value('profileDir')}/keymap.json`;
if (await fs.pathExists(filePath)) { if (await fs.pathExists(filePath)) {
try { try {
let configString = await fs.readFile(filePath, 'utf-8'); let configString = await fs.readFile(filePath, 'utf-8');
@@ -356,7 +355,7 @@ class Application extends BaseApplication {
} }
} catch (error) { } catch (error) {
let msg = error.message ? error.message : ''; let msg = error.message ? error.message : '';
msg = 'Could not load keymap ' + filePath + '\n' + msg; msg = `Could not load keymap ${filePath}\n${msg}`;
error.message = msg; error.message = msg;
throw error; throw error;
} }
@@ -368,13 +367,25 @@ class Application extends BaseApplication {
output.push(itemsByCommand[n]); output.push(itemsByCommand[n]);
} }
// Map reserved shortcuts to their equivalent key
// https://github.com/cronvel/terminal-kit/issues/101
for (let i = 0; i < output.length; i++) {
const newKeys = output[i].keys.map(k => {
k = k.replace(/CTRL_H/g, 'BACKSPACE');
k = k.replace(/CTRL_I/g, 'TAB');
k = k.replace(/CTRL_M/g, 'ENTER');
return k;
});
output[i].keys = newKeys;
}
return output; return output;
} }
async start(argv) { async start(argv) {
argv = await super.start(argv); argv = await super.start(argv);
cliUtils.setStdout((object) => { cliUtils.setStdout(object => {
return this.stdout(object); return this.stdout(object);
}); });
@@ -385,6 +396,8 @@ class Application extends BaseApplication {
this.currentFolder_ = await Folder.load(Setting.value('activeFolderId')); this.currentFolder_ = await Folder.load(Setting.value('activeFolderId'));
await this.applySettingsSideEffects();
try { try {
await this.execCommand(argv); await this.execCommand(argv);
} catch (error) { } catch (error) {
@@ -398,10 +411,11 @@ class Application extends BaseApplication {
await Setting.saveAll(); await Setting.saveAll();
// Need to call exit() explicitely, otherwise Node wait for any timeout to complete // Need to call exit() explicitly, otherwise Node wait for any timeout to complete
// https://stackoverflow.com/questions/18050095 // https://stackoverflow.com/questions/18050095
process.exit(0); process.exit(0);
} else { // Otherwise open the GUI } else {
// Otherwise open the GUI
this.initRedux(); this.initRedux();
const keymap = await this.loadKeymaps(); const keymap = await this.loadKeymaps();
@@ -421,7 +435,7 @@ class Application extends BaseApplication {
const tags = await Tag.allWithNotes(); const tags = await Tag.allWithNotes();
ResourceService.runInBackground(); ResourceService.runInBackground();
RevisionService.instance().runInBackground(); RevisionService.instance().runInBackground();
this.dispatch({ this.dispatch({
@@ -435,7 +449,6 @@ class Application extends BaseApplication {
}); });
} }
} }
} }
let application_ = null; let application_ = null;
@@ -446,4 +459,4 @@ function app() {
return application_; return application_;
} }
module.exports = { app }; module.exports = { app };

View File

@@ -10,42 +10,47 @@ async function handleAutocompletionPromise(line) {
// Auto-complete the command name // Auto-complete the command name
const names = await app().commandNames(); const names = await app().commandNames();
let words = getArguments(line); let words = getArguments(line);
//If there is only one word and it is not already a command name then you // If there is only one word and it is not already a command name then you
//should look for commmands it could be // should look for commands it could be
if (words.length == 1) { if (words.length == 1) {
if (names.indexOf(words[0]) === -1) { if (names.indexOf(words[0]) === -1) {
let x = names.filter((n) => n.indexOf(words[0]) === 0); let x = names.filter(n => n.indexOf(words[0]) === 0);
if (x.length === 1) { if (x.length === 1) {
return x[0] + ' '; return `${x[0]} `;
} }
return x.length > 0 ? x.map((a) => a + ' ') : line; return x.length > 0 ? x.map(a => `${a} `) : line;
} else { } else {
return line; return line;
} }
} }
//There is more than one word and it is a command // There is more than one word and it is a command
const metadata = (await app().commandMetadata())[words[0]]; const metadata = (await app().commandMetadata())[words[0]];
//If for some reason this command does not have any associated metadata // If for some reason this command does not have any associated metadata
//just don't autocomplete. However, this should not happen. // just don't autocomplete. However, this should not happen.
if (metadata === undefined) { if (metadata === undefined) {
return line; return line;
} }
//complete an option
if (words[0] === 'tag' && words[1] === 'notetags') {
metadata.usage = 'tag <tag-command> <note>';
}
// complete an option
let next = words.length > 1 ? words[words.length - 1] : ''; let next = words.length > 1 ? words[words.length - 1] : '';
let l = []; let l = [];
if (next[0] === '-') { if (next[0] === '-') {
for (let i = 0; i<metadata.options.length; i++) { for (let i = 0; i < metadata.options.length; i++) {
const options = metadata.options[i][0].split(' '); const options = metadata.options[i][0].split(' ');
//if there are multiple options then they will be separated by comma and // if there are multiple options then they will be separated by comma and
//space. The comma should be removed // space. The comma should be removed
if (options[0][options[0].length - 1] === ',') { if (options[0][options[0].length - 1] === ',') {
options[0] = options[0].slice(0, -1); options[0] = options[0].slice(0, -1);
} }
if (words.includes(options[0]) || words.includes(options[1])) { if (words.includes(options[0]) || words.includes(options[1])) {
continue; continue;
} }
//First two elements are the flag and the third is the description // First two elements are the flag and the third is the description
//Only autocomplete long // Only autocomplete long
if (options.length > 1 && options[1].indexOf(next) === 0) { if (options.length > 1 && options[1].indexOf(next) === 0) {
l.push(options[1]); l.push(options[1]);
} else if (options[0].indexOf(next) === 0) { } else if (options[0].indexOf(next) === 0) {
@@ -55,44 +60,43 @@ async function handleAutocompletionPromise(line) {
if (l.length === 0) { if (l.length === 0) {
return line; return line;
} }
let ret = l.map(a=>toCommandLine(a)); let ret = l.map(a => toCommandLine(a));
ret.prefix = toCommandLine(words.slice(0, -1)) + ' '; ret.prefix = `${toCommandLine(words.slice(0, -1))} `;
return ret; return ret;
} }
//Complete an argument // Complete an argument
//Determine the number of positional arguments by counting the number of // Determine the number of positional arguments by counting the number of
//words that don't start with a - less one for the command name // words that don't start with a - less one for the command name
const positionalArgs = words.filter((a)=>a.indexOf('-') !== 0).length - 1; const positionalArgs = words.filter(a => a.indexOf('-') !== 0).length - 1;
let cmdUsage = yargParser(metadata.usage)['_']; let cmdUsage = yargParser(metadata.usage)['_'];
cmdUsage.splice(0, 1); cmdUsage.splice(0, 1);
if (cmdUsage.length >= positionalArgs) { if (cmdUsage.length >= positionalArgs) {
let argName = cmdUsage[positionalArgs - 1]; let argName = cmdUsage[positionalArgs - 1];
argName = cliUtils.parseCommandArg(argName).name; argName = cliUtils.parseCommandArg(argName).name;
const currentFolder = app().currentFolder(); const currentFolder = app().currentFolder();
if (argName == 'note' || argName == 'note-pattern') { if (argName == 'note' || argName == 'note-pattern') {
const notes = currentFolder ? await Note.previews(currentFolder.id, { titlePattern: next + '*' }) : []; const notes = currentFolder ? await Note.previews(currentFolder.id, { titlePattern: `${next}*` }) : [];
l.push(...notes.map((n) => n.title)); l.push(...notes.map(n => n.title));
} }
if (argName == 'notebook') { if (argName == 'notebook') {
const folders = await Folder.search({ titlePattern: next + '*' }); const folders = await Folder.search({ titlePattern: `${next}*` });
l.push(...folders.map((n) => n.title)); l.push(...folders.map(n => n.title));
} }
if (argName == 'item') { if (argName == 'item') {
const notes = currentFolder ? await Note.previews(currentFolder.id, { titlePattern: next + '*' }) : []; const notes = currentFolder ? await Note.previews(currentFolder.id, { titlePattern: `${next}*` }) : [];
const folders = await Folder.search({ titlePattern: next + '*' }); const folders = await Folder.search({ titlePattern: `${next}*` });
l.push(...notes.map((n) => n.title), folders.map((n) => n.title)); l.push(...notes.map(n => n.title), folders.map(n => n.title));
} }
if (argName == 'tag') { if (argName == 'tag') {
let tags = await Tag.search({ titlePattern: next + '*' }); let tags = await Tag.search({ titlePattern: `${next}*` });
l.push(...tags.map((n) => n.title)); l.push(...tags.map(n => n.title));
} }
if (argName == 'file') { if (argName == 'file') {
@@ -101,7 +105,7 @@ async function handleAutocompletionPromise(line) {
} }
if (argName == 'tag-command') { if (argName == 'tag-command') {
let c = filterList(['add', 'remove', 'list'], next); let c = filterList(['add', 'remove', 'list', 'notetags'], next);
l.push(...c); l.push(...c);
} }
@@ -113,12 +117,11 @@ async function handleAutocompletionPromise(line) {
if (l.length === 1) { if (l.length === 1) {
return toCommandLine([...words.slice(0, -1), l[0]]); return toCommandLine([...words.slice(0, -1), l[0]]);
} else if (l.length > 1) { } else if (l.length > 1) {
let ret = l.map(a=>toCommandLine(a)); let ret = l.map(a => toCommandLine(a));
ret.prefix = toCommandLine(words.slice(0, -1)) + ' '; ret.prefix = `${toCommandLine(words.slice(0, -1))} `;
return ret; return ret;
} }
return line; return line;
} }
function handleAutocompletion(str, callback) { function handleAutocompletion(str, callback) {
handleAutocompletionPromise(str).then(function(res) { handleAutocompletionPromise(str).then(function(res) {
@@ -127,22 +130,24 @@ function handleAutocompletion(str, callback) {
} }
function toCommandLine(args) { function toCommandLine(args) {
if (Array.isArray(args)) { if (Array.isArray(args)) {
return args.map(function(a) { return args
if(a.indexOf('"') !== -1 || a.indexOf(' ') !== -1) { .map(function(a) {
return "'" + a + "'"; if (a.indexOf('"') !== -1 || a.indexOf(' ') !== -1) {
} else if (a.indexOf("'") !== -1) { return `'${a}'`;
return '"' + a + '"'; } else if (a.indexOf('\'') !== -1) {
} else { return `"${a}"`;
return a; } else {
} return a;
}).join(' '); }
})
.join(' ');
} else { } else {
if(args.indexOf('"') !== -1 || args.indexOf(' ') !== -1) { if (args.indexOf('"') !== -1 || args.indexOf(' ') !== -1) {
return "'" + args + "' "; return `'${args}' `;
} else if (args.indexOf("'") !== -1) { } else if (args.indexOf('\'') !== -1) {
return '"' + args + '" '; return `"${args}" `;
} else { } else {
return args + ' '; return `${args} `;
} }
} }
} }
@@ -151,27 +156,26 @@ function getArguments(line) {
let inDoubleQuotes = false; let inDoubleQuotes = false;
let currentWord = ''; let currentWord = '';
let parsed = []; let parsed = [];
for(let i = 0; i<line.length; i++) { for (let i = 0; i < line.length; i++) {
if(line[i] === '"') { if (line[i] === '"') {
if(inDoubleQuotes) { if (inDoubleQuotes) {
inDoubleQuotes = false; inDoubleQuotes = false;
//maybe push word to parsed? // maybe push word to parsed?
//currentWord += '"'; // currentWord += '"';
} else { } else {
inDoubleQuotes = true; inDoubleQuotes = true;
//currentWord += '"'; // currentWord += '"';
} }
} else if(line[i] === "'") { } else if (line[i] === '\'') {
if(inSingleQuotes) { if (inSingleQuotes) {
inSingleQuotes = false; inSingleQuotes = false;
//maybe push word to parsed? // maybe push word to parsed?
//currentWord += "'"; // currentWord += "'";
} else { } else {
inSingleQuotes = true; inSingleQuotes = true;
//currentWord += "'"; // currentWord += "'";
} }
} else if (/\s/.test(line[i]) && } else if (/\s/.test(line[i]) && !(inDoubleQuotes || inSingleQuotes)) {
!(inDoubleQuotes || inSingleQuotes)) {
if (currentWord !== '') { if (currentWord !== '') {
parsed.push(currentWord); parsed.push(currentWord);
currentWord = ''; currentWord = '';

View File

@@ -2,7 +2,6 @@ const { _ } = require('lib/locale.js');
const { reg } = require('lib/registry.js'); const { reg } = require('lib/registry.js');
class BaseCommand { class BaseCommand {
constructor() { constructor() {
this.stdout_ = null; this.stdout_ = null;
this.prompt_ = null; this.prompt_ = null;
@@ -20,7 +19,7 @@ class BaseCommand {
throw new Error('Description not defined'); throw new Error('Description not defined');
} }
async action(args) { async action() {
throw new Error('Action not defined'); throw new Error('Action not defined');
} }
@@ -93,7 +92,6 @@ class BaseCommand {
logger() { logger() {
return reg.logger(); return reg.logger();
} }
} }
module.exports = { BaseCommand }; module.exports = { BaseCommand };

View File

@@ -1,7 +1,7 @@
const fs = require('fs-extra'); const fs = require('fs-extra');
const { fileExtension, basename, dirname } = require('lib/path-utils.js'); const { fileExtension, dirname } = require('lib/path-utils.js');
const wrap_ = require('word-wrap'); const wrap_ = require('word-wrap');
const { _, setLocale, languageCode } = require('lib/locale.js'); const { languageCode } = require('lib/locale.js');
const rootDir = dirname(dirname(__dirname)); const rootDir = dirname(dirname(__dirname));
const MAX_WIDTH = 78; const MAX_WIDTH = 78;
@@ -22,14 +22,14 @@ function renderOptions(options) {
let option = options[i]; let option = options[i];
const flag = option[0]; const flag = option[0];
const indent = INDENT + INDENT + ' '.repeat(optionColWidth + 2); const indent = INDENT + INDENT + ' '.repeat(optionColWidth + 2);
let r = wrap(option[1], indent); let r = wrap(option[1], indent);
r = r.substr(flag.length + (INDENT + INDENT).length); r = r.substr(flag.length + (INDENT + INDENT).length);
r = INDENT + INDENT + flag + r; r = INDENT + INDENT + flag + r;
output.push(r); output.push(r);
} }
return output.join("\n"); return output.join('\n');
} }
function renderCommand(cmd) { function renderCommand(cmd) {
@@ -44,17 +44,17 @@ function renderCommand(cmd) {
output.push(''); output.push('');
output.push(optionString); output.push(optionString);
} }
return output.join("\n"); return output.join('\n');
} }
function getCommands() { function getCommands() {
let output = []; let output = [];
fs.readdirSync(__dirname).forEach((path) => { fs.readdirSync(__dirname).forEach(path => {
if (path.indexOf('command-') !== 0) return; if (path.indexOf('command-') !== 0) return;
const ext = fileExtension(path) const ext = fileExtension(path);
if (ext != 'js') return; if (ext != 'js') return;
let CommandClass = require('./' + path); let CommandClass = require(`./${path}`);
let cmd = new CommandClass(); let cmd = new CommandClass();
if (!cmd.enabled()) return; if (!cmd.enabled()) return;
if (cmd.hidden()) return; if (cmd.hidden()) return;
@@ -87,14 +87,14 @@ function getHeader() {
let description = []; let description = [];
description.push('Joplin is a note taking and to-do application, which can handle a large number of notes organised into notebooks.'); description.push('Joplin is a note taking and to-do application, which can handle a large number of notes organised into notebooks.');
description.push('The notes are searchable, can be copied, tagged and modified with your own text editor.'); description.push('The notes are searchable, can be copied, tagged and modified with your own text editor.');
description.push("\n\n"); description.push('\n\n');
description.push('The notes can be synchronised with various target including the file system (for example with a network directory) or with Microsoft OneDrive.'); description.push('The notes can be synchronised with various target including the file system (for example with a network directory) or with Microsoft OneDrive.');
description.push("\n\n"); description.push('\n\n');
description.push('Notes exported from Evenotes via .enex files can be imported into Joplin, including the formatted content, resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.).'); description.push('Notes exported from Evenotes via .enex files can be imported into Joplin, including the formatted content, resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.).');
output.push(wrap(description.join(''), INDENT)); output.push(wrap(description.join(''), INDENT));
return output.join("\n"); return output.join('\n');
} }
function getFooter() { function getFooter() {
@@ -102,18 +102,18 @@ function getFooter() {
output.push('WEBSITE'); output.push('WEBSITE');
output.push(''); output.push('');
output.push(INDENT + 'https://joplinapp.org'); output.push(`${INDENT}https://joplinapp.org`);
output.push(''); output.push('');
output.push('LICENSE'); output.push('LICENSE');
output.push(''); output.push('');
let filePath = rootDir + '/LICENSE_' + languageCode(); let filePath = `${rootDir}/LICENSE_${languageCode()}`;
if (!fs.existsSync(filePath)) filePath = rootDir + '/LICENSE'; if (!fs.existsSync(filePath)) filePath = `${rootDir}/LICENSE`;
const licenseText = fs.readFileSync(filePath, 'utf8'); const licenseText = fs.readFileSync(filePath, 'utf8');
output.push(wrap(licenseText, INDENT)); output.push(wrap(licenseText, INDENT));
return output.join("\n"); return output.join('\n');
} }
async function main() { async function main() {
@@ -128,12 +128,12 @@ async function main() {
} }
const headerText = getHeader(); const headerText = getHeader();
const commandsText = commandBlocks.join("\n\n"); const commandsText = commandBlocks.join('\n\n');
const footerText = getFooter(); const footerText = getFooter();
console.info(headerText + "\n\n" + 'USAGE' + "\n\n" + commandsText + "\n\n" + footerText); console.info(`${headerText}\n\n` + 'USAGE' + `\n\n${commandsText}\n\n${footerText}`);
} }
main().catch((error) => { main().catch(error => {
console.error(error); console.error(error);
}); });

View File

@@ -1,4 +1,4 @@
"use strict" 'use strict';
const fs = require('fs-extra'); const fs = require('fs-extra');
const { Logger } = require('lib/logger.js'); const { Logger } = require('lib/logger.js');
@@ -10,14 +10,14 @@ const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const Setting = require('lib/models/Setting.js'); const Setting = require('lib/models/Setting.js');
const { sprintf } = require('sprintf-js'); const { sprintf } = require('sprintf-js');
const exec = require('child_process').exec const exec = require('child_process').exec;
process.on('unhandledRejection', (reason, p) => { process.on('unhandledRejection', (reason, p) => {
console.error('Unhandled promise rejection', p, 'reason:', reason); console.error('Unhandled promise rejection', p, 'reason:', reason);
}); });
const baseDir = dirname(__dirname) + '/tests/cli-integration'; const baseDir = `${dirname(__dirname)}/tests/cli-integration`;
const joplinAppPath = __dirname + '/main.js'; const joplinAppPath = `${__dirname}/main.js`;
const logger = new Logger(); const logger = new Logger();
logger.addTarget('console'); logger.addTarget('console');
@@ -32,17 +32,17 @@ db.setLogger(dbLogger);
function createClient(id) { function createClient(id) {
return { return {
'id': id, id: id,
'profileDir': baseDir + '/client' + id, profileDir: `${baseDir}/client${id}`,
}; };
} }
const client = createClient(1); const client = createClient(1);
function execCommand(client, command, options = {}) { function execCommand(client, command) {
let exePath = 'node ' + joplinAppPath; let exePath = `node ${joplinAppPath}`;
let cmd = exePath + ' --update-geolocation-disabled --env dev --profile ' + client.profileDir + ' ' + command; let cmd = `${exePath} --update-geolocation-disabled --env dev --profile ${client.profileDir} ${command}`;
logger.info(client.id + ': ' + command); logger.info(`${client.id}: ${command}`);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
exec(cmd, (error, stdout, stderr) => { exec(cmd, (error, stdout, stderr) => {
@@ -72,14 +72,7 @@ function assertEquals(expected, real) {
} }
async function clearDatabase() { async function clearDatabase() {
await db.transactionExecBatch([ await db.transactionExecBatch(['DELETE FROM folders', 'DELETE FROM notes', 'DELETE FROM tags', 'DELETE FROM note_tags', 'DELETE FROM resources', 'DELETE FROM deleted_items']);
'DELETE FROM folders',
'DELETE FROM notes',
'DELETE FROM tags',
'DELETE FROM note_tags',
'DELETE FROM resources',
'DELETE FROM deleted_items',
]);
} }
const testUnits = {}; const testUnits = {};
@@ -101,7 +94,7 @@ testUnits.testFolders = async () => {
folders = await Folder.all(); folders = await Folder.all();
assertEquals(0, folders.length); assertEquals(0, folders.length);
} };
testUnits.testNotes = async () => { testUnits.testNotes = async () => {
await execCommand(client, 'mkbook nb1'); await execCommand(client, 'mkbook nb1');
@@ -121,16 +114,16 @@ testUnits.testNotes = async () => {
notes = await Note.all(); notes = await Note.all();
assertEquals(2, notes.length); assertEquals(2, notes.length);
await execCommand(client, "rm -f 'blabla*'"); await execCommand(client, 'rm -f \'blabla*\'');
notes = await Note.all(); notes = await Note.all();
assertEquals(2, notes.length); assertEquals(2, notes.length);
await execCommand(client, "rm -f 'n*'"); await execCommand(client, 'rm -f \'n*\'');
notes = await Note.all(); notes = await Note.all();
assertEquals(0, notes.length); assertEquals(0, notes.length);
} };
testUnits.testCat = async () => { testUnits.testCat = async () => {
await execCommand(client, 'mkbook nb1'); await execCommand(client, 'mkbook nb1');
@@ -145,7 +138,7 @@ testUnits.testCat = async () => {
r = await execCommand(client, 'cat -v mynote'); r = await execCommand(client, 'cat -v mynote');
assertTrue(r.indexOf(note.id) >= 0); assertTrue(r.indexOf(note.id) >= 0);
} };
testUnits.testConfig = async () => { testUnits.testConfig = async () => {
await execCommand(client, 'config editor vim'); await execCommand(client, 'config editor vim');
@@ -159,7 +152,7 @@ testUnits.testConfig = async () => {
let r = await execCommand(client, 'config'); let r = await execCommand(client, 'config');
assertTrue(r.indexOf('editor') >= 0); assertTrue(r.indexOf('editor') >= 0);
assertTrue(r.indexOf('subl') >= 0); assertTrue(r.indexOf('subl') >= 0);
} };
testUnits.testCp = async () => { testUnits.testCp = async () => {
await execCommand(client, 'mkbook nb2'); await execCommand(client, 'mkbook nb2');
@@ -180,7 +173,7 @@ testUnits.testCp = async () => {
notes = await Note.previews(f2.id); notes = await Note.previews(f2.id);
assertEquals(1, notes.length); assertEquals(1, notes.length);
assertEquals(notesF1[0].title, notes[0].title); assertEquals(notesF1[0].title, notes[0].title);
} };
testUnits.testLs = async () => { testUnits.testLs = async () => {
await execCommand(client, 'mkbook nb1'); await execCommand(client, 'mkbook nb1');
@@ -190,7 +183,7 @@ testUnits.testLs = async () => {
assertTrue(r.indexOf('note1') >= 0); assertTrue(r.indexOf('note1') >= 0);
assertTrue(r.indexOf('note2') >= 0); assertTrue(r.indexOf('note2') >= 0);
} };
testUnits.testMv = async () => { testUnits.testMv = async () => {
await execCommand(client, 'mkbook nb2'); await execCommand(client, 'mkbook nb2');
@@ -210,21 +203,21 @@ testUnits.testMv = async () => {
await execCommand(client, 'mknote note2'); await execCommand(client, 'mknote note2');
await execCommand(client, 'mknote note3'); await execCommand(client, 'mknote note3');
await execCommand(client, 'mknote blabla'); await execCommand(client, 'mknote blabla');
await execCommand(client, "mv 'note*' nb2"); await execCommand(client, 'mv \'note*\' nb2');
notes1 = await Note.previews(f1.id); notes1 = await Note.previews(f1.id);
notes2 = await Note.previews(f2.id); notes2 = await Note.previews(f2.id);
assertEquals(1, notes1.length); assertEquals(1, notes1.length);
assertEquals(4, notes2.length); assertEquals(4, notes2.length);
} };
async function main(argv) { async function main() {
await fs.remove(baseDir); await fs.remove(baseDir);
logger.info(await execCommand(client, 'version')); logger.info(await execCommand(client, 'version'));
await db.open({ name: client.profileDir + '/database.sqlite' }); await db.open({ name: `${client.profileDir}/database.sqlite` });
BaseModel.db_ = db; BaseModel.db_ = db;
await Setting.load(); await Setting.load();
@@ -237,13 +230,13 @@ async function main(argv) {
await clearDatabase(); await clearDatabase();
let testName = n.substr(4).toLowerCase(); let testName = n.substr(4).toLowerCase();
process.stdout.write(testName + ': '); process.stdout.write(`${testName}: `);
await testUnits[n](); await testUnits[n]();
console.info(''); console.info('');
} }
} }
main(process.argv).catch((error) => { main(process.argv).catch(error => {
console.info(''); console.info('');
logger.error(error); logger.error(error);
}); });

View File

@@ -5,7 +5,7 @@ const stringPadding = require('string-padding');
const cliUtils = {}; const cliUtils = {};
cliUtils.printArray = function(logFunction, rows, headers = null) { cliUtils.printArray = function(logFunction, rows) {
if (!rows.length) return ''; if (!rows.length) return '';
const ALIGN_LEFT = 0; const ALIGN_LEFT = 0;
@@ -16,7 +16,7 @@ cliUtils.printArray = function(logFunction, rows, headers = null) {
for (let i = 0; i < rows.length; i++) { for (let i = 0; i < rows.length; i++) {
let row = rows[i]; let row = rows[i];
for (let j = 0; j < row.length; j++) { for (let j = 0; j < row.length; j++) {
let item = row[j]; let item = row[j];
let width = item ? item.toString().length : 0; let width = item ? item.toString().length : 0;
@@ -26,7 +26,6 @@ cliUtils.printArray = function(logFunction, rows, headers = null) {
} }
} }
let lines = [];
for (let row = 0; row < rows.length; row++) { for (let row = 0; row < rows.length; row++) {
let line = []; let line = [];
for (let col = 0; col < colWidths.length; col++) { for (let col = 0; col < colWidths.length; col++) {
@@ -37,7 +36,7 @@ cliUtils.printArray = function(logFunction, rows, headers = null) {
} }
logFunction(line.join(' ')); logFunction(line.join(' '));
} }
} };
cliUtils.parseFlags = function(flags) { cliUtils.parseFlags = function(flags) {
let output = {}; let output = {};
@@ -56,10 +55,10 @@ cliUtils.parseFlags = function(flags) {
} }
} }
return output; return output;
} };
cliUtils.parseCommandArg = function(arg) { cliUtils.parseCommandArg = function(arg) {
if (arg.length <= 2) throw new Error('Invalid command arg: ' + arg); if (arg.length <= 2) throw new Error(`Invalid command arg: ${arg}`);
const c1 = arg[0]; const c1 = arg[0];
const c2 = arg[arg.length - 1]; const c2 = arg[arg.length - 1];
@@ -70,9 +69,9 @@ cliUtils.parseCommandArg = function(arg) {
} else if (c1 == '[' && c2 == ']') { } else if (c1 == '[' && c2 == ']') {
return { required: false, name: name }; return { required: false, name: name };
} else { } else {
throw new Error('Invalid command arg: ' + arg); throw new Error(`Invalid command arg: ${arg}`);
} }
} };
cliUtils.makeCommandArgs = function(cmd, argv) { cliUtils.makeCommandArgs = function(cmd, argv) {
let cmdUsage = cmd.usage(); let cmdUsage = cmd.usage();
@@ -83,9 +82,8 @@ cliUtils.makeCommandArgs = function(cmd, argv) {
let booleanFlags = []; let booleanFlags = [];
let aliases = {}; let aliases = {};
for (let i = 0; i < options.length; i++) { for (let i = 0; i < options.length; i++) {
if (options[i].length != 2) throw new Error('Invalid options: ' + options[i]); if (options[i].length != 2) throw new Error(`Invalid options: ${options[i]}`);
let flags = options[i][0]; let flags = options[i][0];
let text = options[i][1];
flags = cliUtils.parseFlags(flags); flags = cliUtils.parseFlags(flags);
@@ -125,27 +123,27 @@ cliUtils.makeCommandArgs = function(cmd, argv) {
output.options = argOptions; output.options = argOptions;
return output; return output;
} };
cliUtils.promptMcq = function(message, answers) { cliUtils.promptMcq = function(message, answers) {
const readline = require('readline'); const readline = require('readline');
const rl = readline.createInterface({ const rl = readline.createInterface({
input: process.stdin, input: process.stdin,
output: process.stdout output: process.stdout,
}); });
message += "\n\n"; message += '\n\n';
for (let n in answers) { for (let n in answers) {
if (!answers.hasOwnProperty(n)) continue; if (!answers.hasOwnProperty(n)) continue;
message += _('%s: %s', n, answers[n]) + "\n"; message += `${_('%s: %s', n, answers[n])}\n`;
} }
message += "\n"; message += '\n';
message += _('Your choice: '); message += _('Your choice: ');
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
rl.question(message, (answer) => { rl.question(message, answer => {
rl.close(); rl.close();
if (!(answer in answers)) { if (!(answer in answers)) {
@@ -156,7 +154,7 @@ cliUtils.promptMcq = function(message, answers) {
resolve(answer); resolve(answer);
}); });
}); });
} };
cliUtils.promptConfirm = function(message, answers = null) { cliUtils.promptConfirm = function(message, answers = null) {
if (!answers) answers = [_('Y'), _('n')]; if (!answers) answers = [_('Y'), _('n')];
@@ -164,23 +162,24 @@ cliUtils.promptConfirm = function(message, answers = null) {
const rl = readline.createInterface({ const rl = readline.createInterface({
input: process.stdin, input: process.stdin,
output: process.stdout output: process.stdout,
}); });
message += ' (' + answers.join('/') + ')'; message += ` (${answers.join('/')})`;
return new Promise((resolve, reject) => { return new Promise((resolve) => {
rl.question(message + ' ', (answer) => { rl.question(`${message} `, answer => {
const ok = !answer || answer.toLowerCase() == answers[0].toLowerCase(); const ok = !answer || answer.toLowerCase() == answers[0].toLowerCase();
rl.close(); rl.close();
resolve(ok); resolve(ok);
}); });
}); });
} };
// Note: initialText is there to have the same signature as statusBar.prompt() so that // Note: initialText is there to have the same signature as statusBar.prompt() so that
// it can be a drop-in replacement, however initialText is not used (and cannot be // it can be a drop-in replacement, however initialText is not used (and cannot be
// with readline.question?). // with readline.question?).
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
cliUtils.prompt = function(initialText = '', promptString = ':', options = null) { cliUtils.prompt = function(initialText = '', promptString = ':', options = null) {
if (!options) options = {}; if (!options) options = {};
@@ -189,10 +188,9 @@ cliUtils.prompt = function(initialText = '', promptString = ':', options = null)
const mutableStdout = new Writable({ const mutableStdout = new Writable({
write: function(chunk, encoding, callback) { write: function(chunk, encoding, callback) {
if (!this.muted) if (!this.muted) process.stdout.write(chunk, encoding);
process.stdout.write(chunk, encoding);
callback(); callback();
} },
}); });
const rl = readline.createInterface({ const rl = readline.createInterface({
@@ -201,18 +199,18 @@ cliUtils.prompt = function(initialText = '', promptString = ':', options = null)
terminal: true, terminal: true,
}); });
return new Promise((resolve, reject) => { return new Promise((resolve) => {
mutableStdout.muted = false; mutableStdout.muted = false;
rl.question(promptString, (answer) => { rl.question(promptString, answer => {
rl.close(); rl.close();
if (!!options.secure) this.stdout_(''); if (options.secure) this.stdout_('');
resolve(answer); resolve(answer);
}); });
mutableStdout.muted = !!options.secure; mutableStdout.muted = !!options.secure;
}); });
} };
let redrawStarted_ = false; let redrawStarted_ = false;
let redrawLastLog_ = null; let redrawLastLog_ = null;
@@ -220,7 +218,7 @@ let redrawLastUpdateTime_ = 0;
cliUtils.setStdout = function(v) { cliUtils.setStdout = function(v) {
this.stdout_ = v; this.stdout_ = v;
} };
cliUtils.redraw = function(s) { cliUtils.redraw = function(s) {
const now = time.unixMs(); const now = time.unixMs();
@@ -233,8 +231,8 @@ cliUtils.redraw = function(s) {
redrawLastLog_ = s; redrawLastLog_ = s;
} }
redrawStarted_ = true; redrawStarted_ = true;
} };
cliUtils.redrawDone = function() { cliUtils.redrawDone = function() {
if (!redrawStarted_) return; if (!redrawStarted_) return;
@@ -245,6 +243,6 @@ cliUtils.redrawDone = function() {
redrawLastLog_ = null; redrawLastLog_ = null;
redrawStarted_ = false; redrawStarted_ = false;
} };
module.exports = { cliUtils }; module.exports = { cliUtils };

View File

@@ -1,19 +1,12 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { _ } = require('lib/locale.js');
const { cliUtils } = require('./cli-utils.js');
const EncryptionService = require('lib/services/EncryptionService');
const DecryptionWorker = require('lib/services/DecryptionWorker');
const MasterKey = require('lib/models/MasterKey');
const BaseItem = require('lib/models/BaseItem'); const BaseItem = require('lib/models/BaseItem');
const BaseModel = require('lib/BaseModel'); const BaseModel = require('lib/BaseModel');
const Setting = require('lib/models/Setting.js');
const { toTitleCase } = require('lib/string-utils.js'); const { toTitleCase } = require('lib/string-utils.js');
const { reg } = require('lib/registry.js'); const { reg } = require('lib/registry.js');
const markdownUtils = require('lib/markdownUtils'); const markdownUtils = require('lib/markdownUtils');
const { Database } = require('lib/database.js'); const { Database } = require('lib/database.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'apidoc'; return 'apidoc';
} }
@@ -23,18 +16,22 @@ class Command extends BaseCommand {
} }
createPropertiesTable(tableFields) { createPropertiesTable(tableFields) {
const headers = [ const headers = [
{ name: 'name', label: 'Name' }, { name: 'name', label: 'Name' },
{ name: 'type', label: 'Type', filter: (value) => { {
return Database.enumName('fieldType', value); name: 'type',
}}, label: 'Type',
{ name: 'description', label: 'Description' }, filter: value => {
]; return Database.enumName('fieldType', value);
},
return markdownUtils.createMarkdownTable(headers, tableFields); },
{ name: 'description', label: 'Description' },
];
return markdownUtils.createMarkdownTable(headers, tableFields);
} }
async action(args) { async action() {
const models = [ const models = [
{ {
type: BaseModel.TYPE_NOTE, type: BaseModel.TYPE_NOTE,
@@ -70,8 +67,8 @@ class Command extends BaseCommand {
lines.push('}'); lines.push('}');
lines.push('```'); lines.push('```');
lines.push(''); lines.push('');
lines.push('# Authorisation') lines.push('# Authorisation');
lines.push(''); lines.push('');
lines.push('To prevent unauthorised applications from accessing the API, the calls must be authentified. To do so, you must provide a token as a query parameter for each API call. You can get this token from the Joplin desktop application, on the Web Clipper Options screen.'); lines.push('To prevent unauthorised applications from accessing the API, the calls must be authentified. To do so, you must provide a token as a query parameter for each API call. You can get this token from the Joplin desktop application, on the Web Clipper Options screen.');
lines.push(''); lines.push('');
@@ -171,7 +168,7 @@ class Command extends BaseCommand {
// }); // });
} }
lines.push('# ' + toTitleCase(tableName)); lines.push(`# ${toTitleCase(tableName)}`);
lines.push(''); lines.push('');
if (model.type === BaseModel.TYPE_FOLDER) { if (model.type === BaseModel.TYPE_FOLDER) {
@@ -184,9 +181,9 @@ class Command extends BaseCommand {
lines.push(this.createPropertiesTable(tableFields)); lines.push(this.createPropertiesTable(tableFields));
lines.push(''); lines.push('');
lines.push('## GET /' + tableName); lines.push(`## GET /${tableName}`);
lines.push(''); lines.push('');
lines.push('Gets all ' + tableName); lines.push(`Gets all ${tableName}`);
lines.push(''); lines.push('');
if (model.type === BaseModel.TYPE_FOLDER) { if (model.type === BaseModel.TYPE_FOLDER) {
@@ -194,9 +191,9 @@ class Command extends BaseCommand {
lines.push(''); lines.push('');
} }
lines.push('## GET /' + tableName + '/:id'); lines.push(`## GET /${tableName}/:id`);
lines.push(''); lines.push('');
lines.push('Gets ' + singular + ' with ID :id'); lines.push(`Gets ${singular} with ID :id`);
lines.push(''); lines.push('');
if (model.type === BaseModel.TYPE_TAG) { if (model.type === BaseModel.TYPE_TAG) {
@@ -211,6 +208,11 @@ class Command extends BaseCommand {
lines.push(''); lines.push('');
lines.push('Gets all the tags attached to this note.'); lines.push('Gets all the tags attached to this note.');
lines.push(''); lines.push('');
lines.push('## GET /notes/:id/resources');
lines.push('');
lines.push('Gets all the resources attached to this note.');
lines.push('');
} }
if (model.type === BaseModel.TYPE_FOLDER) { if (model.type === BaseModel.TYPE_FOLDER) {
@@ -227,9 +229,9 @@ class Command extends BaseCommand {
lines.push(''); lines.push('');
} }
lines.push('## POST /' + tableName); lines.push(`## POST /${tableName}`);
lines.push(''); lines.push('');
lines.push('Creates a new ' + singular); lines.push(`Creates a new ${singular}`);
lines.push(''); lines.push('');
if (model.type === BaseModel.TYPE_RESOURCE) { if (model.type === BaseModel.TYPE_RESOURCE) {
@@ -273,14 +275,14 @@ class Command extends BaseCommand {
lines.push(''); lines.push('');
} }
lines.push('## PUT /' + tableName + '/:id'); lines.push(`## PUT /${tableName}/:id`);
lines.push(''); lines.push('');
lines.push('Sets the properties of the ' + singular + ' with ID :id'); lines.push(`Sets the properties of the ${singular} with ID :id`);
lines.push(''); lines.push('');
lines.push('## DELETE /' + tableName + '/:id'); lines.push(`## DELETE /${tableName}/:id`);
lines.push(''); lines.push('');
lines.push('Deletes the ' + singular + ' with ID :id'); lines.push(`Deletes the ${singular} with ID :id`);
lines.push(''); lines.push('');
if (model.type === BaseModel.TYPE_TAG) { if (model.type === BaseModel.TYPE_TAG) {
@@ -293,7 +295,6 @@ class Command extends BaseCommand {
this.stdout(lines.join('\n')); this.stdout(lines.join('\n'));
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -3,10 +3,8 @@ const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const { shim } = require('lib/shim.js'); const { shim } = require('lib/shim.js');
const fs = require('fs-extra');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'attach <note> <file>'; return 'attach <note> <file>';
} }
@@ -26,7 +24,6 @@ class Command extends BaseCommand {
await shim.attachFileToNote(note, localFilePath); await shim.attachFileToNote(note, localFilePath);
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -2,11 +2,9 @@ const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'cat <note>'; return 'cat <note>';
} }
@@ -16,9 +14,7 @@ class Command extends BaseCommand {
} }
options() { options() {
return [ return [['-v, --verbose', _('Displays the complete information about note.')]];
['-v, --verbose', _('Displays the complete information about note.')],
];
} }
async action(args) { async action(args) {
@@ -30,10 +26,13 @@ class Command extends BaseCommand {
const content = args.options.verbose ? await Note.serialize(item) : await Note.serializeForEdit(item); const content = args.options.verbose ? await Note.serialize(item) : await Note.serializeForEdit(item);
this.stdout(content); this.stdout(content);
app().gui().showConsole(); app()
app().gui().maximizeConsole(); .gui()
.showConsole();
app()
.gui()
.maximizeConsole();
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -4,25 +4,22 @@ const { app } = require('./app.js');
const Setting = require('lib/models/Setting.js'); const Setting = require('lib/models/Setting.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'config [name] [value]'; return 'config [name] [value]';
} }
description() { description() {
return _("Gets or sets a config value. If [value] is not provided, it will show the value of [name]. If neither [name] nor [value] is provided, it will list the current configuration."); return _('Gets or sets a config value. If [value] is not provided, it will show the value of [name]. If neither [name] nor [value] is provided, it will list the current configuration.');
} }
options() { options() {
return [ return [['-v, --verbose', _('Also displays unset and hidden config variables.')]];
['-v, --verbose', _('Also displays unset and hidden config variables.')],
];
} }
async action(args) { async action(args) {
const verbose = args.options.verbose; const verbose = args.options.verbose;
const renderKeyValue = (name) => { const renderKeyValue = name => {
const md = Setting.settingMetadata(name); const md = Setting.settingMetadata(name);
let value = Setting.value(name); let value = Setting.value(name);
if (typeof value === 'object' || Array.isArray(value)) value = JSON.stringify(value); if (typeof value === 'object' || Array.isArray(value)) value = JSON.stringify(value);
@@ -33,7 +30,7 @@ class Command extends BaseCommand {
} else { } else {
return _('%s = %s', name, value); return _('%s = %s', name, value);
} }
} };
if (!args.name && !args.value) { if (!args.name && !args.value) {
let keys = Setting.keys(!verbose, 'cli'); let keys = Setting.keys(!verbose, 'cli');
@@ -43,15 +40,23 @@ class Command extends BaseCommand {
if (!verbose && !value) continue; if (!verbose && !value) continue;
this.stdout(renderKeyValue(keys[i])); this.stdout(renderKeyValue(keys[i]));
} }
app().gui().showConsole(); app()
app().gui().maximizeConsole(); .gui()
.showConsole();
app()
.gui()
.maximizeConsole();
return; return;
} }
if (args.name && !args.value) { if (args.name && !args.value) {
this.stdout(renderKeyValue(args.name)); this.stdout(renderKeyValue(args.name));
app().gui().showConsole(); app()
app().gui().maximizeConsole(); .gui()
.showConsole();
app()
.gui()
.maximizeConsole();
return; return;
} }
@@ -64,7 +69,6 @@ class Command extends BaseCommand {
await Setting.saveAll(); await Setting.saveAll();
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -2,11 +2,9 @@ const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'cp <note> [notebook]'; return 'cp <note> [notebook]';
} }
@@ -33,7 +31,6 @@ class Command extends BaseCommand {
Note.updateGeolocation(newNote.id); Note.updateGeolocation(newNote.id);
} }
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -2,12 +2,10 @@ const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const { time } = require('lib/time-utils.js'); const { time } = require('lib/time-utils.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'done <note>'; return 'done <note>';
} }
@@ -35,7 +33,6 @@ class Command extends BaseCommand {
async action(args) { async action(args) {
await Command.handleAction(this, args, true); await Command.handleAction(this, args, true);
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,12 +1,9 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const Folder = require('lib/models/Folder.js'); const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const Tag = require('lib/models/Tag.js'); const Tag = require('lib/models/Tag.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'dump'; return 'dump';
} }
@@ -19,7 +16,7 @@ class Command extends BaseCommand {
return true; return true;
} }
async action(args) { async action() {
let items = []; let items = [];
let folders = await Folder.all(); let folders = await Folder.all();
for (let i = 0; i < folders.length; i++) { for (let i = 0; i < folders.length; i++) {
@@ -35,10 +32,9 @@ class Command extends BaseCommand {
} }
items = items.concat(tags); items = items.concat(tags);
this.stdout(JSON.stringify(items)); this.stdout(JSON.stringify(items));
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,9 +1,7 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const { cliUtils } = require('./cli-utils.js');
const EncryptionService = require('lib/services/EncryptionService'); const EncryptionService = require('lib/services/EncryptionService');
const DecryptionWorker = require('lib/services/DecryptionWorker'); const DecryptionWorker = require('lib/services/DecryptionWorker');
const MasterKey = require('lib/models/MasterKey');
const BaseItem = require('lib/models/BaseItem'); const BaseItem = require('lib/models/BaseItem');
const Setting = require('lib/models/Setting.js'); const Setting = require('lib/models/Setting.js');
const { shim } = require('lib/shim'); const { shim } = require('lib/shim');
@@ -12,7 +10,6 @@ const imageType = require('image-type');
const readChunk = require('read-chunk'); const readChunk = require('read-chunk');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'e2ee <command> [path]'; return 'e2ee <command> [path]';
} }
@@ -35,7 +32,7 @@ class Command extends BaseCommand {
const options = args.options; const options = args.options;
const askForMasterKey = async (error) => { const askForMasterKey = async error => {
const masterKeyId = error.masterKeyId; const masterKeyId = error.masterKeyId;
const password = await this.prompt(_('Enter master password:'), { type: 'string', secure: true }); const password = await this.prompt(_('Enter master password:'), { type: 'string', secure: true });
if (!password) { if (!password) {
@@ -45,7 +42,7 @@ class Command extends BaseCommand {
Setting.setObjectKey('encryption.passwordCache', masterKeyId, password); Setting.setObjectKey('encryption.passwordCache', masterKeyId, password);
await EncryptionService.instance().loadMasterKeysFromSettings(); await EncryptionService.instance().loadMasterKeysFromSettings();
return true; return true;
} };
if (args.command === 'enable') { if (args.command === 'enable') {
const password = options.password ? options.password.toString() : await this.prompt(_('Enter master password:'), { type: 'string', secure: true }); const password = options.password ? options.password.toString() : await this.prompt(_('Enter master password:'), { type: 'string', secure: true });
@@ -53,7 +50,15 @@ class Command extends BaseCommand {
this.stdout(_('Operation cancelled')); this.stdout(_('Operation cancelled'));
return; return;
} }
const password2 = await this.prompt(_('Confirm password:'), { type: 'string', secure: true });
if (!password2) {
this.stdout(_('Operation cancelled'));
return;
}
if (password !== password2) {
this.stdout(_('Passwords do not match!'));
return;
}
await EncryptionService.instance().generateMasterKeyAndEnableEncryption(password); await EncryptionService.instance().generateMasterKeyAndEnableEncryption(password);
return; return;
} }
@@ -100,13 +105,13 @@ class Command extends BaseCommand {
while (true) { while (true) {
try { try {
const outputDir = options.output ? options.output : require('os').tmpdir(); const outputDir = options.output ? options.output : require('os').tmpdir();
let outFile = outputDir + '/' + pathUtils.filename(args.path) + '.' + Date.now() + '.bin'; let outFile = `${outputDir}/${pathUtils.filename(args.path)}.${Date.now()}.bin`;
await EncryptionService.instance().decryptFile(args.path, outFile); await EncryptionService.instance().decryptFile(args.path, outFile);
const buffer = await readChunk(outFile, 0, 64); const buffer = await readChunk(outFile, 0, 64);
const detectedType = imageType(buffer); const detectedType = imageType(buffer);
if (detectedType) { if (detectedType) {
const newOutFile = outFile + '.' + detectedType.ext; const newOutFile = `${outFile}.${detectedType.ext}`;
await shim.fsDriver().move(outFile, newOutFile); await shim.fsDriver().move(outFile, newOutFile);
outFile = newOutFile; outFile = newOutFile;
} }
@@ -128,19 +133,17 @@ class Command extends BaseCommand {
if (args.command === 'target-status') { if (args.command === 'target-status') {
const fs = require('fs-extra'); const fs = require('fs-extra');
const pathUtils = require('lib/path-utils.js');
const fsDriver = new (require('lib/fs-driver-node.js').FsDriverNode)();
const targetPath = args.path; const targetPath = args.path;
if (!targetPath) throw new Error('Please specify the sync target path.'); if (!targetPath) throw new Error('Please specify the sync target path.');
const dirPaths = function(targetPath) { const dirPaths = function(targetPath) {
let paths = []; let paths = [];
fs.readdirSync(targetPath).forEach((path) => { fs.readdirSync(targetPath).forEach(path => {
paths.push(path); paths.push(path);
}); });
return paths; return paths;
} };
let itemCount = 0; let itemCount = 0;
let resourceCount = 0; let resourceCount = 0;
@@ -155,7 +158,7 @@ class Command extends BaseCommand {
for (let i = 0; i < paths.length; i++) { for (let i = 0; i < paths.length; i++) {
const path = paths[i]; const path = paths[i];
const fullPath = targetPath + '/' + path; const fullPath = `${targetPath}/${path}`;
const stat = await fs.stat(fullPath); const stat = await fs.stat(fullPath);
// this.stdout(fullPath); // this.stdout(fullPath);
@@ -165,7 +168,7 @@ class Command extends BaseCommand {
for (let j = 0; j < resourcePaths.length; j++) { for (let j = 0; j < resourcePaths.length; j++) {
const resourcePath = resourcePaths[j]; const resourcePath = resourcePaths[j];
resourceCount++; resourceCount++;
const fullResourcePath = fullPath + '/' + resourcePath; const fullResourcePath = `${fullPath}/${resourcePath}`;
const isEncrypted = await EncryptionService.instance().fileIsEncrypted(fullResourcePath); const isEncrypted = await EncryptionService.instance().fileIsEncrypted(fullResourcePath);
if (isEncrypted) { if (isEncrypted) {
encryptedResourceCount++; encryptedResourceCount++;
@@ -199,9 +202,9 @@ class Command extends BaseCommand {
} }
} }
this.stdout('Encrypted items: ' + encryptedItemCount + '/' + itemCount); this.stdout(`Encrypted items: ${encryptedItemCount}/${itemCount}`);
this.stdout('Encrypted resources: ' + encryptedResourceCount + '/' + resourceCount); this.stdout(`Encrypted resources: ${encryptedResourceCount}/${resourceCount}`);
this.stdout('Other items (never encrypted): ' + otherItemCount); this.stdout(`Other items (never encrypted): ${otherItemCount}`);
if (options.verbose) { if (options.verbose) {
this.stdout(''); this.stdout('');
@@ -224,7 +227,6 @@ class Command extends BaseCommand {
return; return;
} }
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,17 +1,14 @@
const fs = require('fs-extra'); const fs = require('fs-extra');
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { splitCommandString } = require('lib/string-utils.js');
const { uuid } = require('lib/uuid.js'); const { uuid } = require('lib/uuid.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const Setting = require('lib/models/Setting.js'); const Setting = require('lib/models/Setting.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const { cliUtils } = require('./cli-utils.js');
const { time } = require('lib/time-utils.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'edit <note>'; return 'edit <note>';
} }
@@ -21,20 +18,19 @@ class Command extends BaseCommand {
} }
async action(args) { async action(args) {
let watcher = null;
let tempFilePath = null; let tempFilePath = null;
const onFinishedEditing = async () => { const onFinishedEditing = async () => {
if (tempFilePath) fs.removeSync(tempFilePath); if (tempFilePath) fs.removeSync(tempFilePath);
} };
const textEditorPath = () => { const textEditorPath = () => {
if (Setting.value('editor')) return Setting.value('editor'); if (Setting.value('editor')) return Setting.value('editor');
if (process.env.EDITOR) return process.env.EDITOR; if (process.env.EDITOR) return process.env.EDITOR;
throw new Error(_('No text editor is defined. Please set it using `config editor <editor-path>`')); throw new Error(_('No text editor is defined. Please set it using `config editor <editor-path>`'));
} };
try { try {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Load note or create it if it doesn't exist // Load note or create it if it doesn't exist
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
@@ -58,14 +54,14 @@ class Command extends BaseCommand {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
let editorPath = textEditorPath(); let editorPath = textEditorPath();
let editorArgs = editorPath.split(' '); let editorArgs = splitCommandString(editorPath);
editorPath = editorArgs[0]; editorPath = editorArgs[0];
editorArgs = editorArgs.splice(1); editorArgs = editorArgs.splice(1);
const originalContent = await Note.serializeForEdit(note); const originalContent = await Note.serializeForEdit(note);
tempFilePath = Setting.value('tempDir') + '/' + uuid.create() + '.md'; tempFilePath = `${Setting.value('tempDir')}/${uuid.create()}.md`;
editorArgs.push(tempFilePath); editorArgs.push(tempFilePath);
await fs.writeFile(tempFilePath, originalContent); await fs.writeFile(tempFilePath, originalContent);
@@ -80,7 +76,7 @@ class Command extends BaseCommand {
await app().gui().forceRender(); await app().gui().forceRender();
const termState = app().gui().termSaveState(); const termState = app().gui().termSaveState();
const spawnSync = require('child_process').spawnSync; const spawnSync = require('child_process').spawnSync;
const result = spawnSync(editorPath, editorArgs, { stdio: 'inherit' }); const result = spawnSync(editorPath, editorArgs, { stdio: 'inherit' });
if (result.error) this.stdout(_('Error opening note in editor: %s', result.error.message)); if (result.error) this.stdout(_('Error opening note in editor: %s', result.error.message));
@@ -107,13 +103,11 @@ class Command extends BaseCommand {
}); });
await onFinishedEditing(); await onFinishedEditing();
} catch (error) {
} catch(error) {
await onFinishedEditing(); await onFinishedEditing();
throw error; throw error;
} }
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -3,7 +3,6 @@ const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'exit'; return 'exit';
} }
@@ -16,10 +15,9 @@ class Command extends BaseCommand {
return ['gui']; return ['gui'];
} }
async action(args) { async action() {
await app().exit(); await app().exit();
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,13 +1,10 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { Database } = require('lib/database.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const Setting = require('lib/models/Setting.js'); const Setting = require('lib/models/Setting.js');
const { _ } = require('lib/locale.js');
const { ReportService } = require('lib/services/report.js'); const { ReportService } = require('lib/services/report.js');
const fs = require('fs-extra'); const fs = require('fs-extra');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'export-sync-status'; return 'export-sync-status';
} }
@@ -20,17 +17,20 @@ class Command extends BaseCommand {
return true; return true;
} }
async action(args) { async action() {
const service = new ReportService(); const service = new ReportService();
const csv = await service.basicItemList({ format: 'csv' }); const csv = await service.basicItemList({ format: 'csv' });
const filePath = Setting.value('profileDir') + '/syncReport-' + (new Date()).getTime() + '.csv'; const filePath = `${Setting.value('profileDir')}/syncReport-${new Date().getTime()}.csv`;
await fs.writeFileSync(filePath, csv); await fs.writeFileSync(filePath, csv);
this.stdout('Sync status exported to ' + filePath); this.stdout(`Sync status exported to ${filePath}`);
app().gui().showConsole(); app()
app().gui().maximizeConsole(); .gui()
.showConsole();
app()
.gui()
.maximizeConsole();
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,14 +1,10 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const InteropService = require('lib/services/InteropService.js'); const InteropService = require('lib/services/InteropService.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Note = require('lib/models/Note.js');
const { reg } = require('lib/registry.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const fs = require('fs-extra');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'export <path>'; return 'export <path>';
} }
@@ -19,17 +15,14 @@ class Command extends BaseCommand {
options() { options() {
const service = new InteropService(); const service = new InteropService();
const formats = service.modules() const formats = service
.modules()
.filter(m => m.type === 'exporter') .filter(m => m.type === 'exporter')
.map(m => m.format + (m.description ? ' (' + m.description + ')' : '')); .map(m => m.format + (m.description ? ` (${m.description})` : ''));
return [ return [['--format <format>', _('Destination format: %s', formats.join(', '))], ['--note <note>', _('Exports only the given note.')], ['--notebook <notebook>', _('Exports only the given notebook.')]];
['--format <format>', _('Destination format: %s', formats.join(', '))],
['--note <note>', _('Exports only the given note.')],
['--notebook <notebook>', _('Exports only the given notebook.')],
];
} }
async action(args) { async action(args) {
let exportOptions = {}; let exportOptions = {};
exportOptions.path = args.path; exportOptions.path = args.path;
@@ -37,25 +30,20 @@ class Command extends BaseCommand {
exportOptions.format = args.options.format ? args.options.format : 'jex'; exportOptions.format = args.options.format ? args.options.format : 'jex';
if (args.options.note) { if (args.options.note) {
const notes = await app().loadItems(BaseModel.TYPE_NOTE, args.options.note, { parent: app().currentFolder() }); const notes = await app().loadItems(BaseModel.TYPE_NOTE, args.options.note, { parent: app().currentFolder() });
if (!notes.length) throw new Error(_('Cannot find "%s".', args.options.note)); if (!notes.length) throw new Error(_('Cannot find "%s".', args.options.note));
exportOptions.sourceNoteIds = notes.map((n) => n.id); exportOptions.sourceNoteIds = notes.map(n => n.id);
} else if (args.options.notebook) { } else if (args.options.notebook) {
const folders = await app().loadItems(BaseModel.TYPE_FOLDER, args.options.notebook); const folders = await app().loadItems(BaseModel.TYPE_FOLDER, args.options.notebook);
if (!folders.length) throw new Error(_('Cannot find "%s".', args.options.notebook)); if (!folders.length) throw new Error(_('Cannot find "%s".', args.options.notebook));
exportOptions.sourceFolderIds = folders.map((n) => n.id); exportOptions.sourceFolderIds = folders.map(n => n.id);
} }
const service = new InteropService(); const service = new InteropService();
const result = await service.export(exportOptions); const result = await service.export(exportOptions);
result.warnings.map((w) => this.stdout(w)); result.warnings.map(w => this.stdout(w));
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -2,11 +2,9 @@ const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'geoloc <note>'; return 'geoloc <note>';
} }
@@ -23,9 +21,10 @@ class Command extends BaseCommand {
const url = Note.geolocationUrl(item); const url = Note.geolocationUrl(item);
this.stdout(url); this.stdout(url);
app().gui().showConsole(); app()
.gui()
.showConsole();
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,14 +1,10 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { renderCommandHelp } = require('./help-utils.js'); const { renderCommandHelp } = require('./help-utils.js');
const { Database } = require('lib/database.js');
const Setting = require('lib/models/Setting.js');
const { wrap } = require('lib/string-utils.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const { cliUtils } = require('./cli-utils.js'); const { cliUtils } = require('./cli-utils.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'help [command]'; return 'help [command]';
} }
@@ -28,7 +24,7 @@ class Command extends BaseCommand {
output.push(command); output.push(command);
} }
output.sort((a, b) => a.name() < b.name() ? -1 : +1); output.sort((a, b) => (a.name() < b.name() ? -1 : +1));
return output; return output;
} }
@@ -40,31 +36,37 @@ class Command extends BaseCommand {
this.stdout(_('For information on how to customise the shortcuts please visit %s', 'https://joplinapp.org/terminal/#shortcuts')); this.stdout(_('For information on how to customise the shortcuts please visit %s', 'https://joplinapp.org/terminal/#shortcuts'));
this.stdout(''); this.stdout('');
if (app().gui().isDummy()) { if (
app()
.gui()
.isDummy()
) {
throw new Error(_('Shortcuts are not available in CLI mode.')); throw new Error(_('Shortcuts are not available in CLI mode.'));
} }
const keymap = app().gui().keymap(); const keymap = app()
.gui()
.keymap();
let rows = []; let rows = [];
for (let i = 0; i < keymap.length; i++) { for (let i = 0; i < keymap.length; i++) {
const item = keymap[i]; const item = keymap[i];
const keys = item.keys.map((k) => k === ' ' ? '(SPACE)' : k); const keys = item.keys.map(k => (k === ' ' ? '(SPACE)' : k));
rows.push([keys.join(', '), item.command]); rows.push([keys.join(', '), item.command]);
} }
cliUtils.printArray(this.stdout.bind(this), rows); cliUtils.printArray(this.stdout.bind(this), rows);
} else if (args.command === 'all') { } else if (args.command === 'all') {
const commands = this.allCommands(); const commands = this.allCommands();
const output = commands.map((c) => renderCommandHelp(c)); const output = commands.map(c => renderCommandHelp(c));
this.stdout(output.join('\n\n')); this.stdout(output.join('\n\n'));
} else if (args.command) { } else if (args.command) {
const command = app().findCommandByName(args['command']); const command = app().findCommandByName(args['command']);
if (!command) throw new Error(_('Cannot find "%s".', args.command)); if (!command) throw new Error(_('Cannot find "%s".', args.command));
this.stdout(renderCommandHelp(command, stdoutWidth)); this.stdout(renderCommandHelp(command, stdoutWidth));
} else { } else {
const commandNames = this.allCommands().map((a) => a.name()); const commandNames = this.allCommands().map(a => a.name());
this.stdout(_('Type `help [command]` for more information about a command; or type `help all` for the complete usage information.')); this.stdout(_('Type `help [command]` for more information about a command; or type `help all` for the complete usage information.'));
this.stdout(''); this.stdout('');
@@ -82,10 +84,13 @@ class Command extends BaseCommand {
this.stdout(_('For the list of keyboard shortcuts and config options, type `help keymap`')); this.stdout(_('For the list of keyboard shortcuts and config options, type `help keymap`'));
} }
app().gui().showConsole(); app()
app().gui().maximizeConsole(); .gui()
.showConsole();
app()
.gui()
.maximizeConsole();
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,17 +1,11 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const InteropService = require('lib/services/InteropService.js'); const InteropService = require('lib/services/InteropService.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Note = require('lib/models/Note.js');
const { filename, basename, fileExtension } = require('lib/path-utils.js');
const { importEnex } = require('lib/import-enex');
const { cliUtils } = require('./cli-utils.js'); const { cliUtils } = require('./cli-utils.js');
const { reg } = require('lib/registry.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const fs = require('fs-extra');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'import <path> [notebook]'; return 'import <path> [notebook]';
} }
@@ -22,14 +16,14 @@ class Command extends BaseCommand {
options() { options() {
const service = new InteropService(); const service = new InteropService();
const formats = service.modules().filter(m => m.type === 'importer').map(m => m.format); const formats = service
.modules()
.filter(m => m.type === 'importer')
.map(m => m.format);
return [ return [['--format <format>', _('Source format: %s', ['auto'].concat(formats).join(', '))], ['-f, --force', _('Do not ask for confirmation.')]];
['--format <format>', _('Source format: %s', (['auto'].concat(formats)).join(', '))],
['-f, --force', _('Do not ask for confirmation.')],
];
} }
async action(args) { async action(args) {
let folder = await app().loadItem(BaseModel.TYPE_FOLDER, args.notebook); let folder = await app().loadItem(BaseModel.TYPE_FOLDER, args.notebook);
@@ -44,7 +38,7 @@ class Command extends BaseCommand {
// onProgress/onError supported by Enex import only // onProgress/onError supported by Enex import only
importOptions.onProgress = (progressState) => { importOptions.onProgress = progressState => {
let line = []; let line = [];
line.push(_('Found: %d.', progressState.loaded)); line.push(_('Found: %d.', progressState.loaded));
line.push(_('Created: %d.', progressState.created)); line.push(_('Created: %d.', progressState.created));
@@ -56,20 +50,21 @@ class Command extends BaseCommand {
cliUtils.redraw(lastProgress); cliUtils.redraw(lastProgress);
}; };
importOptions.onError = (error) => { importOptions.onError = error => {
let s = error.trace ? error.trace : error.toString(); let s = error.trace ? error.trace : error.toString();
this.stdout(s); this.stdout(s);
}; };
app().gui().showConsole(); app()
.gui()
.showConsole();
this.stdout(_('Importing notes...')); this.stdout(_('Importing notes...'));
const service = new InteropService(); const service = new InteropService();
const result = await service.import(importOptions); const result = await service.import(importOptions);
result.warnings.map((w) => this.stdout(w)); result.warnings.map(w => this.stdout(w));
cliUtils.redrawDone(); cliUtils.redrawDone();
if (lastProgress) this.stdout(_('The notes have been imported: %s', lastProgress)); if (lastProgress) this.stdout(_('The notes have been imported: %s', lastProgress));
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -10,7 +10,6 @@ const { time } = require('lib/time-utils.js');
const { cliUtils } = require('./cli-utils.js'); const { cliUtils } = require('./cli-utils.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'ls [note-pattern]'; return 'ls [note-pattern]';
} }
@@ -24,14 +23,7 @@ class Command extends BaseCommand {
} }
options() { options() {
return [ return [['-n, --limit <num>', _('Displays only the first top <num> notes.')], ['-s, --sort <field>', _('Sorts the item by <field> (eg. title, updated_time, created_time).')], ['-r, --reverse', _('Reverses the sorting order.')], ['-t, --type <type>', _('Displays only the items of the specific type(s). Can be `n` for notes, `t` for to-dos, or `nt` for notes and to-dos (eg. `-tt` would display only the to-dos, while `-ttd` would display notes and to-dos.')], ['-f, --format <format>', _('Either "text" or "json"')], ['-l, --long', _('Use long list format. Format is ID, NOTE_COUNT (for notebook), DATE, TODO_CHECKED (for to-dos), TITLE')]];
['-n, --limit <num>', _('Displays only the first top <num> notes.')],
['-s, --sort <field>', _('Sorts the item by <field> (eg. title, updated_time, created_time).')],
['-r, --reverse', _('Reverses the sorting order.')],
['-t, --type <type>', _('Displays only the items of the specific type(s). Can be `n` for notes, `t` for to-dos, or `nt` for notes and to-dos (eg. `-tt` would display only the to-dos, while `-ttd` would display notes and to-dos.')],
['-f, --format <format>', _('Either "text" or "json"')],
['-l, --long', _('Use long list format. Format is ID, NOTE_COUNT (for notebook), DATE, TODO_CHECKED (for to-dos), TITLE')],
];
} }
async action(args) { async action(args) {
@@ -98,14 +90,14 @@ class Command extends BaseCommand {
let title = item.title; let title = item.title;
if (!shortIdShown && (seenTitles.indexOf(item.title) >= 0 || !item.title)) { if (!shortIdShown && (seenTitles.indexOf(item.title) >= 0 || !item.title)) {
title += ' (' + BaseModel.shortId(item.id) + ')'; title += ` (${BaseModel.shortId(item.id)})`;
} else { } else {
seenTitles.push(item.title); seenTitles.push(item.title);
} }
if (hasTodos) { if (hasTodos) {
if (item.is_todo) { if (item.is_todo) {
row.push(sprintf('[%s]', !!item.todo_completed ? 'X' : ' ')); row.push(sprintf('[%s]', item.todo_completed ? 'X' : ' '));
} else { } else {
row.push(' '); row.push(' ');
} }
@@ -118,9 +110,7 @@ class Command extends BaseCommand {
cliUtils.printArray(this.stdout.bind(this), rows); cliUtils.printArray(this.stdout.bind(this), rows);
} }
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -2,10 +2,8 @@ const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const Folder = require('lib/models/Folder.js'); const Folder = require('lib/models/Folder.js');
const { reg } = require('lib/registry.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'mkbook <new-notebook>'; return 'mkbook <new-notebook>';
} }
@@ -15,10 +13,9 @@ class Command extends BaseCommand {
} }
async action(args) { async action(args) {
let folder = await Folder.save({ title: args['new-notebook'] }, { userSideValidation: true }); let folder = await Folder.save({ title: args['new-notebook'] }, { userSideValidation: true });
app().switchCurrentFolder(folder); app().switchCurrentFolder(folder);
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -4,7 +4,6 @@ const { _ } = require('lib/locale.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'mknote <new-note>'; return 'mknote <new-note>';
} }
@@ -26,7 +25,6 @@ class Command extends BaseCommand {
app().switchCurrentFolder(app().currentFolder()); app().switchCurrentFolder(app().currentFolder());
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -4,7 +4,6 @@ const { _ } = require('lib/locale.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'mktodo <new-todo>'; return 'mktodo <new-todo>';
} }
@@ -27,7 +26,6 @@ class Command extends BaseCommand {
app().switchCurrentFolder(app().currentFolder()); app().switchCurrentFolder(app().currentFolder());
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -6,7 +6,6 @@ const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'mv <note> [notebook]'; return 'mv <note> [notebook]';
} }
@@ -18,7 +17,7 @@ class Command extends BaseCommand {
async action(args) { async action(args) {
const pattern = args['note']; const pattern = args['note'];
const destination = args['notebook']; const destination = args['notebook'];
const folder = await Folder.loadByField('title', destination); const folder = await Folder.loadByField('title', destination);
if (!folder) throw new Error(_('Cannot find "%s".', destination)); if (!folder) throw new Error(_('Cannot find "%s".', destination));
@@ -29,7 +28,6 @@ class Command extends BaseCommand {
await Note.moveToFolder(notes[i].id, folder.id); await Note.moveToFolder(notes[i].id, folder.id);
} }
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -6,7 +6,6 @@ const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'ren <item> <name>'; return 'ren <item> <name>';
} }
@@ -35,7 +34,6 @@ class Command extends BaseCommand {
await Note.save(newItem); await Note.save(newItem);
} }
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,14 +1,10 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseItem = require('lib/models/BaseItem.js');
const Folder = require('lib/models/Folder.js'); const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const { cliUtils } = require('./cli-utils.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'rmbook <notebook>'; return 'rmbook <notebook>';
} }
@@ -18,9 +14,7 @@ class Command extends BaseCommand {
} }
options() { options() {
return [ return [['-f, --force', _('Deletes the notebook without asking for confirmation.')]];
['-f, --force', _('Deletes the notebook without asking for confirmation.')],
];
} }
async action(args) { async action(args) {
@@ -34,7 +28,6 @@ class Command extends BaseCommand {
await Folder.delete(folder.id); await Folder.delete(folder.id);
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,14 +1,10 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseItem = require('lib/models/BaseItem.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const { cliUtils } = require('./cli-utils.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'rmnote <note-pattern>'; return 'rmnote <note-pattern>';
} }
@@ -18,9 +14,7 @@ class Command extends BaseCommand {
} }
options() { options() {
return [ return [['-f, --force', _('Deletes the notes without asking for confirmation.')]];
['-f, --force', _('Deletes the notes without asking for confirmation.')],
];
} }
async action(args) { async action(args) {
@@ -32,10 +26,9 @@ class Command extends BaseCommand {
const ok = force ? true : await this.prompt(notes.length > 1 ? _('%d notes match this pattern. Delete them?', notes.length) : _('Delete note?'), { booleanAnswerDefault: 'n' }); const ok = force ? true : await this.prompt(notes.length > 1 ? _('%d notes match this pattern. Delete them?', notes.length) : _('Delete note?'), { booleanAnswerDefault: 'n' });
if (!ok) return; if (!ok) return;
let ids = notes.map((n) => n.id); let ids = notes.map(n => n.id);
await Note.batchDelete(ids); await Note.batchDelete(ids);
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,15 +1,10 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js'); const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js');
const { sprintf } = require('sprintf-js');
const { time } = require('lib/time-utils.js');
const { uuid } = require('lib/uuid.js'); const { uuid } = require('lib/uuid.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'search <pattern> [notebook]'; return 'search <pattern> [notebook]';
} }
@@ -50,7 +45,6 @@ class Command extends BaseCommand {
id: searchId, id: searchId,
}); });
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -0,0 +1,57 @@
const { BaseCommand } = require('./base-command.js');
const { _ } = require('lib/locale.js');
const Setting = require('lib/models/Setting.js');
const { Logger } = require('lib/logger.js');
const { shim } = require('lib/shim');
class Command extends BaseCommand {
usage() {
return 'server <command>';
}
description() {
return `${_('Start, stop or check the API server. To specify on which port it should run, set the api.port config variable. Commands are (%s).', ['start', 'stop', 'status'].join('|'))} This is an experimental feature - use at your own risks! It is recommended that the server runs off its own separate profile so that no two CLI instances access that profile at the same time. Use --profile to specify the profile path.`;
}
async action(args) {
const command = args.command;
const ClipperServer = require('lib/ClipperServer');
const stdoutFn = (s) => this.stdout(s);
const clipperLogger = new Logger();
clipperLogger.addTarget('file', { path: `${Setting.value('profileDir')}/log-clipper.txt` });
clipperLogger.addTarget('console', { console: {
info: stdoutFn,
warn: stdoutFn,
error: stdoutFn,
}});
ClipperServer.instance().setDispatch(() => {});
ClipperServer.instance().setLogger(clipperLogger);
const pidPath = `${Setting.value('profileDir')}/clipper-pid.txt`;
const runningOnPort = await ClipperServer.instance().isRunning();
if (command === 'start') {
if (runningOnPort) {
this.stdout(_('Server is already running on port %d', runningOnPort));
} else {
await shim.fsDriver().writeFile(pidPath, process.pid.toString(), 'utf-8');
await ClipperServer.instance().start(); // Never exit
}
} else if (command === 'status') {
this.stdout(runningOnPort ? _('Server is running on port %d', runningOnPort) : _('Server is not running.'));
} else if (command === 'stop') {
if (!runningOnPort) {
this.stdout(_('Server is not running.'));
return;
}
const pid = await shim.fsDriver().readFile(pidPath);
if (!pid) return;
process.kill(pid, 'SIGTERM');
}
}
}
module.exports = Command;

View File

@@ -3,12 +3,9 @@ const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const { Database } = require('lib/database.js'); const { Database } = require('lib/database.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const BaseItem = require('lib/models/BaseItem.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'set <note> <name> [value]'; return 'set <note> <name> [value]';
} }
@@ -19,7 +16,7 @@ class Command extends BaseCommand {
for (let i = 0; i < fields.length; i++) { for (let i = 0; i < fields.length; i++) {
const f = fields[i]; const f = fields[i];
if (f.name === 'id') continue; if (f.name === 'id') continue;
s.push(f.name + ' (' + Database.enumName('fieldType', f.type) + ')'); s.push(`${f.name} (${Database.enumName('fieldType', f.type)})`);
} }
return _('Sets the property <name> of the given <note> to the given [value]. Possible properties are:\n\n%s', s.join(', ')); return _('Sets the property <name> of the given <note> to the given [value]. Possible properties are:\n\n%s', s.join(', '));
@@ -42,10 +39,16 @@ class Command extends BaseCommand {
type_: notes[i].type_, type_: notes[i].type_,
}; };
newNote[propName] = propValue; newNote[propName] = propValue;
await Note.save(newNote);
const timestamp = Date.now();
await Note.save(newNote, {
autoTimestamp: false, // No auto-timestamp because user may have provided them
updated_time: timestamp,
created_time: timestamp,
});
} }
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,12 +1,10 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { Database } = require('lib/database.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const Setting = require('lib/models/Setting.js'); const Setting = require('lib/models/Setting.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const { ReportService } = require('lib/services/report.js'); const { ReportService } = require('lib/services/report.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'status'; return 'status';
} }
@@ -15,7 +13,7 @@ class Command extends BaseCommand {
return _('Displays summary about the notes and notebooks.'); return _('Displays summary about the notes and notebooks.');
} }
async action(args) { async action() {
let service = new ReportService(); let service = new ReportService();
let report = await service.status(Setting.value('sync.target')); let report = await service.status(Setting.value('sync.target'));
@@ -24,7 +22,7 @@ class Command extends BaseCommand {
if (i > 0) this.stdout(''); if (i > 0) this.stdout('');
this.stdout('# ' + section.title); this.stdout(`# ${section.title}`);
this.stdout(''); this.stdout('');
for (let n in section.body) { for (let n in section.body) {
@@ -34,10 +32,13 @@ class Command extends BaseCommand {
} }
} }
app().gui().showConsole(); app()
app().gui().maximizeConsole(); .gui()
.showConsole();
app()
.gui()
.maximizeConsole();
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -3,7 +3,6 @@ const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const { OneDriveApiNodeUtils } = require('./onedrive-api-node-utils.js'); const { OneDriveApiNodeUtils } = require('./onedrive-api-node-utils.js');
const Setting = require('lib/models/Setting.js'); const Setting = require('lib/models/Setting.js');
const BaseItem = require('lib/models/BaseItem.js');
const ResourceFetcher = require('lib/services/ResourceFetcher'); const ResourceFetcher = require('lib/services/ResourceFetcher');
const { Synchronizer } = require('lib/synchronizer.js'); const { Synchronizer } = require('lib/synchronizer.js');
const { reg } = require('lib/registry.js'); const { reg } = require('lib/registry.js');
@@ -14,7 +13,6 @@ const fs = require('fs-extra');
const SyncTargetRegistry = require('lib/SyncTargetRegistry'); const SyncTargetRegistry = require('lib/SyncTargetRegistry');
class Command extends BaseCommand { class Command extends BaseCommand {
constructor() { constructor() {
super(); super();
this.syncTargetId_ = null; this.syncTargetId_ = null;
@@ -31,9 +29,7 @@ class Command extends BaseCommand {
} }
options() { options() {
return [ return [['--target <target>', _('Sync to provided target (defaults to sync.target config value)')]];
['--target <target>', _('Sync to provided target (defaults to sync.target config value)')],
];
} }
static lockFile(filePath) { static lockFile(filePath) {
@@ -66,21 +62,25 @@ class Command extends BaseCommand {
const syncTarget = reg.syncTarget(this.syncTargetId_); const syncTarget = reg.syncTarget(this.syncTargetId_);
const syncTargetMd = SyncTargetRegistry.idToMetadata(this.syncTargetId_); const syncTargetMd = SyncTargetRegistry.idToMetadata(this.syncTargetId_);
if (this.syncTargetId_ === 3 || this.syncTargetId_ === 4) { // OneDrive if (this.syncTargetId_ === 3 || this.syncTargetId_ === 4) {
// OneDrive
this.oneDriveApiUtils_ = new OneDriveApiNodeUtils(syncTarget.api()); this.oneDriveApiUtils_ = new OneDriveApiNodeUtils(syncTarget.api());
const auth = await this.oneDriveApiUtils_.oauthDance({ const auth = await this.oneDriveApiUtils_.oauthDance({
log: (...s) => { return this.stdout(...s); } log: (...s) => {
return this.stdout(...s);
},
}); });
this.oneDriveApiUtils_ = null; this.oneDriveApiUtils_ = null;
Setting.setValue('sync.' + this.syncTargetId_ + '.auth', auth ? JSON.stringify(auth) : null); Setting.setValue(`sync.${this.syncTargetId_}.auth`, auth ? JSON.stringify(auth) : null);
if (!auth) { if (!auth) {
this.stdout(_('Authentication was not completed (did not receive an authentication token).')); this.stdout(_('Authentication was not completed (did not receive an authentication token).'));
return false; return false;
} }
return true; return true;
} else if (syncTargetMd.name === 'dropbox') { // Dropbox } else if (syncTargetMd.name === 'dropbox') {
// Dropbox
const api = await syncTarget.api(); const api = await syncTarget.api();
const loginUrl = api.loginUrl(); const loginUrl = api.loginUrl();
this.stdout(_('To allow Joplin to synchronise with Dropbox, please follow the steps below:')); this.stdout(_('To allow Joplin to synchronise with Dropbox, please follow the steps below:'));
@@ -93,7 +93,7 @@ class Command extends BaseCommand {
} }
const response = await api.execAuthToken(authCode); const response = await api.execAuthToken(authCode);
Setting.setValue('sync.' + this.syncTargetId_ + '.auth', response.access_token); Setting.setValue(`sync.${this.syncTargetId_}.auth`, response.access_token);
api.setAuthToken(response.access_token); api.setAuthToken(response.access_token);
return true; return true;
} }
@@ -117,8 +117,8 @@ class Command extends BaseCommand {
this.releaseLockFn_ = null; this.releaseLockFn_ = null;
// Lock is unique per profile/database // Lock is unique per profile/database
const lockFilePath = require('os').tmpdir() + '/synclock_' + md5(escape(Setting.value('profileDir'))); // https://github.com/pvorb/node-md5/issues/41 const lockFilePath = `${require('os').tmpdir()}/synclock_${md5(escape(Setting.value('profileDir')))}`; // https://github.com/pvorb/node-md5/issues/41
if (!await fs.pathExists(lockFilePath)) await fs.writeFile(lockFilePath, 'synclock'); if (!(await fs.pathExists(lockFilePath))) await fs.writeFile(lockFilePath, 'synclock');
try { try {
if (await Command.isLocked(lockFilePath)) throw new Error(_('Synchronisation is already in progress.')); if (await Command.isLocked(lockFilePath)) throw new Error(_('Synchronisation is already in progress.'));
@@ -147,22 +147,26 @@ class Command extends BaseCommand {
const syncTarget = reg.syncTarget(this.syncTargetId_); const syncTarget = reg.syncTarget(this.syncTargetId_);
if (!await syncTarget.isAuthenticated()) { if (!(await syncTarget.isAuthenticated())) {
app().gui().showConsole(); app()
app().gui().maximizeConsole(); .gui()
.showConsole();
app()
.gui()
.maximizeConsole();
const authDone = await this.doAuth(); const authDone = await this.doAuth();
if (!authDone) return cleanUp(); if (!authDone) return cleanUp();
} }
const sync = await syncTarget.synchronizer(); const sync = await syncTarget.synchronizer();
let options = { let options = {
onProgress: (report) => { onProgress: report => {
let lines = Synchronizer.reportToLines(report); let lines = Synchronizer.reportToLines(report);
if (lines.length) cliUtils.redraw(lines.join(' ')); if (lines.length) cliUtils.redraw(lines.join(' '));
}, },
onMessage: (msg) => { onMessage: msg => {
cliUtils.redrawDone(); cliUtils.redrawDone();
this.stdout(msg); this.stdout(msg);
}, },
@@ -174,7 +178,7 @@ class Command extends BaseCommand {
this.stdout(_('Starting synchronisation...')); this.stdout(_('Starting synchronisation...'));
const contextKey = 'sync.' + this.syncTargetId_ + '.context'; const contextKey = `sync.${this.syncTargetId_}.context`;
let context = Setting.value(contextKey); let context = Setting.value(contextKey);
context = context ? JSON.parse(context) : {}; context = context ? JSON.parse(context) : {};
@@ -193,7 +197,7 @@ class Command extends BaseCommand {
// When using the tool in command line mode, the ResourceFetcher service is // When using the tool in command line mode, the ResourceFetcher service is
// not going to be running in the background, so the resources need to be // not going to be running in the background, so the resources need to be
// explicitely downloaded below. // explicitly downloaded below.
if (!app().hasGui()) { if (!app().hasGui()) {
this.stdout(_('Downloading resources...')); this.stdout(_('Downloading resources...'));
await ResourceFetcher.instance().fetchAll(); await ResourceFetcher.instance().fetchAll();
@@ -237,7 +241,6 @@ class Command extends BaseCommand {
cancellable() { cancellable() {
return true; return true;
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -6,19 +6,16 @@ const BaseModel = require('lib/BaseModel.js');
const { time } = require('lib/time-utils.js'); const { time } = require('lib/time-utils.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'tag <tag-command> [tag] [note]'; return 'tag <tag-command> [tag] [note]';
} }
description() { description() {
return _('<tag-command> can be "add", "remove" or "list" to assign or remove [tag] from [note], or to list the notes associated with [tag]. The command `tag list` can be used to list all the tags (use -l for long option).'); return _('<tag-command> can be "add", "remove", "list", or "notetags" to assign or remove [tag] from [note], to list notes associated with [tag], or to list tags associated with [note]. The command `tag list` can be used to list all the tags (use -l for long option).');
} }
options() { options() {
return [ return [['-l, --long', _('Use long list format. Format is ID, NOTE_COUNT (for notebook), DATE, TODO_CHECKED (for to-dos), TITLE')]];
['-l, --long', _('Use long list format. Format is ID, NOTE_COUNT (for notebook), DATE, TODO_CHECKED (for to-dos), TITLE')],
];
} }
async action(args) { async action(args) {
@@ -50,7 +47,7 @@ class Command extends BaseCommand {
} else if (command == 'list') { } else if (command == 'list') {
if (tag) { if (tag) {
let notes = await Tag.notes(tag.id); let notes = await Tag.notes(tag.id);
notes.map((note) => { notes.map(note => {
let line = ''; let line = '';
if (options.long) { if (options.long) {
line += BaseModel.shortId(note.id); line += BaseModel.shortId(note.id);
@@ -61,7 +58,7 @@ class Command extends BaseCommand {
if (note.is_todo) { if (note.is_todo) {
line += '['; line += '[';
if (note.todo_completed) { if (note.todo_completed) {
line += 'X'; line += 'X';
} else { } else {
line += ' '; line += ' ';
} }
@@ -74,13 +71,25 @@ class Command extends BaseCommand {
}); });
} else { } else {
let tags = await Tag.all(); let tags = await Tag.all();
tags.map((tag) => { this.stdout(tag.title); }); tags.map(tag => {
this.stdout(tag.title);
});
}
} else if (command == 'notetags') {
if (args.tag) {
const note = await app().loadItem(BaseModel.TYPE_NOTE, args.tag);
if (!note) throw new Error(_('Cannot find "%s".', args.tag));
const tags = await Tag.tagsByNoteId(note.id);
tags.map(tag => {
this.stdout(tag.title);
});
} else {
throw new Error(_('Cannot find "%s".', ''));
} }
} else { } else {
throw new Error(_('Invalid command: "%s"', command)); throw new Error(_('Invalid command: "%s"', command));
} }
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -2,12 +2,10 @@ const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const { time } = require('lib/time-utils.js'); const { time } = require('lib/time-utils.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'todo <todo-command> <note-pattern>'; return 'todo <todo-command> <note-pattern>';
} }
@@ -39,12 +37,11 @@ class Command extends BaseCommand {
} }
} else if (action == 'clear') { } else if (action == 'clear') {
toSave.is_todo = 0; toSave.is_todo = 0;
} }
await Note.save(toSave); await Note.save(toSave);
} }
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -1,15 +1,9 @@
const { BaseCommand } = require('./base-command.js'); const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js');
const { time } = require('lib/time-utils.js');
const CommandDone = require('./command-done.js'); const CommandDone = require('./command-done.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'undone <note>'; return 'undone <note>';
} }
@@ -21,7 +15,6 @@ class Command extends BaseCommand {
async action(args) { async action(args) {
await CommandDone.handleAction(this, args, false); await CommandDone.handleAction(this, args, false);
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -2,10 +2,8 @@ const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js'); const { app } = require('./app.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js'); const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'use <notebook>'; return 'use <notebook>';
} }
@@ -14,10 +12,6 @@ class Command extends BaseCommand {
return _('Switches to [notebook] - all further operations will happen within this notebook.'); return _('Switches to [notebook] - all further operations will happen within this notebook.');
} }
autocomplete() {
return { data: autocompleteFolders };
}
compatibleUis() { compatibleUis() {
return ['cli']; return ['cli'];
} }
@@ -27,7 +21,6 @@ class Command extends BaseCommand {
if (!folder) throw new Error(_('Cannot find "%s".', args['notebook'])); if (!folder) throw new Error(_('Cannot find "%s".', args['notebook']));
app().switchCurrentFolder(folder); app().switchCurrentFolder(folder);
} }
} }
module.exports = Command; module.exports = Command;

View File

@@ -3,7 +3,6 @@ const Setting = require('lib/models/Setting.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
class Command extends BaseCommand { class Command extends BaseCommand {
usage() { usage() {
return 'version'; return 'version';
} }
@@ -12,11 +11,10 @@ class Command extends BaseCommand {
return _('Displays version information'); return _('Displays version information');
} }
async action(args) { async action() {
const p = require('./package.json'); const p = require('./package.json');
this.stdout(_('%s %s (%s)', p.name, p.version, Setting.value('env'))); this.stdout(_('%s %s (%s)', p.name, p.version, Setting.value('env')));
} }
} }
module.exports = Command; module.exports = Command;

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,6 @@
const TextWidget = require('tkwidgets/TextWidget.js'); const TextWidget = require('tkwidgets/TextWidget.js');
class ConsoleWidget extends TextWidget { class ConsoleWidget extends TextWidget {
constructor() { constructor() {
super(); super();
this.lines_ = []; this.lines_ = [];
@@ -16,7 +15,7 @@ class ConsoleWidget extends TextWidget {
} }
get lastLine() { get lastLine() {
return this.lines_.length ? this.lines_[this.lines_.length-1] : ''; return this.lines_.length ? this.lines_[this.lines_.length - 1] : '';
} }
addLine(line) { addLine(line) {
@@ -40,13 +39,12 @@ class ConsoleWidget extends TextWidget {
if (this.lines_.length > this.maxLines_) { if (this.lines_.length > this.maxLines_) {
this.lines_.splice(0, this.lines_.length - this.maxLines_); this.lines_.splice(0, this.lines_.length - this.maxLines_);
} }
this.text = this.lines_.join("\n"); this.text = this.lines_.join('\n');
this.updateText_ = false; this.updateText_ = false;
} }
super.render(); super.render();
} }
} }
module.exports = ConsoleWidget; module.exports = ConsoleWidget;

View File

@@ -5,7 +5,6 @@ const ListWidget = require('tkwidgets/ListWidget.js');
const _ = require('lib/locale.js')._; const _ = require('lib/locale.js')._;
class FolderListWidget extends ListWidget { class FolderListWidget extends ListWidget {
constructor() { constructor() {
super(); super();
@@ -20,19 +19,19 @@ class FolderListWidget extends ListWidget {
this.updateItems_ = false; this.updateItems_ = false;
this.trimItemTitle = false; this.trimItemTitle = false;
this.itemRenderer = (item) => { this.itemRenderer = item => {
let output = []; let output = [];
if (item === '-') { if (item === '-') {
output.push('-'.repeat(this.innerWidth)); output.push('-'.repeat(this.innerWidth));
} else if (item.type_ === Folder.modelType()) { } else if (item.type_ === Folder.modelType()) {
output.push(' '.repeat(this.folderDepth(this.folders, item.id)) + Folder.displayTitle(item)); output.push(' '.repeat(this.folderDepth(this.folders, item.id)) + Folder.displayTitle(item));
} else if (item.type_ === Tag.modelType()) { } else if (item.type_ === Tag.modelType()) {
output.push('[' + Folder.displayTitle(item) + ']'); output.push(`[${Folder.displayTitle(item)}]`);
} else if (item.type_ === BaseModel.TYPE_SEARCH) { } else if (item.type_ === BaseModel.TYPE_SEARCH) {
output.push(_('Search:')); output.push(_('Search:'));
output.push(item.title); output.push(item.title);
} }
return output.join(' '); return output.join(' ');
}; };
} }
@@ -45,7 +44,6 @@ class FolderListWidget extends ListWidget {
output++; output++;
folderId = folder.parent_id; folderId = folder.parent_id;
} }
throw new Error('unreachable');
} }
get selectedFolderId() { get selectedFolderId() {
@@ -54,7 +52,7 @@ class FolderListWidget extends ListWidget {
set selectedFolderId(v) { set selectedFolderId(v) {
this.selectedFolderId_ = v; this.selectedFolderId_ = v;
this.updateIndexFromSelectedItemId() this.updateIndexFromSelectedItemId();
this.invalidate(); this.invalidate();
} }
@@ -64,7 +62,7 @@ class FolderListWidget extends ListWidget {
set selectedSearchId(v) { set selectedSearchId(v) {
this.selectedSearchId_ = v; this.selectedSearchId_ = v;
this.updateIndexFromSelectedItemId() this.updateIndexFromSelectedItemId();
this.invalidate(); this.invalidate();
} }
@@ -74,7 +72,7 @@ class FolderListWidget extends ListWidget {
set selectedTagId(v) { set selectedTagId(v) {
this.selectedTagId_ = v; this.selectedTagId_ = v;
this.updateIndexFromSelectedItemId() this.updateIndexFromSelectedItemId();
this.invalidate(); this.invalidate();
} }
@@ -84,7 +82,7 @@ class FolderListWidget extends ListWidget {
set notesParentType(v) { set notesParentType(v) {
this.notesParentType_ = v; this.notesParentType_ = v;
this.updateIndexFromSelectedItemId() this.updateIndexFromSelectedItemId();
this.invalidate(); this.invalidate();
} }
@@ -95,7 +93,7 @@ class FolderListWidget extends ListWidget {
set searches(v) { set searches(v) {
this.searches_ = v; this.searches_ = v;
this.updateItems_ = true; this.updateItems_ = true;
this.updateIndexFromSelectedItemId() this.updateIndexFromSelectedItemId();
this.invalidate(); this.invalidate();
} }
@@ -106,7 +104,7 @@ class FolderListWidget extends ListWidget {
set tags(v) { set tags(v) {
this.tags_ = v; this.tags_ = v;
this.updateItems_ = true; this.updateItems_ = true;
this.updateIndexFromSelectedItemId() this.updateIndexFromSelectedItemId();
this.invalidate(); this.invalidate();
} }
@@ -117,7 +115,7 @@ class FolderListWidget extends ListWidget {
set folders(v) { set folders(v) {
this.folders_ = v; this.folders_ = v;
this.updateItems_ = true; this.updateItems_ = true;
this.updateIndexFromSelectedItemId() this.updateIndexFromSelectedItemId();
this.invalidate(); this.invalidate();
} }
@@ -128,7 +126,7 @@ class FolderListWidget extends ListWidget {
} }
return false; return false;
} }
render() { render() {
if (this.updateItems_) { if (this.updateItems_) {
this.logger().debug('Rebuilding items...', this.notesParentType, this.selectedJoplinItemId, this.selectedSearchId); this.logger().debug('Rebuilding items...', this.notesParentType, this.selectedJoplinItemId, this.selectedSearchId);
@@ -136,7 +134,7 @@ class FolderListWidget extends ListWidget {
const previousParentType = this.notesParentType; const previousParentType = this.notesParentType;
let newItems = []; let newItems = [];
const orderFolders = (parentId) => { const orderFolders = parentId => {
for (let i = 0; i < this.folders.length; i++) { for (let i = 0; i < this.folders.length; i++) {
const f = this.folders[i]; const f = this.folders[i];
const folderParentId = f.parent_id ? f.parent_id : ''; const folderParentId = f.parent_id ? f.parent_id : '';
@@ -145,7 +143,7 @@ class FolderListWidget extends ListWidget {
if (this.folderHasChildren_(this.folders, f.id)) orderFolders(f.id); if (this.folderHasChildren_(this.folders, f.id)) orderFolders(f.id);
} }
} }
} };
orderFolders(''); orderFolders('');
@@ -162,7 +160,7 @@ class FolderListWidget extends ListWidget {
this.items = newItems; this.items = newItems;
this.notesParentType = previousParentType; this.notesParentType = previousParentType;
this.updateIndexFromSelectedItemId(wasSelectedItemId) this.updateIndexFromSelectedItemId(wasSelectedItemId);
this.updateItems_ = false; this.updateItems_ = false;
} }
@@ -174,7 +172,7 @@ class FolderListWidget extends ListWidget {
if (this.notesParentType === 'Folder') return this.selectedFolderId; if (this.notesParentType === 'Folder') return this.selectedFolderId;
if (this.notesParentType === 'Tag') return this.selectedTagId; if (this.notesParentType === 'Tag') return this.selectedTagId;
if (this.notesParentType === 'Search') return this.selectedSearchId; if (this.notesParentType === 'Search') return this.selectedSearchId;
throw new Error('Unknown parent type: ' + this.notesParentType); throw new Error(`Unknown parent type: ${this.notesParentType}`);
} }
get selectedJoplinItem() { get selectedJoplinItem() {
@@ -188,7 +186,6 @@ class FolderListWidget extends ListWidget {
const index = this.itemIndexByKey('id', itemId); const index = this.itemIndexByKey('id', itemId);
this.currentIndex = index >= 0 ? index : 0; this.currentIndex = index >= 0 ? index : 0;
} }
} }
module.exports = FolderListWidget; module.exports = FolderListWidget;

View File

@@ -2,17 +2,16 @@ const Note = require('lib/models/Note.js');
const ListWidget = require('tkwidgets/ListWidget.js'); const ListWidget = require('tkwidgets/ListWidget.js');
class NoteListWidget extends ListWidget { class NoteListWidget extends ListWidget {
constructor() { constructor() {
super(); super();
this.selectedNoteId_ = 0; this.selectedNoteId_ = 0;
this.updateIndexFromSelectedNoteId_ = false; this.updateIndexFromSelectedNoteId_ = false;
this.itemRenderer = (note) => { this.itemRenderer = note => {
let label = Note.displayTitle(note); // + ' ' + note.id; let label = Note.displayTitle(note); // + ' ' + note.id;
if (note.is_todo) { if (note.is_todo) {
label = '[' + (note.todo_completed ? 'X' : ' ') + '] ' + label; label = `[${note.todo_completed ? 'X' : ' '}] ${label}`;
} }
return label; return label;
}; };
@@ -32,7 +31,6 @@ class NoteListWidget extends ListWidget {
super.render(); super.render();
} }
} }
module.exports = NoteListWidget; module.exports = NoteListWidget;

View File

@@ -2,7 +2,6 @@ const Note = require('lib/models/Note.js');
const TextWidget = require('tkwidgets/TextWidget.js'); const TextWidget = require('tkwidgets/TextWidget.js');
class NoteMetadataWidget extends TextWidget { class NoteMetadataWidget extends TextWidget {
constructor() { constructor() {
super(); super();
this.noteId_ = 0; this.noteId_ = 0;
@@ -30,7 +29,6 @@ class NoteMetadataWidget extends TextWidget {
this.text = this.note_ ? await Note.minimalSerializeForDisplay(this.note_) : ''; this.text = this.note_ ? await Note.minimalSerializeForDisplay(this.note_) : '';
} }
} }
} }
module.exports = NoteMetadataWidget; module.exports = NoteMetadataWidget;

View File

@@ -3,7 +3,6 @@ const TextWidget = require('tkwidgets/TextWidget.js');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
class NoteWidget extends TextWidget { class NoteWidget extends TextWidget {
constructor() { constructor() {
super(); super();
this.noteId_ = 0; this.noteId_ = 0;
@@ -44,11 +43,11 @@ class NoteWidget extends TextWidget {
} else if (this.noteId_) { } else if (this.noteId_) {
this.doAsync('loadNote', async () => { this.doAsync('loadNote', async () => {
this.note_ = await Note.load(this.noteId_); this.note_ = await Note.load(this.noteId_);
if (this.note_ && this.note_.encryption_applied) { if (this.note_ && this.note_.encryption_applied) {
this.text = _('One or more items are currently encrypted and you may need to supply a master password. To do so please type `e2ee decrypt`. If you have already supplied the password, the encrypted items are being decrypted in the background and will be available soon.'); this.text = _('One or more items are currently encrypted and you may need to supply a master password. To do so please type `e2ee decrypt`. If you have already supplied the password, the encrypted items are being decrypted in the background and will be available soon.');
} else { } else {
this.text = this.note_ ? this.note_.title + "\n\n" + this.note_.body : ''; this.text = this.note_ ? `${this.note_.title}\n\n${this.note_.body}` : '';
} }
if (this.lastLoadedNoteId_ !== this.noteId_) this.scrollTop = 0; if (this.lastLoadedNoteId_ !== this.noteId_) this.scrollTop = 0;
@@ -59,7 +58,6 @@ class NoteWidget extends TextWidget {
this.scrollTop = 0; this.scrollTop = 0;
} }
} }
} }
module.exports = NoteWidget; module.exports = NoteWidget;

View File

@@ -5,7 +5,6 @@ const stripAnsi = require('strip-ansi');
const { handleAutocompletion } = require('../autocompletion.js'); const { handleAutocompletion } = require('../autocompletion.js');
class StatusBarWidget extends BaseWidget { class StatusBarWidget extends BaseWidget {
constructor() { constructor() {
super(); super();
@@ -75,7 +74,7 @@ class StatusBarWidget extends BaseWidget {
super.render(); super.render();
const doSaveCursor = !this.promptActive; const doSaveCursor = !this.promptActive;
if (doSaveCursor) this.term.saveCursor(); if (doSaveCursor) this.term.saveCursor();
this.innerClear(); this.innerClear();
@@ -85,16 +84,15 @@ class StatusBarWidget extends BaseWidget {
// On Windows, bgBlueBright is fine and looks dark enough (Windows is probably in the wrong though) // On Windows, bgBlueBright is fine and looks dark enough (Windows is probably in the wrong though)
// For now, just don't use any colour at all. // For now, just don't use any colour at all.
//const textStyle = this.promptActive ? (s) => s : chalk.bgBlueBright.white; // const textStyle = this.promptActive ? (s) => s : chalk.bgBlueBright.white;
//const textStyle = (s) => s; // const textStyle = (s) => s;
const textStyle = this.promptActive ? (s) => s : chalk.gray; const textStyle = this.promptActive ? s => s : chalk.gray;
this.term.drawHLine(this.absoluteInnerX, this.absoluteInnerY, this.innerWidth, textStyle(' ')); this.term.drawHLine(this.absoluteInnerX, this.absoluteInnerY, this.innerWidth, textStyle(' '));
this.term.moveTo(this.absoluteInnerX, this.absoluteInnerY); this.term.moveTo(this.absoluteInnerX, this.absoluteInnerY);
if (this.promptActive) { if (this.promptActive) {
this.term.write(textStyle(this.promptState_.promptString)); this.term.write(textStyle(this.promptState_.promptString));
if (this.inputEventEmitter_) { if (this.inputEventEmitter_) {
@@ -113,8 +111,8 @@ class StatusBarWidget extends BaseWidget {
history: this.history, history: this.history,
default: this.promptState_.initialText, default: this.promptState_.initialText,
autoComplete: handleAutocompletion, autoComplete: handleAutocompletion,
autoCompleteHint : true, autoCompleteHint: true,
autoCompleteMenu : true, autoCompleteMenu: true,
}; };
if ('cursorPosition' in this.promptState_) options.cursorPosition = this.promptState_.cursorPosition; if ('cursorPosition' in this.promptState_) options.cursorPosition = this.promptState_.cursorPosition;
@@ -153,19 +151,15 @@ class StatusBarWidget extends BaseWidget {
// Only callback once everything has been cleaned up and reset // Only callback once everything has been cleaned up and reset
resolveFn(resolveResult); resolveFn(resolveResult);
}); });
} else { } else {
for (let i = 0; i < this.items_.length; i++) { for (let i = 0; i < this.items_.length; i++) {
const s = this.items_[i].substr(0, this.innerWidth - 1); const s = this.items_[i].substr(0, this.innerWidth - 1);
this.term.write(textStyle(s)); this.term.write(textStyle(s));
} }
} }
if (doSaveCursor) this.term.restoreCursor(); if (doSaveCursor) this.term.restoreCursor();
} }
} }
module.exports = StatusBarWidget; module.exports = StatusBarWidget;

View File

@@ -1,10 +1,7 @@
const fs = require('fs-extra');
const { wrap } = require('lib/string-utils.js'); const { wrap } = require('lib/string-utils.js');
const Setting = require('lib/models/Setting.js'); const Setting = require('lib/models/Setting.js');
const { fileExtension, basename, dirname } = require('lib/path-utils.js'); const { _ } = require('lib/locale.js');
const { _, setLocale, languageCode } = require('lib/locale.js');
const rootDir = dirname(dirname(__dirname));
const MAX_WIDTH = 78; const MAX_WIDTH = 78;
const INDENT = ' '; const INDENT = ' ';
@@ -16,14 +13,14 @@ function renderTwoColumnData(options, baseIndent, width) {
let option = options[i]; let option = options[i];
const flag = option[0]; const flag = option[0];
const indent = baseIndent + INDENT + ' '.repeat(optionColWidth + 2); const indent = baseIndent + INDENT + ' '.repeat(optionColWidth + 2);
let r = wrap(option[1], indent, width); let r = wrap(option[1], indent, width);
r = r.substr(flag.length + (baseIndent + INDENT).length); r = r.substr(flag.length + (baseIndent + INDENT).length);
r = baseIndent + INDENT + flag + r; r = baseIndent + INDENT + flag + r;
output.push(r); output.push(r);
} }
return output.join("\n"); return output.join('\n');
} }
function renderCommandHelp(cmd, width = null) { function renderCommandHelp(cmd, width = null) {
@@ -44,7 +41,7 @@ function renderCommandHelp(cmd, width = null) {
} }
if (cmd.name() === 'config') { if (cmd.name() === 'config') {
const renderMetadata = (md) => { const renderMetadata = md => {
let desc = []; let desc = [];
if (md.label) { if (md.label) {
@@ -63,17 +60,17 @@ function renderCommandHelp(cmd, width = null) {
if ('value' in md) { if ('value' in md) {
if (md.type === Setting.TYPE_STRING) { if (md.type === Setting.TYPE_STRING) {
defaultString = md.value ? '"' + md.value + '"' : null; defaultString = md.value ? `"${md.value}"` : null;
} else if (md.type === Setting.TYPE_INT) { } else if (md.type === Setting.TYPE_INT) {
defaultString = (md.value ? md.value : 0).toString(); defaultString = (md.value ? md.value : 0).toString();
} else if (md.type === Setting.TYPE_BOOL) { } else if (md.type === Setting.TYPE_BOOL) {
defaultString = (md.value === true ? 'true' : 'false'); defaultString = md.value === true ? 'true' : 'false';
} }
} }
if (defaultString !== null) desc.push(_('Default: %s', defaultString)); if (defaultString !== null) desc.push(_('Default: %s', defaultString));
return [md.key, desc.join("\n")]; return [md.key, desc.join('\n')];
}; };
output.push(''); output.push('');
@@ -83,7 +80,7 @@ function renderCommandHelp(cmd, width = null) {
let keysValues = []; let keysValues = [];
const keys = Setting.keys(true, 'cli'); const keys = Setting.keys(true, 'cli');
for (let i = 0; i < keys.length; i++) { for (let i = 0; i < keys.length; i++) {
if (keysValues.length) keysValues.push(['','']); if (keysValues.length) keysValues.push(['', '']);
const md = Setting.settingMetadata(keys[i]); const md = Setting.settingMetadata(keys[i]);
if (!md.label) continue; if (!md.label) continue;
keysValues.push(renderMetadata(md)); keysValues.push(renderMetadata(md));
@@ -91,8 +88,8 @@ function renderCommandHelp(cmd, width = null) {
output.push(renderTwoColumnData(keysValues, baseIndent, width)); output.push(renderTwoColumnData(keysValues, baseIndent, width));
} }
return output.join("\n"); return output.join('\n');
} }
function getOptionColWidth(options) { function getOptionColWidth(options) {
@@ -104,4 +101,4 @@ function getOptionColWidth(options) {
return output; return output;
} }
module.exports = { renderCommandHelp }; module.exports = { renderCommandHelp };

View File

@@ -9,7 +9,7 @@ require('app-module-path').addPath(__dirname);
const compareVersion = require('compare-version'); const compareVersion = require('compare-version');
const nodeVersion = process && process.versions && process.versions.node ? process.versions.node : '0.0.0'; const nodeVersion = process && process.versions && process.versions.node ? process.versions.node : '0.0.0';
if (compareVersion(nodeVersion, '8.0.0') < 0) { if (compareVersion(nodeVersion, '8.0.0') < 0) {
console.error('Joplin requires Node 8+. Detected version ' + nodeVersion); console.error(`Joplin requires Node 8+. Detected version ${nodeVersion}`);
process.exit(1); process.exit(1);
} }
@@ -53,25 +53,25 @@ shimInit();
const application = app(); const application = app();
if (process.platform === "win32") { if (process.platform === 'win32') {
var rl = require("readline").createInterface({ var rl = require('readline').createInterface({
input: process.stdin, input: process.stdin,
output: process.stdout output: process.stdout,
}); });
rl.on("SIGINT", function () { rl.on('SIGINT', function() {
process.emit("SIGINT"); process.emit('SIGINT');
}); });
} }
process.stdout.on('error', function( err ) { process.stdout.on('error', function(err) {
// https://stackoverflow.com/questions/12329816/error-write-epipe-when-piping-node-output-to-head#15884508 // https://stackoverflow.com/questions/12329816/error-write-epipe-when-piping-node-output-to-head#15884508
if (err.code == "EPIPE") { if (err.code == 'EPIPE') {
process.exit(0); process.exit(0);
} }
}); });
application.start(process.argv).catch((error) => { application.start(process.argv).catch(error => {
if (error.code == 'flagError') { if (error.code == 'flagError') {
console.error(error.message); console.error(error.message);
console.error(_('Type `joplin help` for usage information.')); console.error(_('Type `joplin help` for usage information.'));
@@ -81,4 +81,4 @@ application.start(process.argv).catch((error) => {
} }
process.exit(1); process.exit(1);
}); });

View File

@@ -1,13 +1,11 @@
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const { netUtils } = require('lib/net-utils.js'); const { netUtils } = require('lib/net-utils.js');
const http = require("http"); const http = require('http');
const urlParser = require("url"); const urlParser = require('url');
const FormData = require('form-data');
const enableServerDestroy = require('server-destroy'); const enableServerDestroy = require('server-destroy');
class OneDriveApiNodeUtils { class OneDriveApiNodeUtils {
constructor(api) { constructor(api) {
this.api_ = api; this.api_ = api;
this.oauthServer_ = null; this.oauthServer_ = null;
@@ -46,9 +44,9 @@ class OneDriveApiNodeUtils {
const port = await netUtils.findAvailablePort(this.possibleOAuthDancePorts(), 0); const port = await netUtils.findAvailablePort(this.possibleOAuthDancePorts(), 0);
if (!port) throw new Error(_('All potential ports are in use - please report the issue at %s', 'https://github.com/laurent22/joplin')); if (!port) throw new Error(_('All potential ports are in use - please report the issue at %s', 'https://github.com/laurent22/joplin'));
let authCodeUrl = this.api().authCodeUrl('http://localhost:' + port); let authCodeUrl = this.api().authCodeUrl(`http://localhost:${port}`);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.oauthServer_ = http.createServer(); this.oauthServer_ = http.createServer();
let errorMessage = null; let errorMessage = null;
@@ -56,7 +54,7 @@ class OneDriveApiNodeUtils {
const url = urlParser.parse(request.url, true); const url = urlParser.parse(request.url, true);
if (url.pathname === '/auth') { if (url.pathname === '/auth') {
response.writeHead(302, { 'Location': authCodeUrl }); response.writeHead(302, { Location: authCodeUrl });
response.end(); response.end();
return; return;
} }
@@ -64,10 +62,10 @@ class OneDriveApiNodeUtils {
const query = url.query; const query = url.query;
const writeResponse = (code, message) => { const writeResponse = (code, message) => {
response.writeHead(code, {"Content-Type": "text/html"}); response.writeHead(code, { 'Content-Type': 'text/html' });
response.write(this.makePage(message)); response.write(this.makePage(message));
response.end(); response.end();
} };
// After the response has been received, don't destroy the server right // After the response has been received, don't destroy the server right
// away or the browser might display a connection reset error (even // away or the browser might display a connection reset error (even
@@ -77,21 +75,24 @@ class OneDriveApiNodeUtils {
this.oauthServer_.destroy(); this.oauthServer_.destroy();
this.oauthServer_ = null; this.oauthServer_ = null;
}, 1000); }, 1000);
} };
if (!query.code) return writeResponse(400, '"code" query parameter is missing'); if (!query.code) return writeResponse(400, '"code" query parameter is missing');
this.api().execTokenRequest(query.code, 'http://localhost:' + port.toString()).then(() => { this.api()
writeResponse(200, _('The application has been authorised - you may now close this browser tab.')); .execTokenRequest(query.code, `http://localhost:${port.toString()}`)
targetConsole.log(''); .then(() => {
targetConsole.log(_('The application has been successfully authorised.')); writeResponse(200, _('The application has been authorised - you may now close this browser tab.'));
waitAndDestroy(); targetConsole.log('');
}).catch((error) => { targetConsole.log(_('The application has been successfully authorised.'));
writeResponse(400, error.message); waitAndDestroy();
targetConsole.log(''); })
targetConsole.log(error.message); .catch(error => {
waitAndDestroy(); writeResponse(400, error.message);
}); targetConsole.log('');
targetConsole.log(error.message);
waitAndDestroy();
});
}); });
this.oauthServer_.on('close', () => { this.oauthServer_.on('close', () => {
@@ -106,17 +107,16 @@ class OneDriveApiNodeUtils {
enableServerDestroy(this.oauthServer_); enableServerDestroy(this.oauthServer_);
// Rather than displaying authCodeUrl directly, we go throught the local // Rather than displaying authCodeUrl directly, we go through the local
// server. This is just so that the URL being displayed is shorter and // server. This is just so that the URL being displayed is shorter and
// doesn't get cut in terminals (especially those that don't handle multi // doesn't get cut in terminals (especially those that don't handle multi
// lines URLs). // lines URLs).
targetConsole.log(_('Please open the following URL in your browser to authenticate the application. The application will create a directory in "Apps/Joplin" and will only read and write files in this directory. It will have no access to any files outside this directory nor to any other personal data. No data will be shared with any third party.')); targetConsole.log(_('Please open the following URL in your browser to authenticate the application. The application will create a directory in "Apps/Joplin" and will only read and write files in this directory. It will have no access to any files outside this directory nor to any other personal data. No data will be shared with any third party.'));
targetConsole.log(''); targetConsole.log('');
targetConsole.log('http://127.0.0.1:' + port + '/auth'); targetConsole.log(`http://127.0.0.1:${port}/auth`);
}); });
} }
} }
module.exports = { OneDriveApiNodeUtils }; module.exports = { OneDriveApiNodeUtils };

View File

@@ -5,5 +5,6 @@ BUILD_DIR="$ROOT_DIR/build"
rsync -a --exclude "node_modules/" "$ROOT_DIR/app/" "$BUILD_DIR/" rsync -a --exclude "node_modules/" "$ROOT_DIR/app/" "$BUILD_DIR/"
rsync -a --delete "$ROOT_DIR/../ReactNativeClient/lib/" "$BUILD_DIR/lib/" rsync -a --delete "$ROOT_DIR/../ReactNativeClient/lib/" "$BUILD_DIR/lib/"
rsync -a --delete "$ROOT_DIR/../ReactNativeClient/locales/" "$BUILD_DIR/locales/"
cp "$ROOT_DIR/package.json" "$BUILD_DIR" cp "$ROOT_DIR/package.json" "$BUILD_DIR"
chmod 755 "$BUILD_DIR/main.js" chmod 755 "$BUILD_DIR/main.js"

View File

@@ -135,6 +135,14 @@ msgstr "أدخل كلمة المرور الرئيسة:"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "ألغيت العملية" msgstr "ألغيت العملية"
#, fuzzy
msgid "Confirm password:"
msgstr "أدخل كلمة المرور الرئيسة:"
#, fuzzy
msgid "Passwords do not match!"
msgstr "لا يمكن أن تكون كلمة المرور فارغة"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -169,16 +177,6 @@ msgstr "لا يوجد دفتر ملاحظات نشط."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "الملاحظة: \"%s\" غير موجودة. تريد إنشائها؟" msgstr "الملاحظة: \"%s\" غير موجودة. تريد إنشائها؟"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr "بدء تحرير الملاحظة. أغلق المحرر للعودة إلى المحث."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "حدث خطأ أثناء فتح الملاحظة: %s في المحرر"
msgid "Note has been saved."
msgstr "تم حفظ الملاحظة."
msgid "Exits the application." msgid "Exits the application."
msgstr "الخروج من التطبيق." msgstr "الخروج من التطبيق."
@@ -385,6 +383,23 @@ msgstr "حذف الملاحظة؟"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "يبحث عن الـ <pattern> (نمط) المعطى في كل الملاحظات." msgstr "يبحث عن الـ <pattern> (نمط) المعطى في كل الملاحظات."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -453,10 +468,12 @@ msgstr "يجري تنزيل الموارد..."
msgid "Cancelling... Please wait." msgid "Cancelling... Please wait."
msgstr "الإلغاء جارٍ... فضلاً انتظر." msgstr "الإلغاء جارٍ... فضلاً انتظر."
#, fuzzy
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> (أمر-وسم) يمكن أن يكون \"add\" (أضف) ، \"remove\" (أزل) أو " "<tag-command> (أمر-وسم) يمكن أن يكون \"add\" (أضف) ، \"remove\" (أزل) أو "
"\"list\" (أسرد) ، وذلك لإضافة [وسم] أو إزالته من [ملاحظة] أو لسرد الملاحظات " "\"list\" (أسرد) ، وذلك لإضافة [وسم] أو إزالته من [ملاحظة] أو لسرد الملاحظات "
@@ -568,52 +585,9 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "التصدير إلى \"%s\" بتنسيق \"%s\". فضلاً انتظر..." msgstr "التصدير إلى \"%s\" بتنسيق \"%s\". فضلاً انتظر..."
msgid "Sidebar"
msgstr "الشريط الجانبي"
msgid "Note list"
msgstr "قائمة ملاحظات"
msgid "Note title"
msgstr "عنوان الملاحظة"
msgid "Note body"
msgstr "متن الملاحظة"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "الاستيراد من \"%s\" بتنسيق \"%s\". فضلاً انتظر..." msgstr ""
msgid "PDF File"
msgstr "ملف PDF"
msgid "Synchronisation status"
msgstr "حالة المزامنة"
msgid "New note"
msgstr "ملاحظة جديدة"
msgid "New to-do"
msgstr "قائمة جديدة للمهام"
msgid "New notebook"
msgstr "دفتر ملاحظات جديد"
msgid "Print"
msgstr "اطبع"
msgid "General Options"
msgstr "الخيارات العامة"
msgid "Encryption options"
msgstr "خيارات التشفير"
msgid "Web clipper options"
msgstr "خيارات Web clipper"
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
msgid "&File" msgid "&File"
msgstr "&ملف" msgstr "&ملف"
@@ -627,6 +601,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "البحث جارٍ عن تحديثات..." msgstr "البحث جارٍ عن تحديثات..."
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "استيراد" msgstr "استيراد"
@@ -670,12 +647,18 @@ msgstr "مائل"
msgid "Link" msgid "Link"
msgstr "رابط" msgstr "رابط"
msgid "Code"
msgstr "رمز"
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "إدراج التاريخ والوقت" msgstr "إدراج التاريخ والوقت"
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "التحرير في محرر خارجي" msgstr "التحرير في محرر خارجي"
msgid "Tags"
msgstr "وسوم"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "البحث في كل الملاحظات" msgstr "البحث في كل الملاحظات"
@@ -688,6 +671,13 @@ msgstr "&عرض"
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "تبديل الشريط الجانبي" msgstr "تبديل الشريط الجانبي"
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "قائمة ملاحظات"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "تبديل تخطيط المحرّر" msgstr "تبديل تخطيط المحرّر"
@@ -703,6 +693,10 @@ msgstr "م&ساعدة"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "موقع الويب و التوثيق" msgstr "موقع الويب و التوثيق"
#, fuzzy
msgid "Joplin Forum"
msgstr "Joplin نسخة %s"
msgid "Make a donation" msgid "Make a donation"
msgstr "تبرَّع" msgstr "تبرَّع"
@@ -746,6 +740,9 @@ msgstr "نعم"
msgid "No" msgid "No"
msgstr "لا" msgstr "لا"
msgid "Full Release Notes"
msgstr ""
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "تم نسخ الرمز المميز إلى الحافظة!" msgstr "تم نسخ الرمز المميز إلى الحافظة!"
@@ -811,6 +808,9 @@ msgstr ""
"هذا الرمز المميز للتصريح مطلوب فقط للسماح لتطبيقات طرف ثالث للوصول إلى " "هذا الرمز المميز للتصريح مطلوب فقط للسماح لتطبيقات طرف ثالث للوصول إلى "
"Joplin." "Joplin."
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "الملاحظات و الإعدادات مخزّنة في: %s" msgstr "الملاحظات و الإعدادات مخزّنة في: %s"
@@ -821,6 +821,9 @@ msgstr "فحص ضبط المزامنة"
msgid "Browse..." msgid "Browse..."
msgstr "استعراض..." msgstr "استعراض..."
msgid "Back"
msgstr "عودة"
msgid "Apply" msgid "Apply"
msgstr "تطبيق" msgstr "تطبيق"
@@ -901,8 +904,8 @@ msgstr ""
"فيما بعد عبر المزامنة." "فيما بعد عبر المزامنة."
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
"يرجى الرجوع إلى التوثيق للمزيد من المعلومات عن التشفير من الطرف للطرف (E2EE) " "يرجى الرجوع إلى التوثيق للمزيد من المعلومات عن التشفير من الطرف للطرف (E2EE) "
"و طرق تفعيله." "و طرق تفعيله."
@@ -913,12 +916,18 @@ msgstr "الحالة"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "التشفير هو:" msgstr "التشفير هو:"
msgid "Firefox Extension"
msgstr ""
msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
msgid "Usage" msgid "Usage"
msgstr "الاستخدام" msgstr "الاستخدام"
msgid "Back"
msgstr "عودة"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -945,6 +954,18 @@ msgstr "إعادة تسمية الوسم:"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "ضبط منبّه:" msgstr "ضبط منبّه:"
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "ملاحظة جديدة"
msgid "New to-do"
msgstr "قائمة جديدة للمهام"
msgid "New notebook"
msgstr "دفتر ملاحظات جديد"
msgid "Layout" msgid "Layout"
msgstr "تخطيط" msgstr "تخطيط"
@@ -982,6 +1003,9 @@ msgstr "عنوان URL"
msgid "Note History" msgid "Note History"
msgstr "قائمة ملاحظات" msgstr "قائمة ملاحظات"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -996,6 +1020,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "جرى تعديل هذه الملاحظة:" msgstr "جرى تعديل هذه الملاحظة:"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "رابط أو رسالة غير مدعومان: %s"
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -1024,10 +1052,6 @@ msgstr "نسخ عنوان الرابط"
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "لم يجر تنزيل هذا المرفق أو فك تشفيره حتى الآن." msgstr "لم يجر تنزيل هذا المرفق أو فك تشفيره حتى الآن."
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "رابط أو رسالة غير مدعومان: %s"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1038,6 +1062,13 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "يمكن طباعة ملاحظة واحدة فقط أو تصديرها إلى PDF كل مرة." msgstr "يمكن طباعة ملاحظة واحدة فقط أو تصديرها إلى PDF كل مرة."
msgid "PDF File"
msgstr "ملف PDF"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "حدث خطأ أثناء فتح الملاحظة: %s في المحرر"
msgid "strong text" msgid "strong text"
msgstr "نص مشدَّد" msgstr "نص مشدَّد"
@@ -1053,9 +1084,6 @@ msgstr "إدراج ارتباط تشعبي"
msgid "Attach file" msgid "Attach file"
msgstr "إرفاق ملف" msgstr "إرفاق ملف"
msgid "Tags"
msgstr "وسوم"
msgid "Set alarm" msgid "Set alarm"
msgstr "ضبط منبّه" msgstr "ضبط منبّه"
@@ -1066,9 +1094,6 @@ msgstr "في: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "ارتباط تشعبي" msgstr "ارتباط تشعبي"
msgid "Code"
msgstr "رمز"
msgid "Numbered List" msgid "Numbered List"
msgstr "قائمة مرقّمة" msgstr "قائمة مرقّمة"
@@ -1118,11 +1143,9 @@ msgstr "خيارات"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "حالة المزامنة" msgstr "حالة المزامنة"
msgid "Encryption Options" #, fuzzy
msgstr "خيارات التشفير" msgid "Remove"
msgstr "إزالة ؟"
msgid "Clipper Options"
msgstr "خيارات Clipper"
#, javascript-format #, javascript-format
msgid "" msgid ""
@@ -1134,6 +1157,9 @@ msgstr ""
"\n" "\n"
"سيتم حذف كل الملاحظات و دفاتر الملاحظات الفرعية ضمن هذا الدفتر أيضاً." "سيتم حذف كل الملاحظات و دفاتر الملاحظات الفرعية ضمن هذا الدفتر أيضاً."
msgid "Delete"
msgstr "حذف"
#, javascript-format #, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "إزالة الوسم \"%s\" من كل الملاحظات؟" msgstr "إزالة الوسم \"%s\" من كل الملاحظات؟"
@@ -1141,8 +1167,9 @@ msgstr "إزالة الوسم \"%s\" من كل الملاحظات؟"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "حذف هذا البحث من الشريط الجانبي؟" msgstr "حذف هذا البحث من الشريط الجانبي؟"
msgid "Delete" #, fuzzy
msgstr "حذف" msgid "New sub-notebook"
msgstr "دفتر ملاحظات جديد"
msgid "Rename" msgid "Rename"
msgstr "إعادة تسمية" msgstr "إعادة تسمية"
@@ -1310,14 +1337,6 @@ msgstr "خامل"
msgid "In progress" msgid "In progress"
msgstr "قيد التقدم" msgstr "قيد التقدم"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "المزامنة قيد التقدم بالفعل. الحال: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "مشفّر" msgstr "مشفّر"
@@ -1363,6 +1382,19 @@ msgstr ""
"تنبيه: إذا غيرت هذا المكان ، تأكد من نسخ كافة المحتويات لديك إليه قبل البدء " "تنبيه: إذا غيرت هذا المكان ، تأكد من نسخ كافة المحتويات لديك إليه قبل البدء "
"بالمزامنة ، وإلا فسيتم حذف كل الملفات! أنظر الأسئلة المتكررة لتفاصيل أكثر: %s" "بالمزامنة ، وإلا فسيتم حذف كل الملفات! أنظر الأسئلة المتكررة لتفاصيل أكثر: %s"
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "التلقائية: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "وجهة المزامنة" msgstr "وجهة المزامنة"
@@ -1433,6 +1465,41 @@ msgstr "فاتحة"
msgid "Dark" msgid "Dark"
msgstr "غامقة" msgstr "غامقة"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
#, fuzzy
msgid "Show note counts"
msgstr "إظهار أيقونة لوحة النظام"
#, fuzzy
msgid "Editor"
msgstr "تحرير"
#, fuzzy
msgid "Viewer"
msgstr "&عرض"
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "قوائم المهام غير المكتملة في الأعلى" msgstr "قوائم المهام غير المكتملة في الأعلى"
@@ -1467,6 +1534,9 @@ msgstr "عند إنشاء ملاحظة جديدة:"
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "تفعيل التشفير" msgstr "تفعيل التشفير"
@@ -1501,6 +1571,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "إظهار أيقونة لوحة النظام" msgstr "إظهار أيقونة لوحة النظام"
@@ -1524,6 +1597,10 @@ msgstr "نسبة التكبير العمومية"
msgid "Editor font size" msgid "Editor font size"
msgstr "حجم خط المحرّر" msgstr "حجم خط المحرّر"
#, fuzzy
msgid "Editor font"
msgstr "حجم خط المحرّر"
msgid "Editor font family" msgid "Editor font family"
msgstr "نوع خط المحرّر" msgstr "نوع خط المحرّر"
@@ -1569,8 +1646,35 @@ msgstr ""
"أمر محرر النصوص (قد يتضمن معامِلات) الذي سيستخدم لفتح ملاحظة. إذا لم يجر " "أمر محرر النصوص (قد يتضمن معامِلات) الذي سيستخدم لفتح ملاحظة. إذا لم يجر "
"التزويد بأي محرر فسيحاول التطبيق اكتشاف المحرِّر التلقائي آلياً." "التزويد بأي محرر فسيحاول التطبيق اكتشاف المحرِّر التلقائي آلياً."
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "إظهار خيارات متقدمة" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "شهادات TLS خاصة" msgstr "شهادات TLS خاصة"
@@ -1589,6 +1693,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "تجاهل أخطاء شهادات TLS" msgstr "تجاهل أخطاء شهادات TLS"
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable note history" msgid "Enable note history"
msgstr "تفعيل التشفير" msgstr "تفعيل التشفير"
@@ -1625,6 +1739,14 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "التطبيق" msgstr "التطبيق"
#, fuzzy
msgid "Encryption"
msgstr "التشفير هو:"
#, fuzzy
msgid "Web Clipper"
msgstr "خيارات Web clipper"
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "الوسم \"%s\" موجود بالفعل. فضلاً إختر اسماً مختلفاً." msgstr "الوسم \"%s\" موجود بالفعل. فضلاً إختر اسماً مختلفاً."
@@ -1638,7 +1760,12 @@ msgstr "تنسيق Markdown"
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "دليل تصدير بيانات Joplin" msgstr "دليل تصدير بيانات Joplin"
msgid "Evernote Export File" #, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "ملف Evernote المصدَّر"
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "ملف Evernote المصدَّر" msgstr "ملف Evernote المصدَّر"
msgid "Json Export Directory" msgid "Json Export Directory"
@@ -1744,24 +1871,20 @@ msgstr "الإذن باستخدام الكاميرا"
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "إذنك باستخدام كاميرا الجوال مطلوب." msgstr "إذنك باستخدام كاميرا الجوال مطلوب."
#, fuzzy
msgid "You currently have no notebooks."
msgstr "لا يوجد دفتر ملاحظات نشط."
#, fuzzy
msgid "Create a notebook"
msgstr "ينشئ دفتر ملاحظات جديد."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "لا توجد ملاحظات حالياً. أنشئ واحدة بالضغط على زر (+)." msgstr "لا توجد ملاحظات حالياً. أنشئ واحدة بالضغط على زر (+)."
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "حذف هذه الملاحظات؟" msgstr "حذف هذه الملاحظات؟"
msgid "Log"
msgstr "السجل"
msgid "Export Debug Report"
msgstr "تصدير تقرير إصلاح الأخطاء"
msgid "Encryption Config"
msgstr "ضبط التشفير"
msgid "Configuration"
msgstr "الضبط"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "النقل إلى دفتر ملاحظات..." msgstr "النقل إلى دفتر ملاحظات..."
@@ -1784,8 +1907,24 @@ msgstr "إختر التاريخ"
msgid "Confirm" msgid "Confirm"
msgstr "تأكيد" msgstr "تأكيد"
msgid "Cancel synchronisation" #, fuzzy, javascript-format
msgstr "إلغاء المزامنة" msgid "Notebook: %s"
msgstr "دفاتر ملاحظات"
#, fuzzy
msgid "Encrypted notebooks cannot be renamed"
msgstr "لا يمكن تعديل العناصر المشفَّرة"
#, fuzzy
msgid "New Notebook"
msgstr "دفتر ملاحظات جديد"
msgid "Configuration"
msgstr "الضبط"
#, fuzzy
msgid "All notes"
msgstr "ملاحظة"
msgid "Checking... Please wait." msgid "Checking... Please wait."
msgstr "التحقق جارٍ... فضلاً انتظر." msgstr "التحقق جارٍ... فضلاً انتظر."
@@ -1825,6 +1964,46 @@ msgstr "وسوم جديدة:"
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "أكتب وسوماً جديدة أو اخترها من القائمة" msgstr "أكتب وسوماً جديدة أو اخترها من القائمة"
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr "ضبط التشفير"
#, fuzzy
msgid "Tools"
msgstr "&أدوات"
#, fuzzy
msgid "Sync Status"
msgstr "الحالة"
msgid "Log"
msgstr "السجل"
#, fuzzy
msgid "Creating report..."
msgstr "إنشاء %s جديد ..."
msgid "Export Debug Report"
msgstr "تصدير تقرير إصلاح الأخطاء"
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "الضبط" msgstr "الضبط"
@@ -1879,6 +2058,10 @@ msgstr "كلمة المرور:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "لا يمكن أن تكون كلمة المرور فارغة" msgstr "لا يمكن أن تكون كلمة المرور فارغة"
#, fuzzy
msgid "Confirm password cannot be empty"
msgstr "لا يمكن أن تكون كلمة المرور فارغة"
msgid "Enable" msgid "Enable"
msgstr "تفعيل" msgstr "تفعيل"
@@ -1889,6 +2072,10 @@ msgstr "لم يتم حفظ دفتر الملاحظات: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "تحرير دفتر الملاحظات" msgstr "تحرير دفتر الملاحظات"
#, fuzzy
msgid "Enter notebook title"
msgstr "عنوان دفتر الملاحظات:"
msgid "Show all" msgid "Show all"
msgstr "إظهار الكل" msgstr "إظهار الكل"
@@ -1912,10 +2099,32 @@ msgstr "لا يوجد عنصر بالمعرّف %s"
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "تطبيق Joplin على الهاتف الجوال لا يدعم حالياً هذا النوع من الربط : %s" msgstr "تطبيق Joplin على الهاتف الجوال لا يدعم حالياً هذا النوع من الربط : %s"
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "نوع صورة غير مدعوم: %s" msgstr "نوع صورة غير مدعوم: %s"
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "تم تحديثها: %d."
msgid "View on map"
msgstr "عرض على الخريطة"
msgid "Go to source URL"
msgstr "الذهاب إلى عنوان URL المصدر"
#, fuzzy
msgid "Attach..."
msgstr "بحث..."
#, fuzzy
msgid "Choose an option"
msgstr "إظهار خيارات متقدمة"
msgid "Take photo" msgid "Take photo"
msgstr "التقاط صورة" msgstr "التقاط صورة"
@@ -1934,23 +2143,19 @@ msgstr "تحويل إلى ملاحظة"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "تحويل إلى قائمة مهام" msgstr "تحويل إلى قائمة مهام"
msgid "Hide metadata" #, fuzzy
msgstr "إخفاء البيانات الوصفية" msgid "Properties"
msgstr "خصائص الملاحظة"
msgid "Show metadata" msgid "Add body"
msgstr "إظهار البيانات الوصفية" msgstr ""
msgid "View on map"
msgstr "عرض على الخريطة"
msgid "Go to source URL"
msgstr "الذهاب إلى عنوان URL المصدر"
msgid "Edit" msgid "Edit"
msgstr "تحرير" msgstr "تحرير"
msgid "Delete notebook" #, fuzzy
msgstr "حذف دفتر الملاحظات" msgid "Add title"
msgstr "العنوان"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "تسجيل الدخول عبر OneDrive" msgstr "تسجيل الدخول عبر OneDrive"
@@ -1958,18 +2163,105 @@ msgstr "تسجيل الدخول عبر OneDrive"
msgid "Search" msgid "Search"
msgstr "بحث" msgstr "بحث"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "المزامنة قيد التقدم بالفعل. الحال: %s"
"menu to access your existing notebooks."
msgstr ""
"اضغط على زر (+) لتنشئ ملاحظة أو دفتر ملاحظات جديداً. اضغط على القائمة "
"الجانبية للوصول إلى دفاتر ملاحظاتك القائمة."
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "ليس لديك دفاتر ملاحظات حالياً. أنشئ واحدة بالضغط على زر (+)." #~ msgid "Confirm master password:"
#~ msgstr "أدخل كلمة المرور الرئيسة:"
msgid "Welcome" #, fuzzy
msgstr "مرحباً" #~ msgid "Confirm password"
#~ msgstr "أدخل كلمة المرور الرئيسة:"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "المعامل المطلوب %s مفقود"
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr "بدء تحرير الملاحظة. أغلق المحرر للعودة إلى المحث."
#~ msgid "Note has been saved."
#~ msgstr "تم حفظ الملاحظة."
#~ msgid "Sidebar"
#~ msgstr "الشريط الجانبي"
#~ msgid "Note title"
#~ msgstr "عنوان الملاحظة"
#~ msgid "Note body"
#~ msgstr "متن الملاحظة"
#~ msgid "Importing from \"%s\" as \"%s\" format. Please wait..."
#~ msgstr "الاستيراد من \"%s\" بتنسيق \"%s\". فضلاً انتظر..."
#~ msgid "Synchronisation status"
#~ msgstr "حالة المزامنة"
#~ msgid "Print"
#~ msgstr "اطبع"
#~ msgid "General Options"
#~ msgstr "الخيارات العامة"
#~ msgid "Encryption options"
#~ msgstr "خيارات التشفير"
#, fuzzy
#~ msgid "Insert template"
#~ msgstr "إدراج التاريخ والوقت"
#, fuzzy
#~ msgid "Open template directory"
#~ msgstr "دليل تصدير بيانات Joplin"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "خيارات التشفير"
#~ msgid "Clipper Options"
#~ msgstr "خيارات Clipper"
#, fuzzy
#~ msgid "Information"
#~ msgstr "الضبط"
#, fuzzy
#~ msgid "Permission to write to external storage"
#~ msgstr "الإذن باستخدام الكاميرا"
#~ msgid "Cancel synchronisation"
#~ msgstr "إلغاء المزامنة"
#~ msgid "Hide metadata"
#~ msgstr "إخفاء البيانات الوصفية"
#~ msgid "Show metadata"
#~ msgstr "إظهار البيانات الوصفية"
#~ msgid "Delete notebook"
#~ msgstr "حذف دفتر الملاحظات"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "اضغط على زر (+) لتنشئ ملاحظة أو دفتر ملاحظات جديداً. اضغط على القائمة "
#~ "الجانبية للوصول إلى دفاتر ملاحظاتك القائمة."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr "ليس لديك دفاتر ملاحظات حالياً. أنشئ واحدة بالضغط على زر (+)."
#~ msgid "Welcome"
#~ msgstr "مرحباً"
#~ msgid "Some items cannot be decrypted." #~ msgid "Some items cannot be decrypted."
#~ msgstr "لا يمكن فك تشفير بعض العناصر." #~ msgstr "لا يمكن فك تشفير بعض العناصر."
@@ -1983,9 +2275,3 @@ msgstr "مرحباً"
#~ msgstr "" #~ msgstr ""
#~ "المسار الذي ستتم المزامنة معه عند تفعيل مزامنة نظام الملفات. أنظر `sync." #~ "المسار الذي ستتم المزامنة معه عند تفعيل مزامنة نظام الملفات. أنظر `sync."
#~ "target`." #~ "target`."
#~ msgid "Remove?"
#~ msgstr "إزالة ؟"
#~ msgid "Joplin v%s"
#~ msgstr "Joplin نسخة %s"

2319
CliClient/locales/bg_BG.po Normal file

File diff suppressed because it is too large Load Diff

2207
CliClient/locales/bs_BA.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.3\n" "X-Generator: Poedit 2.2.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "To delete a tag, untag the associated notes." msgid "To delete a tag, untag the associated notes."
@@ -142,6 +142,12 @@ msgstr "Master-Passwort eingeben:"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "Vorgang abgebrochen" msgstr "Vorgang abgebrochen"
msgid "Confirm password:"
msgstr "Passwort bestätigen:"
msgid "Passwords do not match!"
msgstr "Passwörter sind nicht identisch!"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -178,18 +184,6 @@ msgstr "Kein aktives Notizbuch."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "Notiz \"%s\" existiert nicht. Soll sie erstellt werden?" msgstr "Notiz \"%s\" existiert nicht. Soll sie erstellt werden?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
"Beginne die Notiz zu bearbeiten. Schließe das Textverarbeitungsprogramm, um "
"zurück zum Terminal zu gelangen."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Fehler beim Öffnen der Notiz im Editor: %s"
msgid "Note has been saved."
msgstr "Die Notiz wurde gespeichert."
msgid "Exits the application." msgid "Exits the application."
msgstr "Beendet das Programm." msgstr "Beendet das Programm."
@@ -403,6 +397,26 @@ msgstr "Notiz löschen?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Sucht nach dem angegebenen <pattern> in allen Notizen." msgstr "Sucht nach dem angegebenen <pattern> in allen Notizen."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
"Starte, stoppe oder überprüfe den API Server. Um den Port zu spezifizieren "
"auf dem er laufen soll, setze die api.port Konfigurationsvariable. Die "
"Befehle lauten (%s)."
#, javascript-format
msgid "Server is already running on port %d"
msgstr "Der Server lauft schon auf Port %d"
#, javascript-format
msgid "Server is running on port %d"
msgstr "Der Server lauft auf Port %d"
msgid "Server is not running."
msgstr "Der Server ist nicht gestartet."
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -479,14 +493,16 @@ msgid "Cancelling... Please wait."
msgstr "Abbrechen... Bitte warten." msgstr "Abbrechen... Bitte warten."
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> kann „add“, „remove“ oder „list“ sein um [tag] zu [note] " "<tag-command> kann „add“, „remove“, „list“, oder „notetags“ sein um [tag] zu "
"hinzuzufügen oder zu entfernen, oder um die Notizen aufzulisten die [tag] " "[note] hinzuzufügen oder zu entfernen, um die Notizen aufzulisten die [tag] "
"zugeordnet sind. Der Befehl `tag list` kann benutzt werden, um alle " "zugeordnet sind, oder um die Schlagwörter aufzulisten, die [note] zugeordnet "
"Schlagwörter anzuzeigen (nutze -l für die lange Option)." "sind. Der Befehl `tag list` kann benutzt werden, um alle Schlagwörter "
"anzuzeigen (nutze -l für die lange Option)."
#, javascript-format #, javascript-format
msgid "Invalid command: \"%s\"" msgid "Invalid command: \"%s\""
@@ -597,54 +613,11 @@ msgstr ""
#, javascript-format #, javascript-format
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "Exportiere „%s“ ins „%s“ Format. Bitte warten..." msgstr "Exportiere „%s“ ins „%s“-Format. Bitte warten..."
msgid "Sidebar"
msgstr "Seitenleiste"
msgid "Note list"
msgstr "Notizen-Liste"
msgid "Note title"
msgstr "Notiz Titel"
msgid "Note body"
msgstr "Notiz Text"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "Importiere „%s“ ins „%s“ Format. Bitte warten..." msgstr "Konnte Notizen nicht exportieren: %s"
msgid "PDF File"
msgstr "PDF-Datei"
msgid "Synchronisation status"
msgstr "Status der Synchronisation"
msgid "New note"
msgstr "Neue Notiz"
msgid "New to-do"
msgstr "Neues To-Do"
msgid "New notebook"
msgstr "Neues Notizbuch"
msgid "Print"
msgstr "Drucken"
msgid "General Options"
msgstr "Allgemeine Einstellungen"
msgid "Encryption options"
msgstr "Verschlüsselungsoptionen"
msgid "Web clipper options"
msgstr "Web-Clipper Optionen"
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
msgid "&File" msgid "&File"
msgstr "&Datei" msgstr "&Datei"
@@ -658,6 +631,9 @@ msgstr "Einstellungen..."
msgid "Check for updates..." msgid "Check for updates..."
msgstr "Überprüfe auf Aktualisierungen..." msgstr "Überprüfe auf Aktualisierungen..."
msgid "Templates"
msgstr "Vorlagen"
msgid "Import" msgid "Import"
msgstr "Importieren" msgstr "Importieren"
@@ -701,12 +677,18 @@ msgstr "Kursiv"
msgid "Link" msgid "Link"
msgstr "Link" msgstr "Link"
msgid "Code"
msgstr "Code"
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "Datum / Uhrzeit einfügen" msgstr "Datum / Uhrzeit einfügen"
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "Im externen Editor bearbeiten" msgstr "Im externen Editor bearbeiten"
msgid "Tags"
msgstr "Schlagwörter"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Alle Notizen durchsuchen" msgstr "Alle Notizen durchsuchen"
@@ -717,7 +699,13 @@ msgid "&View"
msgstr "&Ansicht" msgstr "&Ansicht"
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "Seitenleiste umschalten" msgstr "Seitenleiste ein-/ausschalten"
msgid "Layout button sequence"
msgstr "Layout Reihenfolge"
msgid "Toggle note list"
msgstr "Notizen-Liste ein-/ausschalten"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "Editor-Layout umschalten" msgstr "Editor-Layout umschalten"
@@ -734,6 +722,9 @@ msgstr "&Hilfe"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Webseite und Dokumentation" msgstr "Webseite und Dokumentation"
msgid "Joplin Forum"
msgstr "Joplin Forum"
msgid "Make a donation" msgid "Make a donation"
msgstr "Spenden" msgstr "Spenden"
@@ -778,6 +769,9 @@ msgstr "Ja"
msgid "No" msgid "No"
msgstr "Nein" msgstr "Nein"
msgid "Full Release Notes"
msgstr "Alle Versionshinweise"
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "Token wurde in die Zwischenablage kopiert!" msgstr "Token wurde in die Zwischenablage kopiert!"
@@ -848,6 +842,10 @@ msgstr ""
"Dieses Autorisierung-Token wird nur benötigt, um Drittanbieter-Anwendungen " "Dieses Autorisierung-Token wird nur benötigt, um Drittanbieter-Anwendungen "
"Zugriff auf Joplin zu gewähren." "Zugriff auf Joplin zu gewähren."
msgid "This will open a new screen. Save your current changes?"
msgstr ""
"Diese Aktion wird ein neues Fenster öffnen. Aktuelle Änderungen speichern?"
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "Notizen und Einstellungen werden gespeichert in: %s" msgstr "Notizen und Einstellungen werden gespeichert in: %s"
@@ -858,6 +856,9 @@ msgstr "Überprüfen der Synchronisationseinstellungen"
msgid "Browse..." msgid "Browse..."
msgstr "Durchsuche..." msgstr "Durchsuche..."
msgid "Back"
msgstr "Zurück"
msgid "Apply" msgid "Apply"
msgstr "Anwenden" msgstr "Anwenden"
@@ -873,7 +874,7 @@ msgid ""
"continue?" "continue?"
msgstr "" msgstr ""
"Durch die Deaktivierung der Verschlüsselung werden *alle* Notizen und " "Durch die Deaktivierung der Verschlüsselung werden *alle* Notizen und "
"Anhänge neu synchronisiert und unverschlüsselt an das Synchronisierungsziel " "Anhänge neu synchronisiert und unverschlüsselt an das Synchronisationsziel "
"gesendet. Möchtest du fortfahren?" "gesendet. Möchtest du fortfahren?"
msgid "" msgid ""
@@ -939,8 +940,8 @@ msgstr ""
"Die Hauptschlüssel dieser IDs werden für die Verschlüsselung einiger ..." "Die Hauptschlüssel dieser IDs werden für die Verschlüsselung einiger ..."
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
"Weitere Informationen zur Ende-zu-Ende-Verschlüsselung (E2EE) und Hinweise " "Weitere Informationen zur Ende-zu-Ende-Verschlüsselung (E2EE) und Hinweise "
"zur Aktivierung findest du in der Dokumentation (auf Englisch):" "zur Aktivierung findest du in der Dokumentation (auf Englisch):"
@@ -951,13 +952,19 @@ msgstr "Status"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "Die Verschlüsselung ist:" msgstr "Die Verschlüsselung ist:"
msgid "Firefox Extension"
msgstr "Firefox Erweiterung"
msgid "Chrome Web Store"
msgstr "Chrome-Webstore"
msgid "Get it now:"
msgstr "Hole es jetzt:"
# 'Nutzung', 'Gebrauch', or 'Verwendung' - depends on the context # 'Nutzung', 'Gebrauch', or 'Verwendung' - depends on the context
msgid "Usage" msgid "Usage"
msgstr "Nutzung" msgstr "Nutzung"
msgid "Back"
msgstr "Zurück"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -986,6 +993,18 @@ msgstr "Schlagwort umbenennen:"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Alarm erstellen:" msgstr "Alarm erstellen:"
msgid "Template file:"
msgstr "Vorlagen-Datei:"
msgid "New note"
msgstr "Neue Notiz"
msgid "New to-do"
msgstr "Neues To-Do"
msgid "New notebook"
msgstr "Neues Notizbuch"
msgid "Layout" msgid "Layout"
msgstr "Layout" msgstr "Layout"
@@ -1024,6 +1043,9 @@ msgstr "URL"
msgid "Note History" msgid "Note History"
msgstr "Notizen-Verlauf" msgstr "Notizen-Verlauf"
msgid "Markup"
msgstr "Markup"
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "Vorherige Version von dieser Notiz" msgstr "Vorherige Version von dieser Notiz"
@@ -1039,6 +1061,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "Diese Notiz hat keinen Verlauf" msgstr "Diese Notiz hat keinen Verlauf"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Nicht unterstützter Link oder Nachricht: %s"
msgid "Restore" msgid "Restore"
msgstr "Wiederherstellen" msgstr "Wiederherstellen"
@@ -1070,10 +1096,6 @@ msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
"Dieser Anhang wurde nicht heruntergeladen oder noch nicht entschlüsselt." "Dieser Anhang wurde nicht heruntergeladen oder noch nicht entschlüsselt."
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Nicht unterstützter Link oder Nachricht: %s"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1085,6 +1107,13 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "Nur eine Notiz kann gedruckt oder als PDF exportiert werden." msgstr "Nur eine Notiz kann gedruckt oder als PDF exportiert werden."
msgid "PDF File"
msgstr "PDF-Datei"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Fehler beim Öffnen der Notiz im Editor: %s"
msgid "strong text" msgid "strong text"
msgstr "Fetter Text" msgstr "Fetter Text"
@@ -1100,9 +1129,6 @@ msgstr "Weblink einfügen"
msgid "Attach file" msgid "Attach file"
msgstr "Datei anhängen" msgstr "Datei anhängen"
msgid "Tags"
msgstr "Schlagwörter"
msgid "Set alarm" msgid "Set alarm"
msgstr "Alarm erstellen" msgstr "Alarm erstellen"
@@ -1113,9 +1139,6 @@ msgstr "In: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "Weblink" msgstr "Weblink"
msgid "Code"
msgstr "Code"
msgid "Numbered List" msgid "Numbered List"
msgstr "Nummerierte Liste" msgstr "Nummerierte Liste"
@@ -1165,11 +1188,8 @@ msgstr "Optionen"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Synchronisations-Status" msgstr "Synchronisations-Status"
msgid "Encryption Options" msgid "Remove"
msgstr "Verschlüsselungsoptionen" msgstr "Entfernen"
msgid "Clipper Options"
msgstr "Clipper-Einstellungen"
#, javascript-format #, javascript-format
msgid "" msgid ""
@@ -1181,6 +1201,9 @@ msgstr ""
"\n" "\n"
"Alle Notizen und Unternotizen darin werden ebenfalls gelöscht." "Alle Notizen und Unternotizen darin werden ebenfalls gelöscht."
msgid "Delete"
msgstr "Löschen"
#, javascript-format #, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "Schlagwort \"%s\" von allen Notizen entfernen?" msgstr "Schlagwort \"%s\" von allen Notizen entfernen?"
@@ -1188,8 +1211,8 @@ msgstr "Schlagwort \"%s\" von allen Notizen entfernen?"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "Diese Suche von der Seitenleiste entfernen?" msgstr "Diese Suche von der Seitenleiste entfernen?"
msgid "Delete" msgid "New sub-notebook"
msgstr "Löschen" msgstr "Neues Unternotizbuch"
msgid "Rename" msgid "Rename"
msgstr "Umbenennen" msgstr "Umbenennen"
@@ -1360,14 +1383,6 @@ msgstr "Wartend"
msgid "In progress" msgid "In progress"
msgstr "In Bearbeitung" msgstr "In Bearbeitung"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "Synchronisation ist bereits im Gange. Status: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr "Unbekannter Eintrags-Typ heruntergeladen - bitte aktualisiere Joplin"
msgid "Encrypted" msgid "Encrypted"
msgstr "Verschlüsselt" msgstr "Verschlüsselt"
@@ -1415,6 +1430,18 @@ msgstr ""
"neuen Ablageort kopiert hast, sonst werden alle Dateien gelöscht! Lies auch " "neuen Ablageort kopiert hast, sonst werden alle Dateien gelöscht! Lies auch "
"die FAQs hierzu: %s" "die FAQs hierzu: %s"
msgid "Keyboard Mode"
msgstr "Tastatur Modus"
msgid "Default"
msgstr "Standard"
msgid "Emacs"
msgstr "Emacs"
msgid "Vim"
msgstr "Vim"
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Synchronisationsziel" msgstr "Synchronisationsziel"
@@ -1490,6 +1517,38 @@ msgstr "Hell"
msgid "Dark" msgid "Dark"
msgstr "Dunkel" msgstr "Dunkel"
msgid "Dracula"
msgstr "Dracula"
msgid "Solarised Light"
msgstr "Solarized Hell"
msgid "Solarised Dark"
msgstr "Solarised Dark"
msgid "Nord"
msgstr "Nord"
msgid "Show note counts"
msgstr "Zeige Notizenanzahl"
msgid "Editor"
msgstr "Editor"
msgid "Viewer"
msgstr "Vorschau"
msgid "Split View"
msgstr "Geteilte Ansicht"
#, javascript-format
msgid "%s / %s / %s"
msgstr "%s / %s / %s"
#, javascript-format
msgid "%s / %s"
msgstr "%s / %s"
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "Zeige unvollständige To-Dos an oberster Stelle" msgstr "Zeige unvollständige To-Dos an oberster Stelle"
@@ -1523,6 +1582,9 @@ msgstr "Wenn eine neue Notiz erstellt wird:"
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "Aktiviere weiche Zeilenumbrüche" msgstr "Aktiviere weiche Zeilenumbrüche"
msgid "Enable typographer support"
msgstr "Aktiviere Typographie Unterstützung"
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "Aktiviere mathematische Ausdrücke" msgstr "Aktiviere mathematische Ausdrücke"
@@ -1556,6 +1618,9 @@ msgstr "Aktiviere ++insert++ Syntax"
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "Aktiviere multimarkdown Tabellen Erweiterung" msgstr "Aktiviere multimarkdown Tabellen Erweiterung"
msgid "Enable Fountain syntax support"
msgstr "Aktiviere Fountain Unterstützung"
msgid "Show tray icon" msgid "Show tray icon"
msgstr "Zeige Tray-Icon" msgstr "Zeige Tray-Icon"
@@ -1580,6 +1645,9 @@ msgstr "Zoomstufe der Benutzeroberfläche"
msgid "Editor font size" msgid "Editor font size"
msgstr "Schriftgröße im Editor" msgstr "Schriftgröße im Editor"
msgid "Editor font"
msgstr "Schriftgröße im Editor"
msgid "Editor font family" msgid "Editor font family"
msgstr "Schriftfamilie im Editor" msgstr "Schriftfamilie im Editor"
@@ -1626,8 +1694,35 @@ msgstr ""
"Der Editor, mit dem Notizen geöffnet werden. Wenn keiner ausgewählt wurde, " "Der Editor, mit dem Notizen geöffnet werden. Wenn keiner ausgewählt wurde, "
"wird Joplin versuchen den Standardeditor zu erkennen." "wird Joplin versuchen den Standardeditor zu erkennen."
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Erweiterte Optionen anzeigen" msgstr "Seitengröße für den PDF-Export"
msgid "A4"
msgstr "A4"
msgid "Letter"
msgstr "Letter"
msgid "A3"
msgstr "A3"
msgid "A5"
msgstr "A5"
msgid "Tabloid"
msgstr "Tabloid"
msgid "Legal"
msgstr "Legal"
msgid "Page orientation for PDF export"
msgstr "Seitenausrichtung für den PDF-Export"
msgid "Portrait"
msgstr "Hochformat"
msgid "Landscape"
msgstr "Querformat"
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "Benutzerdefinierte TLS-Zertifikate" msgstr "Benutzerdefinierte TLS-Zertifikate"
@@ -1647,6 +1742,21 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "Ignoriere TLS-Zertifikatfehler" msgstr "Ignoriere TLS-Zertifikatfehler"
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
"Störungssicher: Lösche nicht die lokalen Daten, wenn das "
"Synchronisationsziel leer ist (oft ein Resultat von Fehlkonfiguration oder "
"einem Programmfehler)"
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
"Spezifiziere den Port, der vom API Server verwendet werden soll. Wenn er "
"nicht gesetzt ist, wird ein Standardwert verwendet."
msgid "Enable note history" msgid "Enable note history"
msgstr "Aktiviere Notizen-Verlauf" msgstr "Aktiviere Notizen-Verlauf"
@@ -1683,6 +1793,12 @@ msgstr "Zusatzprogramme"
msgid "Application" msgid "Application"
msgstr "Applikation" msgstr "Applikation"
msgid "Encryption"
msgstr "Verschlüsselung"
msgid "Web Clipper"
msgstr "Web Clipper"
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1697,8 +1813,11 @@ msgstr "Markdown"
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "Joplin Export Verzeichnis" msgstr "Joplin Export Verzeichnis"
msgid "Evernote Export File" msgid "Evernote Export File (as Markdown)"
msgstr "Evernote Export Datei" msgstr "Evernote Export Datei (als Markdown)"
msgid "Evernote Export File (as HTML)"
msgstr "Evernote Export Datei (als HTML)"
msgid "Json Export Directory" msgid "Json Export Directory"
msgstr "Json Export Verzeichnis" msgstr "Json Export Verzeichnis"
@@ -1807,6 +1926,12 @@ msgstr "Berechtigung zur Verwendung der Kamera"
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "Deine Zustimmung zur Verwendung deiner Kamera ist erforderlich." msgstr "Deine Zustimmung zur Verwendung deiner Kamera ist erforderlich."
msgid "You currently have no notebooks."
msgstr "Du hast momentan keine Notizbücher."
msgid "Create a notebook"
msgstr "Notizbuch erstellen"
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
"Momentan existieren noch keine Notizen. Erstelle eine, indem du auf den (+) " "Momentan existieren noch keine Notizen. Erstelle eine, indem du auf den (+) "
@@ -1815,18 +1940,6 @@ msgstr ""
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Sollen diese Notizen gelöscht werden?" msgstr "Sollen diese Notizen gelöscht werden?"
msgid "Log"
msgstr "Protokoll"
msgid "Export Debug Report"
msgstr "Fehlerbericht exportieren"
msgid "Encryption Config"
msgstr "Verschlüsselungskonfiguration"
msgid "Configuration"
msgstr "Konfiguration"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "In Notizbuch verschieben..." msgstr "In Notizbuch verschieben..."
@@ -1849,8 +1962,21 @@ msgstr "Datum auswählen"
msgid "Confirm" msgid "Confirm"
msgstr "Bestätigen" msgstr "Bestätigen"
msgid "Cancel synchronisation" #, javascript-format
msgstr "Synchronisation abbrechen" msgid "Notebook: %s"
msgstr "Notizbuch: %s"
msgid "Encrypted notebooks cannot be renamed"
msgstr "Verschlüsselte Notizbücher können nicht umbenannt werden"
msgid "New Notebook"
msgstr "Neues Notizbuch"
msgid "Configuration"
msgstr "Konfiguration"
msgid "All notes"
msgstr "Alle Notizen"
msgid "Checking... Please wait." msgid "Checking... Please wait."
msgstr "Überprüfe… Bitte warten." msgstr "Überprüfe… Bitte warten."
@@ -1864,7 +1990,7 @@ msgid ""
"the sync target is accessible. The reported error was:" "the sync target is accessible. The reported error was:"
msgstr "" msgstr ""
"Fehler. Bitte überprüfe, ob die URL, der Benutzername, das Passwort. usw. " "Fehler. Bitte überprüfe, ob die URL, der Benutzername, das Passwort. usw. "
"korrekt sind und das das Synchronisierungsziel erreichbar ist. Fehlermeldung:" "korrekt sind und das das Synchronisationsziel erreichbar ist. Fehlermeldung:"
msgid "The application has been authorised!" msgid "The application has been authorised!"
msgstr "Das Programm wurde erfolgreich autorisiert!" msgstr "Das Programm wurde erfolgreich autorisiert!"
@@ -1893,6 +2019,48 @@ msgstr "Neue Schlagwörter:"
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "Neues Schlagwort eingeben oder aus der Liste auswählen" msgstr "Neues Schlagwort eingeben oder aus der Liste auswählen"
msgid "Warning"
msgstr "Warnung"
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
"Deine Erlaubnis auf externen Speicher zu schreiben ist notwendig um "
"Synchronisation mit dem Dateisystem zu verwenden."
msgid "Encryption Config"
msgstr "Verschlüsselungskonfiguration"
msgid "Tools"
msgstr "Werkzeuge"
msgid "Sync Status"
msgstr "Synchronisationsstatus"
msgid "Log"
msgstr "Protokoll"
msgid "Creating report..."
msgstr "Erstelle Bericht..."
msgid "Export Debug Report"
msgstr "Fehlerbericht exportieren"
msgid "Fixing search index..."
msgstr "Repariere Such-Index..."
msgid "Fix search index"
msgstr "Repariere Such-Index"
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
"Verwende das um den Such-Index wiederherzustellen, wenn es ein Problem mit "
"der Suche gibt. Je nachdem wieviele Notizen es gibt, kann dieser Prozess "
"etwas dauern."
msgid "More information" msgid "More information"
msgstr "Weitere Information" msgstr "Weitere Information"
@@ -1949,6 +2117,9 @@ msgstr "Passwort:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "Passwort darf nicht leer sein" msgstr "Passwort darf nicht leer sein"
msgid "Confirm password cannot be empty"
msgstr "Bestätigungs-Passwort darf nicht leer sein"
msgid "Enable" msgid "Enable"
msgstr "Aktivieren" msgstr "Aktivieren"
@@ -1959,6 +2130,9 @@ msgstr "Dieses Notizbuch konnte nicht gespeichert werden: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Notizbuch bearbeiten" msgstr "Notizbuch bearbeiten"
msgid "Enter notebook title"
msgstr "Notizbuch-Titel eingeben"
msgid "Show all" msgid "Show all"
msgstr "Zeige Alles" msgstr "Zeige Alles"
@@ -1983,10 +2157,30 @@ msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
"Die Joplin Handy-Applikation unterstützt derzeit diese Art von Link nicht: %s" "Die Joplin Handy-Applikation unterstützt derzeit diese Art von Link nicht: %s"
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr "Verweise mit dem Protokoll \"%s\" sind nicht unterstützt"
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "Nicht unterstütztes Fotoformat: %s" msgstr "Nicht unterstütztes Fotoformat: %s"
#, javascript-format
msgid "Updated: %s"
msgstr "Aktualisiert: %s"
msgid "View on map"
msgstr "Auf der Karte anzeigen"
msgid "Go to source URL"
msgstr "Zur Quell-URL gehen"
msgid "Attach..."
msgstr "Anhängen..."
msgid "Choose an option"
msgstr "Wähle eine Option"
msgid "Take photo" msgid "Take photo"
msgstr "Foto aufnehmen" msgstr "Foto aufnehmen"
@@ -2005,23 +2199,17 @@ msgstr "In eine Notiz umwandeln"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "In ein To-Do umwandeln" msgstr "In ein To-Do umwandeln"
msgid "Hide metadata" msgid "Properties"
msgstr "Metadaten verstecken" msgstr "Eigenschaften"
msgid "Show metadata" msgid "Add body"
msgstr "Metadaten anzeigen" msgstr "Text hinzufügen"
msgid "View on map"
msgstr "Auf der Karte anzeigen"
msgid "Go to source URL"
msgstr "Zur Quell-URL gehen"
msgid "Edit" msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
msgid "Delete notebook" msgid "Add title"
msgstr "Notizbuch löschen" msgstr "Titel hinzufügen"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "Mit OneDrive anmelden" msgstr "Mit OneDrive anmelden"
@@ -2029,21 +2217,123 @@ msgstr "Mit OneDrive anmelden"
msgid "Search" msgid "Search"
msgstr "Suchen" msgstr "Suchen"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "Synchronisation ist bereits im Gange. Status: %s"
"menu to access your existing notebooks."
msgstr ""
"Drücke auf die (+)-Schaltfläche, um eine neue Notiz oder ein neues Notizbuch "
"zu erstellen. Tippe auf die Seitenleiste, um auf deine existierenden "
"Notizbücher zuzugreifen."
msgid "You currently have no notebook. Create one by clicking on (+) button." #~ msgid "Confirm master password:"
msgstr "" #~ msgstr "Master-Passwort bestätigen:"
"Du hast noch kein Notizbuch angelegt. Erstelle eines, indem du auf den (+) "
"Knopf drückst."
msgid "Welcome" #~ msgid "Confirm password"
msgstr "Willkommen" #~ msgstr "Passwort bestätigen"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "Fehlendes erforderliches Argument: %s"
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr ""
#~ "Beginne die Notiz zu bearbeiten. Schließe das Textverarbeitungsprogramm, "
#~ "um zurück zum Terminal zu gelangen."
#~ msgid "Note has been saved."
#~ msgstr "Die Notiz wurde gespeichert."
#~ msgid "All potential ports are in use - please report the issue at %s"
#~ msgstr ""
#~ "Alle potentielle Port-Nummern sind in Verwendung - bitte melde dieses "
#~ "Problem auf %s"
#~ msgid "Sidebar"
#~ msgstr "Seitenleiste"
#~ msgid "Note title"
#~ msgstr "Notiz-Titel"
#~ msgid "Note body"
#~ msgstr "Notiz-Text"
#~ msgid "Importing from \"%s\" as \"%s\" format. Please wait..."
#~ msgstr "Importiere „%s“ als „%s“-Format. Bitte warten..."
#~ msgid "Synchronisation status"
#~ msgstr "Status der Synchronisation"
#~ msgid "Print"
#~ msgstr "Drucken"
#~ msgid "General Options"
#~ msgstr "Allgemeine Einstellungen"
#~ msgid "Encryption options"
#~ msgstr "Verschlüsselungsoptionen"
#~ msgid "Create note from template"
#~ msgstr "Erstelle Notiz von Vorlage"
#~ msgid "Create to-do from template"
#~ msgstr "Erstelle To-Do von Vorlage"
#~ msgid "Insert template"
#~ msgstr "Vorlage einfügen"
#~ msgid "Open template directory"
#~ msgstr "Öffne Vorlagen Verzeichnis"
#~ msgid "Refresh templates"
#~ msgstr "Aktualisiere Vorlagen"
#~ msgid "Revision: %s (%s)"
#~ msgstr "Revision: %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "Verschlüsselungsoptionen"
#~ msgid "Clipper Options"
#~ msgstr "Clipper-Einstellungen"
#~ msgid ""
#~ "Unknown item type downloaded - please upgrade Joplin to the latest version"
#~ msgstr ""
#~ "Unbekannter Eintrags-Typ heruntergeladen - bitte aktualisiere Joplin"
#~ msgid "Information"
#~ msgstr "Information"
#, fuzzy
#~ msgid "Permission to write to external storage"
#~ msgstr "Berechtigung zur Verwendung der Kamera"
#~ msgid "Cancel synchronisation"
#~ msgstr "Synchronisation abbrechen"
#~ msgid "Hide metadata"
#~ msgstr "Metadaten verstecken"
#~ msgid "Show metadata"
#~ msgstr "Metadaten anzeigen"
#~ msgid "Delete notebook"
#~ msgstr "Notizbuch löschen"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "Drücke auf die (+)-Schaltfläche, um eine neue Notiz oder ein neues "
#~ "Notizbuch zu erstellen. Tippe auf die Seitenleiste, um auf deine "
#~ "existierenden Notizbücher zuzugreifen."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr ""
#~ "Du hast noch kein Notizbuch angelegt. Erstelle eines, indem du auf den "
#~ "(+) Knopf drückst."
#~ msgid "Welcome"
#~ msgstr "Willkommen"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Trenne jedes Schlagwort mit einem Komma." #~ msgstr "Trenne jedes Schlagwort mit einem Komma."
@@ -2064,15 +2354,6 @@ msgstr "Willkommen"
#~ "Der Pfad, mit dem synchronisiert werden soll, wenn die Dateisystem-" #~ "Der Pfad, mit dem synchronisiert werden soll, wenn die Dateisystem-"
#~ "Synchronisation aktiviert ist. Siehe `sync.target`." #~ "Synchronisation aktiviert ist. Siehe `sync.target`."
#~ msgid "Joplin v%s"
#~ msgstr "Joplin v%s"
#~ msgid "Remove?"
#~ msgstr "Löschen?"
#~ msgid "Delete notes?"
#~ msgstr "Notizen löschen?"
#~ msgid "State: %s." #~ msgid "State: %s."
#~ msgstr "Status: %s." #~ msgstr "Status: %s."
@@ -2082,15 +2363,6 @@ msgstr "Willkommen"
#~ msgid "Searches" #~ msgid "Searches"
#~ msgstr "Suchen" #~ msgstr "Suchen"
#~ msgid ""
#~ "Release notes:\n"
#~ "\n"
#~ "%s"
#~ msgstr ""
#~ "Versionshinweise:\n"
#~ "\n"
#~ "%s"
#~ msgid "Imports an Evernote notebook file (.enex file)." #~ msgid "Imports an Evernote notebook file (.enex file)."
#~ msgstr "Importiert eine Evernote Notizbuch-Datei (.enex Datei)." #~ msgstr "Importiert eine Evernote Notizbuch-Datei (.enex Datei)."
@@ -2128,9 +2400,6 @@ msgstr "Willkommen"
#~ msgid "Exit the application." #~ msgid "Exit the application."
#~ msgstr "Das Programm verlassen." #~ msgstr "Das Programm verlassen."
#~ msgid "Delete the currently selected note or notebook."
#~ msgstr "Die/das momentan ausgewählte Notiz(-buch) löschen."
#~ msgid "Set a to-do as completed / not completed" #~ msgid "Set a to-do as completed / not completed"
#~ msgstr "Ein To-Do als abgeschlossen / nicht abgeschlossen markieren" #~ msgstr "Ein To-Do als abgeschlossen / nicht abgeschlossen markieren"

2256
CliClient/locales/el_GR.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -128,6 +128,12 @@ msgstr ""
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "" msgstr ""
msgid "Confirm password:"
msgstr ""
msgid "Passwords do not match!"
msgstr ""
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -160,16 +166,6 @@ msgstr ""
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "" msgstr ""
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "Note has been saved."
msgstr ""
msgid "Exits the application." msgid "Exits the application."
msgstr "" msgstr ""
@@ -353,6 +349,23 @@ msgstr ""
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "" msgstr ""
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -415,9 +428,10 @@ msgid "Cancelling... Please wait."
msgstr "" msgstr ""
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -508,51 +522,8 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "" msgstr ""
msgid "Sidebar"
msgstr ""
msgid "Note list"
msgstr ""
msgid "Note title"
msgstr ""
msgid "Note body"
msgstr ""
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr ""
msgid "PDF File"
msgstr ""
msgid "Synchronisation status"
msgstr ""
msgid "New note"
msgstr ""
msgid "New to-do"
msgstr ""
msgid "New notebook"
msgstr ""
msgid "Print"
msgstr ""
msgid "General Options"
msgstr ""
msgid "Encryption options"
msgstr ""
msgid "Web clipper options"
msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "" msgstr ""
msgid "&File" msgid "&File"
@@ -567,6 +538,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "" msgstr ""
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -610,12 +584,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "" msgstr ""
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "" msgstr ""
msgid "Tags"
msgstr ""
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "" msgstr ""
@@ -628,6 +608,12 @@ msgstr ""
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
msgid "Toggle note list"
msgstr ""
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "" msgstr ""
@@ -643,6 +629,9 @@ msgstr ""
msgid "Website and documentation" msgid "Website and documentation"
msgstr "" msgstr ""
msgid "Joplin Forum"
msgstr ""
msgid "Make a donation" msgid "Make a donation"
msgstr "" msgstr ""
@@ -686,6 +675,9 @@ msgstr ""
msgid "No" msgid "No"
msgstr "" msgstr ""
msgid "Full Release Notes"
msgstr ""
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -746,6 +738,9 @@ msgid ""
"access Joplin." "access Joplin."
msgstr "" msgstr ""
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "" msgstr ""
@@ -756,6 +751,9 @@ msgstr ""
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr ""
msgid "Apply" msgid "Apply"
msgstr "" msgstr ""
@@ -824,8 +822,8 @@ msgid ""
msgstr "" msgstr ""
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -834,10 +832,16 @@ msgstr ""
msgid "Encryption is:" msgid "Encryption is:"
msgstr "" msgstr ""
msgid "Usage" msgid "Firefox Extension"
msgstr "" msgstr ""
msgid "Back" msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
msgid "Usage"
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -866,6 +870,18 @@ msgstr ""
msgid "Set alarm:" msgid "Set alarm:"
msgstr "" msgstr ""
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr ""
msgid "New to-do"
msgstr ""
msgid "New notebook"
msgstr ""
msgid "Layout" msgid "Layout"
msgstr "" msgstr ""
@@ -900,6 +916,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "" msgstr ""
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -913,6 +932,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -941,10 +964,6 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -954,6 +973,13 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
msgid "PDF File"
msgstr ""
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -969,9 +995,6 @@ msgstr ""
msgid "Attach file" msgid "Attach file"
msgstr "" msgstr ""
msgid "Tags"
msgstr ""
msgid "Set alarm" msgid "Set alarm"
msgstr "" msgstr ""
@@ -982,9 +1005,6 @@ msgstr ""
msgid "Hyperlink" msgid "Hyperlink"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Numbered List" msgid "Numbered List"
msgstr "" msgstr ""
@@ -1034,10 +1054,7 @@ msgstr ""
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "" msgstr ""
msgid "Encryption Options" msgid "Remove"
msgstr ""
msgid "Clipper Options"
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -1047,6 +1064,9 @@ msgid ""
"All notes and sub-notebooks within this notebook will also be deleted." "All notes and sub-notebooks within this notebook will also be deleted."
msgstr "" msgstr ""
msgid "Delete"
msgstr ""
#, javascript-format #, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "" msgstr ""
@@ -1054,7 +1074,7 @@ msgstr ""
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "" msgstr ""
msgid "Delete" msgid "New sub-notebook"
msgstr "" msgstr ""
msgid "Rename" msgid "Rename"
@@ -1215,14 +1235,6 @@ msgstr ""
msgid "In progress" msgid "In progress"
msgstr "" msgstr ""
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr ""
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "" msgstr ""
@@ -1266,6 +1278,18 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
msgid "Default"
msgstr ""
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "" msgstr ""
@@ -1334,6 +1358,38 @@ msgstr ""
msgid "Dark" msgid "Dark"
msgstr "" msgstr ""
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
msgid "Show note counts"
msgstr ""
msgid "Editor"
msgstr ""
msgid "Viewer"
msgstr ""
msgid "Split View"
msgstr ""
#, javascript-format
msgid "%s / %s / %s"
msgstr ""
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "" msgstr ""
@@ -1367,6 +1423,9 @@ msgstr ""
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "" msgstr ""
@@ -1400,6 +1459,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "" msgstr ""
@@ -1421,6 +1483,9 @@ msgstr ""
msgid "Editor font size" msgid "Editor font size"
msgstr "" msgstr ""
msgid "Editor font"
msgstr ""
msgid "Editor font family" msgid "Editor font family"
msgstr "" msgstr ""
@@ -1462,7 +1527,34 @@ msgid ""
"If none is provided it will try to auto-detect the default editor." "If none is provided it will try to auto-detect the default editor."
msgstr "" msgstr ""
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr "" msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
@@ -1478,6 +1570,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "" msgstr ""
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
msgid "Enable note history" msgid "Enable note history"
msgstr "" msgstr ""
@@ -1513,6 +1615,12 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "" msgstr ""
msgid "Encryption"
msgstr ""
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1526,7 +1634,10 @@ msgstr ""
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "" msgstr ""
msgid "Evernote Export File" msgid "Evernote Export File (as Markdown)"
msgstr ""
msgid "Evernote Export File (as HTML)"
msgstr "" msgstr ""
msgid "Json Export Directory" msgid "Json Export Directory"
@@ -1626,24 +1737,18 @@ msgstr ""
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "" msgstr ""
msgid "You currently have no notebooks."
msgstr ""
msgid "Create a notebook"
msgstr ""
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "" msgstr ""
msgid "Log"
msgstr ""
msgid "Export Debug Report"
msgstr ""
msgid "Encryption Config"
msgstr ""
msgid "Configuration"
msgstr ""
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "" msgstr ""
@@ -1666,7 +1771,20 @@ msgstr ""
msgid "Confirm" msgid "Confirm"
msgstr "" msgstr ""
msgid "Cancel synchronisation" #, javascript-format
msgid "Notebook: %s"
msgstr ""
msgid "Encrypted notebooks cannot be renamed"
msgstr ""
msgid "New Notebook"
msgstr ""
msgid "Configuration"
msgstr ""
msgid "All notes"
msgstr "" msgstr ""
msgid "Checking... Please wait." msgid "Checking... Please wait."
@@ -1702,6 +1820,43 @@ msgstr ""
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "" msgstr ""
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr ""
msgid "Tools"
msgstr ""
msgid "Sync Status"
msgstr ""
msgid "Log"
msgstr ""
msgid "Creating report..."
msgstr ""
msgid "Export Debug Report"
msgstr ""
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
msgid "More information" msgid "More information"
msgstr "" msgstr ""
@@ -1752,6 +1907,9 @@ msgstr ""
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "" msgstr ""
msgid "Confirm password cannot be empty"
msgstr ""
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
@@ -1762,6 +1920,9 @@ msgstr ""
msgid "Edit notebook" msgid "Edit notebook"
msgstr "" msgstr ""
msgid "Enter notebook title"
msgstr ""
msgid "Show all" msgid "Show all"
msgstr "" msgstr ""
@@ -1785,10 +1946,30 @@ msgstr ""
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Updated: %s"
msgstr ""
msgid "View on map"
msgstr ""
msgid "Go to source URL"
msgstr ""
msgid "Attach..."
msgstr ""
msgid "Choose an option"
msgstr ""
msgid "Take photo" msgid "Take photo"
msgstr "" msgstr ""
@@ -1807,22 +1988,16 @@ msgstr ""
msgid "Convert to todo" msgid "Convert to todo"
msgstr "" msgstr ""
msgid "Hide metadata" msgid "Properties"
msgstr "" msgstr ""
msgid "Show metadata" msgid "Add body"
msgstr ""
msgid "View on map"
msgstr ""
msgid "Go to source URL"
msgstr "" msgstr ""
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
msgid "Delete notebook" msgid "Add title"
msgstr "" msgstr ""
msgid "Login with OneDrive" msgid "Login with OneDrive"
@@ -1830,14 +2005,3 @@ msgstr ""
msgid "Search" msgid "Search"
msgstr "" msgstr ""
msgid ""
"Click on the (+) button to create a new note or notebook. Click on the side "
"menu to access your existing notebooks."
msgstr ""
msgid "You currently have no notebook. Create one by clicking on (+) button."
msgstr ""
msgid "Welcome"
msgstr ""

View File

@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.1\n" "X-Generator: Poedit 2.2.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "To delete a tag, untag the associated notes." msgid "To delete a tag, untag the associated notes."
@@ -129,6 +129,12 @@ msgstr ""
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "" msgstr ""
msgid "Confirm password:"
msgstr ""
msgid "Passwords do not match!"
msgstr ""
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -161,16 +167,6 @@ msgstr ""
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "" msgstr ""
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "Note has been saved."
msgstr ""
msgid "Exits the application." msgid "Exits the application."
msgstr "" msgstr ""
@@ -354,6 +350,23 @@ msgstr ""
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "" msgstr ""
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -420,9 +433,10 @@ msgid "Cancelling... Please wait."
msgstr "" msgstr ""
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -514,51 +528,8 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "" msgstr ""
msgid "Sidebar"
msgstr ""
msgid "Note list"
msgstr ""
msgid "Note title"
msgstr ""
msgid "Note body"
msgstr ""
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr ""
msgid "PDF File"
msgstr ""
msgid "Synchronisation status"
msgstr "Synchronization status"
msgid "New note"
msgstr ""
msgid "New to-do"
msgstr ""
msgid "New notebook"
msgstr ""
msgid "Print"
msgstr ""
msgid "General Options"
msgstr ""
msgid "Encryption options"
msgstr ""
msgid "Web clipper options"
msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "" msgstr ""
msgid "&File" msgid "&File"
@@ -573,6 +544,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "" msgstr ""
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -616,12 +590,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "" msgstr ""
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "" msgstr ""
msgid "Tags"
msgstr ""
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Search in all notes" msgstr "Search in all notes"
@@ -634,6 +614,12 @@ msgstr ""
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
msgid "Toggle note list"
msgstr ""
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "" msgstr ""
@@ -649,6 +635,9 @@ msgstr ""
msgid "Website and documentation" msgid "Website and documentation"
msgstr "" msgstr ""
msgid "Joplin Forum"
msgstr ""
msgid "Make a donation" msgid "Make a donation"
msgstr "" msgstr ""
@@ -692,6 +681,9 @@ msgstr ""
msgid "No" msgid "No"
msgstr "" msgstr ""
msgid "Full Release Notes"
msgstr ""
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -754,6 +746,9 @@ msgstr ""
"This authorization token is only needed to allow third-party applications to " "This authorization token is only needed to allow third-party applications to "
"access Joplin." "access Joplin."
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "" msgstr ""
@@ -764,6 +759,9 @@ msgstr "Check synchronization configuration"
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr ""
msgid "Apply" msgid "Apply"
msgstr "" msgstr ""
@@ -842,8 +840,8 @@ msgstr ""
"they will eventually be downloaded via synchronization." "they will eventually be downloaded via synchronization."
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -852,10 +850,16 @@ msgstr ""
msgid "Encryption is:" msgid "Encryption is:"
msgstr "" msgstr ""
msgid "Usage" msgid "Firefox Extension"
msgstr "" msgstr ""
msgid "Back" msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
msgid "Usage"
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -884,6 +888,18 @@ msgstr ""
msgid "Set alarm:" msgid "Set alarm:"
msgstr "" msgstr ""
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr ""
msgid "New to-do"
msgstr ""
msgid "New notebook"
msgstr ""
msgid "Layout" msgid "Layout"
msgstr "" msgstr ""
@@ -918,6 +934,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "" msgstr ""
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -931,6 +950,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -959,10 +982,6 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -972,6 +991,13 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
msgid "PDF File"
msgstr ""
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -987,9 +1013,6 @@ msgstr ""
msgid "Attach file" msgid "Attach file"
msgstr "" msgstr ""
msgid "Tags"
msgstr ""
msgid "Set alarm" msgid "Set alarm"
msgstr "" msgstr ""
@@ -1000,9 +1023,6 @@ msgstr ""
msgid "Hyperlink" msgid "Hyperlink"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Numbered List" msgid "Numbered List"
msgstr "" msgstr ""
@@ -1052,10 +1072,7 @@ msgstr ""
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Synchronization Status" msgstr "Synchronization Status"
msgid "Encryption Options" msgid "Remove"
msgstr ""
msgid "Clipper Options"
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -1065,6 +1082,9 @@ msgid ""
"All notes and sub-notebooks within this notebook will also be deleted." "All notes and sub-notebooks within this notebook will also be deleted."
msgstr "" msgstr ""
msgid "Delete"
msgstr ""
#, javascript-format #, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "" msgstr ""
@@ -1072,7 +1092,7 @@ msgstr ""
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "" msgstr ""
msgid "Delete" msgid "New sub-notebook"
msgstr "" msgstr ""
msgid "Rename" msgid "Rename"
@@ -1235,14 +1255,6 @@ msgstr ""
msgid "In progress" msgid "In progress"
msgstr "" msgstr ""
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "Synchronization is already in progress. State: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "" msgstr ""
@@ -1286,6 +1298,18 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
msgid "Default"
msgstr ""
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Synchronization target" msgstr "Synchronization target"
@@ -1318,7 +1342,7 @@ msgid "WebDAV password"
msgstr "" msgstr ""
msgid "Attachment download behaviour" msgid "Attachment download behaviour"
msgstr "" msgstr "Attachment download behavior"
msgid "" msgid ""
"In \"Manual\" mode, attachments are downloaded only when you click on them. " "In \"Manual\" mode, attachments are downloaded only when you click on them. "
@@ -1356,6 +1380,38 @@ msgstr ""
msgid "Dark" msgid "Dark"
msgstr "" msgstr ""
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr "Solarized Light"
msgid "Solarised Dark"
msgstr "Solarized Dark"
msgid "Nord"
msgstr ""
msgid "Show note counts"
msgstr ""
msgid "Editor"
msgstr ""
msgid "Viewer"
msgstr ""
msgid "Split View"
msgstr ""
#, javascript-format
msgid "%s / %s / %s"
msgstr ""
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "" msgstr ""
@@ -1389,6 +1445,9 @@ msgstr ""
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "" msgstr ""
@@ -1422,6 +1481,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "" msgstr ""
@@ -1446,6 +1508,9 @@ msgstr ""
msgid "Editor font size" msgid "Editor font size"
msgstr "" msgstr ""
msgid "Editor font"
msgstr ""
msgid "Editor font family" msgid "Editor font family"
msgstr "" msgstr ""
@@ -1487,7 +1552,34 @@ msgid ""
"If none is provided it will try to auto-detect the default editor." "If none is provided it will try to auto-detect the default editor."
msgstr "" msgstr ""
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr "" msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
@@ -1503,6 +1595,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "" msgstr ""
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
msgid "Enable note history" msgid "Enable note history"
msgstr "" msgstr ""
@@ -1538,6 +1640,12 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "" msgstr ""
msgid "Encryption"
msgstr ""
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1551,7 +1659,10 @@ msgstr ""
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "" msgstr ""
msgid "Evernote Export File" msgid "Evernote Export File (as Markdown)"
msgstr ""
msgid "Evernote Export File (as HTML)"
msgstr "" msgstr ""
msgid "Json Export Directory" msgid "Json Export Directory"
@@ -1603,9 +1714,8 @@ msgstr ""
msgid "Item \"%s\" could not be downloaded: %s" msgid "Item \"%s\" could not be downloaded: %s"
msgstr "" msgstr ""
#, fuzzy
msgid "Items that cannot be decrypted" msgid "Items that cannot be decrypted"
msgstr "Items that cannot be synchronized" msgstr ""
msgid "" msgid ""
"Joplin failed to decrypt these items multiple times, possibly because they " "Joplin failed to decrypt these items multiple times, possibly because they "
@@ -1640,7 +1750,7 @@ msgid "%s: %d notes"
msgstr "" msgstr ""
msgid "Coming alarms" msgid "Coming alarms"
msgstr "" msgstr "Scheduled alarms"
#, javascript-format #, javascript-format
msgid "On %s: %s" msgid "On %s: %s"
@@ -1652,24 +1762,18 @@ msgstr ""
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "" msgstr ""
msgid "You currently have no notebooks."
msgstr ""
msgid "Create a notebook"
msgstr ""
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "" msgstr ""
msgid "Log"
msgstr ""
msgid "Export Debug Report"
msgstr ""
msgid "Encryption Config"
msgstr ""
msgid "Configuration"
msgstr ""
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "" msgstr ""
@@ -1692,8 +1796,21 @@ msgstr ""
msgid "Confirm" msgid "Confirm"
msgstr "" msgstr ""
msgid "Cancel synchronisation" #, javascript-format
msgstr "Cancel synchronization" msgid "Notebook: %s"
msgstr ""
msgid "Encrypted notebooks cannot be renamed"
msgstr ""
msgid "New Notebook"
msgstr ""
msgid "Configuration"
msgstr ""
msgid "All notes"
msgstr ""
msgid "Checking... Please wait." msgid "Checking... Please wait."
msgstr "" msgstr ""
@@ -1733,6 +1850,43 @@ msgstr ""
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "" msgstr ""
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr ""
msgid "Tools"
msgstr ""
msgid "Sync Status"
msgstr ""
msgid "Log"
msgstr ""
msgid "Creating report..."
msgstr ""
msgid "Export Debug Report"
msgstr ""
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
msgid "More information" msgid "More information"
msgstr "" msgstr ""
@@ -1785,6 +1939,9 @@ msgstr ""
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "" msgstr ""
msgid "Confirm password cannot be empty"
msgstr ""
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
@@ -1795,6 +1952,9 @@ msgstr ""
msgid "Edit notebook" msgid "Edit notebook"
msgstr "" msgstr ""
msgid "Enter notebook title"
msgstr ""
msgid "Show all" msgid "Show all"
msgstr "" msgstr ""
@@ -1818,10 +1978,30 @@ msgstr ""
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Updated: %s"
msgstr ""
msgid "View on map"
msgstr ""
msgid "Go to source URL"
msgstr ""
msgid "Attach..."
msgstr ""
msgid "Choose an option"
msgstr ""
msgid "Take photo" msgid "Take photo"
msgstr "" msgstr ""
@@ -1840,22 +2020,16 @@ msgstr ""
msgid "Convert to todo" msgid "Convert to todo"
msgstr "" msgstr ""
msgid "Hide metadata" msgid "Properties"
msgstr "" msgstr ""
msgid "Show metadata" msgid "Add body"
msgstr ""
msgid "View on map"
msgstr ""
msgid "Go to source URL"
msgstr "" msgstr ""
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
msgid "Delete notebook" msgid "Add title"
msgstr "" msgstr ""
msgid "Login with OneDrive" msgid "Login with OneDrive"
@@ -1864,13 +2038,11 @@ msgstr ""
msgid "Search" msgid "Search"
msgstr "" msgstr ""
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "Synchronization is already in progress. State: %s"
"menu to access your existing notebooks."
msgstr ""
msgid "You currently have no notebook. Create one by clicking on (+) button." #~ msgid "Synchronisation status"
msgstr "" #~ msgstr "Synchronization status"
msgid "Welcome" #~ msgid "Cancel synchronisation"
msgstr "" #~ msgstr "Cancel synchronization"

2022
CliClient/locales/eo.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -139,6 +139,14 @@ msgstr "Sartu pasahitz nagusia:"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr " Eragiketa utzita" msgstr " Eragiketa utzita"
#, fuzzy
msgid "Confirm password:"
msgstr "Sartu pasahitz nagusia:"
#, fuzzy
msgid "Passwords do not match!"
msgstr "Pasahitza ezin utz daiteke hutsik"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -175,16 +183,6 @@ msgstr "Ez dago koadernorik aukeratuta."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "Ez dago oharrik: \"%s\". Sortu?" msgstr "Ez dago oharrik: \"%s\". Sortu?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr "Oharra editatzearen hasiera. Itxi editorea prompt-era bueltatzeko."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Errorea editorean oharra zabaltzean: %s"
msgid "Note has been saved."
msgstr "Oharra gorde da."
msgid "Exits the application." msgid "Exits the application."
msgstr "Irten aplikaziotik." msgstr "Irten aplikaziotik."
@@ -391,6 +389,23 @@ msgstr "Oharra ezabatu?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Emandako <pattern> bilatzen du ohar guztietan." msgstr "Emandako <pattern> bilatzen du ohar guztietan."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -464,9 +479,10 @@ msgstr "Bertan behera uzten... itxaron, mesedez."
#, fuzzy #, fuzzy
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> izan daiteke \"add\", \"remove\" edo \"list\" [oharra]tik " "<tag-command> izan daiteke \"add\", \"remove\" edo \"list\" [oharra]tik "
"[etiketa] esleitu edo kentzeko, edo [etiketa]rekin elkartutako oharrak " "[etiketa] esleitu edo kentzeko, edo [etiketa]rekin elkartutako oharrak "
@@ -583,56 +599,10 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "" msgstr ""
msgid "Sidebar"
msgstr ""
msgid "Note list"
msgstr ""
#, fuzzy
msgid "Note title"
msgstr "Koadernoaren izenburua: "
#, fuzzy
msgid "Note body"
msgstr "Koadernoak"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "" msgstr ""
#, fuzzy
msgid "PDF File"
msgstr "Fitxategia"
msgid "Synchronisation status"
msgstr "Sinkronizazioaren egoera"
msgid "New note"
msgstr "Ohar berria"
msgid "New to-do"
msgstr "Zeregin berria"
msgid "New notebook"
msgstr "Koaderno berria"
msgid "Print"
msgstr ""
msgid "General Options"
msgstr "Ezarpenak"
msgid "Encryption options"
msgstr "Zifratzeko aukerak"
msgid "Web clipper options"
msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
#, fuzzy #, fuzzy
msgid "&File" msgid "&File"
msgstr "Fitxategia" msgstr "Fitxategia"
@@ -646,6 +616,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "" msgstr ""
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "Inportatu" msgstr "Inportatu"
@@ -692,12 +665,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "" msgstr ""
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "" msgstr ""
msgid "Tags"
msgstr "Etiketak"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Bilatu ohar guztietan" msgstr "Bilatu ohar guztietan"
@@ -711,6 +690,13 @@ msgstr ""
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "Zifratua gaitu"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "" msgstr ""
@@ -728,6 +714,10 @@ msgstr "Laguntza"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Web orria eta dokumentazioa (en)" msgstr "Web orria eta dokumentazioa (en)"
#, fuzzy
msgid "Joplin Forum"
msgstr "Evernotetik esportatutako fitxategiak"
#, fuzzy #, fuzzy
msgid "Make a donation" msgid "Make a donation"
msgstr "Web orria eta dokumentazioa (en)" msgstr "Web orria eta dokumentazioa (en)"
@@ -773,6 +763,10 @@ msgstr ""
msgid "No" msgid "No"
msgstr "E" msgstr "E"
#, fuzzy
msgid "Full Release Notes"
msgstr "Oharrak ezabatu?"
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -834,6 +828,9 @@ msgid ""
"access Joplin." "access Joplin."
msgstr "" msgstr ""
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "Oharrak eta ezarpenak hemen daude gordeta: %s" msgstr "Oharrak eta ezarpenak hemen daude gordeta: %s"
@@ -845,6 +842,9 @@ msgstr "Sinkronizazioa utzi"
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr "Atzera"
msgid "Apply" msgid "Apply"
msgstr "" msgstr ""
@@ -925,8 +925,8 @@ msgid ""
msgstr "" msgstr ""
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -935,13 +935,19 @@ msgstr "Egoera"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "Zifratua da:" msgstr "Zifratua da:"
msgid "Firefox Extension"
msgstr ""
msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
#, fuzzy #, fuzzy
msgid "Usage" msgid "Usage"
msgstr "Erabili: %s" msgstr "Erabili: %s"
msgid "Back"
msgstr "Atzera"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -971,6 +977,18 @@ msgstr "Berrizendatu"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Ezarri alarma:" msgstr "Ezarri alarma:"
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "Ohar berria"
msgid "New to-do"
msgstr "Zeregin berria"
msgid "New notebook"
msgstr "Koaderno berria"
msgid "Layout" msgid "Layout"
msgstr "Diseinua" msgstr "Diseinua"
@@ -1008,6 +1026,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "Koadernoak" msgstr "Koadernoak"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -1022,6 +1043,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "Ohar hau mugitua izan da:" msgstr "Ohar hau mugitua izan da:"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Esteka edo mezu ez dago onartua: %s"
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -1051,10 +1076,6 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Esteka edo mezu ez dago onartua: %s"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1064,6 +1085,14 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
#, fuzzy
msgid "PDF File"
msgstr "Fitxategia"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Errorea editorean oharra zabaltzean: %s"
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -1079,9 +1108,6 @@ msgstr ""
msgid "Attach file" msgid "Attach file"
msgstr "Erantsi fitxategia" msgstr "Erantsi fitxategia"
msgid "Tags"
msgstr "Etiketak"
msgid "Set alarm" msgid "Set alarm"
msgstr "Ezarri alarma" msgstr "Ezarri alarma"
@@ -1092,9 +1118,6 @@ msgstr "%s: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Numbered List" msgid "Numbered List"
msgstr "" msgstr ""
@@ -1148,12 +1171,8 @@ msgstr "Aukerak"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Sinkronizazioaren egoera" msgstr "Sinkronizazioaren egoera"
msgid "Encryption Options" msgid "Remove"
msgstr "Zifratzeko aukerak" msgstr ""
#, fuzzy
msgid "Clipper Options"
msgstr "Ezarpenak"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "" msgid ""
@@ -1162,6 +1181,9 @@ msgid ""
"All notes and sub-notebooks within this notebook will also be deleted." "All notes and sub-notebooks within this notebook will also be deleted."
msgstr "Koadernoa ezabatu? Dituen ohar guztiak ere ezabatuko dira." msgstr "Koadernoa ezabatu? Dituen ohar guztiak ere ezabatuko dira."
msgid "Delete"
msgstr "Ezabatu"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "Kendu etiketa hori ohar guztietatik?" msgstr "Kendu etiketa hori ohar guztietatik?"
@@ -1169,8 +1191,9 @@ msgstr "Kendu etiketa hori ohar guztietatik?"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "Kendu bilaketa hori ohar guztietatik?" msgstr "Kendu bilaketa hori ohar guztietatik?"
msgid "Delete" #, fuzzy
msgstr "Ezabatu" msgid "New sub-notebook"
msgstr "Koaderno berria"
msgid "Rename" msgid "Rename"
msgstr "Berrizendatu" msgstr "Berrizendatu"
@@ -1343,14 +1366,6 @@ msgstr ""
msgid "In progress" msgid "In progress"
msgstr "" msgstr ""
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "Sinkronizazioa hasita dago. Egoera: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "Zifratuta" msgstr "Zifratuta"
@@ -1399,6 +1414,19 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "Lehenetsia: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Sinkronizazio helbudua" msgstr "Sinkronizazio helbudua"
@@ -1473,6 +1501,39 @@ msgstr "Argia"
msgid "Dark" msgid "Dark"
msgstr "Iluna" msgstr "Iluna"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
msgid "Show note counts"
msgstr ""
#, fuzzy
msgid "Editor"
msgstr "Editatu"
msgid "Viewer"
msgstr ""
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
#, fuzzy #, fuzzy
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "Bete gabeko zereginak erakutsi zerrendaren goiko partean" msgstr "Bete gabeko zereginak erakutsi zerrendaren goiko partean"
@@ -1512,6 +1573,9 @@ msgstr "Ohar berria sortzen du."
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "Zifratua gaitu" msgstr "Zifratua gaitu"
@@ -1546,6 +1610,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "" msgstr ""
@@ -1569,6 +1636,10 @@ msgstr "Ezarri aplikazioaren zoomaren ehunekoa"
msgid "Editor font size" msgid "Editor font size"
msgstr "Oharra editatu." msgstr "Oharra editatu."
#, fuzzy
msgid "Editor font"
msgstr "Oharra editatu."
msgid "Editor font family" msgid "Editor font family"
msgstr "" msgstr ""
@@ -1614,8 +1685,35 @@ msgstr ""
"Editorea erabiliko da oharra zabaltzeko. Ez badago zehaztutakorik lehenetsia " "Editorea erabiliko da oharra zabaltzeko. Ez badago zehaztutakorik lehenetsia "
"igartzen ahaleginduko da." "igartzen ahaleginduko da."
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Erakutsi aukera aurreratuak" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "" msgstr ""
@@ -1630,6 +1728,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "" msgstr ""
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable note history" msgid "Enable note history"
msgstr "Zifratua gaitu" msgstr "Zifratua gaitu"
@@ -1670,6 +1778,13 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "Irten aplikaziotik" msgstr "Irten aplikaziotik"
#, fuzzy
msgid "Encryption"
msgstr "Zifratua da:"
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1685,7 +1800,11 @@ msgid "Joplin Export Directory"
msgstr "" msgstr ""
#, fuzzy #, fuzzy
msgid "Evernote Export File" msgid "Evernote Export File (as Markdown)"
msgstr "Evernotetik esportatutako fitxategiak"
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Evernotetik esportatutako fitxategiak" msgstr "Evernotetik esportatutako fitxategiak"
#, fuzzy #, fuzzy
@@ -1790,24 +1909,20 @@ msgstr ""
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "" msgstr ""
#, fuzzy
msgid "You currently have no notebooks."
msgstr "Ezabatu aukeratutako oharra edo koadernoa"
#, fuzzy
msgid "Create a notebook"
msgstr "Koaderno berria sortzen du."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "Ez dago oharrik. Sortu bat (+) botoian klik eginaz." msgstr "Ez dago oharrik. Sortu bat (+) botoian klik eginaz."
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Oharrok ezabatu?" msgstr "Oharrok ezabatu?"
msgid "Log"
msgstr "Egunkaria"
msgid "Export Debug Report"
msgstr "Esportatu arazketa txostena"
msgid "Encryption Config"
msgstr "Zifratze Ezarpenak"
msgid "Configuration"
msgstr "Konfigurazioa"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Mugitu ... koadernora" msgstr "Mugitu ... koadernora"
@@ -1832,8 +1947,24 @@ msgstr "Data aukeratu"
msgid "Confirm" msgid "Confirm"
msgstr "Baieztatu" msgstr "Baieztatu"
msgid "Cancel synchronisation" #, fuzzy, javascript-format
msgstr "Sinkronizazioa utzi" msgid "Notebook: %s"
msgstr "Koadernoak"
#, fuzzy
msgid "Encrypted notebooks cannot be renamed"
msgstr "Zifratutako itemak ezin aldatu daitezke"
#, fuzzy
msgid "New Notebook"
msgstr "Koaderno berria"
msgid "Configuration"
msgstr "Konfigurazioa"
#, fuzzy
msgid "All notes"
msgstr "Ohar berria"
#, fuzzy #, fuzzy
msgid "Checking... Please wait." msgid "Checking... Please wait."
@@ -1871,6 +2002,46 @@ msgstr ""
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "" msgstr ""
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr "Zifratze Ezarpenak"
#, fuzzy
msgid "Tools"
msgstr "Tresnak"
#, fuzzy
msgid "Sync Status"
msgstr "Egoera"
msgid "Log"
msgstr "Egunkaria"
#, fuzzy
msgid "Creating report..."
msgstr "Oharrak inportatzen..."
msgid "Export Debug Report"
msgstr "Esportatu arazketa txostena"
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "Konfigurazioa" msgstr "Konfigurazioa"
@@ -1924,6 +2095,10 @@ msgstr "Pasahitza:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "Pasahitza ezin utz daiteke hutsik" msgstr "Pasahitza ezin utz daiteke hutsik"
#, fuzzy
msgid "Confirm password cannot be empty"
msgstr "Pasahitza ezin utz daiteke hutsik"
msgid "Enable" msgid "Enable"
msgstr "Gaituta" msgstr "Gaituta"
@@ -1934,6 +2109,10 @@ msgstr "Koadernoa ezin gorde daiteke: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Editatu koadernoa" msgstr "Editatu koadernoa"
#, fuzzy
msgid "Enter notebook title"
msgstr "Koadernoaren izenburua: "
msgid "Show all" msgid "Show all"
msgstr "" msgstr ""
@@ -1957,10 +2136,32 @@ msgstr ""
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "Irudi formatua ez onartua: %s" msgstr "Irudi formatua ez onartua: %s"
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "Eguneratuta: %d."
msgid "View on map"
msgstr "Ikusi mapan"
msgid "Go to source URL"
msgstr ""
#, fuzzy
msgid "Attach..."
msgstr "Bilatu"
#, fuzzy
msgid "Choose an option"
msgstr "Erakutsi aukera aurreratuak"
#, fuzzy #, fuzzy
msgid "Take photo" msgid "Take photo"
msgstr "Argazkia erantsi" msgstr "Argazkia erantsi"
@@ -1980,23 +2181,18 @@ msgstr "Oharra bihurtu"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "Zeregina bihurtu" msgstr "Zeregina bihurtu"
msgid "Hide metadata" msgid "Properties"
msgstr "Ezkutatu metadatuak" msgstr ""
msgid "Show metadata" msgid "Add body"
msgstr "Erakutsi metadatuak"
msgid "View on map"
msgstr "Ikusi mapan"
msgid "Go to source URL"
msgstr "" msgstr ""
msgid "Edit" msgid "Edit"
msgstr "Editatu" msgstr "Editatu"
msgid "Delete notebook" #, fuzzy
msgstr "Ezabatu koadernoa" msgid "Add title"
msgstr "Titulu gabekoa"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "Login with OneDrive" msgstr "Login with OneDrive"
@@ -2004,18 +2200,87 @@ msgstr "Login with OneDrive"
msgid "Search" msgid "Search"
msgstr "Bilatu" msgstr "Bilatu"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "Sinkronizazioa hasita dago. Egoera: %s"
"menu to access your existing notebooks."
msgstr ""
"Sakatu (+) botoian ohar edo koaderno berria sortzeko. Klik alboko menuan "
"dagoeneko badiren koadernoak."
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "Oraindik ez duzu koadernorik. Sortu bat (+) botoian sakatuta." #~ msgid "Confirm master password:"
#~ msgstr "Sartu pasahitz nagusia:"
msgid "Welcome" #, fuzzy
msgstr "Ongi etorri!" #~ msgid "Confirm password"
#~ msgstr "Sartu pasahitz nagusia:"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "Beharrezko argumentua faltan: %s"
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr "Oharra editatzearen hasiera. Itxi editorea prompt-era bueltatzeko."
#~ msgid "Note has been saved."
#~ msgstr "Oharra gorde da."
#, fuzzy
#~ msgid "Note title"
#~ msgstr "Koadernoaren izenburua: "
#, fuzzy
#~ msgid "Note body"
#~ msgstr "Koadernoak"
#~ msgid "Synchronisation status"
#~ msgstr "Sinkronizazioaren egoera"
#~ msgid "General Options"
#~ msgstr "Ezarpenak"
#~ msgid "Encryption options"
#~ msgstr "Zifratzeko aukerak"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "Zifratzeko aukerak"
#, fuzzy
#~ msgid "Clipper Options"
#~ msgstr "Ezarpenak"
#, fuzzy
#~ msgid "Information"
#~ msgstr "Konfigurazioa"
#~ msgid "Cancel synchronisation"
#~ msgstr "Sinkronizazioa utzi"
#~ msgid "Hide metadata"
#~ msgstr "Ezkutatu metadatuak"
#~ msgid "Show metadata"
#~ msgstr "Erakutsi metadatuak"
#~ msgid "Delete notebook"
#~ msgstr "Ezabatu koadernoa"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "Sakatu (+) botoian ohar edo koaderno berria sortzeko. Klik alboko menuan "
#~ "dagoeneko badiren koadernoak."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr "Oraindik ez duzu koadernorik. Sortu bat (+) botoian sakatuta."
#~ msgid "Welcome"
#~ msgstr "Ongi etorri!"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Banatu etiketak koma erabiliaz." #~ msgstr "Banatu etiketak koma erabiliaz."
@@ -2042,13 +2307,6 @@ msgstr "Ongi etorri!"
#~ msgid "Searches" #~ msgid "Searches"
#~ msgstr "Bilaketak" #~ msgstr "Bilaketak"
#, fuzzy
#~ msgid ""
#~ "Release notes:\n"
#~ "\n"
#~ "%s"
#~ msgstr "Oharrak ezabatu?"
#~ msgid "Imports an Evernote notebook file (.enex file)." #~ msgid "Imports an Evernote notebook file (.enex file)."
#~ msgstr "Inportatu Evernote koaderno fitxategia (.enex fitxategia)." #~ msgstr "Inportatu Evernote koaderno fitxategia (.enex fitxategia)."
@@ -2083,9 +2341,6 @@ msgstr "Ongi etorri!"
#~ msgid "Cancel the current command." #~ msgid "Cancel the current command."
#~ msgstr "Utzi uneko komandoa" #~ msgstr "Utzi uneko komandoa"
#~ msgid "Delete the currently selected note or notebook."
#~ msgstr "Ezabatu aukeratutako oharra edo koadernoa"
#~ msgid "Set a to-do as completed / not completed" #~ msgid "Set a to-do as completed / not completed"
#~ msgstr "Zeregina eginda / ez-eginda markatu" #~ msgstr "Zeregina eginda / ez-eginda markatu"

View File

@@ -130,6 +130,14 @@ msgstr "رمز اصلی را وارد کنید:"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "عملیات لغو شد" msgstr "عملیات لغو شد"
#, fuzzy
msgid "Confirm password:"
msgstr "رمز اصلی را وارد کنید:"
#, fuzzy
msgid "Passwords do not match!"
msgstr "رمز نمیتواند خالی باشد"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -162,16 +170,6 @@ msgstr "دفترچه‌ی فعالی وجود ندارد."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "" msgstr ""
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "Note has been saved."
msgstr "یادداشت ذخیره شد."
msgid "Exits the application." msgid "Exits the application."
msgstr "خروح از نرم‌افزار." msgstr "خروح از نرم‌افزار."
@@ -356,6 +354,23 @@ msgstr "پاک کردن یادداشت؟"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "" msgstr ""
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -420,14 +435,15 @@ msgid "Cancelling... Please wait."
msgstr "در حال لغو... لطفا منتظر بمانید." msgstr "در حال لغو... لطفا منتظر بمانید."
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
#, javascript-format #, fuzzy, javascript-format
msgid "Invalid command: \"%s\"" msgid "Invalid command: \"%s\""
msgstr "" msgstr "پاسخ نامعتبر: %s"
msgid "" msgid ""
"<todo-command> can either be \"toggle\" or \"clear\". Use \"toggle\" to " "<todo-command> can either be \"toggle\" or \"clear\". Use \"toggle\" to "
@@ -513,54 +529,10 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "" msgstr ""
msgid "Sidebar"
msgstr "نوار کناری"
msgid "Note list"
msgstr "لیست یادداشت"
msgid "Note title"
msgstr "موضوع یادداشت"
msgid "Note body"
msgstr "بدنه ی یادداشت"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "" msgstr ""
msgid "PDF File"
msgstr "فایل PDF"
#, fuzzy
msgid "Synchronisation status"
msgstr "وضعیت سینک"
msgid "New note"
msgstr "یادداشت جدید"
msgid "New to-do"
msgstr "فهرست کارهای جدید"
msgid "New notebook"
msgstr "دفترچه جدید"
msgid "Print"
msgstr "پرینت"
msgid "General Options"
msgstr "تنظیمات کلی"
msgid "Encryption options"
msgstr "تنظیمات رمزنگاری"
msgid "Web clipper options"
msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s، %s)"
msgid "&File" msgid "&File"
msgstr "" msgstr ""
@@ -573,6 +545,9 @@ msgstr "تنظیمات..."
msgid "Check for updates..." msgid "Check for updates..."
msgstr "" msgstr ""
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "بارگذاری" msgstr "بارگذاری"
@@ -617,12 +592,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "لینک" msgstr "لینک"
msgid "Code"
msgstr "کد"
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "وارد کردن تاریخ و ساعت" msgstr "وارد کردن تاریخ و ساعت"
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "تنظیم ویرایشگر خارجی" msgstr "تنظیم ویرایشگر خارجی"
msgid "Tags"
msgstr "برچسب‌ها"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "جستجو در تمام یادداشت ها" msgstr "جستجو در تمام یادداشت ها"
@@ -635,6 +616,13 @@ msgstr ""
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "لیست یادداشت"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "" msgstr ""
@@ -650,6 +638,10 @@ msgstr "&کمک"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "" msgstr ""
#, fuzzy
msgid "Joplin Forum"
msgstr "فایل خروجی Joplin"
msgid "Make a donation" msgid "Make a donation"
msgstr "" msgstr ""
@@ -693,6 +685,10 @@ msgstr "بله"
msgid "No" msgid "No"
msgstr "خیر" msgstr "خیر"
#, fuzzy
msgid "Full Release Notes"
msgstr "یادداشت های بازیابی شده"
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -753,6 +749,9 @@ msgid ""
"access Joplin." "access Joplin."
msgstr "" msgstr ""
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "" msgstr ""
@@ -763,6 +762,9 @@ msgstr ""
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr "بازگشت"
msgid "Apply" msgid "Apply"
msgstr "اعمال" msgstr "اعمال"
@@ -832,8 +834,8 @@ msgid ""
msgstr "" msgstr ""
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -842,11 +844,17 @@ msgstr "وضعیت"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "" msgstr ""
msgid "Usage" msgid "Firefox Extension"
msgstr "" msgstr ""
msgid "Back" msgid "Chrome Web Store"
msgstr "بازگشت" msgstr ""
msgid "Get it now:"
msgstr ""
msgid "Usage"
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
@@ -874,6 +882,18 @@ msgstr "تغییر نام برچسب:"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "" msgstr ""
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "یادداشت جدید"
msgid "New to-do"
msgstr "فهرست کارهای جدید"
msgid "New notebook"
msgstr "دفترچه جدید"
msgid "Layout" msgid "Layout"
msgstr "" msgstr ""
@@ -911,6 +931,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "تاریخچه ی یادداشت" msgstr "تاریخچه ی یادداشت"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -924,6 +947,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "این یادداشت هیچ تاریخچه ای ندارد" msgstr "این یادداشت هیچ تاریخچه ای ندارد"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
msgid "Restore" msgid "Restore"
msgstr "بازگرداندن" msgstr "بازگرداندن"
@@ -952,10 +979,6 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -965,6 +988,13 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
msgid "PDF File"
msgstr "فایل PDF"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -981,9 +1011,6 @@ msgstr "وارد کردن لینک"
msgid "Attach file" msgid "Attach file"
msgstr "پیوست فایل" msgstr "پیوست فایل"
msgid "Tags"
msgstr "برچسب‌ها"
msgid "Set alarm" msgid "Set alarm"
msgstr "" msgstr ""
@@ -994,9 +1021,6 @@ msgstr "در: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "لینک" msgstr "لینک"
msgid "Code"
msgstr "کد"
#, fuzzy #, fuzzy
msgid "Numbered List" msgid "Numbered List"
msgstr "لیست ترتیبی" msgstr "لیست ترتیبی"
@@ -1051,11 +1075,8 @@ msgstr "گزینه ها"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "" msgstr ""
msgid "Encryption Options" msgid "Remove"
msgstr "گزینه های رمزنگاری" msgstr ""
msgid "Clipper Options"
msgstr "تنظیمات کلیپر"
#, javascript-format #, javascript-format
msgid "" msgid ""
@@ -1064,6 +1085,9 @@ msgid ""
"All notes and sub-notebooks within this notebook will also be deleted." "All notes and sub-notebooks within this notebook will also be deleted."
msgstr "" msgstr ""
msgid "Delete"
msgstr "پاک کردن"
#, javascript-format #, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "" msgstr ""
@@ -1071,8 +1095,9 @@ msgstr ""
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "این جستجو را از نواک کناری حذف شود؟" msgstr "این جستجو را از نواک کناری حذف شود؟"
msgid "Delete" #, fuzzy
msgstr "پاک کردن" msgid "New sub-notebook"
msgstr "دفترچه جدید"
msgid "Rename" msgid "Rename"
msgstr "تغییر نام" msgstr "تغییر نام"
@@ -1232,14 +1257,6 @@ msgstr "بیکار"
msgid "In progress" msgid "In progress"
msgstr "درحال انجام" msgstr "درحال انجام"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "سینک کردن در حال انجام است. وضعیت: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "رمزنگاری شده" msgstr "رمزنگاری شده"
@@ -1284,6 +1301,19 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "پیشفرض: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
#, fuzzy #, fuzzy
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "هدف سینک" msgstr "هدف سینک"
@@ -1353,6 +1383,39 @@ msgstr "روشن"
msgid "Dark" msgid "Dark"
msgstr "تیره" msgstr "تیره"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
msgid "Show note counts"
msgstr ""
#, fuzzy
msgid "Editor"
msgstr "ویرایش"
msgid "Viewer"
msgstr ""
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "" msgstr ""
@@ -1386,6 +1449,9 @@ msgstr "در زمان ایجاد یادداشت جدید:"
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "" msgstr ""
@@ -1419,6 +1485,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "" msgstr ""
@@ -1440,6 +1509,10 @@ msgstr "درصد برزگنمایی کلی"
msgid "Editor font size" msgid "Editor font size"
msgstr "سایز فونت ویرایشگر" msgstr "سایز فونت ویرایشگر"
#, fuzzy
msgid "Editor font"
msgstr "سایز فونت ویرایشگر"
msgid "Editor font family" msgid "Editor font family"
msgstr "" msgstr ""
@@ -1482,8 +1555,35 @@ msgid ""
"If none is provided it will try to auto-detect the default editor." "If none is provided it will try to auto-detect the default editor."
msgstr "" msgstr ""
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "نمایش گزینه های پیشرفته" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "" msgstr ""
@@ -1498,6 +1598,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "" msgstr ""
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
msgid "Enable note history" msgid "Enable note history"
msgstr "فعال سایز ثبت تاریخچه ی یادداشت" msgstr "فعال سایز ثبت تاریخچه ی یادداشت"
@@ -1533,6 +1643,13 @@ msgstr "پلاگین ها"
msgid "Application" msgid "Application"
msgstr "نرم‌افزار" msgstr "نرم‌افزار"
#, fuzzy
msgid "Encryption"
msgstr "رمزنگاری: %s"
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "برچسب «%s» وجود دارد. لطفا نام دیگری انتخاب کنی" msgstr "برچسب «%s» وجود دارد. لطفا نام دیگری انتخاب کنی"
@@ -1546,7 +1663,12 @@ msgstr ""
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "فولدر خروجی Joplin" msgstr "فولدر خروجی Joplin"
msgid "Evernote Export File" #, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "فولدر خروجی Evernote"
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "فولدر خروجی Evernote" msgstr "فولدر خروجی Evernote"
msgid "Json Export Directory" msgid "Json Export Directory"
@@ -1646,24 +1768,20 @@ msgstr "اجازه برای استفاده از دوربین"
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "اجازه ی شما برای استفاده از دوربین شما نیاز است." msgstr "اجازه ی شما برای استفاده از دوربین شما نیاز است."
#, fuzzy
msgid "You currently have no notebooks."
msgstr "دفترچه‌ی فعالی وجود ندارد."
#, fuzzy
msgid "Create a notebook"
msgstr "ایجاد دفترچه جدید."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "این یادداشت ها پاک شوند؟" msgstr "این یادداشت ها پاک شوند؟"
msgid "Log"
msgstr "لاگ"
msgid "Export Debug Report"
msgstr ""
msgid "Encryption Config"
msgstr "تنظیمات رمزنگاری"
msgid "Configuration"
msgstr "تنظیمات"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "انتقال به دفترچه..." msgstr "انتقال به دفترچه..."
@@ -1686,9 +1804,23 @@ msgstr "انتخاب تاریخ"
msgid "Confirm" msgid "Confirm"
msgstr "تایید" msgstr "تایید"
#, fuzzy, javascript-format
msgid "Notebook: %s"
msgstr "دفترچه ها"
msgid "Encrypted notebooks cannot be renamed"
msgstr ""
#, fuzzy #, fuzzy
msgid "Cancel synchronisation" msgid "New Notebook"
msgstr "لغو سینک" msgstr "دفترچه جدید"
msgid "Configuration"
msgstr "تنظیمات"
#, fuzzy
msgid "All notes"
msgstr "یادداشت"
#, fuzzy #, fuzzy
msgid "Checking... Please wait." msgid "Checking... Please wait."
@@ -1724,6 +1856,46 @@ msgstr "برچسب جدید:"
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "" msgstr ""
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr "تنظیمات رمزنگاری"
#, fuzzy
msgid "Tools"
msgstr "&ابزارها"
#, fuzzy
msgid "Sync Status"
msgstr "وضعیت"
msgid "Log"
msgstr "لاگ"
#, fuzzy
msgid "Creating report..."
msgstr "بارگذاری یادداشت‌ها..."
msgid "Export Debug Report"
msgstr ""
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "تنظیمات" msgstr "تنظیمات"
@@ -1775,6 +1947,10 @@ msgstr "رمز:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "رمز نمیتواند خالی باشد" msgstr "رمز نمیتواند خالی باشد"
#, fuzzy
msgid "Confirm password cannot be empty"
msgstr "رمز نمیتواند خالی باشد"
msgid "Enable" msgid "Enable"
msgstr "فعال سازی" msgstr "فعال سازی"
@@ -1785,6 +1961,10 @@ msgstr ""
msgid "Edit notebook" msgid "Edit notebook"
msgstr "ویرایش دفترچه" msgstr "ویرایش دفترچه"
#, fuzzy
msgid "Enter notebook title"
msgstr "موضوع دفترچه:"
msgid "Show all" msgid "Show all"
msgstr "نمایش همه" msgstr "نمایش همه"
@@ -1808,10 +1988,32 @@ msgstr ""
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "" msgstr ""
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "به‌روز شده: %d."
msgid "View on map"
msgstr "نمایش بر روی نقشه"
msgid "Go to source URL"
msgstr "رفتن به آدرس منبع"
#, fuzzy
msgid "Attach..."
msgstr "جستجو..."
#, fuzzy
msgid "Choose an option"
msgstr "نمایش گزینه های پیشرفته"
msgid "Take photo" msgid "Take photo"
msgstr "گرفتن عکس" msgstr "گرفتن عکس"
@@ -1831,24 +2033,18 @@ msgid "Convert to todo"
msgstr "تبدیل به فهرست کارها" msgstr "تبدیل به فهرست کارها"
#, fuzzy #, fuzzy
msgid "Hide metadata" msgid "Properties"
msgstr "پنهان کردن متادیتا" msgstr "جزییات یادداشت"
#, fuzzy msgid "Add body"
msgid "Show metadata" msgstr ""
msgstr "نمایش متادیتا"
msgid "View on map"
msgstr "نمایش بر روی نقشه"
msgid "Go to source URL"
msgstr "رفتن به آدرس منبع"
msgid "Edit" msgid "Edit"
msgstr "ویرایش" msgstr "ویرایش"
msgid "Delete notebook" #, fuzzy
msgstr "پاک کردن دفترچه" msgid "Add title"
msgstr "موضوع"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "ورود با OneDrive" msgstr "ورود با OneDrive"
@@ -1856,18 +2052,98 @@ msgstr "ورود با OneDrive"
msgid "Search" msgid "Search"
msgstr "جستجو" msgstr "جستجو"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "سینک کردن در حال انجام است. وضعیت: %s"
"menu to access your existing notebooks."
msgstr ""
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "" #~ msgid "Confirm master password:"
"شما هیچ دفترچه ای ندارید. با کلیک کردن بر روی (+) یک دفترچه ی جدید ایجاد " #~ msgstr "رمز اصلی را وارد کنید:"
"کنید."
msgid "Welcome" #, fuzzy
msgstr "خوش آمدید" #~ msgid "Confirm password"
#~ msgstr "رمز اصلی را وارد کنید:"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "کمبود آرگمان در دستور: %s"
#~ msgid "Note has been saved."
#~ msgstr "یادداشت ذخیره شد."
#~ msgid "Sidebar"
#~ msgstr "نوار کناری"
#~ msgid "Note title"
#~ msgstr "موضوع یادداشت"
#~ msgid "Note body"
#~ msgstr "بدنه ی یادداشت"
#, fuzzy
#~ msgid "Synchronisation status"
#~ msgstr "وضعیت سینک"
#~ msgid "Print"
#~ msgstr "پرینت"
#~ msgid "General Options"
#~ msgstr "تنظیمات کلی"
#~ msgid "Encryption options"
#~ msgstr "تنظیمات رمزنگاری"
#, fuzzy
#~ msgid "Insert template"
#~ msgstr "وارد کردن تاریخ و ساعت"
#, fuzzy
#~ msgid "Open template directory"
#~ msgstr "فولدر خروجی Joplin"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s، %s)"
#~ msgid "Encryption Options"
#~ msgstr "گزینه های رمزنگاری"
#~ msgid "Clipper Options"
#~ msgstr "تنظیمات کلیپر"
#, fuzzy
#~ msgid "Information"
#~ msgstr "تنظیمات"
#, fuzzy
#~ msgid "Permission to write to external storage"
#~ msgstr "اجازه برای استفاده از دوربین"
#, fuzzy
#~ msgid "Cancel synchronisation"
#~ msgstr "لغو سینک"
#, fuzzy
#~ msgid "Hide metadata"
#~ msgstr "پنهان کردن متادیتا"
#, fuzzy
#~ msgid "Show metadata"
#~ msgstr "نمایش متادیتا"
#~ msgid "Delete notebook"
#~ msgstr "پاک کردن دفترچه"
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr ""
#~ "شما هیچ دفترچه ای ندارید. با کلیک کردن بر روی (+) یک دفترچه ی جدید ایجاد "
#~ "کنید."
#~ msgid "Welcome"
#~ msgstr "خوش آمدید"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "هر برچسب را با ویرگول شده کنید." #~ msgstr "هر برچسب را با ویرگول شده کنید."

View File

@@ -137,6 +137,12 @@ msgstr "Entrer le mot de passe maître :"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "Opération annulée" msgstr "Opération annulée"
msgid "Confirm password:"
msgstr "Confirmer le mot de passe :"
msgid "Passwords do not match!"
msgstr "Les mots de passe ne correspondent pas !"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -173,18 +179,6 @@ msgstr "Aucun carnet actif."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "Cette note n'existe pas : \"%s\". La créer ?" msgstr "Cette note n'existe pas : \"%s\". La créer ?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
"Édition de la note en cours. Fermez l'éditeur de texte pour retourner à "
"l'invite de commande."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Erreur lors de l'ouverture de la note dans l'éditeur de texte : %s"
msgid "Note has been saved."
msgstr "La note a été enregistrée."
msgid "Exits the application." msgid "Exits the application."
msgstr "Quitter le logiciel." msgstr "Quitter le logiciel."
@@ -389,6 +383,26 @@ msgstr "Supprimer la note ?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Chercher le motif <pattern> dans toutes les notes." msgstr "Chercher le motif <pattern> dans toutes les notes."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
"Démarre, stop ou vérifie l'état du serveur API. Pour spécifier sur quel port "
"il doit tourner, veuillez utiliser la variable de config api.port. Les "
"commandes sont (%s)."
#, javascript-format
msgid "Server is already running on port %d"
msgstr "Le serveur tourne déjà sur le port %d"
#, javascript-format
msgid "Server is running on port %d"
msgstr "Le serveur tourne sur le port %d"
msgid "Server is not running."
msgstr "Le serveur est arrêté."
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -466,14 +480,16 @@ msgid "Cancelling... Please wait."
msgstr "Annulation... Veuillez attendre." msgstr "Annulation... Veuillez attendre."
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> peut être \"add\", \"remove\" ou \"list\" pour assigner ou " "<tag-command> peut être \"add\", \"remove\", \"list\" ou \"notetags\" pour "
"enlever l'étiquette [tag] de la [note], our pour lister les notes associées " "assigner ou enlever l'étiquette [tag] de la [note], pour lister les notes "
"avec l'étiquette [tag]. La commande `tag list` peut être utilisée pour " "associées avec l'étiquette [tag], ou pour lister les étiquettes associées "
"lister les étiquettes (utilisez l'option -l pour les options complètes)." "avec [note]. La commande `tag list` peut être utilisée pour lister les "
"étiquettes (utilisez l'option -l pour les options complètes)."
#, javascript-format #, javascript-format
msgid "Invalid command: \"%s\"" msgid "Invalid command: \"%s\""
@@ -584,52 +600,9 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "Exporter vers \"%s\" au format \"%s\". Veuillez patienter..." msgstr "Exporter vers \"%s\" au format \"%s\". Veuillez patienter..."
msgid "Sidebar"
msgstr "Barre latérale"
msgid "Note list"
msgstr "Liste de notes"
msgid "Note title"
msgstr "Titre de la note"
msgid "Note body"
msgstr "Corps de la note"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "Importer depuis \"%s\" au format \"%s\". Veuillez patienter..." msgstr "Impossible d'exporter les notes : %s"
msgid "PDF File"
msgstr "Fichier PDF"
msgid "Synchronisation status"
msgstr "État de la synchronisation"
msgid "New note"
msgstr "Nouvelle note"
msgid "New to-do"
msgstr "Nouvelle tâche"
msgid "New notebook"
msgstr "Nouveau carnet"
msgid "Print"
msgstr "Imprimer"
msgid "General Options"
msgstr "Options générales"
msgid "Encryption options"
msgstr "Options de chiffrement"
msgid "Web clipper options"
msgstr "Options du Web Clipper"
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
msgid "&File" msgid "&File"
msgstr "&Fichier" msgstr "&Fichier"
@@ -643,6 +616,9 @@ msgstr "Préférences…"
msgid "Check for updates..." msgid "Check for updates..."
msgstr "Vérifier les mises à jour..." msgstr "Vérifier les mises à jour..."
msgid "Templates"
msgstr "Modèles"
msgid "Import" msgid "Import"
msgstr "Importer" msgstr "Importer"
@@ -686,12 +662,18 @@ msgstr "Italique"
msgid "Link" msgid "Link"
msgstr "Lien" msgstr "Lien"
msgid "Code"
msgstr "Code"
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "Insérer la date et l'heure" msgstr "Insérer la date et l'heure"
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "Ouvrir dans un éditeur externe" msgstr "Ouvrir dans un éditeur externe"
msgid "Tags"
msgstr "Étiquettes"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Chercher dans toutes les notes" msgstr "Chercher dans toutes les notes"
@@ -704,8 +686,14 @@ msgstr "&Affichage"
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "Basculer barre latérale" msgstr "Basculer barre latérale"
msgid "Layout button sequence"
msgstr "Ordre des actions du bouton de disposition"
msgid "Toggle note list"
msgstr "Basculer liste de notes"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "Basculer l'agencement de l'éditeur" msgstr "Basculer la disposition de l'éditeur"
msgid "Focus" msgid "Focus"
msgstr "Naviguer" msgstr "Naviguer"
@@ -719,6 +707,9 @@ msgstr "&Aide"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Documentation en ligne" msgstr "Documentation en ligne"
msgid "Joplin Forum"
msgstr "Forum Joplin"
msgid "Make a donation" msgid "Make a donation"
msgstr "Faire un don" msgstr "Faire un don"
@@ -763,6 +754,9 @@ msgstr "Oui"
msgid "No" msgid "No"
msgstr "Non" msgstr "Non"
msgid "Full Release Notes"
msgstr "Notes de version complètes"
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "Le code d'authentification a été copié dans le presse-papiers !" msgstr "Le code d'authentification a été copié dans le presse-papiers !"
@@ -832,6 +826,9 @@ msgstr ""
"Ce code d'authentification est nécessaire uniquement pour permettre aux " "Ce code d'authentification est nécessaire uniquement pour permettre aux "
"logiciels tiers d'accéder aux données de Joplin." "logiciels tiers d'accéder aux données de Joplin."
msgid "This will open a new screen. Save your current changes?"
msgstr "Sauvegarder vos changements avant de continuer ?"
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "Les notes et paramètres se trouve dans : %s" msgstr "Les notes et paramètres se trouve dans : %s"
@@ -842,6 +839,9 @@ msgstr "Vérifier config synchronisation"
msgid "Browse..." msgid "Browse..."
msgstr "Parcourir…" msgstr "Parcourir…"
msgid "Back"
msgstr "Retour"
msgid "Apply" msgid "Apply"
msgstr "Appliquer" msgstr "Appliquer"
@@ -925,8 +925,8 @@ msgstr ""
"probable qu'elle vont être prochainement disponible via la synchronisation." "probable qu'elle vont être prochainement disponible via la synchronisation."
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
"Pour plus d'informations sur le chiffrement de bout en bout, ainsi que des " "Pour plus d'informations sur le chiffrement de bout en bout, ainsi que des "
"conseils pour l'activer, veuillez consulter la documentation :" "conseils pour l'activer, veuillez consulter la documentation :"
@@ -937,12 +937,18 @@ msgstr "État"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "Le chiffrement est :" msgstr "Le chiffrement est :"
msgid "Firefox Extension"
msgstr "Module Firefox"
msgid "Chrome Web Store"
msgstr "Chrome Web Store"
msgid "Get it now:"
msgstr "L'obtenir maintenant :"
msgid "Usage" msgid "Usage"
msgstr "Utilisation" msgstr "Utilisation"
msgid "Back"
msgstr "Retour"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -971,6 +977,18 @@ msgstr "Renommer étiquette :"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Régler alarme :" msgstr "Régler alarme :"
msgid "Template file:"
msgstr "Fichier de modèle :"
msgid "New note"
msgstr "Nouvelle note"
msgid "New to-do"
msgstr "Nouvelle tâche"
msgid "New notebook"
msgstr "Nouveau carnet"
msgid "Layout" msgid "Layout"
msgstr "Disposition" msgstr "Disposition"
@@ -984,7 +1002,7 @@ msgid "View them now"
msgstr "Les voir maintenant" msgstr "Les voir maintenant"
msgid "One or more master keys need a password." msgid "One or more master keys need a password."
msgstr "L'une des clefs maîtres requiert un mot de passe :" msgstr "L'une des clefs maîtres requiert un mot de passe."
msgid "Set the password" msgid "Set the password"
msgstr "Définir le mot de passe" msgstr "Définir le mot de passe"
@@ -1008,6 +1026,9 @@ msgstr "URL"
msgid "Note History" msgid "Note History"
msgstr "Historique des notes" msgstr "Historique des notes"
msgid "Markup"
msgstr "Langage de balisage"
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "Versions précédentes de cette note" msgstr "Versions précédentes de cette note"
@@ -1021,6 +1042,10 @@ msgstr "La note \"%s\" a été restaurée dans le carnet \"%s\"."
msgid "This note has no history" msgid "This note has no history"
msgstr "Cette note n'a pas d'historique" msgstr "Cette note n'a pas d'historique"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Lien ou message non géré : %s"
msgid "Restore" msgid "Restore"
msgstr "Restaurer" msgstr "Restaurer"
@@ -1052,10 +1077,6 @@ msgstr "Copier l'adresse du lien"
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "Cette pièce jointe n'est pas téléchargée ou pas encore déchiffrée." msgstr "Cette pièce jointe n'est pas téléchargée ou pas encore déchiffrée."
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Lien ou message non géré : %s"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1069,6 +1090,13 @@ msgstr ""
"Les notes ne peuvent être imprimées ou exportées en PDF qu'une seule à la " "Les notes ne peuvent être imprimées ou exportées en PDF qu'une seule à la "
"fois." "fois."
msgid "PDF File"
msgstr "Fichier PDF"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Erreur lors de l'ouverture de la note dans l'éditeur de texte : %s"
msgid "strong text" msgid "strong text"
msgstr "texte en gras" msgstr "texte en gras"
@@ -1084,9 +1112,6 @@ msgstr "Insérer lien"
msgid "Attach file" msgid "Attach file"
msgstr "Attacher un fichier" msgstr "Attacher un fichier"
msgid "Tags"
msgstr "Étiquettes"
msgid "Set alarm" msgid "Set alarm"
msgstr "Régler alarme" msgstr "Régler alarme"
@@ -1097,9 +1122,6 @@ msgstr "Dans : %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "Lien" msgstr "Lien"
msgid "Code"
msgstr "Code"
msgid "Numbered List" msgid "Numbered List"
msgstr "Liste numérotée" msgstr "Liste numérotée"
@@ -1149,11 +1171,8 @@ msgstr "Options"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "État de la synchronisation" msgstr "État de la synchronisation"
msgid "Encryption Options" msgid "Remove"
msgstr "Options de chiffrement" msgstr "Supprimer"
msgid "Clipper Options"
msgstr "Options du Web Clipper"
#, javascript-format #, javascript-format
msgid "" msgid ""
@@ -1165,6 +1184,9 @@ msgstr ""
"\n" "\n"
"Toutes les notes et sous-carnets dans ce carnet seront également effacés." "Toutes les notes et sous-carnets dans ce carnet seront également effacés."
msgid "Delete"
msgstr "Supprimer"
#, javascript-format #, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "Enlever l’étiquette \"%s\" de toutes les notes ?" msgstr "Enlever l’étiquette \"%s\" de toutes les notes ?"
@@ -1172,8 +1194,8 @@ msgstr "Enlever l’étiquette \"%s\" de toutes les notes ?"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "Enlever cette recherche de la barre latérale ?" msgstr "Enlever cette recherche de la barre latérale ?"
msgid "Delete" msgid "New sub-notebook"
msgstr "Supprimer" msgstr "Nouveau sous-carnet"
msgid "Rename" msgid "Rename"
msgstr "Renommer" msgstr "Renommer"
@@ -1344,14 +1366,6 @@ msgstr "Arrêté"
msgid "In progress" msgid "In progress"
msgstr "En cours" msgstr "En cours"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "La synchronisation est déjà en cours. État : %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr "Objet inconnu téléchargé - veuillez mettre Joplin à jour"
msgid "Encrypted" msgid "Encrypted"
msgstr "Chiffré" msgstr "Chiffré"
@@ -1398,6 +1412,18 @@ msgstr ""
"de synchroniser, sinon tous les fichiers seront supprimés ! Consulter la FAQ " "de synchroniser, sinon tous les fichiers seront supprimés ! Consulter la FAQ "
"pour plus de détails : %s" "pour plus de détails : %s"
msgid "Keyboard Mode"
msgstr "Mode de clavier"
msgid "Default"
msgstr "Défaut"
msgid "Emacs"
msgstr "Emacs"
msgid "Vim"
msgstr "Vim"
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Cible de la synchronisation" msgstr "Cible de la synchronisation"
@@ -1439,9 +1465,9 @@ msgid ""
"the attachments are downloaded whether you open the note or not." "the attachments are downloaded whether you open the note or not."
msgstr "" msgstr ""
"En mode \"manuel\", les ressources sont téléchargées uniquement lorsque vous " "En mode \"manuel\", les ressources sont téléchargées uniquement lorsque vous "
"cliquez dessus. En mode \"auto\", elle sont téléchargée lorsque vous ouvrez " "cliquez dessus. En mode \"auto\", elles sont téléchargées lorsque vous "
"la note. En mode \"toujours\", toutes les ressources sont téléchargées, que " "ouvrez la note. En mode \"toujours\", toutes les ressources sont "
"vous ayez ouvert la note ou pas." "téléchargées, que vous ayez ouvert la note ou pas."
msgid "Always" msgid "Always"
msgstr "Toujours" msgstr "Toujours"
@@ -1473,6 +1499,38 @@ msgstr "Clair"
msgid "Dark" msgid "Dark"
msgstr "Sombre" msgstr "Sombre"
msgid "Dracula"
msgstr "Dracula"
msgid "Solarised Light"
msgstr "Solarisé clair"
msgid "Solarised Dark"
msgstr "Solarisé sombre"
msgid "Nord"
msgstr "Nord"
msgid "Show note counts"
msgstr "Afficher le compte des notes"
msgid "Editor"
msgstr "Éditeur"
msgid "Viewer"
msgstr "Visionneuse"
msgid "Split View"
msgstr "Vue fractionnée"
#, javascript-format
msgid "%s / %s / %s"
msgstr "%s / %s / %s"
#, javascript-format
msgid "%s / %s"
msgstr "%s / %s"
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "Tâches non-terminées en haut" msgstr "Tâches non-terminées en haut"
@@ -1506,6 +1564,9 @@ msgstr "Lors de la création d'une note :"
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "Activer retours à la ligne \"doux\"" msgstr "Activer retours à la ligne \"doux\""
msgid "Enable typographer support"
msgstr "Activer le typographe"
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "Activer les expressions mathématiques" msgstr "Activer les expressions mathématiques"
@@ -1539,6 +1600,9 @@ msgstr "Activer la syntaxe ++insertion++"
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "Activer les tables multi-markdown" msgstr "Activer les tables multi-markdown"
msgid "Enable Fountain syntax support"
msgstr "Activer la syntaxe \"Fountain\""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "Afficher l'icône dans la zone de notifications" msgstr "Afficher l'icône dans la zone de notifications"
@@ -1563,6 +1627,9 @@ msgstr "Niveau de zoom"
msgid "Editor font size" msgid "Editor font size"
msgstr "Taille police éditeur" msgstr "Taille police éditeur"
msgid "Editor font"
msgstr "Police de l'éditeur"
msgid "Editor font family" msgid "Editor font family"
msgstr "Police de l'éditeur" msgstr "Police de l'éditeur"
@@ -1609,8 +1676,35 @@ msgstr ""
"La commande de l'éditeur de texte (peut inclure des options) pour ouvrir et " "La commande de l'éditeur de texte (peut inclure des options) pour ouvrir et "
"modifier les notes. Si non-spécifiée, elle sera détectée automatiquement." "modifier les notes. Si non-spécifiée, elle sera détectée automatiquement."
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Montrer les options avancées" msgstr "Taille de page pour l'export PDF"
msgid "A4"
msgstr "A4"
msgid "Letter"
msgstr "Lettre"
msgid "A3"
msgstr "A3"
msgid "A5"
msgstr "A5"
msgid "Tabloid"
msgstr "Tabloïde"
msgid "Legal"
msgstr "Légal"
msgid "Page orientation for PDF export"
msgstr "Orientation de page pour l'export PDF"
msgid "Portrait"
msgstr "Portrait"
msgid "Landscape"
msgstr "Paysage"
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "Certificats TLS personnalisés" msgstr "Certificats TLS personnalisés"
@@ -1630,6 +1724,21 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "Ignorer les erreurs de certificats TLS" msgstr "Ignorer les erreurs de certificats TLS"
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
"Sécurité : Ne pas supprimer toutes les données lorsque la cible de "
"synchronisation est vide (souvent à cause d'un bug ou d'un problème de "
"config)"
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
"Détermine quel port sera utilisé par le serveur API. Si aucun n'est "
"spécifié, un port par défaut sera utilisé."
msgid "Enable note history" msgid "Enable note history"
msgstr "Activer l'historique des notes" msgstr "Activer l'historique des notes"
@@ -1665,6 +1774,12 @@ msgstr "Modules"
msgid "Application" msgid "Application"
msgstr "Application" msgstr "Application"
msgid "Encryption"
msgstr "Chiffrement"
msgid "Web Clipper"
msgstr "Web Clipper"
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "L'étiquette \"%s\" existe déjà. Veuillez choisir un autre nom." msgstr "L'étiquette \"%s\" existe déjà. Veuillez choisir un autre nom."
@@ -1678,8 +1793,11 @@ msgstr "Markdown"
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "Dossier d'export Joplin" msgstr "Dossier d'export Joplin"
msgid "Evernote Export File" msgid "Evernote Export File (as Markdown)"
msgstr "Fichiers d'export Evernote" msgstr "Fichiers d'export Evernote (vers Markdown)"
msgid "Evernote Export File (as HTML)"
msgstr "Fichiers d'export Evernote (vers HTML)"
msgid "Json Export Directory" msgid "Json Export Directory"
msgstr "Dossier d'export JSON" msgstr "Dossier d'export JSON"
@@ -1786,6 +1904,12 @@ msgstr "Permission d'utiliser l'appareil photo"
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "Votre permission est requise pour utiliser l'appareil photo." msgstr "Votre permission est requise pour utiliser l'appareil photo."
msgid "You currently have no notebooks."
msgstr "Vous n'avez pour l'instant pas de carnets."
msgid "Create a notebook"
msgstr "Créer un carnet"
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
"Ce carnet ne contient aucune note. Créez-en une en appuyant sur le bouton " "Ce carnet ne contient aucune note. Créez-en une en appuyant sur le bouton "
@@ -1794,18 +1918,6 @@ msgstr ""
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Supprimer ces notes ?" msgstr "Supprimer ces notes ?"
msgid "Log"
msgstr "Journal"
msgid "Export Debug Report"
msgstr "Exporter rapport de débogage"
msgid "Encryption Config"
msgstr "Config chiffrement"
msgid "Configuration"
msgstr "Configuration"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Déplacer vers..." msgstr "Déplacer vers..."
@@ -1828,8 +1940,21 @@ msgstr "Sélectionner date"
msgid "Confirm" msgid "Confirm"
msgstr "Confirmer" msgstr "Confirmer"
msgid "Cancel synchronisation" #, javascript-format
msgstr "Annuler synchronisation" msgid "Notebook: %s"
msgstr "Carnet : %s"
msgid "Encrypted notebooks cannot be renamed"
msgstr "Les carnets chiffrés ne peuvent être renommés"
msgid "New Notebook"
msgstr "Nouveau carnet"
msgid "Configuration"
msgstr "Configuration"
msgid "All notes"
msgstr "Toutes les notes"
msgid "Checking... Please wait." msgid "Checking... Please wait."
msgstr "Vérification... Veuillez attendre." msgstr "Vérification... Veuillez attendre."
@@ -1871,6 +1996,47 @@ msgstr "Nouvelles étiquettes :"
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "Entrez de nouvelles étiquettes ou sélectionnez de la liste" msgstr "Entrez de nouvelles étiquettes ou sélectionnez de la liste"
msgid "Warning"
msgstr "Avertissement"
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
"Pour utiliser la synchronisation par système de fichiers, votre autorisation "
"pour écrire sur le stockage externe est requise."
msgid "Encryption Config"
msgstr "Config chiffrement"
msgid "Tools"
msgstr "Outils"
msgid "Sync Status"
msgstr "État synchronisation"
msgid "Log"
msgstr "Journal"
msgid "Creating report..."
msgstr "Création du rapport..."
msgid "Export Debug Report"
msgstr "Exporter rapport de débogage"
msgid "Fixing search index..."
msgstr "Correction de l'index..."
msgid "Fix search index"
msgstr "Corriger index de recherche"
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
"Utilisez ceci pour corriger l'index du moteur de recherche en cas de "
"problème. Cela peut prendre longtemps selon le nombre de notes."
msgid "More information" msgid "More information"
msgstr "Plus d'information" msgstr "Plus d'information"
@@ -1927,6 +2093,9 @@ msgstr "Mot de passe :"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "Mot de passe ne peut être vide" msgstr "Mot de passe ne peut être vide"
msgid "Confirm password cannot be empty"
msgstr "Le mot de passe de confirmation ne peut être vide"
msgid "Enable" msgid "Enable"
msgstr "Activer" msgstr "Activer"
@@ -1937,6 +2106,9 @@ msgstr "Ce carnet n'a pas pu être sauvegardé : %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Éditer le carnet" msgstr "Éditer le carnet"
msgid "Enter notebook title"
msgstr "Entrez le titre du carnet"
msgid "Show all" msgid "Show all"
msgstr "Afficher tous" msgstr "Afficher tous"
@@ -1961,10 +2133,30 @@ msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
"L'application mobile Joplin ne gère pas pour l'instant ce type de lien : %s" "L'application mobile Joplin ne gère pas pour l'instant ce type de lien : %s"
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr "Le schéma d'URI \"%s\" n'est pas supporté"
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "Type d'image non géré : %s" msgstr "Type d'image non géré : %s"
#, javascript-format
msgid "Updated: %s"
msgstr "Mis à jour : %s"
msgid "View on map"
msgstr "Voir sur carte"
msgid "Go to source URL"
msgstr "Aller à l'URL source"
msgid "Attach..."
msgstr "Joindre..."
msgid "Choose an option"
msgstr "Choisissez une option"
msgid "Take photo" msgid "Take photo"
msgstr "Prendre une photo" msgstr "Prendre une photo"
@@ -1983,23 +2175,17 @@ msgstr "Convertir en note"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "Convertir en tâche" msgstr "Convertir en tâche"
msgid "Hide metadata" msgid "Properties"
msgstr "Cacher les métadonnées" msgstr "Propriétés"
msgid "Show metadata" msgid "Add body"
msgstr "Voir métadonnées" msgstr "Ajoutez le contenu"
msgid "View on map"
msgstr "Voir sur carte"
msgid "Go to source URL"
msgstr "Aller à l'URL source"
msgid "Edit" msgid "Edit"
msgstr "Édition" msgstr "Édition"
msgid "Delete notebook" msgid "Add title"
msgstr "Supprimer le carnet" msgstr "Ajoutez le titre"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "Se connecter à OneDrive" msgstr "Se connecter à OneDrive"
@@ -2007,20 +2193,128 @@ msgstr "Se connecter à OneDrive"
msgid "Search" msgid "Search"
msgstr "Chercher" msgstr "Chercher"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "La synchronisation est déjà en cours. État : %s"
"menu to access your existing notebooks."
msgstr ""
"Appuyez sur le bouton (+) pour créer une nouvelle note ou carnet. Ouvrez le "
"menu latéral pour accéder à vos carnets."
msgid "You currently have no notebook. Create one by clicking on (+) button." #~ msgid "Confirm master password:"
msgstr "" #~ msgstr "Confirmer le mot de passe maître :"
"Vous n'avez pour l'instant pas de carnets. Créez-en un en pressant le bouton "
"(+)."
msgid "Welcome" #, fuzzy
msgstr "Bienvenue" #~ msgid "Confirm password"
#~ msgstr "Entrer le mot de passe maître :"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "Paramètre requis manquant : %s"
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr ""
#~ "Édition de la note en cours. Fermez l'éditeur de texte pour retourner à "
#~ "l'invite de commande."
#~ msgid "Note has been saved."
#~ msgstr "La note a été enregistrée."
#~ msgid "All potential ports are in use - please report the issue at %s"
#~ msgstr ""
#~ "Tous les ports sont en cours d'utilisation. Veuillez signaler ce problème "
#~ "sur %s"
#~ msgid "Sidebar"
#~ msgstr "Barre latérale"
#~ msgid "Note title"
#~ msgstr "Titre de la note"
#~ msgid "Note body"
#~ msgstr "Corps de la note"
#~ msgid "Importing from \"%s\" as \"%s\" format. Please wait..."
#~ msgstr "Importer depuis \"%s\" au format \"%s\". Veuillez patienter..."
#~ msgid "Synchronisation status"
#~ msgstr "État de la synchronisation"
#~ msgid "Print"
#~ msgstr "Imprimer"
#~ msgid "General Options"
#~ msgstr "Options générales"
#~ msgid "Encryption options"
#~ msgstr "Options de chiffrement"
#~ msgid "Create note from template"
#~ msgstr "Créer une note à partir d'un modèle"
#~ msgid "Create to-do from template"
#~ msgstr "Créer une tâche à partir d'un modèle"
#~ msgid "Insert template"
#~ msgstr "Insérer un modèle"
#~ msgid "Open template directory"
#~ msgstr "Ouvrir le dossier des modèles"
#~ msgid "Refresh templates"
#~ msgstr "Rafraichir modèles"
#~ msgid "Revision: %s (%s)"
#~ msgstr "Révision : %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "Options de chiffrement"
#~ msgid "Clipper Options"
#~ msgstr "Options du Web Clipper"
#~ msgid ""
#~ "Unknown item type downloaded - please upgrade Joplin to the latest version"
#~ msgstr "Objet inconnu téléchargé - veuillez mettre Joplin à jour"
#~ msgid "Information"
#~ msgstr "Information"
#~ msgid ""
#~ "Joplin does not have permission to access \"%s\". Either choose a "
#~ "different sync target, or give Joplin the \"Storage\" permission."
#~ msgstr ""
#~ "Joplin ne peut pas accéder au dossier \"%s\". Choisissez une autre cible "
#~ "de synchronisation, ou donnez à Joplin l'autorisation \"Stockage\"."
#~ msgid "Permission to write to external storage"
#~ msgstr "Autorisation d'écrire sur le stockage externe"
#~ msgid "Cancel synchronisation"
#~ msgstr "Annuler synchronisation"
#~ msgid "Hide metadata"
#~ msgstr "Cacher les métadonnées"
#~ msgid "Show metadata"
#~ msgstr "Voir métadonnées"
#~ msgid "Delete notebook"
#~ msgstr "Supprimer le carnet"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "Appuyez sur le bouton (+) pour créer une nouvelle note ou carnet. Ouvrez "
#~ "le menu latéral pour accéder à vos carnets."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr ""
#~ "Vous n'avez pour l'instant pas de carnets. Créez-en un en pressant le "
#~ "bouton (+)."
#~ msgid "Welcome"
#~ msgstr "Bienvenue"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Séparez chaque étiquette par une virgule." #~ msgstr "Séparez chaque étiquette par une virgule."
@@ -2041,15 +2335,6 @@ msgstr "Bienvenue"
#~ "Le chemin du répertoire avec lequel synchroniser lorsque la " #~ "Le chemin du répertoire avec lequel synchroniser lorsque la "
#~ "synchronisation par système de fichier est activée. Voir `sync.target`." #~ "synchronisation par système de fichier est activée. Voir `sync.target`."
#~ msgid "Joplin v%s"
#~ msgstr "Joplin v%s"
#~ msgid "Remove?"
#~ msgstr "Supprimer ?"
#~ msgid "Delete notes?"
#~ msgstr "Supprimer les notes ?"
#~ msgid "State: %s." #~ msgid "State: %s."
#~ msgstr "État : %s." #~ msgstr "État : %s."
@@ -2066,15 +2351,6 @@ msgstr "Bienvenue"
#~ msgid "Searches" #~ msgid "Searches"
#~ msgstr "Recherches" #~ msgstr "Recherches"
#~ msgid ""
#~ "Release notes:\n"
#~ "\n"
#~ "%s"
#~ msgstr ""
#~ "Notes de version :\n"
#~ "\n"
#~ "%s"
#~ msgid "Imports an Evernote notebook file (.enex file)." #~ msgid "Imports an Evernote notebook file (.enex file)."
#~ msgstr "Importer un carnet Evernote (fichier .enex)." #~ msgstr "Importer un carnet Evernote (fichier .enex)."
@@ -2112,9 +2388,6 @@ msgstr "Bienvenue"
#~ msgid "Exit the application." #~ msgid "Exit the application."
#~ msgstr "Quitter le logiciel." #~ msgstr "Quitter le logiciel."
#~ msgid "Delete the currently selected note or notebook."
#~ msgstr "Supprimer la note ou carnet sélectionné."
#~ msgid "Set a to-do as completed / not completed" #~ msgid "Set a to-do as completed / not completed"
#~ msgstr "Marquer une tâches comme complétée / non-complétée" #~ msgstr "Marquer une tâches comme complétée / non-complétée"
@@ -2145,9 +2418,6 @@ msgstr "Bienvenue"
#~ msgid "WebDAV (Beta)" #~ msgid "WebDAV (Beta)"
#~ msgstr "WebDAV (Bêta)" #~ msgstr "WebDAV (Bêta)"
#~ msgid "Could not download the update: %s"
#~ msgstr "Impossible de télécharger la mise à jour : %s"
#~ msgid "New version downloaded - application will quit now and update..." #~ msgid "New version downloaded - application will quit now and update..."
#~ msgstr "" #~ msgstr ""
#~ "La nouvelle version a été téléchargée - le programme va se fermer et se " #~ "La nouvelle version a été téléchargée - le programme va se fermer et se "
@@ -2328,11 +2598,6 @@ msgstr "Bienvenue"
#~ msgid "use <notebook>" #~ msgid "use <notebook>"
#~ msgstr "Nouveau carnet" #~ msgstr "Nouveau carnet"
#~ msgid "All potential ports are in use - please report the issue at %s"
#~ msgstr ""
#~ "Tous les ports sont en cours d'utilisation. Veuillez signaler ce problème "
#~ "sur %s"
#~ msgid "Synchronizing with directory \"%s\"" #~ msgid "Synchronizing with directory \"%s\""
#~ msgstr "Synchronisation avec dossier \"%s\"" #~ msgstr "Synchronisation avec dossier \"%s\""

View File

@@ -136,6 +136,14 @@ msgstr "Introducir contrasinal mestre:"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "Operación cancelada" msgstr "Operación cancelada"
#, fuzzy
msgid "Confirm password:"
msgstr "Introducir contrasinal mestre:"
#, fuzzy
msgid "Passwords do not match!"
msgstr "O contrasinal non pode estar baleiro"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -172,16 +180,6 @@ msgstr "Ningún caderno activo."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "A nota non existe: «%s». Desexa creala?" msgstr "A nota non existe: «%s». Desexa creala?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr "Comezando a editar a nota. Peche o editor para volver ao diálogo."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Produciuse un erro abrindo a nota no editor: %s"
msgid "Note has been saved."
msgstr "A nota foi gardada."
msgid "Exits the application." msgid "Exits the application."
msgstr "Sae do aplicativo." msgstr "Sae do aplicativo."
@@ -388,6 +386,23 @@ msgstr "Eliminar nota?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Busca o patrón <pattern> en todas as notas." msgstr "Busca o patrón <pattern> en todas as notas."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -461,9 +476,10 @@ msgstr "Cancelando... Agarde."
#, fuzzy #, fuzzy
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> pode ser «add», «remove» ou «list» para asignar ou eliminar " "<tag-command> pode ser «add», «remove» ou «list» para asignar ou eliminar "
"[tag] da [note] ou para listar as notas asociadas con [tag]. A orde «list» " "[tag] da [note] ou para listar as notas asociadas con [tag]. A orde «list» "
@@ -577,55 +593,10 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "Exportando a «%s» como formato «%s». Agarde..." msgstr "Exportando a «%s» como formato «%s». Agarde..."
msgid "Sidebar"
msgstr ""
msgid "Note list"
msgstr ""
#, fuzzy
msgid "Note title"
msgstr "Título do caderno:"
#, fuzzy
msgid "Note body"
msgstr "Cadernos"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "Importando de «%s» como formato «%s». Agarde..."
msgid "PDF File"
msgstr "Ficheiro PDF"
msgid "Synchronisation status"
msgstr "Estado da sincronización"
msgid "New note"
msgstr "Nova nota"
msgid "New to-do"
msgstr "Nova tarefa"
msgid "New notebook"
msgstr "Novo caderno"
msgid "Print"
msgstr "Imprimir"
msgid "General Options"
msgstr "Opcións xerais"
msgid "Encryption options"
msgstr "Opcións de cifrado"
msgid "Web clipper options"
msgstr "" msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
#, fuzzy #, fuzzy
msgid "&File" msgid "&File"
msgstr "Ficheiro" msgstr "Ficheiro"
@@ -639,6 +610,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "Buscar actualizacións…" msgstr "Buscar actualizacións…"
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "Importar" msgstr "Importar"
@@ -684,12 +658,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "" msgstr ""
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "" msgstr ""
msgid "Tags"
msgstr "Etiquetas"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Buscar en todas as notas" msgstr "Buscar en todas as notas"
@@ -704,6 +684,13 @@ msgstr "Vista"
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "Activar cifrado"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "Cambiar a disposición do editor" msgstr "Cambiar a disposición do editor"
@@ -722,6 +709,10 @@ msgstr "Axuda"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Sitio web e documentación" msgstr "Sitio web e documentación"
#, fuzzy
msgid "Joplin Forum"
msgstr "Sitio web de Joplin"
msgid "Make a donation" msgid "Make a donation"
msgstr "Doar" msgstr "Doar"
@@ -765,6 +756,9 @@ msgstr "Si"
msgid "No" msgid "No"
msgstr "Non" msgstr "Non"
msgid "Full Release Notes"
msgstr ""
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -826,6 +820,9 @@ msgid ""
"access Joplin." "access Joplin."
msgstr "" msgstr ""
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "As notas e axustes gardáronse en: %s" msgstr "As notas e axustes gardáronse en: %s"
@@ -836,6 +833,9 @@ msgstr "Comprobar a configuración da sincronización"
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr "Anterior"
msgid "Apply" msgid "Apply"
msgstr "" msgstr ""
@@ -917,8 +917,8 @@ msgstr ""
"descargados pola sincronización." "descargados pola sincronización."
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -927,13 +927,19 @@ msgstr "Estado"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "O cifrado é:" msgstr "O cifrado é:"
msgid "Firefox Extension"
msgstr ""
msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
#, fuzzy #, fuzzy
msgid "Usage" msgid "Usage"
msgstr "Uso: %s" msgstr "Uso: %s"
msgid "Back"
msgstr "Anterior"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -961,6 +967,18 @@ msgstr "Renomear"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Estabelecer alarma:" msgstr "Estabelecer alarma:"
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "Nova nota"
msgid "New to-do"
msgstr "Nova tarefa"
msgid "New notebook"
msgstr "Novo caderno"
msgid "Layout" msgid "Layout"
msgstr "Disposición" msgstr "Disposición"
@@ -997,6 +1015,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "Cadernos" msgstr "Cadernos"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -1011,6 +1032,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "Esta nota foi modificada:" msgstr "Esta nota foi modificada:"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Ligazón ou mensaxe incompatíbeis: %s"
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -1039,10 +1064,6 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Ligazón ou mensaxe incompatíbeis: %s"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1054,6 +1075,13 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
msgid "PDF File"
msgstr "Ficheiro PDF"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Produciuse un erro abrindo a nota no editor: %s"
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -1069,9 +1097,6 @@ msgstr ""
msgid "Attach file" msgid "Attach file"
msgstr "Anexar un ficheiro" msgstr "Anexar un ficheiro"
msgid "Tags"
msgstr "Etiquetas"
msgid "Set alarm" msgid "Set alarm"
msgstr "Estabelecer alarma" msgstr "Estabelecer alarma"
@@ -1082,9 +1107,6 @@ msgstr "%s: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Numbered List" msgid "Numbered List"
msgstr "" msgstr ""
@@ -1135,12 +1157,8 @@ msgstr "Opcións"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Estado da sincronización" msgstr "Estado da sincronización"
msgid "Encryption Options" msgid "Remove"
msgstr "Opcións de cifrado" msgstr ""
#, fuzzy
msgid "Clipper Options"
msgstr "Opcións xerais"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "" msgid ""
@@ -1150,6 +1168,9 @@ msgid ""
msgstr "" msgstr ""
"Desexa eliminar o caderno? Tamén se eliminarán todas as notas deste caderno." "Desexa eliminar o caderno? Tamén se eliminarán todas as notas deste caderno."
msgid "Delete"
msgstr "Eliminar"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "Desexa eliminar esta etiqueta de todas as notas?" msgstr "Desexa eliminar esta etiqueta de todas as notas?"
@@ -1157,8 +1178,9 @@ msgstr "Desexa eliminar esta etiqueta de todas as notas?"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "Desexa eliminar esta busca da barra lateral?" msgstr "Desexa eliminar esta busca da barra lateral?"
msgid "Delete" #, fuzzy
msgstr "Eliminar" msgid "New sub-notebook"
msgstr "Novo caderno"
msgid "Rename" msgid "Rename"
msgstr "Renomear" msgstr "Renomear"
@@ -1330,14 +1352,6 @@ msgstr "Inactivo"
msgid "In progress" msgid "In progress"
msgstr "En proceso" msgstr "En proceso"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "A sincronización xa está en proceso. Estado: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "Cifrado" msgstr "Cifrado"
@@ -1385,6 +1399,19 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "Predeterminado: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Destino da sincronización" msgstr "Destino da sincronización"
@@ -1455,6 +1482,41 @@ msgstr "Claro"
msgid "Dark" msgid "Dark"
msgstr "Escuro" msgstr "Escuro"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
#, fuzzy
msgid "Show note counts"
msgstr "Mostrar a icona na bandexa"
#, fuzzy
msgid "Editor"
msgstr "Edtar"
#, fuzzy
msgid "Viewer"
msgstr "Vista"
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "Tarefas sen completar arriba" msgstr "Tarefas sen completar arriba"
@@ -1490,6 +1552,9 @@ msgstr "Cando se crea unha nova nota:"
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "Activar cifrado" msgstr "Activar cifrado"
@@ -1524,6 +1589,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "Mostrar a icona na bandexa" msgstr "Mostrar a icona na bandexa"
@@ -1546,6 +1614,10 @@ msgstr "Porcentaxe de ampliación"
msgid "Editor font size" msgid "Editor font size"
msgstr "Familia de tipos de letra do editor" msgstr "Familia de tipos de letra do editor"
#, fuzzy
msgid "Editor font"
msgstr "Familia de tipos de letra do editor"
msgid "Editor font family" msgid "Editor font family"
msgstr "Familia de tipos de letra do editor" msgstr "Familia de tipos de letra do editor"
@@ -1594,8 +1666,35 @@ msgstr ""
"Editor a usar para abrir unha nota. Se non se indica ningún tentará detectar " "Editor a usar para abrir unha nota. Se non se indica ningún tentará detectar "
"automaticamente o editor predeterminado." "automaticamente o editor predeterminado."
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Mostrar opcións avanzadas" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "" msgstr ""
@@ -1610,6 +1709,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "" msgstr ""
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable note history" msgid "Enable note history"
msgstr "Activar cifrado" msgstr "Activar cifrado"
@@ -1650,6 +1759,13 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "Sae do aplicativo." msgstr "Sae do aplicativo."
#, fuzzy
msgid "Encryption"
msgstr "O cifrado é:"
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1663,7 +1779,12 @@ msgstr "Markdown"
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "Cartafol de exportación do Joplin" msgstr "Cartafol de exportación do Joplin"
msgid "Evernote Export File" #, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "Ficheiro de exportación de Evernote"
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Ficheiro de exportación de Evernote" msgstr "Ficheiro de exportación de Evernote"
#, fuzzy #, fuzzy
@@ -1770,24 +1891,20 @@ msgstr ""
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "" msgstr ""
#, fuzzy
msgid "You currently have no notebooks."
msgstr "Ningún caderno activo."
#, fuzzy
msgid "Create a notebook"
msgstr "Crea un caderno novo."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "Non ten notas actualmente. Cree unha premendo no botón (+)." msgstr "Non ten notas actualmente. Cree unha premendo no botón (+)."
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Desexa eliminar estas notas?" msgstr "Desexa eliminar estas notas?"
msgid "Log"
msgstr "Rexistro"
msgid "Export Debug Report"
msgstr "Exportar informe de depuración"
msgid "Encryption Config"
msgstr "Configuración de cifrado"
msgid "Configuration"
msgstr "Configuración"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Mover para o caderno..." msgstr "Mover para o caderno..."
@@ -1812,8 +1929,24 @@ msgstr "Seleccionar data"
msgid "Confirm" msgid "Confirm"
msgstr "Confirmar" msgstr "Confirmar"
msgid "Cancel synchronisation" #, fuzzy, javascript-format
msgstr "Cancelar sincronización" msgid "Notebook: %s"
msgstr "Cadernos"
#, fuzzy
msgid "Encrypted notebooks cannot be renamed"
msgstr "Non é posíbel modificar elementos cifrados"
#, fuzzy
msgid "New Notebook"
msgstr "Novo caderno"
msgid "Configuration"
msgstr "Configuración"
#, fuzzy
msgid "All notes"
msgstr "nota"
#, fuzzy #, fuzzy
msgid "Checking... Please wait." msgid "Checking... Please wait."
@@ -1851,6 +1984,46 @@ msgstr "Etiquetas novas:"
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "Escriba etiquetas novas ou seleccione da lista" msgstr "Escriba etiquetas novas ou seleccione da lista"
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr "Configuración de cifrado"
#, fuzzy
msgid "Tools"
msgstr "Ferramentas"
#, fuzzy
msgid "Sync Status"
msgstr "Estado"
msgid "Log"
msgstr "Rexistro"
#, fuzzy
msgid "Creating report..."
msgstr "Criando novo %s..."
msgid "Export Debug Report"
msgstr "Exportar informe de depuración"
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "Configuración" msgstr "Configuración"
@@ -1903,6 +2076,10 @@ msgstr "Contrasinal:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "O contrasinal non pode estar baleiro" msgstr "O contrasinal non pode estar baleiro"
#, fuzzy
msgid "Confirm password cannot be empty"
msgstr "O contrasinal non pode estar baleiro"
msgid "Enable" msgid "Enable"
msgstr "Activar" msgstr "Activar"
@@ -1913,6 +2090,10 @@ msgstr "Non foi posíbel gardar o caderno: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Editar caderno" msgstr "Editar caderno"
#, fuzzy
msgid "Enter notebook title"
msgstr "Título do caderno:"
msgid "Show all" msgid "Show all"
msgstr "Mostrar todo" msgstr "Mostrar todo"
@@ -1936,10 +2117,32 @@ msgstr ""
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "Tipo de imaxe incompatíbel: %s" msgstr "Tipo de imaxe incompatíbel: %s"
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "Actualizado: %d."
msgid "View on map"
msgstr "Ver no mapa"
msgid "Go to source URL"
msgstr ""
#, fuzzy
msgid "Attach..."
msgstr "Buscar…"
#, fuzzy
msgid "Choose an option"
msgstr "Mostrar opcións avanzadas"
#, fuzzy #, fuzzy
msgid "Take photo" msgid "Take photo"
msgstr "Anexar foto" msgstr "Anexar foto"
@@ -1959,23 +2162,18 @@ msgstr "Converter para nota"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "Converter para tarefa" msgstr "Converter para tarefa"
msgid "Hide metadata" msgid "Properties"
msgstr "Ocultar metadados" msgstr ""
msgid "Show metadata" msgid "Add body"
msgstr "Mostrar metadatos"
msgid "View on map"
msgstr "Ver no mapa"
msgid "Go to source URL"
msgstr "" msgstr ""
msgid "Edit" msgid "Edit"
msgstr "Edtar" msgstr "Edtar"
msgid "Delete notebook" #, fuzzy
msgstr "Eliminar caderno" msgid "Add title"
msgstr "Sen título"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "Acceder con OneDrive" msgstr "Acceder con OneDrive"
@@ -1983,18 +2181,97 @@ msgstr "Acceder con OneDrive"
msgid "Search" msgid "Search"
msgstr "Buscar" msgstr "Buscar"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "A sincronización xa está en proceso. Estado: %s"
"menu to access your existing notebooks."
msgstr ""
"Prema no botón (+) para crear unha nota ou caderno. Prema no menú lateral "
"para acceder aos cadernos existentes."
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "Non ten cadernos actualmente. Cree un premendo no botón (+)." #~ msgid "Confirm master password:"
#~ msgstr "Introducir contrasinal mestre:"
msgid "Welcome" #, fuzzy
msgstr "Benvido/a" #~ msgid "Confirm password"
#~ msgstr "Introducir contrasinal mestre:"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "Falta un argumento requirido: %s"
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr "Comezando a editar a nota. Peche o editor para volver ao diálogo."
#~ msgid "Note has been saved."
#~ msgstr "A nota foi gardada."
#, fuzzy
#~ msgid "Note title"
#~ msgstr "Título do caderno:"
#, fuzzy
#~ msgid "Note body"
#~ msgstr "Cadernos"
#~ msgid "Importing from \"%s\" as \"%s\" format. Please wait..."
#~ msgstr "Importando de «%s» como formato «%s». Agarde..."
#~ msgid "Synchronisation status"
#~ msgstr "Estado da sincronización"
#~ msgid "Print"
#~ msgstr "Imprimir"
#~ msgid "General Options"
#~ msgstr "Opcións xerais"
#~ msgid "Encryption options"
#~ msgstr "Opcións de cifrado"
#, fuzzy
#~ msgid "Open template directory"
#~ msgstr "Cartafol de exportación do Joplin"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "Opcións de cifrado"
#, fuzzy
#~ msgid "Clipper Options"
#~ msgstr "Opcións xerais"
#, fuzzy
#~ msgid "Information"
#~ msgstr "Configuración"
#~ msgid "Cancel synchronisation"
#~ msgstr "Cancelar sincronización"
#~ msgid "Hide metadata"
#~ msgstr "Ocultar metadados"
#~ msgid "Show metadata"
#~ msgstr "Mostrar metadatos"
#~ msgid "Delete notebook"
#~ msgstr "Eliminar caderno"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "Prema no botón (+) para crear unha nota ou caderno. Prema no menú lateral "
#~ "para acceder aos cadernos existentes."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr "Non ten cadernos actualmente. Cree un premendo no botón (+)."
#~ msgid "Welcome"
#~ msgstr "Benvido/a"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Separar cada etiqueta por unha coma." #~ msgstr "Separar cada etiqueta por unha coma."
@@ -2012,10 +2289,6 @@ msgstr "Benvido/a"
#~ "Ruta para sincronizar cando estea activada a sincronización do sistema de " #~ "Ruta para sincronizar cando estea activada a sincronización do sistema de "
#~ "ficheiros. Vexa «sync.target»." #~ "ficheiros. Vexa «sync.target»."
#, fuzzy
#~ msgid "Joplin v%s"
#~ msgstr "Sitio web de Joplin"
#~ msgid "State: %s." #~ msgid "State: %s."
#~ msgstr "Estado: %s." #~ msgstr "Estado: %s."

View File

@@ -137,6 +137,12 @@ msgstr ""
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "" msgstr ""
msgid "Confirm password:"
msgstr ""
msgid "Passwords do not match!"
msgstr ""
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -173,18 +179,6 @@ msgstr "Nema aktivne bilježnice."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "Bilješka ne postoji: \"%s\". Napravi je?" msgstr "Bilješka ne postoji: \"%s\". Napravi je?"
#, fuzzy
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
"Počinjem uređivati bilješku. Za povratak u naredbeni redak, zatvori uređivač."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "Note has been saved."
msgstr "Bilješka je spremljena."
msgid "Exits the application." msgid "Exits the application."
msgstr "Izlaz iz aplikacije." msgstr "Izlaz iz aplikacije."
@@ -393,6 +387,23 @@ msgstr "Obrisati bilješku?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Pretražuje dati <pattern> u svim bilješkama." msgstr "Pretražuje dati <pattern> u svim bilješkama."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -463,9 +474,10 @@ msgstr "Prekidam... Pričekaj."
#, fuzzy #, fuzzy
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove "
"[tag] from [note], or to list the notes associated with [tag]. The command " "[tag] from [note], or to list the notes associated with [tag]. The command "
@@ -579,57 +591,10 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "" msgstr ""
msgid "Sidebar"
msgstr ""
msgid "Note list"
msgstr ""
#, fuzzy
msgid "Note title"
msgstr "Naslov bilježnice:"
#, fuzzy
msgid "Note body"
msgstr "Bilježnice"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "" msgstr ""
#, fuzzy
msgid "PDF File"
msgstr "Datoteka"
msgid "Synchronisation status"
msgstr "Status sinkronizacije"
msgid "New note"
msgstr "Nova bilješka"
msgid "New to-do"
msgstr "Novi zadatak"
msgid "New notebook"
msgstr "Nova bilježnica"
msgid "Print"
msgstr ""
#, fuzzy
msgid "General Options"
msgstr "Opcije"
msgid "Encryption options"
msgstr ""
msgid "Web clipper options"
msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
#, fuzzy #, fuzzy
msgid "&File" msgid "&File"
msgstr "Datoteka" msgstr "Datoteka"
@@ -643,6 +608,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "" msgstr ""
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "Uvoz" msgstr "Uvoz"
@@ -689,12 +657,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "" msgstr ""
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "" msgstr ""
msgid "Tags"
msgstr "Oznake"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Pretraži u svim bilješkama" msgstr "Pretraži u svim bilješkama"
@@ -708,6 +682,13 @@ msgstr ""
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "Bilješka je promijenjena:"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "" msgstr ""
@@ -726,6 +707,10 @@ msgstr "Pomoć"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Website i dokumentacija" msgstr "Website i dokumentacija"
#, fuzzy
msgid "Joplin Forum"
msgstr "Evernote izvozne datoteke"
#, fuzzy #, fuzzy
msgid "Make a donation" msgid "Make a donation"
msgstr "Website i dokumentacija" msgstr "Website i dokumentacija"
@@ -771,6 +756,10 @@ msgstr ""
msgid "No" msgid "No"
msgstr "N" msgstr "N"
#, fuzzy
msgid "Full Release Notes"
msgstr "Obriši bilješke?"
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -832,6 +821,9 @@ msgid ""
"access Joplin." "access Joplin."
msgstr "" msgstr ""
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "Bilješke i postavke su pohranjene u: %s" msgstr "Bilješke i postavke su pohranjene u: %s"
@@ -843,6 +835,9 @@ msgstr "Prekini sinkronizaciju"
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr "Natrag"
msgid "Apply" msgid "Apply"
msgstr "" msgstr ""
@@ -911,8 +906,8 @@ msgid ""
msgstr "" msgstr ""
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -921,13 +916,19 @@ msgstr "Status"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "" msgstr ""
msgid "Firefox Extension"
msgstr ""
msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
#, fuzzy #, fuzzy
msgid "Usage" msgid "Usage"
msgstr "Korištenje: %s" msgstr "Korištenje: %s"
msgid "Back"
msgstr "Natrag"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -957,6 +958,18 @@ msgstr "Preimenuj"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Postavi upozorenje:" msgstr "Postavi upozorenje:"
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "Nova bilješka"
msgid "New to-do"
msgstr "Novi zadatak"
msgid "New notebook"
msgstr "Nova bilježnica"
msgid "Layout" msgid "Layout"
msgstr "Izgled" msgstr "Izgled"
@@ -993,6 +1006,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "Bilježnice" msgstr "Bilježnice"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -1007,6 +1023,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "Bilješka je promijenjena:" msgstr "Bilješka je promijenjena:"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Nepodržana poveznica ili poruka: %s"
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -1036,10 +1056,6 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Nepodržana poveznica ili poruka: %s"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1049,6 +1065,14 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
#, fuzzy
msgid "PDF File"
msgstr "Datoteka"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -1064,9 +1088,6 @@ msgstr ""
msgid "Attach file" msgid "Attach file"
msgstr "Priloži datoteku" msgstr "Priloži datoteku"
msgid "Tags"
msgstr "Oznake"
msgid "Set alarm" msgid "Set alarm"
msgstr "Postavi upozorenje" msgstr "Postavi upozorenje"
@@ -1077,9 +1098,6 @@ msgstr "%s: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Numbered List" msgid "Numbered List"
msgstr "" msgstr ""
@@ -1132,13 +1150,9 @@ msgstr "Opcije"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Status Sinkronizacije" msgstr "Status Sinkronizacije"
msgid "Encryption Options" msgid "Remove"
msgstr "" msgstr ""
#, fuzzy
msgid "Clipper Options"
msgstr "Opcije"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "" msgid ""
"Delete notebook \"%s\"?\n" "Delete notebook \"%s\"?\n"
@@ -1147,6 +1161,9 @@ msgid ""
msgstr "" msgstr ""
"Obrisati bilježnicu? Sve bilješke u toj bilježnici će također biti obrisane." "Obrisati bilježnicu? Sve bilješke u toj bilježnici će također biti obrisane."
msgid "Delete"
msgstr "Obriši"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "Makni ovu oznaku iz svih bilješki?" msgstr "Makni ovu oznaku iz svih bilješki?"
@@ -1154,8 +1171,9 @@ msgstr "Makni ovu oznaku iz svih bilješki?"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "Makni ovu pretragu iz izbornika?" msgstr "Makni ovu pretragu iz izbornika?"
msgid "Delete" #, fuzzy
msgstr "Obriši" msgid "New sub-notebook"
msgstr "Nova bilježnica"
msgid "Rename" msgid "Rename"
msgstr "Preimenuj" msgstr "Preimenuj"
@@ -1324,14 +1342,6 @@ msgstr ""
msgid "In progress" msgid "In progress"
msgstr "" msgstr ""
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "Sinkronizacija je već u toku. Stanje: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "" msgstr ""
@@ -1380,6 +1390,19 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "Default: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Sinkroniziraj sa" msgstr "Sinkroniziraj sa"
@@ -1448,6 +1471,39 @@ msgstr "Svijetla"
msgid "Dark" msgid "Dark"
msgstr "Tamna" msgstr "Tamna"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
msgid "Show note counts"
msgstr ""
#, fuzzy
msgid "Editor"
msgstr "Uredi"
msgid "Viewer"
msgstr ""
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
#, fuzzy #, fuzzy
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "Prikaži nezavršene zadatke na vrhu liste" msgstr "Prikaži nezavršene zadatke na vrhu liste"
@@ -1488,6 +1544,9 @@ msgstr "Stvara novu bilješku."
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "" msgstr ""
@@ -1521,6 +1580,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "" msgstr ""
@@ -1543,6 +1605,10 @@ msgstr ""
msgid "Editor font size" msgid "Editor font size"
msgstr "Uredi bilješku." msgstr "Uredi bilješku."
#, fuzzy
msgid "Editor font"
msgstr "Uredi bilješku."
msgid "Editor font family" msgid "Editor font family"
msgstr "" msgstr ""
@@ -1588,8 +1654,35 @@ msgstr ""
"Program za uređivanje koji će biti korišten za uređivanje bilješki. Ako ni " "Program za uređivanje koji će biti korišten za uređivanje bilješki. Ako ni "
"jedan nije odabran, pokušati će se sa default programom." "jedan nije odabran, pokušati će se sa default programom."
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Prikaži napredne opcije" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "" msgstr ""
@@ -1604,6 +1697,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "" msgstr ""
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable note history" msgid "Enable note history"
msgstr "Bilješka je promijenjena:" msgstr "Bilješka je promijenjena:"
@@ -1644,6 +1747,12 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "Izađi iz aplikacije." msgstr "Izađi iz aplikacije."
msgid "Encryption"
msgstr ""
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1659,7 +1768,11 @@ msgid "Joplin Export Directory"
msgstr "" msgstr ""
#, fuzzy #, fuzzy
msgid "Evernote Export File" msgid "Evernote Export File (as Markdown)"
msgstr "Evernote izvozne datoteke"
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Evernote izvozne datoteke" msgstr "Evernote izvozne datoteke"
#, fuzzy #, fuzzy
@@ -1762,24 +1875,20 @@ msgstr ""
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "" msgstr ""
#, fuzzy
msgid "You currently have no notebooks."
msgstr "Obriši odabranu bilješku ili bilježnicu."
#, fuzzy
msgid "Create a notebook"
msgstr "Stvara novu bilježnicu."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "Trenutno nema bilješki. Stvori novu klikom na (+) gumb." msgstr "Trenutno nema bilješki. Stvori novu klikom na (+) gumb."
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Obriši ove bilješke?" msgstr "Obriši ove bilješke?"
msgid "Log"
msgstr "Log"
msgid "Export Debug Report"
msgstr "Izvezi Debug izvještaj"
msgid "Encryption Config"
msgstr ""
msgid "Configuration"
msgstr "Konfiguracija"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Premjesti u bilježnicu..." msgstr "Premjesti u bilježnicu..."
@@ -1804,8 +1913,24 @@ msgstr "Odaberi datum"
msgid "Confirm" msgid "Confirm"
msgstr "Potvrdi" msgstr "Potvrdi"
msgid "Cancel synchronisation" #, fuzzy, javascript-format
msgstr "Prekini sinkronizaciju" msgid "Notebook: %s"
msgstr "Bilježnice"
#, fuzzy
msgid "Encrypted notebooks cannot be renamed"
msgstr "Neke stavke se ne mogu sinkronizirati."
#, fuzzy
msgid "New Notebook"
msgstr "Nova bilježnica"
msgid "Configuration"
msgstr "Konfiguracija"
#, fuzzy
msgid "All notes"
msgstr "Nova bilješka"
#, fuzzy #, fuzzy
msgid "Checking... Please wait." msgid "Checking... Please wait."
@@ -1843,6 +1968,46 @@ msgstr ""
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "" msgstr ""
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr ""
#, fuzzy
msgid "Tools"
msgstr "Alati"
#, fuzzy
msgid "Sync Status"
msgstr "Status"
msgid "Log"
msgstr "Log"
#, fuzzy
msgid "Creating report..."
msgstr "Uvozim bilješke..."
msgid "Export Debug Report"
msgstr "Izvezi Debug izvještaj"
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "Konfiguracija" msgstr "Konfiguracija"
@@ -1896,6 +2061,9 @@ msgstr ""
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "" msgstr ""
msgid "Confirm password cannot be empty"
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable" msgid "Enable"
msgstr "Onemogućeno" msgstr "Onemogućeno"
@@ -1907,6 +2075,10 @@ msgstr "Bilježnicu nije moguće snimiti: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Uredi bilježnicu" msgstr "Uredi bilježnicu"
#, fuzzy
msgid "Enter notebook title"
msgstr "Naslov bilježnice:"
msgid "Show all" msgid "Show all"
msgstr "" msgstr ""
@@ -1930,10 +2102,32 @@ msgstr ""
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "Nepodržana vrsta slike: %s" msgstr "Nepodržana vrsta slike: %s"
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "Ažurirano: %d."
msgid "View on map"
msgstr "Vidi na karti"
msgid "Go to source URL"
msgstr ""
#, fuzzy
msgid "Attach..."
msgstr "Traži"
#, fuzzy
msgid "Choose an option"
msgstr "Prikaži napredne opcije"
#, fuzzy #, fuzzy
msgid "Take photo" msgid "Take photo"
msgstr "Priloži sliku" msgstr "Priloži sliku"
@@ -1953,23 +2147,18 @@ msgstr "Pretvori u bilješku"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "Pretvori u zadatak" msgstr "Pretvori u zadatak"
msgid "Hide metadata" msgid "Properties"
msgstr "Sakrij metapodatke" msgstr ""
msgid "Show metadata" msgid "Add body"
msgstr "Prikaži metapodatke"
msgid "View on map"
msgstr "Vidi na karti"
msgid "Go to source URL"
msgstr "" msgstr ""
msgid "Edit" msgid "Edit"
msgstr "Uredi" msgstr "Uredi"
msgid "Delete notebook" #, fuzzy
msgstr "Obriši bilježnicu" msgid "Add title"
msgstr "Nenaslovljen"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "Prijavi se u OneDrive" msgstr "Prijavi se u OneDrive"
@@ -1977,18 +2166,81 @@ msgstr "Prijavi se u OneDrive"
msgid "Search" msgid "Search"
msgstr "Traži" msgstr "Traži"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "Sinkronizacija je već u toku. Stanje: %s"
"menu to access your existing notebooks."
msgstr ""
"Klikni (+) gumb za dodavanje nove bilješke ili bilježnice ili odaberi "
"postojeću bilježnicu iz izbornika."
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "Trenutno nemaš nijednu bilježnicu. Stvori novu klikom na (+) gumb." #~ msgid "Confirm password"
#~ msgstr "Potvrdi"
msgid "Welcome" #, fuzzy
msgstr "Dobro došli" #~ msgid "Missing required argument: note"
#~ msgstr "Nedostaje obavezni argument: %s"
#, fuzzy
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr ""
#~ "Počinjem uređivati bilješku. Za povratak u naredbeni redak, zatvori "
#~ "uređivač."
#~ msgid "Note has been saved."
#~ msgstr "Bilješka je spremljena."
#, fuzzy
#~ msgid "Note title"
#~ msgstr "Naslov bilježnice:"
#, fuzzy
#~ msgid "Note body"
#~ msgstr "Bilježnice"
#~ msgid "Synchronisation status"
#~ msgstr "Status sinkronizacije"
#, fuzzy
#~ msgid "General Options"
#~ msgstr "Opcije"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#, fuzzy
#~ msgid "Clipper Options"
#~ msgstr "Opcije"
#, fuzzy
#~ msgid "Information"
#~ msgstr "Konfiguracija"
#~ msgid "Cancel synchronisation"
#~ msgstr "Prekini sinkronizaciju"
#~ msgid "Hide metadata"
#~ msgstr "Sakrij metapodatke"
#~ msgid "Show metadata"
#~ msgstr "Prikaži metapodatke"
#~ msgid "Delete notebook"
#~ msgstr "Obriši bilježnicu"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "Klikni (+) gumb za dodavanje nove bilješke ili bilježnice ili odaberi "
#~ "postojeću bilježnicu iz izbornika."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr "Trenutno nemaš nijednu bilježnicu. Stvori novu klikom na (+) gumb."
#~ msgid "Welcome"
#~ msgstr "Dobro došli"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Odvoji oznake zarezom." #~ msgstr "Odvoji oznake zarezom."
@@ -2018,13 +2270,6 @@ msgstr "Dobro došli"
#~ msgid "Searches" #~ msgid "Searches"
#~ msgstr "Pretraživanja" #~ msgstr "Pretraživanja"
#, fuzzy
#~ msgid ""
#~ "Release notes:\n"
#~ "\n"
#~ "%s"
#~ msgstr "Obriši bilješke?"
#~ msgid "Imports an Evernote notebook file (.enex file)." #~ msgid "Imports an Evernote notebook file (.enex file)."
#~ msgstr "Uvozi Evernote bilježnicu (.enex datoteku)." #~ msgstr "Uvozi Evernote bilježnicu (.enex datoteku)."
@@ -2058,9 +2303,6 @@ msgstr "Dobro došli"
#~ msgid "Cancel the current command." #~ msgid "Cancel the current command."
#~ msgstr "Prekini trenutnu naredbu." #~ msgstr "Prekini trenutnu naredbu."
#~ msgid "Delete the currently selected note or notebook."
#~ msgstr "Obriši odabranu bilješku ili bilježnicu."
#~ msgid "Set a to-do as completed / not completed" #~ msgid "Set a to-do as completed / not completed"
#~ msgstr "Postavi zadatak kao završen/nezavršen" #~ msgstr "Postavi zadatak kao završen/nezavršen"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -128,6 +128,12 @@ msgstr ""
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "" msgstr ""
msgid "Confirm password:"
msgstr ""
msgid "Passwords do not match!"
msgstr ""
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -160,16 +166,6 @@ msgstr ""
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "" msgstr ""
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "Note has been saved."
msgstr ""
msgid "Exits the application." msgid "Exits the application."
msgstr "" msgstr ""
@@ -353,6 +349,23 @@ msgstr ""
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "" msgstr ""
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -415,9 +428,10 @@ msgid "Cancelling... Please wait."
msgstr "" msgstr ""
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -508,51 +522,8 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "" msgstr ""
msgid "Sidebar"
msgstr ""
msgid "Note list"
msgstr ""
msgid "Note title"
msgstr ""
msgid "Note body"
msgstr ""
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr ""
msgid "PDF File"
msgstr ""
msgid "Synchronisation status"
msgstr ""
msgid "New note"
msgstr ""
msgid "New to-do"
msgstr ""
msgid "New notebook"
msgstr ""
msgid "Print"
msgstr ""
msgid "General Options"
msgstr ""
msgid "Encryption options"
msgstr ""
msgid "Web clipper options"
msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "" msgstr ""
msgid "&File" msgid "&File"
@@ -567,6 +538,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "" msgstr ""
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -610,12 +584,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "" msgstr ""
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "" msgstr ""
msgid "Tags"
msgstr ""
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "" msgstr ""
@@ -628,6 +608,12 @@ msgstr ""
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
msgid "Toggle note list"
msgstr ""
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "" msgstr ""
@@ -643,6 +629,9 @@ msgstr ""
msgid "Website and documentation" msgid "Website and documentation"
msgstr "" msgstr ""
msgid "Joplin Forum"
msgstr ""
msgid "Make a donation" msgid "Make a donation"
msgstr "" msgstr ""
@@ -686,6 +675,9 @@ msgstr ""
msgid "No" msgid "No"
msgstr "" msgstr ""
msgid "Full Release Notes"
msgstr ""
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -746,6 +738,9 @@ msgid ""
"access Joplin." "access Joplin."
msgstr "" msgstr ""
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "" msgstr ""
@@ -756,6 +751,9 @@ msgstr ""
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr ""
msgid "Apply" msgid "Apply"
msgstr "" msgstr ""
@@ -824,8 +822,8 @@ msgid ""
msgstr "" msgstr ""
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -834,10 +832,16 @@ msgstr ""
msgid "Encryption is:" msgid "Encryption is:"
msgstr "" msgstr ""
msgid "Usage" msgid "Firefox Extension"
msgstr "" msgstr ""
msgid "Back" msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
msgid "Usage"
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -866,6 +870,18 @@ msgstr ""
msgid "Set alarm:" msgid "Set alarm:"
msgstr "" msgstr ""
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr ""
msgid "New to-do"
msgstr ""
msgid "New notebook"
msgstr ""
msgid "Layout" msgid "Layout"
msgstr "" msgstr ""
@@ -900,6 +916,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "" msgstr ""
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -913,6 +932,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -941,10 +964,6 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -954,6 +973,13 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
msgid "PDF File"
msgstr ""
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -969,9 +995,6 @@ msgstr ""
msgid "Attach file" msgid "Attach file"
msgstr "" msgstr ""
msgid "Tags"
msgstr ""
msgid "Set alarm" msgid "Set alarm"
msgstr "" msgstr ""
@@ -982,9 +1005,6 @@ msgstr ""
msgid "Hyperlink" msgid "Hyperlink"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Numbered List" msgid "Numbered List"
msgstr "" msgstr ""
@@ -1034,10 +1054,7 @@ msgstr ""
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "" msgstr ""
msgid "Encryption Options" msgid "Remove"
msgstr ""
msgid "Clipper Options"
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -1047,6 +1064,9 @@ msgid ""
"All notes and sub-notebooks within this notebook will also be deleted." "All notes and sub-notebooks within this notebook will also be deleted."
msgstr "" msgstr ""
msgid "Delete"
msgstr ""
#, javascript-format #, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "" msgstr ""
@@ -1054,7 +1074,7 @@ msgstr ""
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "" msgstr ""
msgid "Delete" msgid "New sub-notebook"
msgstr "" msgstr ""
msgid "Rename" msgid "Rename"
@@ -1215,14 +1235,6 @@ msgstr ""
msgid "In progress" msgid "In progress"
msgstr "" msgstr ""
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr ""
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "" msgstr ""
@@ -1266,6 +1278,18 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
msgid "Default"
msgstr ""
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "" msgstr ""
@@ -1334,6 +1358,38 @@ msgstr ""
msgid "Dark" msgid "Dark"
msgstr "" msgstr ""
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
msgid "Show note counts"
msgstr ""
msgid "Editor"
msgstr ""
msgid "Viewer"
msgstr ""
msgid "Split View"
msgstr ""
#, javascript-format
msgid "%s / %s / %s"
msgstr ""
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "" msgstr ""
@@ -1367,6 +1423,9 @@ msgstr ""
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "" msgstr ""
@@ -1400,6 +1459,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "" msgstr ""
@@ -1421,6 +1483,9 @@ msgstr ""
msgid "Editor font size" msgid "Editor font size"
msgstr "" msgstr ""
msgid "Editor font"
msgstr ""
msgid "Editor font family" msgid "Editor font family"
msgstr "" msgstr ""
@@ -1462,7 +1527,34 @@ msgid ""
"If none is provided it will try to auto-detect the default editor." "If none is provided it will try to auto-detect the default editor."
msgstr "" msgstr ""
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr "" msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
@@ -1478,6 +1570,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "" msgstr ""
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
msgid "Enable note history" msgid "Enable note history"
msgstr "" msgstr ""
@@ -1513,6 +1615,12 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "" msgstr ""
msgid "Encryption"
msgstr ""
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1526,7 +1634,10 @@ msgstr ""
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "" msgstr ""
msgid "Evernote Export File" msgid "Evernote Export File (as Markdown)"
msgstr ""
msgid "Evernote Export File (as HTML)"
msgstr "" msgstr ""
msgid "Json Export Directory" msgid "Json Export Directory"
@@ -1626,24 +1737,18 @@ msgstr ""
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "" msgstr ""
msgid "You currently have no notebooks."
msgstr ""
msgid "Create a notebook"
msgstr ""
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "" msgstr ""
msgid "Log"
msgstr ""
msgid "Export Debug Report"
msgstr ""
msgid "Encryption Config"
msgstr ""
msgid "Configuration"
msgstr ""
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "" msgstr ""
@@ -1666,7 +1771,20 @@ msgstr ""
msgid "Confirm" msgid "Confirm"
msgstr "" msgstr ""
msgid "Cancel synchronisation" #, javascript-format
msgid "Notebook: %s"
msgstr ""
msgid "Encrypted notebooks cannot be renamed"
msgstr ""
msgid "New Notebook"
msgstr ""
msgid "Configuration"
msgstr ""
msgid "All notes"
msgstr "" msgstr ""
msgid "Checking... Please wait." msgid "Checking... Please wait."
@@ -1702,6 +1820,43 @@ msgstr ""
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "" msgstr ""
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr ""
msgid "Tools"
msgstr ""
msgid "Sync Status"
msgstr ""
msgid "Log"
msgstr ""
msgid "Creating report..."
msgstr ""
msgid "Export Debug Report"
msgstr ""
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
msgid "More information" msgid "More information"
msgstr "" msgstr ""
@@ -1752,6 +1907,9 @@ msgstr ""
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "" msgstr ""
msgid "Confirm password cannot be empty"
msgstr ""
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
@@ -1762,6 +1920,9 @@ msgstr ""
msgid "Edit notebook" msgid "Edit notebook"
msgstr "" msgstr ""
msgid "Enter notebook title"
msgstr ""
msgid "Show all" msgid "Show all"
msgstr "" msgstr ""
@@ -1785,10 +1946,30 @@ msgstr ""
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Updated: %s"
msgstr ""
msgid "View on map"
msgstr ""
msgid "Go to source URL"
msgstr ""
msgid "Attach..."
msgstr ""
msgid "Choose an option"
msgstr ""
msgid "Take photo" msgid "Take photo"
msgstr "" msgstr ""
@@ -1807,22 +1988,16 @@ msgstr ""
msgid "Convert to todo" msgid "Convert to todo"
msgstr "" msgstr ""
msgid "Hide metadata" msgid "Properties"
msgstr "" msgstr ""
msgid "Show metadata" msgid "Add body"
msgstr ""
msgid "View on map"
msgstr ""
msgid "Go to source URL"
msgstr "" msgstr ""
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
msgid "Delete notebook" msgid "Add title"
msgstr "" msgstr ""
msgid "Login with OneDrive" msgid "Login with OneDrive"
@@ -1830,14 +2005,3 @@ msgstr ""
msgid "Search" msgid "Search"
msgstr "" msgstr ""
msgid ""
"Click on the (+) button to create a new note or notebook. Click on the side "
"menu to access your existing notebooks."
msgstr ""
msgid "You currently have no notebook. Create one by clicking on (+) button."
msgstr ""
msgid "Welcome"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -139,6 +139,14 @@ msgstr "Voeg hoofdsleutel in:"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "Operatie geannuleerd" msgstr "Operatie geannuleerd"
#, fuzzy
msgid "Confirm password:"
msgstr "Voeg hoofdsleutel in:"
#, fuzzy
msgid "Passwords do not match!"
msgstr "Wachtwoord kan niet leeg zijn"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -174,17 +182,6 @@ msgstr "Geen actief notitieboek."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "Notitie bestaat niet: \"%s\". Aanmaken?" msgstr "Notitie bestaat niet: \"%s\". Aanmaken?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
"Bewerken notitie gestart. Sluit de editor om terug naar de prompt te gaan."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "Note has been saved."
msgstr "Notitie is opgeslaan."
msgid "Exits the application." msgid "Exits the application."
msgstr "Sluit de applicatie." msgstr "Sluit de applicatie."
@@ -394,6 +391,23 @@ msgstr "Notitie verwijderen?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Zoektermen voor het opgegeven <pattern> in alle notities." msgstr "Zoektermen voor het opgegeven <pattern> in alle notities."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -465,9 +479,10 @@ msgstr "Annuleren.. Even geduld."
#, fuzzy #, fuzzy
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> kan \"add\", \"remove\" of \"list\" zijn om een [tag] toe te " "<tag-command> kan \"add\", \"remove\" of \"list\" zijn om een [tag] toe te "
"voegen aan een [note] of te verwijderen, of om alle notities geassocieerd " "voegen aan een [note] of te verwijderen, of om alle notities geassocieerd "
@@ -585,56 +600,10 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "" msgstr ""
msgid "Sidebar"
msgstr ""
msgid "Note list"
msgstr ""
#, fuzzy
msgid "Note title"
msgstr "Notitieboek titel:"
#, fuzzy
msgid "Note body"
msgstr "Notitieboeken"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "" msgstr ""
#, fuzzy
msgid "PDF File"
msgstr "Bestand"
msgid "Synchronisation status"
msgstr "Synchronisatie status"
msgid "New note"
msgstr "Nieuwe notitie"
msgid "New to-do"
msgstr "Nieuwe to-do"
msgid "New notebook"
msgstr "Nieuw notitieboek"
msgid "Print"
msgstr ""
msgid "General Options"
msgstr "Algemene opties"
msgid "Encryption options"
msgstr "Versleutelopties"
msgid "Web clipper options"
msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
#, fuzzy #, fuzzy
msgid "&File" msgid "&File"
msgstr "Bestand" msgstr "Bestand"
@@ -648,6 +617,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "" msgstr ""
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "Importeer" msgstr "Importeer"
@@ -694,12 +666,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "" msgstr ""
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "" msgstr ""
msgid "Tags"
msgstr "Tags"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Zoek in alle notities" msgstr "Zoek in alle notities"
@@ -713,6 +691,13 @@ msgstr ""
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "Schakel encryptie in"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "" msgstr ""
@@ -730,6 +715,10 @@ msgstr "Help"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Website en documentatie" msgstr "Website en documentatie"
#, fuzzy
msgid "Joplin Forum"
msgstr "Exporteer Evernote bestanden"
#, fuzzy #, fuzzy
msgid "Make a donation" msgid "Make a donation"
msgstr "Website en documentatie" msgstr "Website en documentatie"
@@ -775,6 +764,10 @@ msgstr ""
msgid "No" msgid "No"
msgstr "N" msgstr "N"
#, fuzzy
msgid "Full Release Notes"
msgstr "Notities verwijderen?"
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -836,6 +829,9 @@ msgid ""
"access Joplin." "access Joplin."
msgstr "" msgstr ""
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "Notities en instellingen zijn opgeslaan in %s" msgstr "Notities en instellingen zijn opgeslaan in %s"
@@ -847,6 +843,9 @@ msgstr "Annuleer synchronisatie"
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr "Terug"
msgid "Apply" msgid "Apply"
msgstr "" msgstr ""
@@ -927,8 +926,8 @@ msgid ""
msgstr "" msgstr ""
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -937,13 +936,19 @@ msgstr "Status"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "Versleuteling is:" msgstr "Versleuteling is:"
msgid "Firefox Extension"
msgstr ""
msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
#, fuzzy #, fuzzy
msgid "Usage" msgid "Usage"
msgstr "Gebruik: %s" msgstr "Gebruik: %s"
msgid "Back"
msgstr "Terug"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -973,6 +978,18 @@ msgstr "Hernoem"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Stel melding in:" msgstr "Stel melding in:"
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "Nieuwe notitie"
msgid "New to-do"
msgstr "Nieuwe to-do"
msgid "New notebook"
msgstr "Nieuw notitieboek"
msgid "Layout" msgid "Layout"
msgstr "Layout" msgstr "Layout"
@@ -1012,6 +1029,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "Notitieboeken" msgstr "Notitieboeken"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -1026,6 +1046,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "Deze notitie werd aangepast:" msgstr "Deze notitie werd aangepast:"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Link of bericht \"%s\" wordt niet ondersteund"
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -1055,10 +1079,6 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Link of bericht \"%s\" wordt niet ondersteund"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1068,6 +1088,14 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
#, fuzzy
msgid "PDF File"
msgstr "Bestand"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr ""
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -1083,9 +1111,6 @@ msgstr ""
msgid "Attach file" msgid "Attach file"
msgstr "Voeg bestand toe" msgstr "Voeg bestand toe"
msgid "Tags"
msgstr "Tags"
msgid "Set alarm" msgid "Set alarm"
msgstr "Zet melding" msgstr "Zet melding"
@@ -1096,9 +1121,6 @@ msgstr "%s: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Numbered List" msgid "Numbered List"
msgstr "" msgstr ""
@@ -1151,12 +1173,8 @@ msgstr "Opties"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Synchronisatie status" msgstr "Synchronisatie status"
msgid "Encryption Options" msgid "Remove"
msgstr "Versleutelopties" msgstr ""
#, fuzzy
msgid "Clipper Options"
msgstr "Algemene opties"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "" msgid ""
@@ -1167,6 +1185,9 @@ msgstr ""
"Notitieboek verwijderen? Alle notities in dit notitieboek zullen ook " "Notitieboek verwijderen? Alle notities in dit notitieboek zullen ook "
"verwijderd worden." "verwijderd worden."
msgid "Delete"
msgstr "Verwijderen"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "Deze tag verwijderen van alle notities?" msgstr "Deze tag verwijderen van alle notities?"
@@ -1174,8 +1195,9 @@ msgstr "Deze tag verwijderen van alle notities?"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "Dit item verwijderen van de zijbalk?" msgstr "Dit item verwijderen van de zijbalk?"
msgid "Delete" #, fuzzy
msgstr "Verwijderen" msgid "New sub-notebook"
msgstr "Nieuw notitieboek"
msgid "Rename" msgid "Rename"
msgstr "Hernoem" msgstr "Hernoem"
@@ -1347,14 +1369,6 @@ msgstr ""
msgid "In progress" msgid "In progress"
msgstr "" msgstr ""
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "Synchronisatie is reeds bezig. Status: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "Versleuteld" msgstr "Versleuteld"
@@ -1404,6 +1418,19 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "Standaard: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Synchronisatiedoel" msgstr "Synchronisatiedoel"
@@ -1474,6 +1501,39 @@ msgstr "Licht"
msgid "Dark" msgid "Dark"
msgstr "Donker" msgstr "Donker"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
msgid "Show note counts"
msgstr ""
#, fuzzy
msgid "Editor"
msgstr "Bewerk"
msgid "Viewer"
msgstr ""
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
#, fuzzy #, fuzzy
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "Toon onvoltooide to-do's aan de top van de lijsten" msgstr "Toon onvoltooide to-do's aan de top van de lijsten"
@@ -1513,6 +1573,9 @@ msgstr "Maakt een nieuwe notitie aan."
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "Schakel encryptie in" msgstr "Schakel encryptie in"
@@ -1547,6 +1610,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "" msgstr ""
@@ -1569,6 +1635,10 @@ msgstr ""
msgid "Editor font size" msgid "Editor font size"
msgstr "Bewerk notitie." msgstr "Bewerk notitie."
#, fuzzy
msgid "Editor font"
msgstr "Bewerk notitie."
msgid "Editor font family" msgid "Editor font family"
msgstr "" msgstr ""
@@ -1615,8 +1685,35 @@ msgstr ""
"geen meegegeven wordt, zal het programma de standaard editor proberen te " "geen meegegeven wordt, zal het programma de standaard editor proberen te "
"detecteren. " "detecteren. "
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Toon geavanceerde opties" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "" msgstr ""
@@ -1631,6 +1728,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "" msgstr ""
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable note history" msgid "Enable note history"
msgstr "Schakel encryptie in" msgstr "Schakel encryptie in"
@@ -1671,6 +1778,13 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "Sluit de applicatie." msgstr "Sluit de applicatie."
#, fuzzy
msgid "Encryption"
msgstr "Versleuteling is:"
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1686,7 +1800,11 @@ msgid "Joplin Export Directory"
msgstr "" msgstr ""
#, fuzzy #, fuzzy
msgid "Evernote Export File" msgid "Evernote Export File (as Markdown)"
msgstr "Exporteer Evernote bestanden"
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Exporteer Evernote bestanden" msgstr "Exporteer Evernote bestanden"
#, fuzzy #, fuzzy
@@ -1792,6 +1910,14 @@ msgstr ""
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "" msgstr ""
#, fuzzy
msgid "You currently have no notebooks."
msgstr "Verwijder de geselecteerde notitie of het geselecteerde notitieboek."
#, fuzzy
msgid "Create a notebook"
msgstr "Maakt een nieuw notitieboek aan."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
"Er zijn momenteel geen notities. Maak een notitie door op (+) te klikken." "Er zijn momenteel geen notities. Maak een notitie door op (+) te klikken."
@@ -1799,18 +1925,6 @@ msgstr ""
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Deze notities verwijderen?" msgstr "Deze notities verwijderen?"
msgid "Log"
msgstr "Log"
msgid "Export Debug Report"
msgstr "Exporteer debug rapport"
msgid "Encryption Config"
msgstr "Encryptie configuratie"
msgid "Configuration"
msgstr "Configuratie"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Verplaats naar notitieboek..." msgstr "Verplaats naar notitieboek..."
@@ -1835,8 +1949,24 @@ msgstr "Selecteer datum"
msgid "Confirm" msgid "Confirm"
msgstr "Bevestig" msgstr "Bevestig"
msgid "Cancel synchronisation" #, fuzzy, javascript-format
msgstr "Annuleer synchronisatie" msgid "Notebook: %s"
msgstr "Notitieboeken"
#, fuzzy
msgid "Encrypted notebooks cannot be renamed"
msgstr "Versleutelde items kunnen niet aangepast worden"
#, fuzzy
msgid "New Notebook"
msgstr "Nieuw notitieboek"
msgid "Configuration"
msgstr "Configuratie"
#, fuzzy
msgid "All notes"
msgstr "Nieuwe notitie"
#, fuzzy #, fuzzy
msgid "Checking... Please wait." msgid "Checking... Please wait."
@@ -1874,6 +2004,46 @@ msgstr ""
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "" msgstr ""
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr "Encryptie configuratie"
#, fuzzy
msgid "Tools"
msgstr "Tools"
#, fuzzy
msgid "Sync Status"
msgstr "Status"
msgid "Log"
msgstr "Log"
#, fuzzy
msgid "Creating report..."
msgstr "Notities importeren..."
msgid "Export Debug Report"
msgstr "Exporteer debug rapport"
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "Configuratie" msgstr "Configuratie"
@@ -1927,6 +2097,10 @@ msgstr "Wachtwoord:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "Wachtwoord kan niet leeg zijn" msgstr "Wachtwoord kan niet leeg zijn"
#, fuzzy
msgid "Confirm password cannot be empty"
msgstr "Wachtwoord kan niet leeg zijn"
msgid "Enable" msgid "Enable"
msgstr "Activeer" msgstr "Activeer"
@@ -1937,6 +2111,10 @@ msgstr "Het notitieboek kon niet opgeslaan worden: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Bewerk notitieboek" msgstr "Bewerk notitieboek"
#, fuzzy
msgid "Enter notebook title"
msgstr "Notitieboek titel:"
msgid "Show all" msgid "Show all"
msgstr "" msgstr ""
@@ -1960,10 +2138,32 @@ msgstr ""
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "Afbeeldingstype %s wordt niet ondersteund" msgstr "Afbeeldingstype %s wordt niet ondersteund"
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "Bijgewerkt: %d."
msgid "View on map"
msgstr "Toon op de kaart"
msgid "Go to source URL"
msgstr ""
#, fuzzy
msgid "Attach..."
msgstr "Zoeken"
#, fuzzy
msgid "Choose an option"
msgstr "Toon geavanceerde opties"
#, fuzzy #, fuzzy
msgid "Take photo" msgid "Take photo"
msgstr "Voeg foto toe" msgstr "Voeg foto toe"
@@ -1983,23 +2183,18 @@ msgstr "Converteer naar notitie"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "Converteer naar to-do" msgstr "Converteer naar to-do"
msgid "Hide metadata" msgid "Properties"
msgstr "Verberg metadata" msgstr ""
msgid "Show metadata" msgid "Add body"
msgstr "Toon metadata"
msgid "View on map"
msgstr "Toon op de kaart"
msgid "Go to source URL"
msgstr "" msgstr ""
msgid "Edit" msgid "Edit"
msgstr "Bewerk" msgstr "Bewerk"
msgid "Delete notebook" #, fuzzy
msgstr "Verwijder notitieboek" msgid "Add title"
msgstr "Untitled"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "Log in met OneDrive" msgstr "Log in met OneDrive"
@@ -2007,20 +2202,90 @@ msgstr "Log in met OneDrive"
msgid "Search" msgid "Search"
msgstr "Zoeken" msgstr "Zoeken"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "Synchronisatie is reeds bezig. Status: %s"
"menu to access your existing notebooks."
msgstr ""
"Klik op de (+) om een nieuwe notitie of een nieuw notitieboek aan te maken. "
"Klik in het menu om uw bestaande notitieboeken te raadplegen."
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "" #~ msgid "Confirm master password:"
"U heeft momenteel geen notitieboek. Maak een notitieboek door op (+) te " #~ msgstr "Voeg hoofdsleutel in:"
"klikken."
msgid "Welcome" #, fuzzy
msgstr "Welkom" #~ msgid "Confirm password"
#~ msgstr "Voeg hoofdsleutel in:"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "Benodigde argumenten niet voorzien: %s"
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr ""
#~ "Bewerken notitie gestart. Sluit de editor om terug naar de prompt te gaan."
#~ msgid "Note has been saved."
#~ msgstr "Notitie is opgeslaan."
#, fuzzy
#~ msgid "Note title"
#~ msgstr "Notitieboek titel:"
#, fuzzy
#~ msgid "Note body"
#~ msgstr "Notitieboeken"
#~ msgid "Synchronisation status"
#~ msgstr "Synchronisatie status"
#~ msgid "General Options"
#~ msgstr "Algemene opties"
#~ msgid "Encryption options"
#~ msgstr "Versleutelopties"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "Versleutelopties"
#, fuzzy
#~ msgid "Clipper Options"
#~ msgstr "Algemene opties"
#, fuzzy
#~ msgid "Information"
#~ msgstr "Configuratie"
#~ msgid "Cancel synchronisation"
#~ msgstr "Annuleer synchronisatie"
#~ msgid "Hide metadata"
#~ msgstr "Verberg metadata"
#~ msgid "Show metadata"
#~ msgstr "Toon metadata"
#~ msgid "Delete notebook"
#~ msgstr "Verwijder notitieboek"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "Klik op de (+) om een nieuwe notitie of een nieuw notitieboek aan te "
#~ "maken. Klik in het menu om uw bestaande notitieboeken te raadplegen."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr ""
#~ "U heeft momenteel geen notitieboek. Maak een notitieboek door op (+) te "
#~ "klikken."
#~ msgid "Welcome"
#~ msgstr "Welkom"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Scheid iedere tag met een komma." #~ msgstr "Scheid iedere tag met een komma."
@@ -2048,13 +2313,6 @@ msgstr "Welkom"
#~ msgid "Searches" #~ msgid "Searches"
#~ msgstr "Zoekopdrachten" #~ msgstr "Zoekopdrachten"
#, fuzzy
#~ msgid ""
#~ "Release notes:\n"
#~ "\n"
#~ "%s"
#~ msgstr "Notities verwijderen?"
#~ msgid "Imports an Evernote notebook file (.enex file)." #~ msgid "Imports an Evernote notebook file (.enex file)."
#~ msgstr "Importeer een Evernote notitieboek (.enex bestand)." #~ msgstr "Importeer een Evernote notitieboek (.enex bestand)."
@@ -2089,10 +2347,6 @@ msgstr "Welkom"
#~ msgid "Cancel the current command." #~ msgid "Cancel the current command."
#~ msgstr "Annuleer het huidige commando." #~ msgstr "Annuleer het huidige commando."
#~ msgid "Delete the currently selected note or notebook."
#~ msgstr ""
#~ "Verwijder de geselecteerde notitie of het geselecteerde notitieboek."
#~ msgid "Set a to-do as completed / not completed" #~ msgid "Set a to-do as completed / not completed"
#~ msgstr "Zet een to-do als voltooid / niet voltooid" #~ msgstr "Zet een to-do als voltooid / niet voltooid"

File diff suppressed because it is too large Load Diff

View File

@@ -142,6 +142,14 @@ msgstr "Wprowadź hasło główne:"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "Operacja anulowana" msgstr "Operacja anulowana"
#, fuzzy
msgid "Confirm password:"
msgstr "Wprowadź hasło główne:"
#, fuzzy
msgid "Passwords do not match!"
msgstr "Hasło nie może być puste"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -178,18 +186,6 @@ msgstr "Brak aktywnego notatnika."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "Notatka nie istnieje: \"%s\". Utworzyć?" msgstr "Notatka nie istnieje: \"%s\". Utworzyć?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
"Rozpoczynanie edycji notatki. Zamknij edytor, aby powrócić do wiersza "
"poleceń."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Błąd przy otwieraniu notatki w edytorze: %s"
msgid "Note has been saved."
msgstr "Notatka została zapisana."
msgid "Exits the application." msgid "Exits the application."
msgstr "Wychodzi z aplikacji." msgstr "Wychodzi z aplikacji."
@@ -398,6 +394,23 @@ msgstr "Usunąć notatkę?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Wyszukuje wskazany <pattern> we wszystkich notatkach." msgstr "Wyszukuje wskazany <pattern> we wszystkich notatkach."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -472,10 +485,12 @@ msgstr "Pobieranie zasobów..."
msgid "Cancelling... Please wait." msgid "Cancelling... Please wait."
msgstr "Anulowanie... Proszę czekać." msgstr "Anulowanie... Proszę czekać."
#, fuzzy
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> może \"add\", \"remove\" lub \"list\" aby przypisać lub usunąć " "<tag-command> może \"add\", \"remove\" lub \"list\" aby przypisać lub usunąć "
"[tag] z [note], lub wyświetlić listę notatek połączonych z [tag]. Komenda " "[tag] z [note], lub wyświetlić listę notatek połączonych z [tag]. Komenda "
@@ -594,52 +609,9 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "Eksportowanie do \"%s\" jako \"%s\". Proszę czekać..." msgstr "Eksportowanie do \"%s\" jako \"%s\". Proszę czekać..."
msgid "Sidebar"
msgstr "Nawigator"
msgid "Note list"
msgstr "Lista notatek"
msgid "Note title"
msgstr "Tytuł notatki"
msgid "Note body"
msgstr "Zawartość notatki"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "Importowanie z \"%s\" jako \"%s\". Proszę czekać..." msgstr ""
msgid "PDF File"
msgstr "Plik PDF"
msgid "Synchronisation status"
msgstr "Status synchronizacji"
msgid "New note"
msgstr "Nowa notatka"
msgid "New to-do"
msgstr "Nowe zadanie"
msgid "New notebook"
msgstr "Nowy notatnik"
msgid "Print"
msgstr "Drukuj"
msgid "General Options"
msgstr "Opcje główne"
msgid "Encryption options"
msgstr "Opcje szyfrowania"
msgid "Web clipper options"
msgstr "Opcje Web clipper"
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
msgid "&File" msgid "&File"
msgstr "&Plik" msgstr "&Plik"
@@ -653,6 +625,9 @@ msgstr "Preferencje..."
msgid "Check for updates..." msgid "Check for updates..."
msgstr "Sprawdź dostępność aktualizacji..." msgstr "Sprawdź dostępność aktualizacji..."
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "Zaimportuj" msgstr "Zaimportuj"
@@ -696,12 +671,18 @@ msgstr "Kursywa"
msgid "Link" msgid "Link"
msgstr "Odnośnik" msgstr "Odnośnik"
msgid "Code"
msgstr "Kod"
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "Wstaw stempel czasowy" msgstr "Wstaw stempel czasowy"
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "Edytuj w edytorze zewnętrznym" msgstr "Edytuj w edytorze zewnętrznym"
msgid "Tags"
msgstr "Znaczniki"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Wyszukaj we wszystkich notatkach" msgstr "Wyszukaj we wszystkich notatkach"
@@ -714,6 +695,13 @@ msgstr "&Wyświetl"
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "Przełącz nawigator" msgstr "Przełącz nawigator"
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "Lista notatek"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "Przełącz układ edytora" msgstr "Przełącz układ edytora"
@@ -729,6 +717,10 @@ msgstr "&Pomoc"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Strona internetowa i dokumentacja" msgstr "Strona internetowa i dokumentacja"
#, fuzzy
msgid "Joplin Forum"
msgstr "Plik Joplin Export"
msgid "Make a donation" msgid "Make a donation"
msgstr "Przekaż datek" msgstr "Przekaż datek"
@@ -772,6 +764,10 @@ msgstr "Tak"
msgid "No" msgid "No"
msgstr "Nie" msgstr "Nie"
#, fuzzy
msgid "Full Release Notes"
msgstr "Przywrócone notatki"
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "Token został skopiowany do schowka!" msgstr "Token został skopiowany do schowka!"
@@ -839,6 +835,9 @@ msgstr ""
"Token uwierzytelniający jest potrzebny jedynie w celu pozwolenia aplikacjom " "Token uwierzytelniający jest potrzebny jedynie w celu pozwolenia aplikacjom "
"firm trzecich na dostęp do Joplin." "firm trzecich na dostęp do Joplin."
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "Notatki i ustawienia są przechowywane w: %s" msgstr "Notatki i ustawienia są przechowywane w: %s"
@@ -849,6 +848,9 @@ msgstr "Sprawdź konfigurację synchronizacji"
msgid "Browse..." msgid "Browse..."
msgstr "Przeglądaj..." msgstr "Przeglądaj..."
msgid "Back"
msgstr "Cofnij"
msgid "Apply" msgid "Apply"
msgstr "Zastosuj" msgstr "Zastosuj"
@@ -931,8 +933,8 @@ msgstr ""
"pobrane przy synchonizacji." "pobrane przy synchonizacji."
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
"Aby uzyskać informacje o szyfrowaniu po stronie klienta (E2EE) i przykłady " "Aby uzyskać informacje o szyfrowaniu po stronie klienta (E2EE) i przykłady "
"ułatwiające jego uruchomienie, proszę sprawdź dokumentację:" "ułatwiające jego uruchomienie, proszę sprawdź dokumentację:"
@@ -943,12 +945,18 @@ msgstr "Status"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "Szyfrowanie jest:" msgstr "Szyfrowanie jest:"
msgid "Firefox Extension"
msgstr ""
msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
msgid "Usage" msgid "Usage"
msgstr "Przykłady" msgstr "Przykłady"
msgid "Back"
msgstr "Cofnij"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -977,6 +985,18 @@ msgstr "Zmień nazwę znacznika:"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Ustaw powiadomienie:" msgstr "Ustaw powiadomienie:"
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "Nowa notatka"
msgid "New to-do"
msgstr "Nowe zadanie"
msgid "New notebook"
msgstr "Nowy notatnik"
msgid "Layout" msgid "Layout"
msgstr "Układ" msgstr "Układ"
@@ -1012,6 +1032,9 @@ msgstr "Odnośnik"
msgid "Note History" msgid "Note History"
msgstr "Historia notatek" msgstr "Historia notatek"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "Poprzednie wersje notatki" msgstr "Poprzednie wersje notatki"
@@ -1025,6 +1048,10 @@ msgstr "Notatka \"%s\" została pomyślnie przywrócona do notatnika \"%s\"."
msgid "This note has no history" msgid "This note has no history"
msgstr "Notatka nie posiada historii" msgstr "Notatka nie posiada historii"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Niewspierany odnośnik lub wiadomość: %s"
msgid "Restore" msgid "Restore"
msgstr "Przywróć" msgstr "Przywróć"
@@ -1056,10 +1083,6 @@ msgstr "Skopiuj adres odnośnika"
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "Załącznik nie został jeszcze pobrany lub deszyfrowany." msgstr "Załącznik nie został jeszcze pobrany lub deszyfrowany."
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Niewspierany odnośnik lub wiadomość: %s"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1073,6 +1096,13 @@ msgstr ""
"Jedna notatka może zostać wydrukowana lub wyeksportowana do pliku PDF w tym " "Jedna notatka może zostać wydrukowana lub wyeksportowana do pliku PDF w tym "
"samym czasie." "samym czasie."
msgid "PDF File"
msgstr "Plik PDF"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Błąd przy otwieraniu notatki w edytorze: %s"
msgid "strong text" msgid "strong text"
msgstr "pogrubienie" msgstr "pogrubienie"
@@ -1088,9 +1118,6 @@ msgstr "Wstaw Hyperlink"
msgid "Attach file" msgid "Attach file"
msgstr "Załącz plik" msgstr "Załącz plik"
msgid "Tags"
msgstr "Znaczniki"
msgid "Set alarm" msgid "Set alarm"
msgstr "Ustaw powiadomienie" msgstr "Ustaw powiadomienie"
@@ -1101,9 +1128,6 @@ msgstr "W: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "Hyperlink" msgstr "Hyperlink"
msgid "Code"
msgstr "Kod"
msgid "Numbered List" msgid "Numbered List"
msgstr "Lista numerowana" msgstr "Lista numerowana"
@@ -1153,11 +1177,8 @@ msgstr "Opcje"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Status synchronizacji" msgstr "Status synchronizacji"
msgid "Encryption Options" msgid "Remove"
msgstr "Opcje szyfrowania" msgstr ""
msgid "Clipper Options"
msgstr "Opcje funkcji Clipper"
#, javascript-format #, javascript-format
msgid "" msgid ""
@@ -1170,6 +1191,9 @@ msgstr ""
"Wszystkie notatki i notatniki podrzędne zawarte w tym notatniku także " "Wszystkie notatki i notatniki podrzędne zawarte w tym notatniku także "
"zostaną usunięte." "zostaną usunięte."
msgid "Delete"
msgstr "Usuń"
#, javascript-format #, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "Usunąć znacznik \"%s\" ze wszystkich notatek?" msgstr "Usunąć znacznik \"%s\" ze wszystkich notatek?"
@@ -1177,8 +1201,9 @@ msgstr "Usunąć znacznik \"%s\" ze wszystkich notatek?"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "Usunąć wyszukiwanie z nawigatora?" msgstr "Usunąć wyszukiwanie z nawigatora?"
msgid "Delete" #, fuzzy
msgstr "Usuń" msgid "New sub-notebook"
msgstr "Nowy notatnik"
msgid "Rename" msgid "Rename"
msgstr "Zmień nazwę" msgstr "Zmień nazwę"
@@ -1348,16 +1373,6 @@ msgstr "Spoczynek"
msgid "In progress" msgid "In progress"
msgstr "W trakcie" msgstr "W trakcie"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "Synchronizacja w toku. Stan: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
"Pobrano nieznany typ pliku - proszę zaaktualizować Joplin do najnowszej "
"wersji"
msgid "Encrypted" msgid "Encrypted"
msgstr "Zaszyfrowane" msgstr "Zaszyfrowane"
@@ -1406,6 +1421,19 @@ msgstr ""
"innym wypadku wszystkie pliki będą usunięte! Sprawdź FAQ w celu uzyskania " "innym wypadku wszystkie pliki będą usunięte! Sprawdź FAQ w celu uzyskania "
"informacji: %s" "informacji: %s"
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "Domyślne: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Serwis synchronizacji" msgstr "Serwis synchronizacji"
@@ -1480,6 +1508,41 @@ msgstr "Jasny"
msgid "Dark" msgid "Dark"
msgstr "Ciemny" msgstr "Ciemny"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
#, fuzzy
msgid "Show note counts"
msgstr "Pokaż ikonę w zasobniku systemowym"
#, fuzzy
msgid "Editor"
msgstr "Edytuj"
#, fuzzy
msgid "Viewer"
msgstr "&Wyświetl"
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "Nieukończone zadania na górze" msgstr "Nieukończone zadania na górze"
@@ -1513,6 +1576,10 @@ msgstr "Podczas tworzenia nowej notatki:"
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "Aktywuj miękkie łamanie linii" msgstr "Aktywuj miękkie łamanie linii"
#, fuzzy
msgid "Enable typographer support"
msgstr "Aktywuj składnię ~sub~"
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "Atywuj wyrażenia matematyczne" msgstr "Atywuj wyrażenia matematyczne"
@@ -1546,6 +1613,10 @@ msgstr "Aktywuj składnię ++instert++"
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "Aktywuj rozszerzenie dla tabeli multimarkdown" msgstr "Aktywuj rozszerzenie dla tabeli multimarkdown"
#, fuzzy
msgid "Enable Fountain syntax support"
msgstr "Aktywuj składnię ~sub~"
msgid "Show tray icon" msgid "Show tray icon"
msgstr "Pokaż ikonę w zasobniku systemowym" msgstr "Pokaż ikonę w zasobniku systemowym"
@@ -1570,6 +1641,10 @@ msgstr "Powiększenie globalne w procentach"
msgid "Editor font size" msgid "Editor font size"
msgstr "Wielkość czcionki edytora" msgstr "Wielkość czcionki edytora"
#, fuzzy
msgid "Editor font"
msgstr "Wielkość czcionki edytora"
msgid "Editor font family" msgid "Editor font family"
msgstr "Rodzina czcionek edytora" msgstr "Rodzina czcionek edytora"
@@ -1619,8 +1694,35 @@ msgstr ""
"aby otwierać notatkę. Jeżeli nie zostanie podana, program spróbuje wykryć " "aby otwierać notatkę. Jeżeli nie zostanie podana, program spróbuje wykryć "
"domyślny edytor." "domyślny edytor."
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Wyświetl opcje zaawansowane" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "Niestandardowe ceryfikaty TLS" msgstr "Niestandardowe ceryfikaty TLS"
@@ -1640,6 +1742,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "Ignoruj błędy certyfikatu TLS" msgstr "Ignoruj błędy certyfikatu TLS"
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
msgid "Enable note history" msgid "Enable note history"
msgstr "Aktywuj historię notatek" msgstr "Aktywuj historię notatek"
@@ -1675,6 +1787,14 @@ msgstr "Wtyczki"
msgid "Application" msgid "Application"
msgstr "Aplikacja" msgstr "Aplikacja"
#, fuzzy
msgid "Encryption"
msgstr "Szyfrowanie jest:"
#, fuzzy
msgid "Web Clipper"
msgstr "Opcje Web clipper"
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "Znacznik \"%s\" istnieje. Proszę wybrać inną nazwę." msgstr "Znacznik \"%s\" istnieje. Proszę wybrać inną nazwę."
@@ -1688,7 +1808,12 @@ msgstr "Markdown"
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "Katalog Joplin Export" msgstr "Katalog Joplin Export"
msgid "Evernote Export File" #, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "Plik Evernote Export"
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Plik Evernote Export" msgstr "Plik Evernote Export"
msgid "Json Export Directory" msgid "Json Export Directory"
@@ -1794,24 +1919,20 @@ msgstr "Uprawenie do użytkowania kamery"
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "Wymagane uprawenienie do użytkowania kamery." msgstr "Wymagane uprawenienie do użytkowania kamery."
#, fuzzy
msgid "You currently have no notebooks."
msgstr "Brak aktywnego notatnika."
#, fuzzy
msgid "Create a notebook"
msgstr "Tworzy nowy notatnik."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "Brak notatek. Aby utworzyć, naciśnij przycisk (+)." msgstr "Brak notatek. Aby utworzyć, naciśnij przycisk (+)."
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Usunąć notatki?" msgstr "Usunąć notatki?"
msgid "Log"
msgstr "Dziennik"
msgid "Export Debug Report"
msgstr "Raport odpluskwiania eksportu"
msgid "Encryption Config"
msgstr "Konfiguracja szyfrowania"
msgid "Configuration"
msgstr "Konfiguracja"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Przenieś do notatnika..." msgstr "Przenieś do notatnika..."
@@ -1834,8 +1955,24 @@ msgstr "Wybierz datę"
msgid "Confirm" msgid "Confirm"
msgstr "Potwierdź" msgstr "Potwierdź"
msgid "Cancel synchronisation" #, fuzzy, javascript-format
msgstr "Anuluj synchronizację" msgid "Notebook: %s"
msgstr "Notatniki"
#, fuzzy
msgid "Encrypted notebooks cannot be renamed"
msgstr "Zaszyfrowanie obiekty nie mogą być modyfikowane"
#, fuzzy
msgid "New Notebook"
msgstr "Nowy notatnik"
msgid "Configuration"
msgstr "Konfiguracja"
#, fuzzy
msgid "All notes"
msgstr "notatka"
msgid "Checking... Please wait." msgid "Checking... Please wait."
msgstr "Sprawdzanie... Proszę czekać." msgstr "Sprawdzanie... Proszę czekać."
@@ -1877,6 +2014,46 @@ msgstr "Nowe znaczniki:"
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "Wprowadź nowe znaczniki lub wybierz z listy" msgstr "Wprowadź nowe znaczniki lub wybierz z listy"
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr "Konfiguracja szyfrowania"
#, fuzzy
msgid "Tools"
msgstr "&Narzędzia"
#, fuzzy
msgid "Sync Status"
msgstr "Status"
msgid "Log"
msgstr "Dziennik"
#, fuzzy
msgid "Creating report..."
msgstr "Tworzenie nowego %s..."
msgid "Export Debug Report"
msgstr "Raport odpluskwiania eksportu"
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "Konfiguracja" msgstr "Konfiguracja"
@@ -1936,6 +2113,10 @@ msgstr "Hasło:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "Hasło nie może być puste" msgstr "Hasło nie może być puste"
#, fuzzy
msgid "Confirm password cannot be empty"
msgstr "Hasło nie może być puste"
msgid "Enable" msgid "Enable"
msgstr "Aktywuj" msgstr "Aktywuj"
@@ -1946,6 +2127,10 @@ msgstr "Notatnik nie może zostać zapisany: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Edytuj notatnik" msgstr "Edytuj notatnik"
#, fuzzy
msgid "Enter notebook title"
msgstr "Tytuł notatnika:"
msgid "Show all" msgid "Show all"
msgstr "Pokaż wszystko" msgstr "Pokaż wszystko"
@@ -1970,10 +2155,32 @@ msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
"Aplikacja mobilna Joplin nie wspiera aktualnie odnośników tego typu: %s" "Aplikacja mobilna Joplin nie wspiera aktualnie odnośników tego typu: %s"
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "Niewspierany typ obrazu: %s" msgstr "Niewspierany typ obrazu: %s"
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "Zaaktualizowano: %d."
msgid "View on map"
msgstr "Pokaż na mapie"
msgid "Go to source URL"
msgstr "Idź do adresu źródłowego odnośnika"
#, fuzzy
msgid "Attach..."
msgstr "Wyszukaj..."
#, fuzzy
msgid "Choose an option"
msgstr "Wyświetl opcje zaawansowane"
msgid "Take photo" msgid "Take photo"
msgstr "Wykonaj zdjęcie" msgstr "Wykonaj zdjęcie"
@@ -1992,23 +2199,19 @@ msgstr "Przekonwertuj do notatki"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "Przekonwertuj do zadania" msgstr "Przekonwertuj do zadania"
msgid "Hide metadata" #, fuzzy
msgstr "Ukryj metadane" msgid "Properties"
msgstr "Właściwośći notatki"
msgid "Show metadata" msgid "Add body"
msgstr "Pokaż metadane" msgstr ""
msgid "View on map"
msgstr "Pokaż na mapie"
msgid "Go to source URL"
msgstr "Idź do adresu źródłowego odnośnika"
msgid "Edit" msgid "Edit"
msgstr "Edytuj" msgstr "Edytuj"
msgid "Delete notebook" #, fuzzy
msgstr "Usuń notatnik" msgid "Add title"
msgstr "tytuł"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "Zaloguj z OneDrive" msgstr "Zaloguj z OneDrive"
@@ -2016,18 +2219,113 @@ msgstr "Zaloguj z OneDrive"
msgid "Search" msgid "Search"
msgstr "Wyszukaj" msgstr "Wyszukaj"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "Synchronizacja w toku. Stan: %s"
"menu to access your existing notebooks."
msgstr ""
"Naciśnij przycisk (+) aby utworzyć nową notatkę lub notatnik. Naciśnij menu "
"boczne, aby mieć dostęp do istniejących notatników."
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "Brak notatników. Utwórz nowy naciskając przycisk (+)." #~ msgid "Confirm master password:"
#~ msgstr "Wprowadź hasło główne:"
msgid "Welcome" #, fuzzy
msgstr "Witaj" #~ msgid "Confirm password"
#~ msgstr "Wprowadź hasło główne:"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "Brakujący wymagany argument: %s"
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr ""
#~ "Rozpoczynanie edycji notatki. Zamknij edytor, aby powrócić do wiersza "
#~ "poleceń."
#~ msgid "Note has been saved."
#~ msgstr "Notatka została zapisana."
#~ msgid "Sidebar"
#~ msgstr "Nawigator"
#~ msgid "Note title"
#~ msgstr "Tytuł notatki"
#~ msgid "Note body"
#~ msgstr "Zawartość notatki"
#~ msgid "Importing from \"%s\" as \"%s\" format. Please wait..."
#~ msgstr "Importowanie z \"%s\" jako \"%s\". Proszę czekać..."
#~ msgid "Synchronisation status"
#~ msgstr "Status synchronizacji"
#~ msgid "Print"
#~ msgstr "Drukuj"
#~ msgid "General Options"
#~ msgstr "Opcje główne"
#~ msgid "Encryption options"
#~ msgstr "Opcje szyfrowania"
#, fuzzy
#~ msgid "Insert template"
#~ msgstr "Wstaw stempel czasowy"
#, fuzzy
#~ msgid "Open template directory"
#~ msgstr "Katalog Joplin Export"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "Opcje szyfrowania"
#~ msgid "Clipper Options"
#~ msgstr "Opcje funkcji Clipper"
#~ msgid ""
#~ "Unknown item type downloaded - please upgrade Joplin to the latest version"
#~ msgstr ""
#~ "Pobrano nieznany typ pliku - proszę zaaktualizować Joplin do najnowszej "
#~ "wersji"
#, fuzzy
#~ msgid "Information"
#~ msgstr "Konfiguracja"
#, fuzzy
#~ msgid "Permission to write to external storage"
#~ msgstr "Uprawenie do użytkowania kamery"
#~ msgid "Cancel synchronisation"
#~ msgstr "Anuluj synchronizację"
#~ msgid "Hide metadata"
#~ msgstr "Ukryj metadane"
#~ msgid "Show metadata"
#~ msgstr "Pokaż metadane"
#~ msgid "Delete notebook"
#~ msgstr "Usuń notatnik"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "Naciśnij przycisk (+) aby utworzyć nową notatkę lub notatnik. Naciśnij "
#~ "menu boczne, aby mieć dostęp do istniejących notatników."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr "Brak notatników. Utwórz nowy naciskając przycisk (+)."
#~ msgid "Welcome"
#~ msgstr "Witaj"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Oddziel każdy znacznik przecinkiem." #~ msgstr "Oddziel każdy znacznik przecinkiem."

File diff suppressed because it is too large Load Diff

View File

@@ -132,6 +132,14 @@ msgstr ""
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "Operațiunea a fost amânată" msgstr "Operațiunea a fost amânată"
#, fuzzy
msgid "Confirm password:"
msgstr "Parolă:"
#, fuzzy
msgid "Passwords do not match!"
msgstr "Parolă nu poate fi un câmp gol"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -164,16 +172,6 @@ msgstr "Niciun caiet de notițe activ."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "Notița nu există: \"%s\". Doriți să o creați?" msgstr "Notița nu există: \"%s\". Doriți să o creați?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Eroare deschidere notiță în editor: %s"
msgid "Note has been saved."
msgstr "Notița a fost salvată."
msgid "Exits the application." msgid "Exits the application."
msgstr "" msgstr ""
@@ -357,6 +355,23 @@ msgstr "Ștergeți notița?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "" msgstr ""
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -421,9 +436,10 @@ msgid "Cancelling... Please wait."
msgstr "Se anulează... Vă rugăm să așteptați." msgstr "Se anulează... Vă rugăm să așteptați."
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
#, javascript-format #, javascript-format
@@ -521,55 +537,10 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "Se exportă către \"%s\" în format \"%s\". Vă rugăm să așteotați..." msgstr "Se exportă către \"%s\" în format \"%s\". Vă rugăm să așteotați..."
msgid "Sidebar"
msgstr ""
msgid "Note list"
msgstr ""
#, fuzzy
msgid "Note title"
msgstr "Titlul caietului de notițe:"
#, fuzzy
msgid "Note body"
msgstr "Caiete de notițe"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "" msgstr ""
msgid "PDF File"
msgstr "Fișier PDF"
msgid "Synchronisation status"
msgstr "Statusul sincronizării"
msgid "New note"
msgstr "Adăugați o nouă notiță"
msgid "New to-do"
msgstr "Adăugați o nouă sarcină"
msgid "New notebook"
msgstr "Adăugați un nou caiet de notițe"
msgid "Print"
msgstr "Printați"
msgid "General Options"
msgstr "Opțiuni Generale"
msgid "Encryption options"
msgstr "Opțiuni de criptare"
msgid "Web clipper options"
msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
#, fuzzy #, fuzzy
msgid "&File" msgid "&File"
msgstr "Fișier" msgstr "Fișier"
@@ -583,6 +554,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "Verificați actualizările..." msgstr "Verificați actualizările..."
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "Importați" msgstr "Importați"
@@ -628,12 +602,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "" msgstr ""
msgid "Code"
msgstr "Cod"
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "" msgstr ""
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "Editați într-un editor extern" msgstr "Editați într-un editor extern"
msgid "Tags"
msgstr "Etichete"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Căutați în toate notițele" msgstr "Căutați în toate notițele"
@@ -648,6 +628,13 @@ msgstr "Vizualizați"
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "Activați criptarea"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "" msgstr ""
@@ -665,6 +652,10 @@ msgstr "Ajutor"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Website și documentație" msgstr "Website și documentație"
#, fuzzy
msgid "Joplin Forum"
msgstr "Website Joplin"
msgid "Make a donation" msgid "Make a donation"
msgstr "Faceți o donație" msgstr "Faceți o donație"
@@ -708,6 +699,9 @@ msgstr "Da"
msgid "No" msgid "No"
msgstr "Nu" msgstr "Nu"
msgid "Full Release Notes"
msgstr ""
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -769,6 +763,9 @@ msgid ""
"access Joplin." "access Joplin."
msgstr "" msgstr ""
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "" msgstr ""
@@ -779,6 +776,9 @@ msgstr ""
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr "Înapoi"
msgid "Apply" msgid "Apply"
msgstr "Aplicați" msgstr "Aplicați"
@@ -847,8 +847,8 @@ msgid ""
msgstr "" msgstr ""
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -857,13 +857,19 @@ msgstr "Status"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "Criptarea este:" msgstr "Criptarea este:"
msgid "Firefox Extension"
msgstr ""
msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
#, fuzzy #, fuzzy
msgid "Usage" msgid "Usage"
msgstr "Utilizare: %s" msgstr "Utilizare: %s"
msgid "Back"
msgstr "Înapoi"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -890,6 +896,18 @@ msgstr "Redenumiți eticheta:"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Setați alarma:" msgstr "Setați alarma:"
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "Adăugați o nouă notiță"
msgid "New to-do"
msgstr "Adăugați o nouă sarcină"
msgid "New notebook"
msgstr "Adăugați un nou caiet de notițe"
msgid "Layout" msgid "Layout"
msgstr "" msgstr ""
@@ -925,6 +943,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "Caiete de notițe" msgstr "Caiete de notițe"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -939,6 +960,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "Această notiță a fost modificată:" msgstr "Această notiță a fost modificată:"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -967,10 +992,6 @@ msgstr "Copați adresa link-ului"
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -980,6 +1001,13 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
msgid "PDF File"
msgstr "Fișier PDF"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Eroare deschidere notiță în editor: %s"
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -995,9 +1023,6 @@ msgstr "Introduceți hyperlink"
msgid "Attach file" msgid "Attach file"
msgstr "Atașați fișier" msgstr "Atașați fișier"
msgid "Tags"
msgstr "Etichete"
msgid "Set alarm" msgid "Set alarm"
msgstr "Setați alarma" msgstr "Setați alarma"
@@ -1008,9 +1033,6 @@ msgstr "În: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "Hyperlink" msgstr "Hyperlink"
msgid "Code"
msgstr "Cod"
msgid "Numbered List" msgid "Numbered List"
msgstr "Listă numerotată" msgstr "Listă numerotată"
@@ -1060,11 +1082,8 @@ msgstr "Opțiuni"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Statutul sincronizării" msgstr "Statutul sincronizării"
msgid "Encryption Options" msgid "Remove"
msgstr "Opțiuni de criptare" msgstr ""
msgid "Clipper Options"
msgstr "Opțiuni Clipper"
#, javascript-format #, javascript-format
msgid "" msgid ""
@@ -1073,6 +1092,9 @@ msgid ""
"All notes and sub-notebooks within this notebook will also be deleted." "All notes and sub-notebooks within this notebook will also be deleted."
msgstr "" msgstr ""
msgid "Delete"
msgstr "Ștergeți"
#, javascript-format #, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "" msgstr ""
@@ -1080,8 +1102,9 @@ msgstr ""
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "" msgstr ""
msgid "Delete" #, fuzzy
msgstr "Ștergeți" msgid "New sub-notebook"
msgstr "Adăugați un nou caiet de notițe"
msgid "Rename" msgid "Rename"
msgstr "Redenumiți" msgstr "Redenumiți"
@@ -1244,14 +1267,6 @@ msgstr ""
msgid "In progress" msgid "In progress"
msgstr "În progres" msgstr "În progres"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr ""
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "Criptat" msgstr "Criptat"
@@ -1295,6 +1310,19 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "Modul implicit: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "" msgstr ""
@@ -1363,6 +1391,41 @@ msgstr "Deschisă"
msgid "Dark" msgid "Dark"
msgstr "Închisă" msgstr "Închisă"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
#, fuzzy
msgid "Show note counts"
msgstr "Afișați iconița coșul de gunoi"
#, fuzzy
msgid "Editor"
msgstr "Editați"
#, fuzzy
msgid "Viewer"
msgstr "Vizualizați"
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "" msgstr ""
@@ -1397,6 +1460,9 @@ msgstr "Când este creată o nouă notiță:"
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "Activați criptarea" msgstr "Activați criptarea"
@@ -1431,6 +1497,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "Afișați iconița coșul de gunoi" msgstr "Afișați iconița coșul de gunoi"
@@ -1453,6 +1522,10 @@ msgstr ""
msgid "Editor font size" msgid "Editor font size"
msgstr "Editează notiță." msgstr "Editează notiță."
#, fuzzy
msgid "Editor font"
msgstr "Editează notiță."
msgid "Editor font family" msgid "Editor font family"
msgstr "" msgstr ""
@@ -1494,8 +1567,35 @@ msgid ""
"If none is provided it will try to auto-detect the default editor." "If none is provided it will try to auto-detect the default editor."
msgstr "" msgstr ""
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Afișați opțiunile avansate" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "Certificate TLS cusomizate" msgstr "Certificate TLS cusomizate"
@@ -1510,6 +1610,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "Ignoră erorile de certificat TLS" msgstr "Ignoră erorile de certificat TLS"
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable note history" msgid "Enable note history"
msgstr "Activați criptarea" msgstr "Activați criptarea"
@@ -1550,6 +1660,13 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "Duplicați" msgstr "Duplicați"
#, fuzzy
msgid "Encryption"
msgstr "Criptarea este:"
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1563,7 +1680,10 @@ msgstr "Markdown"
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "" msgstr ""
msgid "Evernote Export File" msgid "Evernote Export File (as Markdown)"
msgstr ""
msgid "Evernote Export File (as HTML)"
msgstr "" msgstr ""
msgid "Json Export Directory" msgid "Json Export Directory"
@@ -1664,24 +1784,20 @@ msgstr ""
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "" msgstr ""
#, fuzzy
msgid "You currently have no notebooks."
msgstr "Niciun caiet de notițe activ."
#, fuzzy
msgid "Create a notebook"
msgstr "Creați caiet de notițe."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Ștergeți aceste notițe?" msgstr "Ștergeți aceste notițe?"
msgid "Log"
msgstr ""
msgid "Export Debug Report"
msgstr ""
msgid "Encryption Config"
msgstr ""
msgid "Configuration"
msgstr "Configurare"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Mutați în caietul de notițe..." msgstr "Mutați în caietul de notițe..."
@@ -1705,8 +1821,24 @@ msgstr "Selectați data"
msgid "Confirm" msgid "Confirm"
msgstr "Confirmați" msgstr "Confirmați"
msgid "Cancel synchronisation" #, fuzzy, javascript-format
msgstr "Amânați sincronizarea" msgid "Notebook: %s"
msgstr "Caiete de notițe"
#, fuzzy
msgid "Encrypted notebooks cannot be renamed"
msgstr "Itemii criptați nu pot fi editați"
#, fuzzy
msgid "New Notebook"
msgstr "Adăugați un nou caiet de notițe"
msgid "Configuration"
msgstr "Configurare"
#, fuzzy
msgid "All notes"
msgstr "notiță"
#, fuzzy #, fuzzy
msgid "Checking... Please wait." msgid "Checking... Please wait."
@@ -1742,6 +1874,46 @@ msgstr "Etichete noi:"
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "" msgstr ""
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr ""
#, fuzzy
msgid "Tools"
msgstr "Unelte"
#, fuzzy
msgid "Sync Status"
msgstr "Status"
msgid "Log"
msgstr ""
#, fuzzy
msgid "Creating report..."
msgstr "Se crează un %s..."
msgid "Export Debug Report"
msgstr ""
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "Configurare" msgstr "Configurare"
@@ -1793,6 +1965,10 @@ msgstr "Parolă:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "Parolă nu poate fi un câmp gol" msgstr "Parolă nu poate fi un câmp gol"
#, fuzzy
msgid "Confirm password cannot be empty"
msgstr "Parolă nu poate fi un câmp gol"
msgid "Enable" msgid "Enable"
msgstr "Activați" msgstr "Activați"
@@ -1803,6 +1979,10 @@ msgstr "Caietul de notițe nu a puut fi salvat: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Editați caietul de notițe" msgstr "Editați caietul de notițe"
#, fuzzy
msgid "Enter notebook title"
msgstr "Titlul caietului de notițe:"
msgid "Show all" msgid "Show all"
msgstr "Afișați tot" msgstr "Afișați tot"
@@ -1826,10 +2006,32 @@ msgstr "Niciun item cu ID-ul %s"
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "" msgstr ""
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "Actualizat: %d."
msgid "View on map"
msgstr "Vizualizați pe hartă"
msgid "Go to source URL"
msgstr ""
#, fuzzy
msgid "Attach..."
msgstr "Caută..."
#, fuzzy
msgid "Choose an option"
msgstr "Afișați opțiunile avansate"
#, fuzzy #, fuzzy
msgid "Take photo" msgid "Take photo"
msgstr "Atașează imagine" msgstr "Atașează imagine"
@@ -1849,23 +2051,18 @@ msgstr ""
msgid "Convert to todo" msgid "Convert to todo"
msgstr "" msgstr ""
msgid "Hide metadata" msgid "Properties"
msgstr "Ascundeți metadatele" msgstr ""
msgid "Show metadata" msgid "Add body"
msgstr "Afișați metadatele"
msgid "View on map"
msgstr "Vizualizați pe hartă"
msgid "Go to source URL"
msgstr "" msgstr ""
msgid "Edit" msgid "Edit"
msgstr "Editați" msgstr "Editați"
msgid "Delete notebook" #, fuzzy
msgstr "Ștergeți caiet de notițe" msgid "Add title"
msgstr "titlu"
# vezi context # vezi context
msgid "Login with OneDrive" msgid "Login with OneDrive"
@@ -1874,18 +2071,78 @@ msgstr "Autentificare prin OneDrive"
msgid "Search" msgid "Search"
msgstr "Caută" msgstr "Caută"
msgid "" #, fuzzy
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgid "Confirm master password:"
"menu to access your existing notebooks." #~ msgstr "Setați parola"
msgstr ""
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "" #~ msgid "Confirm password"
"Nu aveți niciun caiet de notițe creat. Creați unul făcând click pe butonnul " #~ msgstr "Confirmați"
"(+)."
msgid "Welcome" #, fuzzy
msgstr "Bine ați venit" #~ msgid "Missing required argument: note"
#~ msgstr "Lipsește argumentul necesar: %s"
#~ msgid "Note has been saved."
#~ msgstr "Notița a fost salvată."
#, fuzzy
#~ msgid "Note title"
#~ msgstr "Titlul caietului de notițe:"
#, fuzzy
#~ msgid "Note body"
#~ msgstr "Caiete de notițe"
#~ msgid "Synchronisation status"
#~ msgstr "Statusul sincronizării"
#~ msgid "Print"
#~ msgstr "Printați"
#~ msgid "General Options"
#~ msgstr "Opțiuni Generale"
#~ msgid "Encryption options"
#~ msgstr "Opțiuni de criptare"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "Opțiuni de criptare"
#~ msgid "Clipper Options"
#~ msgstr "Opțiuni Clipper"
#, fuzzy
#~ msgid "Information"
#~ msgstr "Configurare"
#~ msgid "Cancel synchronisation"
#~ msgstr "Amânați sincronizarea"
#~ msgid "Hide metadata"
#~ msgstr "Ascundeți metadatele"
#~ msgid "Show metadata"
#~ msgstr "Afișați metadatele"
#~ msgid "Delete notebook"
#~ msgstr "Ștergeți caiet de notițe"
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr ""
#~ "Nu aveți niciun caiet de notițe creat. Creați unul făcând click pe "
#~ "butonnul (+)."
#~ msgid "Welcome"
#~ msgstr "Bine ați venit"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Separați fiecare etichetă printr-o virgulă." #~ msgstr "Separați fiecare etichetă printr-o virgulă."
@@ -1896,10 +2153,6 @@ msgstr "Bine ați venit"
#~ msgid "%s (%s): %s" #~ msgid "%s (%s): %s"
#~ msgstr "%s (%s): %s" #~ msgstr "%s (%s): %s"
#, fuzzy
#~ msgid "Joplin v%s"
#~ msgstr "Website Joplin"
#~ msgid "State: %s." #~ msgid "State: %s."
#~ msgstr "Statut: %s." #~ msgstr "Statut: %s."

File diff suppressed because it is too large Load Diff

View File

@@ -137,6 +137,14 @@ msgstr "Vnesite glavno geslo:"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "Operacija je preklicana" msgstr "Operacija je preklicana"
#, fuzzy
msgid "Confirm password:"
msgstr "Vnesite glavno geslo:"
#, fuzzy
msgid "Passwords do not match!"
msgstr "Geslo ne more biti prazno"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -173,18 +181,6 @@ msgstr "Ni aktivnih beležnic."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "Zabeležka ne obstaja: \"%s\". Bi jo radi ustvarili?" msgstr "Zabeležka ne obstaja: \"%s\". Bi jo radi ustvarili?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
"Urejanje zabeležke se začenja. Zaprite urejevalnik, da se vrnete na ukazni "
"poziv."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Napaka v odpiranju zabeležke v urejevalniku: %s"
msgid "Note has been saved."
msgstr "Zabeležka je bila shranjena."
msgid "Exits the application." msgid "Exits the application."
msgstr "Izhod iz aplikacije." msgstr "Izhod iz aplikacije."
@@ -395,6 +391,23 @@ msgstr "Želite izbrisati zabeležko?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Išči dani <pattern> v vseh zabeležkah." msgstr "Išči dani <pattern> v vseh zabeležkah."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -464,9 +477,10 @@ msgstr "V preklicu...Prosim počakajte."
#, fuzzy #, fuzzy
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> je lahko \"dodaj\", \"odstrani\" ali \"naštej\", da dodeliš " "<tag-command> je lahko \"dodaj\", \"odstrani\" ali \"naštej\", da dodeliš "
"ali odstraniš [tag] from [note] ali našteje zabeležke povezane z oznako " "ali odstraniš [tag] from [note] ali našteje zabeležke povezane z oznako "
@@ -583,55 +597,10 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "Izvažam v \"%s\" kot \"%s\" format. Prosim počakajte..." msgstr "Izvažam v \"%s\" kot \"%s\" format. Prosim počakajte..."
msgid "Sidebar"
msgstr ""
msgid "Note list"
msgstr ""
#, fuzzy
msgid "Note title"
msgstr "Naslov beležnice:"
#, fuzzy
msgid "Note body"
msgstr "Beležnice"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "Uvažam v \"%s\" kot \"%s\" format. Prosim počakajte..."
msgid "PDF File"
msgstr "PDF datoteka"
msgid "Synchronisation status"
msgstr "Status sinhronizacije"
msgid "New note"
msgstr "Nova zabeležka"
msgid "New to-do"
msgstr "Novi seznam opravil"
msgid "New notebook"
msgstr "Nova beležnica"
msgid "Print"
msgstr "Natisni"
msgid "General Options"
msgstr "Splošne možnosti"
msgid "Encryption options"
msgstr "Možnosti enkripcije"
msgid "Web clipper options"
msgstr "" msgstr ""
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
#, fuzzy #, fuzzy
msgid "&File" msgid "&File"
msgstr "Datoteka" msgstr "Datoteka"
@@ -645,6 +614,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "Preverjanje za posodobitvami..." msgstr "Preverjanje za posodobitvami..."
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "Uvozi" msgstr "Uvozi"
@@ -690,12 +662,18 @@ msgstr ""
msgid "Link" msgid "Link"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "" msgstr ""
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "" msgstr ""
msgid "Tags"
msgstr "Oznake"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Išči znotraj vseh zabeležk" msgstr "Išči znotraj vseh zabeležk"
@@ -710,6 +688,13 @@ msgstr "Pogled"
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "" msgstr ""
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "Omogoči enkripcijo"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "Spremeni izgled urejevalnika" msgstr "Spremeni izgled urejevalnika"
@@ -728,6 +713,10 @@ msgstr "Pomoč"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Spletna stran in dokumentacija" msgstr "Spletna stran in dokumentacija"
#, fuzzy
msgid "Joplin Forum"
msgstr "Joplin spletna stran"
msgid "Make a donation" msgid "Make a donation"
msgstr "Doniraj" msgstr "Doniraj"
@@ -771,6 +760,9 @@ msgstr "Da"
msgid "No" msgid "No"
msgstr "Ne" msgstr "Ne"
msgid "Full Release Notes"
msgstr ""
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "" msgstr ""
@@ -832,6 +824,9 @@ msgid ""
"access Joplin." "access Joplin."
msgstr "" msgstr ""
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "Zabeležke in nastavitve so shranjene v: %s" msgstr "Zabeležke in nastavitve so shranjene v: %s"
@@ -842,6 +837,9 @@ msgstr "Preveri nastavitve sinhronizacije"
msgid "Browse..." msgid "Browse..."
msgstr "" msgstr ""
msgid "Back"
msgstr "Nazaj"
msgid "Apply" msgid "Apply"
msgstr "" msgstr ""
@@ -925,8 +923,8 @@ msgstr ""
"da bodo sčasoma preneseni s sinhronizacijo." "da bodo sčasoma preneseni s sinhronizacijo."
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
msgid "Status" msgid "Status"
@@ -935,13 +933,19 @@ msgstr "Status"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "Enkripcija je:" msgstr "Enkripcija je:"
msgid "Firefox Extension"
msgstr ""
msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
#, fuzzy #, fuzzy
msgid "Usage" msgid "Usage"
msgstr "Uporaba: %s" msgstr "Uporaba: %s"
msgid "Back"
msgstr "Nazaj"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -970,6 +974,18 @@ msgstr "Preimenuj"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Nastavi alarm:" msgstr "Nastavi alarm:"
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "Nova zabeležka"
msgid "New to-do"
msgstr "Novi seznam opravil"
msgid "New notebook"
msgstr "Nova beležnica"
msgid "Layout" msgid "Layout"
msgstr "Izgled" msgstr "Izgled"
@@ -1011,6 +1027,9 @@ msgstr ""
msgid "Note History" msgid "Note History"
msgstr "Beležnice" msgstr "Beležnice"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -1025,6 +1044,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "Ta zabeležka je bila spremenjena:" msgstr "Ta zabeležka je bila spremenjena:"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Nepodprta povezava ali sporočilo: %s"
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -1053,10 +1076,6 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "" msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Nepodprta povezava ali sporočilo: %s"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1068,6 +1087,13 @@ msgstr ""
msgid "Only one note can be printed or exported to PDF at a time." msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
msgid "PDF File"
msgstr "PDF datoteka"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Napaka v odpiranju zabeležke v urejevalniku: %s"
msgid "strong text" msgid "strong text"
msgstr "" msgstr ""
@@ -1083,9 +1109,6 @@ msgstr ""
msgid "Attach file" msgid "Attach file"
msgstr "Pripni datoteko" msgstr "Pripni datoteko"
msgid "Tags"
msgstr "Oznake"
msgid "Set alarm" msgid "Set alarm"
msgstr "Nastavi alarm" msgstr "Nastavi alarm"
@@ -1096,9 +1119,6 @@ msgstr "%s: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "" msgstr ""
msgid "Code"
msgstr ""
msgid "Numbered List" msgid "Numbered List"
msgstr "" msgstr ""
@@ -1149,12 +1169,8 @@ msgstr "Možnosti"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Sinhronizacijski status" msgstr "Sinhronizacijski status"
msgid "Encryption Options" msgid "Remove"
msgstr "Možnosti enkripcije" msgstr ""
#, fuzzy
msgid "Clipper Options"
msgstr "Splošne možnosti"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "" msgid ""
@@ -1165,6 +1181,9 @@ msgstr ""
"Želite izbrisati beležnico? Vse zabeležke znotraj beležke bodo hkrati " "Želite izbrisati beležnico? Vse zabeležke znotraj beležke bodo hkrati "
"izbrisane." "izbrisane."
msgid "Delete"
msgstr "Izbriši"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "Odstranite to oznako iz vseh zabeležk?" msgstr "Odstranite to oznako iz vseh zabeležk?"
@@ -1172,8 +1191,9 @@ msgstr "Odstranite to oznako iz vseh zabeležk?"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "Odstranite ta iskalni niz iz stranske vrstice?" msgstr "Odstranite ta iskalni niz iz stranske vrstice?"
msgid "Delete" #, fuzzy
msgstr "Izbriši" msgid "New sub-notebook"
msgstr "Nova beležnica"
msgid "Rename" msgid "Rename"
msgstr "Preimenuj" msgstr "Preimenuj"
@@ -1345,14 +1365,6 @@ msgstr "V mirovanju"
msgid "In progress" msgid "In progress"
msgstr "V postopku" msgstr "V postopku"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "Sinhronizacija je že v postopku. Stanje: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "Enkriptirano" msgstr "Enkriptirano"
@@ -1400,6 +1412,19 @@ msgid ""
"more details: %s" "more details: %s"
msgstr "" msgstr ""
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "Privzeto: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Sinhronizacijski cilj" msgstr "Sinhronizacijski cilj"
@@ -1470,6 +1495,41 @@ msgstr "Svetlo"
msgid "Dark" msgid "Dark"
msgstr "Temno" msgstr "Temno"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
#, fuzzy
msgid "Show note counts"
msgstr "Pokaži ikono v območju za obvestila(opravilna vrstica)"
#, fuzzy
msgid "Editor"
msgstr "Uredi"
#, fuzzy
msgid "Viewer"
msgstr "Pogled"
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "Premakni nedokončane sezname opravil na vrh" msgstr "Premakni nedokončane sezname opravil na vrh"
@@ -1505,6 +1565,9 @@ msgstr "Ob ustvarjanju nove zabeležke:"
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "Omogoči enkripcijo" msgstr "Omogoči enkripcijo"
@@ -1539,6 +1602,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "Pokaži ikono v območju za obvestila(opravilna vrstica)" msgstr "Pokaži ikono v območju za obvestila(opravilna vrstica)"
@@ -1561,6 +1627,10 @@ msgstr "Celokupen procent povečave"
msgid "Editor font size" msgid "Editor font size"
msgstr "Družina urejevalnika besedilnega stila" msgstr "Družina urejevalnika besedilnega stila"
#, fuzzy
msgid "Editor font"
msgstr "Družina urejevalnika besedilnega stila"
msgid "Editor font family" msgid "Editor font family"
msgstr "Družina urejevalnika besedilnega stila" msgstr "Družina urejevalnika besedilnega stila"
@@ -1609,8 +1679,35 @@ msgstr ""
"Urejevalnik, ki bo uporabljen za odpiranje zabeležk. Če noben ni izbran, bo " "Urejevalnik, ki bo uporabljen za odpiranje zabeležk. Če noben ni izbran, bo "
"avtomatsko zaznan privzeti urejevalnik." "avtomatsko zaznan privzeti urejevalnik."
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Pokaži napredne možnosti" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "" msgstr ""
@@ -1625,6 +1722,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "" msgstr ""
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable note history" msgid "Enable note history"
msgstr "Omogoči enkripcijo" msgstr "Omogoči enkripcijo"
@@ -1665,6 +1772,13 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "Izhod iz aplikacije." msgstr "Izhod iz aplikacije."
#, fuzzy
msgid "Encryption"
msgstr "Enkripcija je:"
msgid "Web Clipper"
msgstr ""
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "" msgstr ""
@@ -1678,7 +1792,12 @@ msgstr "Sistem označevanja"
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "Joplin izvozno mesto" msgstr "Joplin izvozno mesto"
msgid "Evernote Export File" #, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "Evernote izvozna datoteka"
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Evernote izvozna datoteka" msgstr "Evernote izvozna datoteka"
#, fuzzy #, fuzzy
@@ -1785,24 +1904,20 @@ msgstr ""
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "" msgstr ""
#, fuzzy
msgid "You currently have no notebooks."
msgstr "Ni aktivnih beležnic."
#, fuzzy
msgid "Create a notebook"
msgstr "Ustvari novo beležnico."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "Trenutno ni zabeležk. Ustvarite jo s klikom na (+) gumb." msgstr "Trenutno ni zabeležk. Ustvarite jo s klikom na (+) gumb."
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Izbriši te zabeležke?" msgstr "Izbriši te zabeležke?"
msgid "Log"
msgstr "Dnevnik"
msgid "Export Debug Report"
msgstr "Izvozi poročilo o napakah"
msgid "Encryption Config"
msgstr "Nastavite enkripcije"
msgid "Configuration"
msgstr "Nastavitve"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Premakni v beležnico..." msgstr "Premakni v beležnico..."
@@ -1827,8 +1942,24 @@ msgstr "Izberi datum"
msgid "Confirm" msgid "Confirm"
msgstr "Potrdi" msgstr "Potrdi"
msgid "Cancel synchronisation" #, fuzzy, javascript-format
msgstr "Prekliči sinhronizacijo" msgid "Notebook: %s"
msgstr "Beležnice"
#, fuzzy
msgid "Encrypted notebooks cannot be renamed"
msgstr "Enkriptirani predmeti ne morejo biti spremenjeni"
#, fuzzy
msgid "New Notebook"
msgstr "Nova beležnica"
msgid "Configuration"
msgstr "Nastavitve"
#, fuzzy
msgid "All notes"
msgstr "zabeležka"
#, fuzzy #, fuzzy
msgid "Checking... Please wait." msgid "Checking... Please wait."
@@ -1866,6 +1997,46 @@ msgstr ""
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "" msgstr ""
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr "Nastavite enkripcije"
#, fuzzy
msgid "Tools"
msgstr "Orodja"
#, fuzzy
msgid "Sync Status"
msgstr "Status"
msgid "Log"
msgstr "Dnevnik"
#, fuzzy
msgid "Creating report..."
msgstr "Ustvarjanje nove %s..."
msgid "Export Debug Report"
msgstr "Izvozi poročilo o napakah"
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "Nastavitve" msgstr "Nastavitve"
@@ -1918,6 +2089,10 @@ msgstr "Geslo:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "Geslo ne more biti prazno" msgstr "Geslo ne more biti prazno"
#, fuzzy
msgid "Confirm password cannot be empty"
msgstr "Geslo ne more biti prazno"
msgid "Enable" msgid "Enable"
msgstr "Omogoči" msgstr "Omogoči"
@@ -1928,6 +2103,10 @@ msgstr "Beležnica ne more biti shranjena: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Uredi beležnico" msgstr "Uredi beležnico"
#, fuzzy
msgid "Enter notebook title"
msgstr "Naslov beležnice:"
msgid "Show all" msgid "Show all"
msgstr "Prikaži vse" msgstr "Prikaži vse"
@@ -1951,10 +2130,32 @@ msgstr ""
msgid "The Joplin mobile app does not currently support this type of link: %s" msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "Nepodprt tip slike: %s" msgstr "Nepodprt tip slike: %s"
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "Posodobljeno: %d."
msgid "View on map"
msgstr "Prikaži na zemljevidu"
msgid "Go to source URL"
msgstr ""
#, fuzzy
msgid "Attach..."
msgstr "Išči"
#, fuzzy
msgid "Choose an option"
msgstr "Pokaži napredne možnosti"
#, fuzzy #, fuzzy
msgid "Take photo" msgid "Take photo"
msgstr "Pripni fotografijo" msgstr "Pripni fotografijo"
@@ -1974,23 +2175,18 @@ msgstr "Pretvori v zabeležko"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "Pretvori v za narediti" msgstr "Pretvori v za narediti"
msgid "Hide metadata" msgid "Properties"
msgstr "Skrij meta podatke" msgstr ""
msgid "Show metadata" msgid "Add body"
msgstr "Prikaži meta podatke"
msgid "View on map"
msgstr "Prikaži na zemljevidu"
msgid "Go to source URL"
msgstr "" msgstr ""
msgid "Edit" msgid "Edit"
msgstr "Uredi" msgstr "Uredi"
msgid "Delete notebook" #, fuzzy
msgstr "Izbriši beležnico" msgid "Add title"
msgstr "Neimenovano"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "Prijavi se z OneDrive" msgstr "Prijavi se z OneDrive"
@@ -1998,18 +2194,100 @@ msgstr "Prijavi se z OneDrive"
msgid "Search" msgid "Search"
msgstr "Išči" msgstr "Išči"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "Sinhronizacija je že v postopku. Stanje: %s"
"menu to access your existing notebooks."
msgstr ""
"Kliknite na (+) gumb, da ustvarite novo zabeležko ali beležnico. Kliknite na "
"stranski menu za dostop do obstoječih beležnic."
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "Trenutno nimate nobene beležnice. Ustvarite jo s klikom na (+) gumb." #~ msgid "Confirm master password:"
#~ msgstr "Vnesite glavno geslo:"
msgid "Welcome" #, fuzzy
msgstr "Dobrodošli" #~ msgid "Confirm password"
#~ msgstr "Vnesite glavno geslo:"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "Manjka zahtevani argument %s"
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr ""
#~ "Urejanje zabeležke se začenja. Zaprite urejevalnik, da se vrnete na "
#~ "ukazni poziv."
#~ msgid "Note has been saved."
#~ msgstr "Zabeležka je bila shranjena."
#, fuzzy
#~ msgid "Note title"
#~ msgstr "Naslov beležnice:"
#, fuzzy
#~ msgid "Note body"
#~ msgstr "Beležnice"
#~ msgid "Importing from \"%s\" as \"%s\" format. Please wait..."
#~ msgstr "Uvažam v \"%s\" kot \"%s\" format. Prosim počakajte..."
#~ msgid "Synchronisation status"
#~ msgstr "Status sinhronizacije"
#~ msgid "Print"
#~ msgstr "Natisni"
#~ msgid "General Options"
#~ msgstr "Splošne možnosti"
#~ msgid "Encryption options"
#~ msgstr "Možnosti enkripcije"
#, fuzzy
#~ msgid "Open template directory"
#~ msgstr "Joplin izvozno mesto"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "Možnosti enkripcije"
#, fuzzy
#~ msgid "Clipper Options"
#~ msgstr "Splošne možnosti"
#, fuzzy
#~ msgid "Information"
#~ msgstr "Nastavitve"
#~ msgid "Cancel synchronisation"
#~ msgstr "Prekliči sinhronizacijo"
#~ msgid "Hide metadata"
#~ msgstr "Skrij meta podatke"
#~ msgid "Show metadata"
#~ msgstr "Prikaži meta podatke"
#~ msgid "Delete notebook"
#~ msgstr "Izbriši beležnico"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "Kliknite na (+) gumb, da ustvarite novo zabeležko ali beležnico. Kliknite "
#~ "na stranski menu za dostop do obstoječih beležnic."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr ""
#~ "Trenutno nimate nobene beležnice. Ustvarite jo s klikom na (+) gumb."
#~ msgid "Welcome"
#~ msgstr "Dobrodošli"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Loči vsako oznako z vejico." #~ msgstr "Loči vsako oznako z vejico."
@@ -2027,10 +2305,6 @@ msgstr "Dobrodošli"
#~ "Pot za sinhronizacijo, ki bo uporabljena ob omogočeni sinhronizaciji. " #~ "Pot za sinhronizacijo, ki bo uporabljena ob omogočeni sinhronizaciji. "
#~ "Poglej `sync.target`." #~ "Poglej `sync.target`."
#, fuzzy
#~ msgid "Joplin v%s"
#~ msgstr "Joplin spletna stran"
#~ msgid "State: %s." #~ msgid "State: %s."
#~ msgstr "Stanje: %s." #~ msgstr "Stanje: %s."

2313
CliClient/locales/sr_RS.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -138,6 +138,14 @@ msgstr "Ange huvudlösenord:"
msgid "Operation cancelled" msgid "Operation cancelled"
msgstr "Operation avbruten" msgstr "Operation avbruten"
#, fuzzy
msgid "Confirm password:"
msgstr "Ange huvudlösenord:"
#, fuzzy
msgid "Passwords do not match!"
msgstr "Lösenordet kan inte vara tomt"
msgid "" msgid ""
"Starting decryption... Please wait as it may take several minutes depending " "Starting decryption... Please wait as it may take several minutes depending "
"on how much there is to decrypt." "on how much there is to decrypt."
@@ -174,18 +182,6 @@ msgstr "Ingen aktiv anteckningsbok."
msgid "Note does not exist: \"%s\". Create it?" msgid "Note does not exist: \"%s\". Create it?"
msgstr "Anteckning finns inte: \"%s\". Skapa den?" msgstr "Anteckning finns inte: \"%s\". Skapa den?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
"Börjar redigera anteckning. Stäng redigeraren för att komma tillbaka till "
"prompten."
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Fel vid öppning av anteckning i redigeraren: %s"
msgid "Note has been saved."
msgstr "Anteckning har sparats."
msgid "Exits the application." msgid "Exits the application."
msgstr "Avslutar programmet." msgstr "Avslutar programmet."
@@ -396,6 +392,23 @@ msgstr "Ta bort anteckning?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Söker efter det givna <pattern> i alla anteckningarna." msgstr "Söker efter det givna <pattern> i alla anteckningarna."
#, javascript-format
msgid ""
"Start, stop or check the API server. To specify on which port it should run, "
"set the api.port config variable. Commands are (%s)."
msgstr ""
#, javascript-format
msgid "Server is already running on port %d"
msgstr ""
#, javascript-format
msgid "Server is running on port %d"
msgstr ""
msgid "Server is not running."
msgstr ""
#, javascript-format #, javascript-format
msgid "" msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible " "Sets the property <name> of the given <note> to the given [value]. Possible "
@@ -468,10 +481,12 @@ msgstr "Laddar ned resurser..."
msgid "Cancelling... Please wait." msgid "Cancelling... Please wait."
msgstr "Avbryter... vänta." msgstr "Avbryter... vänta."
#, fuzzy
msgid "" msgid ""
"<tag-command> can be \"add\", \"remove\" or \"list\" to assign or remove " "<tag-command> can be \"add\", \"remove\", \"list\", or \"notetags\" to "
"[tag] from [note], or to list the notes associated with [tag]. The command " "assign or remove [tag] from [note], to list notes associated with [tag], or "
"`tag list` can be used to list all the tags (use -l for long option)." "to list tags associated with [note]. The command `tag list` can be used to "
"list all the tags (use -l for long option)."
msgstr "" msgstr ""
"<tag-command> kan vara \"lägg till\", \"ta bort\" eller \"lisat\" för att " "<tag-command> kan vara \"lägg till\", \"ta bort\" eller \"lisat\" för att "
"tilldela eller ta bort [tag] från [note], eller för att lista anteckningarna " "tilldela eller ta bort [tag] från [note], eller för att lista anteckningarna "
@@ -589,52 +604,9 @@ msgstr ""
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..." msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
msgstr "Exportera till \"%s\" som \"%s\" format. Vänta..." msgstr "Exportera till \"%s\" som \"%s\" format. Vänta..."
msgid "Sidebar"
msgstr "Sidofältet"
msgid "Note list"
msgstr "Anteckningsboken"
msgid "Note title"
msgstr "Rubriken"
msgid "Note body"
msgstr "Texten"
#, javascript-format #, javascript-format
msgid "Importing from \"%s\" as \"%s\" format. Please wait..." msgid "Could not export notes: %s"
msgstr "Importerar från \"%s\" som \"%s\" format. Vänta..." msgstr ""
msgid "PDF File"
msgstr "PDF-fil"
msgid "Synchronisation status"
msgstr "Synkroniseringstillstånd"
msgid "New note"
msgstr "Ny anteckning"
msgid "New to-do"
msgstr "Ny att-göra"
msgid "New notebook"
msgstr "Ny anteckningsbok"
msgid "Print"
msgstr "Skriv ut"
msgid "General Options"
msgstr "Allmänna inställningar"
msgid "Encryption options"
msgstr "Krypteringsinställningar"
msgid "Web clipper options"
msgstr "Web clipper-inställningar"
#, javascript-format
msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
#, fuzzy #, fuzzy
msgid "&File" msgid "&File"
@@ -649,6 +621,9 @@ msgstr ""
msgid "Check for updates..." msgid "Check for updates..."
msgstr "Sök efter uppdateringar..." msgstr "Sök efter uppdateringar..."
msgid "Templates"
msgstr ""
msgid "Import" msgid "Import"
msgstr "Importera" msgstr "Importera"
@@ -693,12 +668,18 @@ msgstr "Kursiv"
msgid "Link" msgid "Link"
msgstr "Länk" msgstr "Länk"
msgid "Code"
msgstr "Kod"
msgid "Insert Date Time" msgid "Insert Date Time"
msgstr "Infoga datumtid" msgstr "Infoga datumtid"
msgid "Edit in external editor" msgid "Edit in external editor"
msgstr "Redigera i extern redigerare" msgstr "Redigera i extern redigerare"
msgid "Tags"
msgstr "Taggar"
msgid "Search in all the notes" msgid "Search in all the notes"
msgstr "Sök i alla anteckningarna" msgstr "Sök i alla anteckningarna"
@@ -712,6 +693,13 @@ msgstr "Visa"
msgid "Toggle sidebar" msgid "Toggle sidebar"
msgstr "Växla sidofältet" msgstr "Växla sidofältet"
msgid "Layout button sequence"
msgstr ""
#, fuzzy
msgid "Toggle note list"
msgstr "Anteckningsboken"
msgid "Toggle editor layout" msgid "Toggle editor layout"
msgstr "Växla redigeringslayout" msgstr "Växla redigeringslayout"
@@ -729,6 +717,10 @@ msgstr "Hjälp"
msgid "Website and documentation" msgid "Website and documentation"
msgstr "Webbplats och dokumentation" msgstr "Webbplats och dokumentation"
#, fuzzy
msgid "Joplin Forum"
msgstr "Joplin v%s"
msgid "Make a donation" msgid "Make a donation"
msgstr "Gör en donation" msgstr "Gör en donation"
@@ -772,6 +764,9 @@ msgstr "Ja"
msgid "No" msgid "No"
msgstr "Nej" msgstr "Nej"
msgid "Full Release Notes"
msgstr ""
msgid "Token has been copied to the clipboard!" msgid "Token has been copied to the clipboard!"
msgstr "Token har kopierats till urklipp!" msgstr "Token har kopierats till urklipp!"
@@ -839,6 +834,9 @@ msgstr ""
"Denna auktorisering behövs endast för att tillåta tredjepartsprogram att " "Denna auktorisering behövs endast för att tillåta tredjepartsprogram att "
"integrera med Joplin." "integrera med Joplin."
msgid "This will open a new screen. Save your current changes?"
msgstr ""
#, javascript-format #, javascript-format
msgid "Notes and settings are stored in: %s" msgid "Notes and settings are stored in: %s"
msgstr "Anteckningar och inställningar lagras i: %s" msgstr "Anteckningar och inställningar lagras i: %s"
@@ -849,6 +847,9 @@ msgstr "Kontrollera synkroniseringskonfigurationen"
msgid "Browse..." msgid "Browse..."
msgstr "Bläddra..." msgstr "Bläddra..."
msgid "Back"
msgstr "Tillbaka"
msgid "Apply" msgid "Apply"
msgstr "Tillämpa" msgstr "Tillämpa"
@@ -931,8 +932,8 @@ msgstr ""
"småningom kommer att hämtas via synkronisering." "småningom kommer att hämtas via synkronisering."
msgid "" msgid ""
"For more information about End-To-End Encryption (E2EE) and advices on how " "For more information about End-To-End Encryption (E2EE) and advice on how to "
"to enable it please check the documentation:" "enable it please check the documentation:"
msgstr "" msgstr ""
"För mer information om End-to-End Encryption (E2EE) och råd om hur du " "För mer information om End-to-End Encryption (E2EE) och råd om hur du "
"aktiverar det finns i dokumentationen:" "aktiverar det finns i dokumentationen:"
@@ -943,12 +944,18 @@ msgstr "Tillstånd"
msgid "Encryption is:" msgid "Encryption is:"
msgstr "Kryptering är:" msgstr "Kryptering är:"
msgid "Firefox Extension"
msgstr ""
msgid "Chrome Web Store"
msgstr ""
msgid "Get it now:"
msgstr ""
msgid "Usage" msgid "Usage"
msgstr "Användning" msgstr "Användning"
msgid "Back"
msgstr "Tillbaka"
#, javascript-format #, javascript-format
msgid "" msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it" "New notebook \"%s\" will be created and file \"%s\" will be imported into it"
@@ -977,6 +984,18 @@ msgstr "Byt namn på tagg:"
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Ställ in alarm:" msgstr "Ställ in alarm:"
msgid "Template file:"
msgstr ""
msgid "New note"
msgstr "Ny anteckning"
msgid "New to-do"
msgstr "Ny att-göra"
msgid "New notebook"
msgstr "Ny anteckningsbok"
msgid "Layout" msgid "Layout"
msgstr "Layout" msgstr "Layout"
@@ -1015,6 +1034,9 @@ msgstr "URL"
msgid "Note History" msgid "Note History"
msgstr "Anteckningsboken" msgstr "Anteckningsboken"
msgid "Markup"
msgstr ""
msgid "Previous versions of this note" msgid "Previous versions of this note"
msgstr "" msgstr ""
@@ -1029,6 +1051,10 @@ msgstr ""
msgid "This note has no history" msgid "This note has no history"
msgstr "Denna anteckning har ändrats:" msgstr "Denna anteckning har ändrats:"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Länk eller meddelande stöds inte: %s"
msgid "Restore" msgid "Restore"
msgstr "" msgstr ""
@@ -1057,10 +1083,6 @@ msgstr "Kopiera länkadress"
msgid "This attachment is not downloaded or not decrypted yet." msgid "This attachment is not downloaded or not decrypted yet."
msgstr "Denna bilaga är inte nedladdad eller ännu inte dekrypterad." msgstr "Denna bilaga är inte nedladdad eller ännu inte dekrypterad."
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Länk eller meddelande stöds inte: %s"
#, javascript-format #, javascript-format
msgid "" msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the " "This note has no content. Click on \"%s\" to toggle the editor and edit the "
@@ -1073,6 +1095,13 @@ msgid "Only one note can be printed or exported to PDF at a time."
msgstr "" msgstr ""
"Endast en anteckning i taget kan bli utskriven eller exporterad till PDF." "Endast en anteckning i taget kan bli utskriven eller exporterad till PDF."
msgid "PDF File"
msgstr "PDF-fil"
#, javascript-format
msgid "Error opening note in editor: %s"
msgstr "Fel vid öppning av anteckning i redigeraren: %s"
msgid "strong text" msgid "strong text"
msgstr "stark text" msgstr "stark text"
@@ -1088,9 +1117,6 @@ msgstr "Infoga hyperlänk"
msgid "Attach file" msgid "Attach file"
msgstr "Bifoga fil" msgstr "Bifoga fil"
msgid "Tags"
msgstr "Taggar"
msgid "Set alarm" msgid "Set alarm"
msgstr "Sätt alarm" msgstr "Sätt alarm"
@@ -1101,9 +1127,6 @@ msgstr "I: %s"
msgid "Hyperlink" msgid "Hyperlink"
msgstr "Hyperlänk" msgstr "Hyperlänk"
msgid "Code"
msgstr "Kod"
msgid "Numbered List" msgid "Numbered List"
msgstr "Numrerad lista" msgstr "Numrerad lista"
@@ -1153,11 +1176,8 @@ msgstr "Inställningar"
msgid "Synchronisation Status" msgid "Synchronisation Status"
msgstr "Synkroniseringstillstånd" msgstr "Synkroniseringstillstånd"
msgid "Encryption Options" msgid "Remove"
msgstr "Krypteringsinställningar" msgstr ""
msgid "Clipper Options"
msgstr "Clipper-inställningar"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "" msgid ""
@@ -1168,6 +1188,9 @@ msgstr ""
"Ta bort anteckningsboken? Alla anteckningar och delanteckningsböcker i den " "Ta bort anteckningsboken? Alla anteckningar och delanteckningsböcker i den "
"här anteckningsboken tas bort också." "här anteckningsboken tas bort också."
msgid "Delete"
msgstr "Ta bort"
#, fuzzy, javascript-format #, fuzzy, javascript-format
msgid "Remove tag \"%s\" from all notes?" msgid "Remove tag \"%s\" from all notes?"
msgstr "Ta bort den här taggen från alla anteckningar?" msgstr "Ta bort den här taggen från alla anteckningar?"
@@ -1175,8 +1198,9 @@ msgstr "Ta bort den här taggen från alla anteckningar?"
msgid "Remove this search from the sidebar?" msgid "Remove this search from the sidebar?"
msgstr "Ta bort den här sökningen från sidofältet?" msgstr "Ta bort den här sökningen från sidofältet?"
msgid "Delete" #, fuzzy
msgstr "Ta bort" msgid "New sub-notebook"
msgstr "Ny anteckningsbok"
msgid "Rename" msgid "Rename"
msgstr "Byt namn" msgstr "Byt namn"
@@ -1346,14 +1370,6 @@ msgstr "Inaktiv"
msgid "In progress" msgid "In progress"
msgstr "Pågår" msgstr "Pågår"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "Synkronisering pågår redan. Tillstånd: %s"
msgid ""
"Unknown item type downloaded - please upgrade Joplin to the latest version"
msgstr ""
msgid "Encrypted" msgid "Encrypted"
msgstr "Krypterad" msgstr "Krypterad"
@@ -1401,6 +1417,19 @@ msgstr ""
"innehåll innan du synkroniserar. Annars kommer samtliga filer att raderas. " "innehåll innan du synkroniserar. Annars kommer samtliga filer att raderas. "
"Läs FAQ för mer information: %s" "Läs FAQ för mer information: %s"
msgid "Keyboard Mode"
msgstr ""
#, fuzzy
msgid "Default"
msgstr "Standard: %s"
msgid "Emacs"
msgstr ""
msgid "Vim"
msgstr ""
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Synkroniseringsmål" msgstr "Synkroniseringsmål"
@@ -1471,6 +1500,41 @@ msgstr "Ljus"
msgid "Dark" msgid "Dark"
msgstr "Mörk" msgstr "Mörk"
msgid "Dracula"
msgstr ""
msgid "Solarised Light"
msgstr ""
msgid "Solarised Dark"
msgstr ""
msgid "Nord"
msgstr ""
#, fuzzy
msgid "Show note counts"
msgstr "Visa fältikon"
#, fuzzy
msgid "Editor"
msgstr "Redigera"
#, fuzzy
msgid "Viewer"
msgstr "Visa"
msgid "Split View"
msgstr ""
#, fuzzy, javascript-format
msgid "%s / %s / %s"
msgstr "%s = %s (%s)"
#, javascript-format
msgid "%s / %s"
msgstr ""
msgid "Uncompleted to-dos on top" msgid "Uncompleted to-dos on top"
msgstr "Inte slutförda att-göra högst upp" msgstr "Inte slutförda att-göra högst upp"
@@ -1505,6 +1569,9 @@ msgstr "När du skapar en ny anteckning:"
msgid "Enable soft breaks" msgid "Enable soft breaks"
msgstr "" msgstr ""
msgid "Enable typographer support"
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable math expressions" msgid "Enable math expressions"
msgstr "Aktivera kryptering" msgstr "Aktivera kryptering"
@@ -1539,6 +1606,9 @@ msgstr ""
msgid "Enable multimarkdown table extension" msgid "Enable multimarkdown table extension"
msgstr "" msgstr ""
msgid "Enable Fountain syntax support"
msgstr ""
msgid "Show tray icon" msgid "Show tray icon"
msgstr "Visa fältikon" msgstr "Visa fältikon"
@@ -1563,6 +1633,10 @@ msgstr "Global zoomprocent"
msgid "Editor font size" msgid "Editor font size"
msgstr "Redigerarens teckenstorlek" msgstr "Redigerarens teckenstorlek"
#, fuzzy
msgid "Editor font"
msgstr "Redigerarens teckenstorlek"
msgid "Editor font family" msgid "Editor font family"
msgstr "Redigerarens typsnittsfamilj" msgstr "Redigerarens typsnittsfamilj"
@@ -1610,8 +1684,35 @@ msgstr ""
"anteckning. Om inget tillhandahålls försöker det automatiskt identifiera " "anteckning. Om inget tillhandahålls försöker det automatiskt identifiera "
"standardredigeraren." "standardredigeraren."
msgid "Show advanced options" msgid "Page size for PDF export"
msgstr "Visa avancerade inställningar" msgstr ""
msgid "A4"
msgstr ""
msgid "Letter"
msgstr ""
msgid "A3"
msgstr ""
msgid "A5"
msgstr ""
msgid "Tabloid"
msgstr ""
msgid "Legal"
msgstr ""
msgid "Page orientation for PDF export"
msgstr ""
msgid "Portrait"
msgstr ""
msgid "Landscape"
msgstr ""
msgid "Custom TLS certificates" msgid "Custom TLS certificates"
msgstr "Anpassade TLS-certifikat" msgstr "Anpassade TLS-certifikat"
@@ -1631,6 +1732,16 @@ msgstr ""
msgid "Ignore TLS certificate errors" msgid "Ignore TLS certificate errors"
msgstr "Ignorera TLS-certifikatfel" msgstr "Ignorera TLS-certifikatfel"
msgid ""
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
"result of a misconfiguration or bug)"
msgstr ""
msgid ""
"Specify the port that should be used by the API server. If not set, a "
"default will be used."
msgstr ""
#, fuzzy #, fuzzy
msgid "Enable note history" msgid "Enable note history"
msgstr "Aktivera kryptering" msgstr "Aktivera kryptering"
@@ -1668,6 +1779,14 @@ msgstr ""
msgid "Application" msgid "Application"
msgstr "Avslutar programmet" msgstr "Avslutar programmet"
#, fuzzy
msgid "Encryption"
msgstr "Kryptering är:"
#, fuzzy
msgid "Web Clipper"
msgstr "Web clipper-inställningar"
#, javascript-format #, javascript-format
msgid "The tag \"%s\" already exists. Please choose a different name." msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr "Taggen \"%s\" finns redan. Välj ett annat namn." msgstr "Taggen \"%s\" finns redan. Välj ett annat namn."
@@ -1681,7 +1800,12 @@ msgstr "Markdown"
msgid "Joplin Export Directory" msgid "Joplin Export Directory"
msgstr "Joplin-exporteringskatalog" msgstr "Joplin-exporteringskatalog"
msgid "Evernote Export File" #, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "Evernote-exporteringsfil"
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Evernote-exporteringsfil" msgstr "Evernote-exporteringsfil"
msgid "Json Export Directory" msgid "Json Export Directory"
@@ -1787,6 +1911,14 @@ msgstr "Tillåtelse att använda kameran"
msgid "Your permission to use your camera is required." msgid "Your permission to use your camera is required."
msgstr "Du måste ge tillåtelse att använda kameran." msgstr "Du måste ge tillåtelse att använda kameran."
#, fuzzy
msgid "You currently have no notebooks."
msgstr "Ingen aktiv anteckningsbok."
#, fuzzy
msgid "Create a notebook"
msgstr "Skapar en ny anteckningsbok."
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
"Det finns för närvarande inga anteckningar. Skapa en genom att klicka på (+)-" "Det finns för närvarande inga anteckningar. Skapa en genom att klicka på (+)-"
@@ -1795,18 +1927,6 @@ msgstr ""
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Ta bort dessa anteckningar?" msgstr "Ta bort dessa anteckningar?"
msgid "Log"
msgstr "Logg"
msgid "Export Debug Report"
msgstr "Exportera felsökningsrapport"
msgid "Encryption Config"
msgstr "Kryptering-konfiguration"
msgid "Configuration"
msgstr "Konfiguration"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Flytta till anteckningsbok..." msgstr "Flytta till anteckningsbok..."
@@ -1829,8 +1949,24 @@ msgstr "Välj datum"
msgid "Confirm" msgid "Confirm"
msgstr "Bekräfta" msgstr "Bekräfta"
msgid "Cancel synchronisation" #, fuzzy, javascript-format
msgstr "Avbryt synkronisering" msgid "Notebook: %s"
msgstr "Anteckningsböcker"
#, fuzzy
msgid "Encrypted notebooks cannot be renamed"
msgstr "Krypterade objekt kan inte ändras"
#, fuzzy
msgid "New Notebook"
msgstr "Ny anteckningsbok"
msgid "Configuration"
msgstr "Konfiguration"
#, fuzzy
msgid "All notes"
msgstr "anteckning"
msgid "Checking... Please wait." msgid "Checking... Please wait."
msgstr "Kontrollerar... vänta." msgstr "Kontrollerar... vänta."
@@ -1872,6 +2008,46 @@ msgstr "Nya taggar:"
msgid "Type new tags or select from list" msgid "Type new tags or select from list"
msgstr "Skriv nya taggar eller välj från listan" msgstr "Skriv nya taggar eller välj från listan"
msgid "Warning"
msgstr ""
msgid ""
"In order to use file system synchronisation your permission to write to "
"external storage is required."
msgstr ""
msgid "Encryption Config"
msgstr "Kryptering-konfiguration"
#, fuzzy
msgid "Tools"
msgstr "Verktyg"
#, fuzzy
msgid "Sync Status"
msgstr "Tillstånd"
msgid "Log"
msgstr "Logg"
#, fuzzy
msgid "Creating report..."
msgstr "Skapar ny %s..."
msgid "Export Debug Report"
msgstr "Exportera felsökningsrapport"
msgid "Fixing search index..."
msgstr ""
msgid "Fix search index"
msgstr ""
msgid ""
"Use this to rebuild the search index if there is a problem with search. It "
"may take a long time depending on the number of notes."
msgstr ""
#, fuzzy #, fuzzy
msgid "More information" msgid "More information"
msgstr "Konfiguration" msgstr "Konfiguration"
@@ -1931,6 +2107,10 @@ msgstr "Lösenord:"
msgid "Password cannot be empty" msgid "Password cannot be empty"
msgstr "Lösenordet kan inte vara tomt" msgstr "Lösenordet kan inte vara tomt"
#, fuzzy
msgid "Confirm password cannot be empty"
msgstr "Lösenordet kan inte vara tomt"
msgid "Enable" msgid "Enable"
msgstr "Aktivera" msgstr "Aktivera"
@@ -1941,6 +2121,10 @@ msgstr "Anteckningsboken kunde inte sparas: %s"
msgid "Edit notebook" msgid "Edit notebook"
msgstr "Redigera anteckningsbok" msgstr "Redigera anteckningsbok"
#, fuzzy
msgid "Enter notebook title"
msgstr "Titel på anteckningsbok:"
msgid "Show all" msgid "Show all"
msgstr "Visa alla" msgstr "Visa alla"
@@ -1965,10 +2149,32 @@ msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "" msgstr ""
"Den mobila appen Joplin stöder för närvarande inte denna typ av länk: %s" "Den mobila appen Joplin stöder för närvarande inte denna typ av länk: %s"
#, javascript-format
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
#, javascript-format #, javascript-format
msgid "Unsupported image type: %s" msgid "Unsupported image type: %s"
msgstr "Bildstorlek som inte stöds: %s" msgstr "Bildstorlek som inte stöds: %s"
#, fuzzy, javascript-format
msgid "Updated: %s"
msgstr "Uppdaterad: %d."
msgid "View on map"
msgstr "Visa på karta"
msgid "Go to source URL"
msgstr "Gå till källans URL"
#, fuzzy
msgid "Attach..."
msgstr "Sök..."
#, fuzzy
msgid "Choose an option"
msgstr "Visa avancerade inställningar"
msgid "Take photo" msgid "Take photo"
msgstr "Ta ett foto" msgstr "Ta ett foto"
@@ -1987,23 +2193,19 @@ msgstr "Konvertera till anteckning"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "Konvertera till att-göra" msgstr "Konvertera till att-göra"
msgid "Hide metadata" #, fuzzy
msgstr "Dölj metadata" msgid "Properties"
msgstr "Anteckningens egenskaper"
msgid "Show metadata" msgid "Add body"
msgstr "Visa metadata" msgstr ""
msgid "View on map"
msgstr "Visa på karta"
msgid "Go to source URL"
msgstr "Gå till källans URL"
msgid "Edit" msgid "Edit"
msgstr "Redigera" msgstr "Redigera"
msgid "Delete notebook" #, fuzzy
msgstr "Ta bort anteckningsbok" msgid "Add title"
msgstr "titel"
msgid "Login with OneDrive" msgid "Login with OneDrive"
msgstr "Logga in med OneDrive" msgstr "Logga in med OneDrive"
@@ -2011,21 +2213,110 @@ msgstr "Logga in med OneDrive"
msgid "Search" msgid "Search"
msgstr "Sök" msgstr "Sök"
msgid "" #~ msgid "Synchronisation is already in progress. State: %s"
"Click on the (+) button to create a new note or notebook. Click on the side " #~ msgstr "Synkronisering pågår redan. Tillstånd: %s"
"menu to access your existing notebooks."
msgstr ""
"Klicka på (+)-knappen för att skapa en ny anteckning eller anteckningsbok. "
"Klicka på sidomenyn för att få tillgång till dina befintliga "
"anteckningsböcker."
msgid "You currently have no notebook. Create one by clicking on (+) button." #, fuzzy
msgstr "" #~ msgid "Confirm master password:"
"Du har för närvarande ingen anteckningsbok. Skapa en genom att klicka på (+)-" #~ msgstr "Ange huvudlösenord:"
"knappen."
msgid "Welcome" #, fuzzy
msgstr "Välkommen" #~ msgid "Confirm password"
#~ msgstr "Ange huvudlösenord:"
#, fuzzy
#~ msgid "Missing required argument: note"
#~ msgstr "Saknade obligatoriskt argument: %s"
#~ msgid "Starting to edit note. Close the editor to get back to the prompt."
#~ msgstr ""
#~ "Börjar redigera anteckning. Stäng redigeraren för att komma tillbaka till "
#~ "prompten."
#~ msgid "Note has been saved."
#~ msgstr "Anteckning har sparats."
#~ msgid "Sidebar"
#~ msgstr "Sidofältet"
#~ msgid "Note title"
#~ msgstr "Rubriken"
#~ msgid "Note body"
#~ msgstr "Texten"
#~ msgid "Importing from \"%s\" as \"%s\" format. Please wait..."
#~ msgstr "Importerar från \"%s\" som \"%s\" format. Vänta..."
#~ msgid "Synchronisation status"
#~ msgstr "Synkroniseringstillstånd"
#~ msgid "Print"
#~ msgstr "Skriv ut"
#~ msgid "General Options"
#~ msgstr "Allmänna inställningar"
#~ msgid "Encryption options"
#~ msgstr "Krypteringsinställningar"
#, fuzzy
#~ msgid "Insert template"
#~ msgstr "Infoga datumtid"
#, fuzzy
#~ msgid "Open template directory"
#~ msgstr "Joplin-exporteringskatalog"
#, fuzzy
#~ msgid "Revision: %s (%s)"
#~ msgstr "%s %s (%s)"
#~ msgid "%s %s (%s, %s)"
#~ msgstr "%s %s (%s, %s)"
#~ msgid "Encryption Options"
#~ msgstr "Krypteringsinställningar"
#~ msgid "Clipper Options"
#~ msgstr "Clipper-inställningar"
#, fuzzy
#~ msgid "Information"
#~ msgstr "Konfiguration"
#, fuzzy
#~ msgid "Permission to write to external storage"
#~ msgstr "Tillåtelse att använda kameran"
#~ msgid "Cancel synchronisation"
#~ msgstr "Avbryt synkronisering"
#~ msgid "Hide metadata"
#~ msgstr "Dölj metadata"
#~ msgid "Show metadata"
#~ msgstr "Visa metadata"
#~ msgid "Delete notebook"
#~ msgstr "Ta bort anteckningsbok"
#~ msgid ""
#~ "Click on the (+) button to create a new note or notebook. Click on the "
#~ "side menu to access your existing notebooks."
#~ msgstr ""
#~ "Klicka på (+)-knappen för att skapa en ny anteckning eller "
#~ "anteckningsbok. Klicka på sidomenyn för att få tillgång till dina "
#~ "befintliga anteckningsböcker."
#~ msgid ""
#~ "You currently have no notebook. Create one by clicking on (+) button."
#~ msgstr ""
#~ "Du har för närvarande ingen anteckningsbok. Skapa en genom att klicka på "
#~ "(+)-knappen."
#~ msgid "Welcome"
#~ msgstr "Välkommen"
#~ msgid "Separate each tag by a comma." #~ msgid "Separate each tag by a comma."
#~ msgstr "Separera varje tagg med ett komma." #~ msgstr "Separera varje tagg med ett komma."
@@ -2043,9 +2334,6 @@ msgstr "Välkommen"
#~ "Sökvägen att synkronisera med när synkronisering av filsystem är " #~ "Sökvägen att synkronisera med när synkronisering av filsystem är "
#~ "aktiverat. Se `sync.target`." #~ "aktiverat. Se `sync.target`."
#~ msgid "Joplin v%s"
#~ msgstr "Joplin v%s"
#~ msgid "State: %s." #~ msgid "State: %s."
#~ msgstr "Tillstånd: %s." #~ msgstr "Tillstånd: %s."

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