1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-08-27 20:29:45 +02:00

Compare commits

..

2 Commits

Author SHA1 Message Date
Laurent Cozic
6f55003338 comment 2022-01-13 17:04:19 +00:00
Laurent Cozic
96f5209686 init 2022-01-13 16:31:32 +00:00
269 changed files with 14838 additions and 22169 deletions

View File

@@ -235,9 +235,6 @@ packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.js.map
packages/app-desktop/gui/ErrorBoundary.d.ts
packages/app-desktop/gui/ErrorBoundary.js
packages/app-desktop/gui/ErrorBoundary.js.map
packages/app-desktop/gui/FolderIconBox.d.ts
packages/app-desktop/gui/FolderIconBox.js
packages/app-desktop/gui/FolderIconBox.js.map
packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.d.ts
packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.js
packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.js.map
@@ -1150,9 +1147,6 @@ packages/lib/models/NoteTag.js.map
packages/lib/models/Resource.d.ts
packages/lib/models/Resource.js
packages/lib/models/Resource.js.map
packages/lib/models/Resource.test.d.ts
packages/lib/models/Resource.test.js
packages/lib/models/Resource.test.js.map
packages/lib/models/ResourceLocalState.d.ts
packages/lib/models/ResourceLocalState.js
packages/lib/models/ResourceLocalState.js.map
@@ -1933,9 +1927,6 @@ packages/renderer/headerAnchor.js.map
packages/renderer/htmlUtils.d.ts
packages/renderer/htmlUtils.js
packages/renderer/htmlUtils.js.map
packages/renderer/htmlUtils.test.d.ts
packages/renderer/htmlUtils.test.js
packages/renderer/htmlUtils.test.js.map
packages/renderer/index.d.ts
packages/renderer/index.js
packages/renderer/index.js.map

View File

@@ -16,7 +16,7 @@ jobs:
days-before-stale: 30
days-before-close: 7
operations-per-run: 1000
exempt-issue-labels: 'good first issue,upstream,backlog,high,medium,spec,cannot reproduce,enhancement'
exempt-issue-labels: 'good first issue,upstream,backlog,high,medium,spec,cannot reproduce'
stale-issue-label: 'stale'
close-issue-message: 'Closing this issue after a prolonged period of inactivity. If this issue is still present in the latest release, feel free to create a new issue with up-to-date information.'
# Don't process pull requests at all

View File

@@ -86,20 +86,10 @@ jobs:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
IS_CONTINUOUS_INTEGRATION: 1
BUILD_SEQUENCIAL: 1
# To ensure that the operations stop on failure, all commands
# should be on one line with "&&" in between.
run: |
yarn install && cd packages/app-desktop && yarn run dist
# Build and package the Windows app, without publishing it, just to
# verify that the build process hasn't been broken.
- name: Build Windows app (no publishing)
if: runner.os == 'Windows' && !startsWith(github.ref, 'refs/tags/v')
env:
IS_CONTINUOUS_INTEGRATION: 1
BUILD_SEQUENCIAL: 1
run: |
yarn install && cd packages/app-desktop && yarn run dist --publish=never
yarn install
cd packages/app-desktop
yarn run dist
ServerDockerImage:
runs-on: ${{ matrix.os }}

9
.gitignore vendored
View File

@@ -225,9 +225,6 @@ packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.js.map
packages/app-desktop/gui/ErrorBoundary.d.ts
packages/app-desktop/gui/ErrorBoundary.js
packages/app-desktop/gui/ErrorBoundary.js.map
packages/app-desktop/gui/FolderIconBox.d.ts
packages/app-desktop/gui/FolderIconBox.js
packages/app-desktop/gui/FolderIconBox.js.map
packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.d.ts
packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.js
packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.js.map
@@ -1140,9 +1137,6 @@ packages/lib/models/NoteTag.js.map
packages/lib/models/Resource.d.ts
packages/lib/models/Resource.js
packages/lib/models/Resource.js.map
packages/lib/models/Resource.test.d.ts
packages/lib/models/Resource.test.js
packages/lib/models/Resource.test.js.map
packages/lib/models/ResourceLocalState.d.ts
packages/lib/models/ResourceLocalState.js
packages/lib/models/ResourceLocalState.js.map
@@ -1923,9 +1917,6 @@ packages/renderer/headerAnchor.js.map
packages/renderer/htmlUtils.d.ts
packages/renderer/htmlUtils.js
packages/renderer/htmlUtils.js.map
packages/renderer/htmlUtils.test.d.ts
packages/renderer/htmlUtils.test.js
packages/renderer/htmlUtils.test.js.map
packages/renderer/index.d.ts
packages/renderer/index.js
packages/renderer/index.js.map

View File

@@ -0,0 +1,43 @@
diff --git a/index.js b/index.js
index 85d89900d5fe575dd0c19430209fb1703b03554e..5fa68cc9a4bd2b21a7188bd263262fd9b1604ac6 100644
--- a/index.js
+++ b/index.js
@@ -145,7 +145,8 @@ module.exports = function multimd_table_plugin(md, options) {
colspan, leftToken,
rowspan, upTokens = [],
tableLines, tgroupLines,
- tag, text, range, r, c, b;
+ tag, text, range, r, c, b, t,
+ blockState;
if (startLine + 2 > endLine) { return false; }
@@ -315,18 +316,26 @@ module.exports = function multimd_table_plugin(md, options) {
/* Multiline. Join the text and feed into markdown-it blockParser. */
if (options.multiline && trToken.meta.multiline && trToken.meta.mbounds) {
- text = [ text.trimRight() ];
+ // Pad the text with empty lines to ensure the line number mapping is correct
+ text = new Array(trToken.map[0]).fill('').concat([ text.trimRight() ]);
for (b = 1; b < trToken.meta.mbounds.length; b++) {
/* Line with N bounds has cells indexed from 0 to N-2 */
if (c > trToken.meta.mbounds[b].length - 2) { continue; }
range = [ trToken.meta.mbounds[b][c] + 1, trToken.meta.mbounds[b][c + 1] ];
text.push(state.src.slice.apply(state.src, range).trimRight());
}
- state.md.block.parse(text.join('\n'), state.md, state.env, state.tokens);
+ blockState = new state.md.block.State(text.join('\n'), state.md, state.env, []);
+ blockState.level = trToken.level + 1;
+ // Start tokenizing from the actual content (trToken.map[0])
+ state.md.block.tokenize(blockState, trToken.map[0], blockState.lineMax);
+ for (t = 0; t < blockState.tokens.length; t++) {
+ state.tokens.push(blockState.tokens[t]);
+ }
} else {
token = state.push('inline', '', 0);
token.content = text.trim();
token.map = trToken.map;
+ token.level = trToken.level + 1;
token.children = [];
}

View File

@@ -672,7 +672,7 @@ footer .bottom-links-row p {
.news-page img,
.news-item-page img {
max-width: 100%;
max-width: 650px;
}
/*****************************************************************

View File

@@ -18,9 +18,10 @@ There are also a few forks of existing packages under the "fork-*" name.
## Required dependencies
- Install Node 16+. On Windows, also install the build tools - https://nodejs.org/en/
- [Enable Yarn](https://yarnpkg.com/getting-started/install): `corepack enable`
- Install node 16+ - https://nodejs.org/en/
- [Enable yarn](https://yarnpkg.com/getting-started/install): `corepack enable`
- macOS: Install Cocoapods - `brew install cocoapods`. Apple Silicon [may require libvips](https://github.com/laurent22/joplin/pull/5966#issuecomment-1007158597) - `brew install vips`.
- Windows: Install Windows Build Tools - `yarn install -g windows-build-tools --vs2015`
- Linux: Install dependencies - `sudo apt install build-essential libnss3 libsecret-1-dev python rsync`
## Building

View File

@@ -1,41 +1,50 @@
# =============================================================================
# Build stage
# =============================================================================
FROM node:16-bullseye AS builder
FROM node:16-bullseye
RUN apt-get update \
&& apt-get install -y \
python \
&& rm -rf /var/lib/apt/lists/*
# Download the init tool Tini and make it executable for use in the final image
ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-static /tini
RUN chmod u+x /tini
# Enables Yarn
RUN corepack enable
WORKDIR /build
RUN echo "Node: $(node --version)" \
&& echo "Npm: $(npm --version)" \
&& echo "Yarn: $(yarn --version)"
COPY .yarn/plugins ./.yarn/plugins
COPY .yarn/releases ./.yarn/releases
COPY package.json .
COPY .yarnrc.yml .
COPY yarn.lock .
COPY gulpfile.js .
COPY tsconfig.json .
COPY packages/turndown ./packages/turndown
COPY packages/turndown-plugin-gfm ./packages/turndown-plugin-gfm
COPY packages/fork-htmlparser2 ./packages/fork-htmlparser2
COPY packages/server/package*.json ./packages/server/
COPY packages/fork-sax ./packages/fork-sax
COPY packages/fork-uslug ./packages/fork-uslug
COPY packages/htmlpack ./packages/htmlpack
COPY packages/renderer ./packages/renderer
COPY packages/tools ./packages/tools
COPY packages/lib ./packages/lib
COPY packages/server ./packages/server
ARG user=joplin
RUN useradd --create-home --shell /bin/bash $user
USER $user
ENV NODE_ENV production
ENV RUNNING_IN_DOCKER 1
EXPOSE ${APP_PORT}
WORKDIR /home/$user
RUN mkdir /home/$user/logs \
&& mkdir /home/$user/.yarn
COPY --chown=$user:$user .yarn/patches ./.yarn/patches
COPY --chown=$user:$user .yarn/plugins ./.yarn/plugins
COPY --chown=$user:$user .yarn/releases ./.yarn/releases
COPY --chown=$user:$user package.json .
COPY --chown=$user:$user .yarnrc.yml .
COPY --chown=$user:$user yarn.lock .
COPY --chown=$user:$user gulpfile.js .
COPY --chown=$user:$user tsconfig.json .
COPY --chown=$user:$user packages/turndown ./packages/turndown
COPY --chown=$user:$user packages/turndown-plugin-gfm ./packages/turndown-plugin-gfm
COPY --chown=$user:$user packages/fork-htmlparser2 ./packages/fork-htmlparser2
COPY --chown=$user:$user packages/server/package*.json ./packages/server/
COPY --chown=$user:$user packages/fork-sax ./packages/fork-sax
COPY --chown=$user:$user packages/fork-uslug ./packages/fork-uslug
COPY --chown=$user:$user packages/htmlpack ./packages/htmlpack
COPY --chown=$user:$user packages/renderer ./packages/renderer
COPY --chown=$user:$user packages/tools ./packages/tools
COPY --chown=$user:$user packages/lib ./packages/lib
COPY --chown=$user:$user packages/server ./packages/server
# For some reason there's both a .yarn/cache and .yarn/berry/cache that are
# being generated, and both have the same content. Not clear why it does this
@@ -50,30 +59,10 @@ RUN BUILD_SEQUENCIAL=1 yarn install --inline-builds \
&& yarn cache clean \
&& rm -rf .yarn/berry
# =============================================================================
# Final stage - we copy only the relevant files from the build stage and start
# from a smaller base image.
# =============================================================================
FROM node:16-bullseye-slim
ARG user=joplin
RUN useradd --create-home --shell /bin/bash $user
USER $user
COPY --chown=$user:$user --from=builder /build/packages /home/$user/packages
COPY --chown=$user:$user --from=builder /tini /usr/local/bin/tini
ENV NODE_ENV=production
ENV RUNNING_IN_DOCKER=1
EXPOSE ${APP_PORT}
# Use Tini to start Joplin Server:
# https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#handling-kernel-signals
WORKDIR /home/$user/packages/server
ENTRYPOINT ["tini", "--"]
CMD ["node", "dist/app.js"]
# Call the command directly, without going via npm:
# https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#cmd
WORKDIR "/home/$user/packages/server"
CMD [ "node", "dist/app.js" ]
# Build-time metadata
# https://github.com/opencontainers/image-spec/blob/master/annotations.md

View File

@@ -219,8 +219,7 @@ then
Type=Application
Categories=Office;
MimeType=x-scheme-handler/joplin;
X-GNOME-SingleWindow=true // should be removed eventually as it was upstream to be an XDG specification
SingleMainWindow=true
X-GNOME-SingleWindow=true
EOF
# Update application icons

View File

@@ -10,11 +10,6 @@ under that directory is licensed under the default license, which is MIT.
* * *
Joplin® is a trademark of Cozic Ltd registered in the European Union, with
filing number 018544315.
* * *
Logo and Icon License
The Joplin logos and icons are copyright (c) Laurent Cozic, all rights reserved,

118
README.md
View File

@@ -6,13 +6,11 @@
<img width="64" src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/LinuxIcons/256x256.png" align="left" /> **Joplin** is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in [Markdown format](#markdown).
Notes exported from Evernote [can be imported](#importing) into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported.
Notes exported from Evernote via .enex files [can be imported](#importing) into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported.
The notes can be securely [synchronised](#synchronisation) using [end-to-end encryption](#encryption) with various cloud services including Nextcloud, Dropbox, OneDrive and [Joplin Cloud](https://joplinapp.org/plans/).
The notes can be [synchronised](#synchronisation) with various cloud services including [Nextcloud](https://nextcloud.com/), Dropbox, OneDrive, WebDAV or the file system (for example with a network directory). When synchronising the notes, notebooks, tags and other metadata are saved to plain text files which can be easily inspected, backed up and moved around.
Full text search is available on all platforms to quickly find the information you need. The app can be customised using plugins and themes, and you can also easily create your own.
The application is available for Windows, Linux, macOS, Android and iOS. A [Web Clipper](https://github.com/laurent22/joplin/blob/dev/readme/clipper.md), to save web pages and screenshots from your browser, is also available for [Firefox](https://addons.mozilla.org/firefox/addon/joplin-web-clipper/) and [Chrome](https://chrome.google.com/webstore/detail/joplin-web-clipper/alofnhikmmkdbbbgpnglcpdollgjjfek?hl=en-GB).
The application is available for Windows, Linux, macOS, Android and iOS (the terminal app also works on FreeBSD). A [Web Clipper](https://github.com/laurent22/joplin/blob/dev/readme/clipper.md), to save web pages and screenshots from your browser, is also available for [Firefox](https://addons.mozilla.org/firefox/addon/joplin-web-clipper/) and [Chrome](https://chrome.google.com/webstore/detail/joplin-web-clipper/alofnhikmmkdbbbgpnglcpdollgjjfek?hl=en-GB).
<div class="top-screenshot"><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/home-top-img.png" style="max-width: 100%; max-height: 35em;"></div>
@@ -78,10 +76,9 @@ The Web Clipper is a browser extension that allows you to save web pages and scr
| <img width="50" src="https://avatars2.githubusercontent.com/u/215668?s=96&v=4"/></br>[avanderberg](https://github.com/avanderberg) | <img width="50" src="https://avatars2.githubusercontent.com/u/3061769?s=96&v=4"/></br>[c-nagy](https://github.com/c-nagy) | <img width="50" src="https://avatars2.githubusercontent.com/u/70780798?s=96&v=4"/></br>[cabottech](https://github.com/cabottech) | <img width="50" src="https://avatars2.githubusercontent.com/u/67130?s=96&v=4"/></br>[chr15m](https://github.com/chr15m) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/4862947?s=96&v=4"/></br>[chrootlogin](https://github.com/chrootlogin) | <img width="50" src="https://avatars2.githubusercontent.com/u/82579431?s=96&v=4"/></br>[clmntsl](https://github.com/clmntsl) | <img width="50" src="https://avatars2.githubusercontent.com/u/808091?s=96&v=4"/></br>[cuongtransc](https://github.com/cuongtransc) | <img width="50" src="https://avatars2.githubusercontent.com/u/1307332?s=96&v=4"/></br>[dbrandonjohnson](https://github.com/dbrandonjohnson) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/1439535?s=96&v=4"/></br>[fbloise](https://github.com/fbloise) | <img width="50" src="https://avatars2.githubusercontent.com/u/38898566?s=96&v=4"/></br>[h4sh5](https://github.com/h4sh5) | <img width="50" src="https://avatars2.githubusercontent.com/u/3266447?s=96&v=4"/></br>[iamwillbar](https://github.com/iamwillbar) | <img width="50" src="https://avatars2.githubusercontent.com/u/37297218?s=96&v=4"/></br>[Jesssullivan](https://github.com/Jesssullivan) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/1248504?s=96&v=4"/></br>[joesfer](https://github.com/joesfer) | <img width="50" src="https://avatars2.githubusercontent.com/u/5588131?s=96&v=4"/></br>[kianenigma](https://github.com/kianenigma) | <img width="50" src="https://avatars2.githubusercontent.com/u/24908652?s=96&v=4"/></br>[konishi-t](https://github.com/konishi-t) | <img width="50" src="https://avatars2.githubusercontent.com/u/42319182?s=96&v=4"/></br>[marcdw1289](https://github.com/marcdw1289) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/1788010?s=96&v=4"/></br>[maxtruxa](https://github.com/maxtruxa) | <img width="50" src="https://avatars2.githubusercontent.com/u/29300939?s=96&v=4"/></br>[mcejp](https://github.com/mcejp) | <img width="50" src="https://avatars2.githubusercontent.com/u/1168659?s=96&v=4"/></br>[nicholashead](https://github.com/nicholashead) | <img width="50" src="https://avatars2.githubusercontent.com/u/5782817?s=96&v=4"/></br>[piccobit](https://github.com/piccobit) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/47742?s=96&v=4"/></br>[ravenscroftj](https://github.com/ravenscroftj) | <img width="50" src="https://avatars2.githubusercontent.com/u/765564?s=96&v=4"/></br>[taskcruncher](https://github.com/taskcruncher) | <img width="50" src="https://avatars2.githubusercontent.com/u/73081837?s=96&v=4"/></br>[thismarty](https://github.com/thismarty) | <img width="50" src="https://avatars2.githubusercontent.com/u/15859362?s=96&v=4"/></br>[thomasbroussard](https://github.com/thomasbroussard) |
| | | | |
| <img width="50" src="https://avatars2.githubusercontent.com/u/1248504?s=96&v=4"/></br>[joesfer](https://github.com/joesfer) | <img width="50" src="https://avatars2.githubusercontent.com/u/24908652?s=96&v=4"/></br>[konishi-t](https://github.com/konishi-t) | <img width="50" src="https://avatars2.githubusercontent.com/u/42319182?s=96&v=4"/></br>[marcdw1289](https://github.com/marcdw1289) | <img width="50" src="https://avatars2.githubusercontent.com/u/1788010?s=96&v=4"/></br>[maxtruxa](https://github.com/maxtruxa) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/29300939?s=96&v=4"/></br>[mcejp](https://github.com/mcejp) | <img width="50" src="https://avatars2.githubusercontent.com/u/1168659?s=96&v=4"/></br>[nicholashead](https://github.com/nicholashead) | <img width="50" src="https://avatars2.githubusercontent.com/u/5782817?s=96&v=4"/></br>[piccobit](https://github.com/piccobit) | <img width="50" src="https://avatars2.githubusercontent.com/u/47742?s=96&v=4"/></br>[ravenscroftj](https://github.com/ravenscroftj) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/73081837?s=96&v=4"/></br>[thismarty](https://github.com/thismarty) | <img width="50" src="https://avatars2.githubusercontent.com/u/15859362?s=96&v=4"/></br>[thomasbroussard](https://github.com/thomasbroussard) | | |
<!-- SPONSORS-GITHUB -->
<!-- TOC -->
@@ -128,7 +125,6 @@ The Web Clipper is a browser extension that allows you to save web pages and scr
- Development
- [How to build the apps](https://github.com/laurent22/joplin/blob/dev/BUILD.md)
- [Writing a technical spec](https://github.com/laurent22/joplin/blob/dev/readme/technical_spec.md)
- [End-to-end encryption spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md)
- [Note History spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md)
- [Sync Lock spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md)
@@ -139,11 +135,11 @@ The Web Clipper is a browser extension that allows you to save web pages and scr
- [Server: Delta Sync](https://github.com/laurent22/joplin/blob/dev/readme/spec/server_delta_sync.md)
- [Server: Sharing](https://github.com/laurent22/joplin/blob/dev/readme/spec/server_sharing.md)
- Google Summer of Code 2022
- Google Summer of Code 2021
- [Google Summer of Code 2022](https://github.com/laurent22/joplin/blob/dev/readme/gsoc2022/index.md)
- [How to submit a GSoC pull request](https://github.com/laurent22/joplin/blob/dev/readme/gsoc2022/pull_request_guidelines.md)
- [Project Ideas](https://github.com/laurent22/joplin/blob/dev/readme/gsoc2022/ideas.md)
- [Google Summer of Code 2021](https://github.com/laurent22/joplin/blob/dev/readme/gsoc2021/index.md)
- [How to submit a GSoC pull request](https://github.com/laurent22/joplin/blob/dev/readme/gsoc2021/pull_request_guidelines.md)
- [Project Ideas](https://github.com/laurent22/joplin/blob/dev/readme/gsoc2021/ideas.md)
- About
@@ -476,6 +472,24 @@ Notes are sorted by "relevance". Currently it means the notes that contain the r
In the desktop application, press <kbd>Ctrl+P</kbd> or <kbd>Cmd+P</kbd> and type a note title or part of its content to jump to it. Or type <kbd>#</kbd> followed by a tag name, or <kbd>@</kbd> followed by a notebook name.
# Privacy
Joplin values your privacy and security by giving you complete control over your information and digital footprint.
Joplin applications do not send any data to any service without your authorisation. Any data that Joplin saves, such as notes or images, are saved to your own device and you are free to delete this data at any time.
Joplin has many modern features, some of which use third-party services. You can disable any or all of these features in the application settings. These features are:
|Feature | Description | Default|
|--------|-------------|--------|
|Auto-update|Joplin periodically connects to GitHub to check for new releases.|Enabled|
|Geo-location|Joplin saves geo-location information in note properties when you create a note.|Enabled|
|Synchronisation|Joplin supports synchronisation of your notes across multiple devices. If you choose to synchronise with a third-party, such as OneDrive, the notes will be sent to your OneDrive account, in which case the third-party privacy policy applies.|Disabled|
Joplin is developed as an open-source application and the source code is freely available online to inspect.
For any question about Joplin privacy, please leave a message on the [Joplin Forum](https://discourse.joplinapp.org/).
# Donations
Donations to Joplin support the development of the project. Developing quality applications mostly takes time, but there are also some expenses, such as digital certificates to sign the applications, app store fees, hosting, etc. Most of all, your donation will make it possible to keep up the current development standard.
@@ -516,47 +530,47 @@ Current translations:
<!-- LOCALE-TABLE-AUTO-GENERATED -->
&nbsp; | Language | Po File | Last translator | Percent done
---|---|---|---|---
<img src="https://joplinapp.org/images/flags/country-4x3/arableague.png" width="16px"/> | Arabic | [ar](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ar.po) | [Whaell O](mailto:Whaell@protonmail.com) | 90%
<img src="https://joplinapp.org/images/flags/es/basque_country.png" width="16px"/> | Basque | [eu](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eu.po) | juan.abasolo@ehu.eus | 26%
<img src="https://joplinapp.org/images/flags/country-4x3/ba.png" width="16px"/> | Bosnian (Bosna i Hercegovina) | [bs_BA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bs_BA.po) | [Derviš T.](mailto:dervis.t@pm.me) | 65%
<img src="https://joplinapp.org/images/flags/country-4x3/bg.png" width="16px"/> | Bulgarian (България) | [bg_BG](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bg_BG.po) | | 51%
<img src="https://joplinapp.org/images/flags/es/catalonia.png" width="16px"/> | Catalan | [ca](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ca.po) | [Xavi Ivars](mailto:xavi.ivars@gmail.com) | 97%
<img src="https://joplinapp.org/images/flags/country-4x3/hr.png" width="16px"/> | Croatian (Hrvatska) | [hr_HR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hr_HR.po) | [Milo Ivir](mailto:mail@milotype.de) | 94%
<img src="https://joplinapp.org/images/flags/country-4x3/cz.png" width="16px"/> | Czech (Česká republika) | [cs_CZ](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/cs_CZ.po) | [Michal Stanke](mailto:michal@stanke.cz) | 87%
<img src="https://joplinapp.org/images/flags/country-4x3/dk.png" width="16px"/> | Dansk (Danmark) | [da_DK](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/da_DK.po) | ERYpTION | 98%
<img src="https://joplinapp.org/images/flags/country-4x3/de.png" width="16px"/> | Deutsch (Deutschland) | [de_DE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po) | [MrKanister](mailto:pthrp_bnsrv@aleeas.com) | 99%
<img src="https://joplinapp.org/images/flags/country-4x3/ee.png" width="16px"/> | Eesti Keel (Eesti) | [et_EE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/et_EE.po) | | 50%
<img src="https://joplinapp.org/images/flags/country-4x3/arableague.png" width="16px"/> | Arabic | [ar](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ar.po) | [Whaell O](mailto:Whaell@protonmail.com) | 93%
<img src="https://joplinapp.org/images/flags/es/basque_country.png" width="16px"/> | Basque | [eu](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eu.po) | juan.abasolo@ehu.eus | 27%
<img src="https://joplinapp.org/images/flags/country-4x3/ba.png" width="16px"/> | Bosnian (Bosna i Hercegovina) | [bs_BA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bs_BA.po) | [Derviš T.](mailto:dervis.t@pm.me) | 67%
<img src="https://joplinapp.org/images/flags/country-4x3/bg.png" width="16px"/> | Bulgarian (България) | [bg_BG](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bg_BG.po) | | 53%
<img src="https://joplinapp.org/images/flags/es/catalonia.png" width="16px"/> | Catalan | [ca](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ca.po) | [Xavi Ivars](mailto:xavi.ivars@gmail.com) | 93%
<img src="https://joplinapp.org/images/flags/country-4x3/hr.png" width="16px"/> | Croatian (Hrvatska) | [hr_HR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hr_HR.po) | [Milo Ivir](mailto:mail@milotype.de) | 97%
<img src="https://joplinapp.org/images/flags/country-4x3/cz.png" width="16px"/> | Czech (Česká republika) | [cs_CZ](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/cs_CZ.po) | [Michal Stanke](mailto:michal@stanke.cz) | 89%
<img src="https://joplinapp.org/images/flags/country-4x3/dk.png" width="16px"/> | Dansk (Danmark) | [da_DK](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/da_DK.po) | ERYpTION | 97%
<img src="https://joplinapp.org/images/flags/country-4x3/de.png" width="16px"/> | Deutsch (Deutschland) | [de_DE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po) | [MrKanister](mailto:s.robin@tutanota.de) | 99%
<img src="https://joplinapp.org/images/flags/country-4x3/ee.png" width="16px"/> | Eesti Keel (Eesti) | [et_EE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/et_EE.po) | | 51%
<img src="https://joplinapp.org/images/flags/country-4x3/gb.png" width="16px"/> | English (United Kingdom) | [en_GB](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_GB.po) | | 100%
<img src="https://joplinapp.org/images/flags/country-4x3/us.png" width="16px"/> | English (United States of America) | [en_US](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_US.po) | | 100%
<img src="https://joplinapp.org/images/flags/country-4x3/es.png" width="16px"/> | Español (España) | [es_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/es_ES.po) | [Francisco Mora](mailto:francisco.m.collao@gmail.com) | 96%
<img src="https://joplinapp.org/images/flags/esperanto.png" width="16px"/> | Esperanto | [eo](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eo.po) | Marton Paulo | 29%
<img src="https://joplinapp.org/images/flags/country-4x3/fi.png" width="16px"/> | Finnish (Suomi) | [fi_FI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fi_FI.po) | mrkaato | 91%
<img src="https://joplinapp.org/images/flags/country-4x3/es.png" width="16px"/> | Español (España) | [es_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/es_ES.po) | [Francisco Mora](mailto:francisco.m.collao@gmail.com) | 99%
<img src="https://joplinapp.org/images/flags/esperanto.png" width="16px"/> | Esperanto | [eo](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eo.po) | Marton Paulo | 30%
<img src="https://joplinapp.org/images/flags/country-4x3/fi.png" width="16px"/> | Finnish (Suomi) | [fi_FI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fi_FI.po) | mrkaato | 93%
<img src="https://joplinapp.org/images/flags/country-4x3/fr.png" width="16px"/> | Français (France) | [fr_FR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fr_FR.po) | Laurent Cozic | 100%
<img src="https://joplinapp.org/images/flags/es/galicia.png" width="16px"/> | Galician (España) | [gl_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/gl_ES.po) | [Marcos Lans](mailto:marcoslansgarza@gmail.com) | 33%
<img src="https://joplinapp.org/images/flags/country-4x3/id.png" width="16px"/> | Indonesian (Indonesia) | [id_ID](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/id_ID.po) | [eresytter](mailto:42007357+eresytter@users.noreply.github.com) | 90%
<img src="https://joplinapp.org/images/flags/country-4x3/it.png" width="16px"/> | Italiano (Italia) | [it_IT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/it_IT.po) | [Albano Battistella](mailto:albano_battistella@hotmail.com) | 87%
<img src="https://joplinapp.org/images/flags/country-4x3/hu.png" width="16px"/> | Magyar (Magyarország) | [hu_HU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hu_HU.po) | [Magyari Balázs](mailto:balmag@gmail.com) | 76%
<img src="https://joplinapp.org/images/flags/country-4x3/be.png" width="16px"/> | Nederlands (België, Belgique, Belgien) | [nl_BE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_BE.po) | | 89%
<img src="https://joplinapp.org/images/flags/country-4x3/nl.png" width="16px"/> | Nederlands (Nederland) | [nl_NL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_NL.po) | [MetBril](mailto:metbril@users.noreply.github.com) | 83%
<img src="https://joplinapp.org/images/flags/country-4x3/no.png" width="16px"/> | Norwegian (Norge, Noreg) | [nb_NO](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nb_NO.po) | Alexander Dawson | 88%
<img src="https://joplinapp.org/images/flags/country-4x3/ir.png" width="16px"/> | Persian | [fa](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fa.po) | [Kourosh Firoozbakht](mailto:kourox@protonmail.com) | 62%
<img src="https://joplinapp.org/images/flags/country-4x3/pl.png" width="16px"/> | Polski (Polska) | [pl_PL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pl_PL.po) | [konhi](mailto:hello.konhi@gmail.com) | 82%
<img src="https://joplinapp.org/images/flags/country-4x3/br.png" width="16px"/> | Português (Brasil) | [pt_BR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_BR.po) | [Felipe Viggiano](mailto:felipeviggiano@gmail.com) | 91%
<img src="https://joplinapp.org/images/flags/country-4x3/pt.png" width="16px"/> | Português (Portugal) | [pt_PT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_PT.po) | [Diogo Caveiro](mailto:dcaveiro@yahoo.com) | 82%
<img src="https://joplinapp.org/images/flags/country-4x3/ro.png" width="16px"/> | Română | [ro](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ro.po) | [Cristi Duluta](mailto:cristi.duluta@gmail.com) | 57%
<img src="https://joplinapp.org/images/flags/country-4x3/si.png" width="16px"/> | Slovenian (Slovenija) | [sl_SI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sl_SI.po) | [Martin Korelič](mailto:martin.korelic@protonmail.com) | 91%
<img src="https://joplinapp.org/images/flags/country-4x3/se.png" width="16px"/> | Svenska | [sv](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sv.po) | [Jonatan Nyberg](mailto:jonatan@autistici.org) | 96%
<img src="https://joplinapp.org/images/flags/country-4x3/th.png" width="16px"/> | Thai (ประเทศไทย) | [th_TH](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/th_TH.po) | | 41%
<img src="https://joplinapp.org/images/flags/country-4x3/vn.png" width="16px"/> | Tiếng Việt | [vi](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/vi.po) | | 88%
<img src="https://joplinapp.org/images/flags/country-4x3/tr.png" width="16px"/> | Türkçe (Türkiye) | [tr_TR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/tr_TR.po) | [Arda Kılıçdağı](mailto:arda@kilicdagi.com) | 98%
<img src="https://joplinapp.org/images/flags/country-4x3/ua.png" width="16px"/> | Ukrainian (Україна) | [uk_UA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/uk_UA.po) | [Vyacheslav Andreykiv](mailto:vandreykiv@gmail.com) | 81%
<img src="https://joplinapp.org/images/flags/country-4x3/gr.png" width="16px"/> | Ελληνικά (Ελλάδα) | [el_GR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/el_GR.po) | [Harris Arvanitis](mailto:xaris@tuta.io) | 84%
<img src="https://joplinapp.org/images/flags/country-4x3/ru.png" width="16px"/> | Русский (Россия) | [ru_RU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ru_RU.po) | [Sergey Segeda](mailto:thesermanarm@gmail.com) | 91%
<img src="https://joplinapp.org/images/flags/country-4x3/rs.png" width="16px"/> | српски језик (Србија) | [sr_RS](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sr_RS.po) | | 73%
<img src="https://joplinapp.org/images/flags/country-4x3/cn.png" width="16px"/> | 中文 (简体) | [zh_CN](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_CN.po) | [horaceyoung](mailto:yonghaoharry@gmail.com) | 99%
<img src="https://joplinapp.org/images/flags/country-4x3/tw.png" width="16px"/> | 中文 (繁體) | [zh_TW](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_TW.po) | [SiderealArt](mailto:nelson22768384@gmail.com) | 88%
<img src="https://joplinapp.org/images/flags/country-4x3/jp.png" width="16px"/> | 日本語 (日本) | [ja_JP](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ja_JP.po) | [genneko](mailto:genneko217@gmail.com) | 96%
<img src="https://joplinapp.org/images/flags/country-4x3/kr.png" width="16px"/> | 한국어 | [ko](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ko.po) | [Ji-Hyeon Gim](mailto:potatogim@potatogim.net) | 87%
<img src="https://joplinapp.org/images/flags/es/galicia.png" width="16px"/> | Galician (España) | [gl_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/gl_ES.po) | [Marcos Lans](mailto:marcoslansgarza@gmail.com) | 34%
<img src="https://joplinapp.org/images/flags/country-4x3/id.png" width="16px"/> | Indonesian (Indonesia) | [id_ID](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/id_ID.po) | [eresytter](mailto:42007357+eresytter@users.noreply.github.com) | 92%
<img src="https://joplinapp.org/images/flags/country-4x3/it.png" width="16px"/> | Italiano (Italia) | [it_IT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/it_IT.po) | [Albano Battistella](mailto:albano_battistella@hotmail.com) | 90%
<img src="https://joplinapp.org/images/flags/country-4x3/hu.png" width="16px"/> | Magyar (Magyarország) | [hu_HU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hu_HU.po) | [Magyari Balázs](mailto:balmag@gmail.com) | 78%
<img src="https://joplinapp.org/images/flags/country-4x3/be.png" width="16px"/> | Nederlands (België, Belgique, Belgien) | [nl_BE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_BE.po) | | 81%
<img src="https://joplinapp.org/images/flags/country-4x3/nl.png" width="16px"/> | Nederlands (Nederland) | [nl_NL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_NL.po) | [MetBril](mailto:metbril@users.noreply.github.com) | 85%
<img src="https://joplinapp.org/images/flags/country-4x3/no.png" width="16px"/> | Norwegian (Norge, Noreg) | [nb_NO](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nb_NO.po) | Alexander Dawson | 90%
<img src="https://joplinapp.org/images/flags/country-4x3/ir.png" width="16px"/> | Persian | [fa](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fa.po) | [Kourosh Firoozbakht](mailto:kourox@protonmail.com) | 64%
<img src="https://joplinapp.org/images/flags/country-4x3/pl.png" width="16px"/> | Polski (Polska) | [pl_PL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pl_PL.po) | [konhi](mailto:hello.konhi@gmail.com) | 84%
<img src="https://joplinapp.org/images/flags/country-4x3/br.png" width="16px"/> | Português (Brasil) | [pt_BR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_BR.po) | [Felipe Viggiano](mailto:felipeviggiano@gmail.com) | 94%
<img src="https://joplinapp.org/images/flags/country-4x3/pt.png" width="16px"/> | Português (Portugal) | [pt_PT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_PT.po) | [Diogo Caveiro](mailto:dcaveiro@yahoo.com) | 84%
<img src="https://joplinapp.org/images/flags/country-4x3/ro.png" width="16px"/> | Română | [ro](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ro.po) | [Cristi Duluta](mailto:cristi.duluta@gmail.com) | 59%
<img src="https://joplinapp.org/images/flags/country-4x3/si.png" width="16px"/> | Slovenian (Slovenija) | [sl_SI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sl_SI.po) | [Martin Korelič](mailto:martin.korelic@protonmail.com) | 93%
<img src="https://joplinapp.org/images/flags/country-4x3/se.png" width="16px"/> | Svenska | [sv](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sv.po) | [Jonatan Nyberg](mailto:jonatan@autistici.org) | 97%
<img src="https://joplinapp.org/images/flags/country-4x3/th.png" width="16px"/> | Thai (ประเทศไทย) | [th_TH](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/th_TH.po) | | 43%
<img src="https://joplinapp.org/images/flags/country-4x3/vi.png" width="16px"/> | Tiếng Việt | [vi](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/vi.po) | | 90%
<img src="https://joplinapp.org/images/flags/country-4x3/tr.png" width="16px"/> | Türkçe (Türkiye) | [tr_TR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/tr_TR.po) | [Arda Kılıçdağı](mailto:arda@kilicdagi.com) | 93%
<img src="https://joplinapp.org/images/flags/country-4x3/ua.png" width="16px"/> | Ukrainian (Україна) | [uk_UA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/uk_UA.po) | [Vyacheslav Andreykiv](mailto:vandreykiv@gmail.com) | 83%
<img src="https://joplinapp.org/images/flags/country-4x3/gr.png" width="16px"/> | Ελληνικά (Ελλάδα) | [el_GR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/el_GR.po) | [Harris Arvanitis](mailto:xaris@tuta.io) | 87%
<img src="https://joplinapp.org/images/flags/country-4x3/ru.png" width="16px"/> | Русский (Россия) | [ru_RU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ru_RU.po) | [Sergey Segeda](mailto:thesermanarm@gmail.com) | 93%
<img src="https://joplinapp.org/images/flags/country-4x3/rs.png" width="16px"/> | српски језик (Србија) | [sr_RS](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sr_RS.po) | | 76%
<img src="https://joplinapp.org/images/flags/country-4x3/cn.png" width="16px"/> | 中文 (简体) | [zh_CN](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_CN.po) | [南宫小骏](mailto:jackytsu@vip.qq.com) | 97%
<img src="https://joplinapp.org/images/flags/country-4x3/tw.png" width="16px"/> | 中文 (繁體) | [zh_TW](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_TW.po) | [SiderealArt](mailto:nelson22768384@gmail.com) | 90%
<img src="https://joplinapp.org/images/flags/country-4x3/jp.png" width="16px"/> | 日本語 (日本) | [ja_JP](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ja_JP.po) | [genneko](mailto:genneko217@gmail.com) | 98%
<img src="https://joplinapp.org/images/flags/country-4x3/kr.png" width="16px"/> | 한국어 | [ko](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ko.po) | [Ji-Hyeon Gim](mailto:potatogim@potatogim.net) | 89%
<!-- LOCALE-TABLE-AUTO-GENERATED -->
# Contributors

View File

@@ -31,7 +31,7 @@
"linter": "eslint --resolve-plugins-relative-to . --fix --quiet --ext .js --ext .jsx --ext .ts --ext .tsx",
"postinstall": "gulp build",
"publishAll": "git pull && yarn run buildParallel && lerna version --yes --no-private --no-git-tag-version && gulp completePublishAll",
"releaseAndroid": "PATH=\"/usr/local/opt/openjdk@11/bin:$PATH\" node packages/tools/release-android.js",
"releaseAndroid": "yarn run buildParallel && export PATH=\"/usr/local/opt/openjdk@11/bin:$PATH\" && node packages/tools/release-android.js",
"releaseAndroidClean": "node packages/tools/release-android.js",
"releaseCli": "node packages/tools/release-cli.js",
"releaseClipper": "node packages/tools/release-clipper.js",
@@ -78,5 +78,8 @@
"node-gyp": "^8.4.1",
"nodemon": "^2.0.9"
},
"packageManager": "yarn@3.1.1"
"packageManager": "yarn@3.1.1",
"resolutions": {
"markdown-it-multimd-table@4.1.1": "patch:markdown-it-multimd-table@npm:4.1.1#.yarn/patches/markdown-it-multimd-table-npm-4.1.1-47e334d4bd"
}
}

View File

@@ -1,4 +0,0 @@
<img src=":/39e66095b2cd427e9f13464487514d2e" alt="">
<img src=":/39e66095b2cd427e9f13464487514d2e" alt="" title="some-title">
<img src=":/39e66095b2cd427e9f13464487514d2e" alt="some-alt-text">
<img src=":/39e66095b2cd427e9f13464487514d2e" alt="some-alt-text" title="some-title">

View File

@@ -1,4 +0,0 @@
![](:/39e66095b2cd427e9f13464487514d2e)
![](:/39e66095b2cd427e9f13464487514d2e "some-title")
![some-alt-text](:/39e66095b2cd427e9f13464487514d2e)
![some-alt-text](:/39e66095b2cd427e9f13464487514d2e "some-title")

View File

@@ -9,13 +9,6 @@ interface LastSelectedPath {
directory: string;
}
interface OpenDialogOptions {
properties?: string[];
defaultPath?: string;
createDirectory?: boolean;
filters?: any[];
}
export class Bridge {
private electronWrapper_: ElectronAppWrapper;
@@ -162,14 +155,14 @@ export class Bridge {
return filePath;
}
async showOpenDialog(options: OpenDialogOptions = null) {
async showOpenDialog(options: any = null) {
const { dialog } = require('electron');
if (!options) options = {};
let fileType = 'file';
if (options.properties && options.properties.includes('openDirectory')) fileType = 'directory';
if (!('defaultPath' in options) && (this.lastSelectedPaths_ as any)[fileType]) options.defaultPath = (this.lastSelectedPaths_ as any)[fileType];
if (!('createDirectory' in options)) options.createDirectory = true;
const { filePaths } = await dialog.showOpenDialog(this.window(), options as any);
const { filePaths } = await dialog.showOpenDialog(this.window(), options);
if (filePaths && filePaths.length) {
(this.lastSelectedPaths_ as any)[fileType] = dirname(filePaths[0]);
}

View File

@@ -8,11 +8,9 @@ import StyledInput from '../style/StyledInput';
import { IconSelector, ChangeEvent } from './IconSelector';
import useAsyncEffect, { AsyncEffectEvent } from '@joplin/lib/hooks/useAsyncEffect';
import Folder from '@joplin/lib/models/Folder';
import { FolderEntity, FolderIcon, FolderIconType } from '@joplin/lib/services/database/types';
import { FolderEntity, FolderIcon } from '@joplin/lib/services/database/types';
import Button from '../Button/Button';
import bridge from '../../services/bridge';
import shim from '@joplin/lib/shim';
import FolderIconBox from '../FolderIconBox';
interface Props {
themeId: number;
@@ -95,34 +93,6 @@ export default function(props: Props) {
setFolderIcon(null);
}, []);
const onBrowseClick = useCallback(async () => {
const filePaths = await bridge().showOpenDialog({
filters: [
{
name: _('Images'),
extensions: ['jpg', 'jpeg', 'png'],
},
],
});
if (filePaths.length !== 1) return;
const filePath = filePaths[0];
try {
const dataUrl = await shim.imageToDataUrl(filePath, 256);
setFolderIcon(icon => {
return {
...icon,
emoji: '',
name: '',
type: FolderIconType.DataUrl,
dataUrl,
};
});
} catch (error) {
await bridge().showErrorMessageBox(error.message);
}
}, []);
function renderForm() {
return (
<div>
@@ -135,14 +105,11 @@ export default function(props: Props) {
<div className="form-input-group">
<label>{_('Icon')}</label>
<div className="icon-selector-row">
{ folderIcon && <div className="foldericon"><FolderIconBox folderIcon={folderIcon} /></div> }
<IconSelector
title={_('Select emoji...')}
icon={folderIcon}
onChange={onFolderIconChange}
/>
<Button ml={1} title={_('Select file...')} onClick={onBrowseClick}/>
{ folderIcon && <Button ml={1} title={_('Clear')} onClick={onClearClick}/> }
<Button ml={1} title={_('Clear')} onClick={onClearClick}/>
</div>
</div>
</div>

View File

@@ -3,7 +3,7 @@ import { useEffect, useState, useCallback, useRef } from 'react';
import useAsyncEffect, { AsyncEffectEvent } from '@joplin/lib/hooks/useAsyncEffect';
import { loadScript } from '../utils/loadScript';
import Button from '../Button/Button';
import { FolderIcon, FolderIconType } from '@joplin/lib/services/database/types';
import { FolderIcon } from '@joplin/lib/services/database/types';
import bridge from '../../services/bridge';
export interface ChangeEvent {
@@ -15,7 +15,6 @@ type ChangeHandler = (event: ChangeEvent)=> void;
interface Props {
onChange: ChangeHandler;
icon: FolderIcon | null;
title: string;
}
export const IconSelector = (props: Props) => {
@@ -63,7 +62,7 @@ export const IconSelector = (props: Props) => {
});
const onEmoji = (selection: FolderIcon) => {
props.onChange({ value: { ...selection, type: FolderIconType.Emoji } });
props.onChange({ value: selection });
};
p.on('emoji', onEmoji);
@@ -79,25 +78,16 @@ export const IconSelector = (props: Props) => {
picker.togglePicker(buttonRef.current);
}, [picker]);
// const buttonText = props.icon ? props.icon.emoji : '...';
const buttonText = props.icon ? props.icon.emoji : '...';
return (
<Button
disabled={!picker}
ref={buttonRef}
onClick={onClick}
title={props.title}
title={buttonText}
isSquare={true}
fontSize={20}
/>
);
// return (
// <Button
// disabled={!picker}
// ref={buttonRef}
// onClick={onClick}
// title={buttonText}
// isSquare={true}
// fontSize={20}
// />
// );
};

View File

@@ -1,13 +1,4 @@
.icon-selector-row {
display: flex;
flex-direction: row;
align-items: center;
}
.icon-selector-row > .foldericon {
margin-right: 5px;
display: flex;
border: 1px solid var(--joplin-divider-color);
padding: 5px;
background-color: var(--joplin-background-color);
}

View File

@@ -1,17 +0,0 @@
import { FolderIcon, FolderIconType } from '@joplin/lib/services/database/types';
interface Props {
folderIcon: FolderIcon;
}
export default function(props: Props) {
const folderIcon = props.folderIcon;
if (folderIcon.type === FolderIconType.Emoji) {
return <span style={{ fontSize: 20 }}>{folderIcon.emoji}</span>;
} else if (folderIcon.type === FolderIconType.DataUrl) {
return <img style={{ width: 20, height: 20 }} src={folderIcon.dataUrl} />;
} else {
throw new Error(`Unsupported folder icon type: ${folderIcon.type}`);
}
}

View File

@@ -347,12 +347,6 @@ function useMenu(props: Props) {
}
}
importItems.push({ type: 'separator' });
importItems.push({
label: _('Other applications...'),
click: () => { void bridge().openExternal('https://discourse.joplinapp.org/t/importing-notes-from-other-notebook-applications/22425'); },
});
exportItems.push(
menuItemDic.exportPdf
);

View File

@@ -67,7 +67,7 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
usePluginServiceRegistration(ref);
const { resetScroll, editor_scroll, setEditorPercentScroll, setViewerPercentScroll, editor_resize, editor_update, getLineScrollPercent,
const { resetScroll, editor_scroll, setEditorPercentScroll, setViewerPercentScroll, editor_resize, getLineScrollPercent,
} = useScrollHandler(editorRef, webviewRef, props.onScroll);
const codeMirror_change = useCallback((newBody: string) => {
@@ -843,7 +843,6 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
onEditorPaste={onEditorPaste}
isSafeMode={props.isSafeMode}
onResize={editor_resize}
onUpdate={editor_update}
/>
</div>
);

View File

@@ -94,7 +94,6 @@ export interface EditorProps {
onEditorPaste: any;
isSafeMode: boolean;
onResize: any;
onUpdate: any;
}
function Editor(props: EditorProps, ref: any) {
@@ -149,14 +148,6 @@ function Editor(props: EditorProps, ref: any) {
event.dataTransfer.dropEffect = 'copy';
}, []);
const editor_resize = useCallback((cm: any) => {
props.onResize(cm);
}, [props.onResize]);
const editor_update = useCallback((cm: any) => {
props.onUpdate(cm);
}, [props.onUpdate]);
useEffect(() => {
if (!editorParent.current) return () => {};
@@ -199,8 +190,7 @@ function Editor(props: EditorProps, ref: any) {
cm.on('paste', editor_paste);
cm.on('drop', editor_drop);
cm.on('dragover', editor_drag);
cm.on('refresh', editor_resize);
cm.on('update', editor_update);
cm.on('refresh', props.onResize);
// It's possible for searchMarkers to be available before the editor
// In these cases we set the markers asap so the user can see them as
@@ -214,8 +204,7 @@ function Editor(props: EditorProps, ref: any) {
cm.off('paste', editor_paste);
cm.off('drop', editor_drop);
cm.off('dragover', editor_drag);
cm.off('refresh', editor_resize);
cm.off('update', editor_update);
cm.off('refresh', props.onResize);
editorParent.current.removeChild(cm.getWrapperElement());
setEditor(null);
};

View File

@@ -8,7 +8,6 @@ export default function useEditorSearch(CodeMirror: any) {
const [scrollbarMarks, setScrollbarMarks] = useState(null);
const [previousKeywordValue, setPreviousKeywordValue] = useState(null);
const [previousIndex, setPreviousIndex] = useState(null);
const [previousSearchTimestamp, setPreviousSearchTimestamp] = useState(0);
const [overlayTimeout, setOverlayTimeout] = useState(null);
const overlayTimeoutRef = useRef(null);
overlayTimeoutRef.current = overlayTimeout;
@@ -52,7 +51,7 @@ export default function useEditorSearch(CodeMirror: any) {
// Highlights the currently active found work
// It's possible to get tricky with this fucntions and just use findNext/findPrev
// but this is fast enough and works more naturally with the current search logic
function highlightSearch(cm: any, searchTerm: RegExp, index: number, scrollTo: boolean, withSelection: boolean) {
function highlightSearch(cm: any, searchTerm: RegExp, index: number, scrollTo: boolean) {
const cursor = cm.getSearchCursor(searchTerm);
let match: any = null;
@@ -65,13 +64,7 @@ export default function useEditorSearch(CodeMirror: any) {
}
if (match) {
if (scrollTo) {
if (withSelection) {
cm.setSelection(match.from, match.to);
} else {
cm.scrollTo(match);
}
}
if (scrollTo) cm.setSelection(match.from, match.to);
return cm.markText(match.from, match.to, { className: 'cm-search-marker-selected' });
}
@@ -97,7 +90,7 @@ export default function useEditorSearch(CodeMirror: any) {
CodeMirror.defineExtension('setMarkers', function(keywords: any, options: any) {
if (!options) {
options = { selectedIndex: 0, searchTimestamp: 0 };
options = { selectedIndex: 0 };
}
clearMarkers();
@@ -114,15 +107,16 @@ export default function useEditorSearch(CodeMirror: any) {
const searchTerm = getSearchTerm(keyword);
// We only want to scroll the first keyword into view in the case of a multi keyword search
const scrollTo = i === 0 && (previousKeywordValue !== keyword.value || previousIndex !== options.selectedIndex || options.searchTimestamp !== previousSearchTimestamp);
const scrollTo = i === 0 && (previousKeywordValue !== keyword.value || previousIndex !== options.selectedIndex ||
// If there is only one choice, scrollTo should be true. The below is a dummy of nMatches === 1.
options.selectedIndex === 0);
const match = highlightSearch(this, searchTerm, options.selectedIndex, scrollTo, !!options.withSelection);
const match = highlightSearch(this, searchTerm, options.selectedIndex, scrollTo);
if (match) marks.push(match);
}
setMarkers(marks);
setPreviousIndex(options.selectedIndex);
setPreviousSearchTimestamp(options.searchTimestamp);
// SEARCHOVERLAY
// We only want to highlight all matches when there is only 1 search term

View File

@@ -7,10 +7,7 @@ export default function useScrollHandler(editorRef: any, webviewRef: any, onScro
const ignoreNextEditorScrollTime_ = useRef(Date.now());
const ignoreNextEditorScrollEventCount_ = useRef(0);
const delayedSetEditorPercentScrollTimeoutID_ = useRef(null);
const scrollTopIsUncertain_ = useRef(true);
const lastResizeHeight_ = useRef(NaN);
const lastLinesHeight_ = useRef(NaN);
const restoreEditorPercentScrollTimeoutId_ = useRef<any>(null);
// Ignores one next scroll event for a short time.
const ignoreNextEditorScrollEvent = () => {
@@ -58,33 +55,23 @@ export default function useScrollHandler(editorRef: any, webviewRef: any, onScro
if (isCodeMirrorReady(cm)) {
// calculates editor's GUI-dependent pixel-based raw percent
const newEditorPercent = translateScrollPercentL2E(cm, scrollPercent_.current);
const oldEditorPercent = scrollTopIsUncertain_.current ? NaN : cm.getScrollPercent();
const oldEditorPercent = cm.getScrollPercent();
if (!(Math.abs(newEditorPercent - oldEditorPercent) < 1e-8)) {
ignoreNextEditorScrollEvent();
cm.setScrollPercent(newEditorPercent);
}
scrollTopIsUncertain_.current = false;
} else {
retry += 1;
if (retry <= 3) {
if (retry <= 10) {
delayedSetEditorPercentScrollTimeoutID_.current = shim.setTimeout(fn, 50);
}
scrollTopIsUncertain_.current = true;
lastResizeHeight_.current = NaN;
lastLinesHeight_.current = NaN;
}
};
fn();
};
const restoreEditorPercentScroll = () => {
if (restoreEditorPercentScrollTimeoutId_.current) {
shim.clearTimeout(restoreEditorPercentScrollTimeoutId_.current);
restoreEditorPercentScrollTimeoutId_.current = null;
}
const cm = editorRef.current;
if (isCodeMirrorReady(cm)) {
lastLinesHeight_.current = cm.heightAtLine(cm.lineCount()) - cm.heightAtLine(0);
if (isCodeMirrorReady(editorRef.current)) {
setEditorPercentScrollInternal(scrollPercent_.current);
}
};
@@ -107,24 +94,20 @@ export default function useScrollHandler(editorRef: any, webviewRef: any, onScro
const ignored = isNextEditorScrollEventIgnored();
const cm = editorRef.current;
if (isCodeMirrorReady(cm)) {
if (scrollTopIsUncertain_.current) return;
const editorPercent = Math.max(0, Math.min(1, cm.getScrollPercent()));
if (!isNaN(editorPercent)) {
// when switching to another note, the percent can sometimes be NaN
// this is coming from `gui/NoteEditor/NoteBody/CodeMirror/utils/useScrollUtils.ts`
// when CodeMirror returns scroll info with heigth == clientHeigth
// https://github.com/laurent22/joplin/issues/4797
// calculates GUI-independent line-based percent
const percent = translateScrollPercentE2L(cm, editorPercent);
scrollPercent_.current = percent;
if (!ignored) {
// calculates GUI-independent line-based percent
const percent = translateScrollPercentE2L(cm, editorPercent);
scrollPercent_.current = percent;
setViewerPercentScroll(percent);
}
}
} else {
scrollTopIsUncertain_.current = true;
lastResizeHeight_.current = NaN;
lastLinesHeight_.current = NaN;
}
}, [setViewerPercentScroll]);
@@ -132,45 +115,18 @@ export default function useScrollHandler(editorRef: any, webviewRef: any, onScro
scrollPercent_.current = 0;
if (editorRef.current) {
editorRef.current.setScrollPercent(0);
scrollTopIsUncertain_.current = false;
}
}, []);
const editor_resize = useCallback((cm) => {
if (isCodeMirrorReady(cm)) {
// This handler is called when resized and refreshed.
// Only when resized, the scroll position is restored.
const info = cm.getScrollInfo();
const height = info.height - info.clientHeight;
if (height !== lastResizeHeight_.current) {
// When resized, restoring is performed immediately.
restoreEditorPercentScroll();
lastResizeHeight_.current = height;
}
} else {
scrollTopIsUncertain_.current = true;
lastResizeHeight_.current = NaN;
lastLinesHeight_.current = NaN;
}
}, []);
// When heights of lines are updated in CodeMirror, 'update' events are raised.
// If such an update event is raised, scroll position should be restored.
// See https://github.com/laurent22/joplin/issues/5981
const editor_update = useCallback((cm) => {
if (isCodeMirrorReady(cm)) {
const linesHeight = cm.heightAtLine(cm.lineCount()) - cm.heightAtLine(0);
if (lastLinesHeight_.current !== linesHeight) {
// To avoid cancelling intentional scroll position changes,
// restoring is performed in a timeout handler.
if (!restoreEditorPercentScrollTimeoutId_.current) {
restoreEditorPercentScrollTimeoutId_.current = shim.setTimeout(restoreEditorPercentScroll, 10);
}
}
} else {
scrollTopIsUncertain_.current = true;
lastResizeHeight_.current = NaN;
lastLinesHeight_.current = NaN;
}
}, []);
@@ -185,7 +141,7 @@ export default function useScrollHandler(editorRef: any, webviewRef: any, onScro
}, []);
return {
resetScroll, setEditorPercentScroll, setViewerPercentScroll, editor_scroll, editor_resize, editor_update, getLineScrollPercent,
resetScroll, setEditorPercentScroll, setViewerPercentScroll, editor_scroll, editor_resize, getLineScrollPercent,
};
}

View File

@@ -92,7 +92,6 @@ export default function useNoteSearchBar() {
selectedIndex: localSearch.selectedIndex,
separateWordSearch: false,
searchTimestamp: localSearch.timestamp,
withSelection: true,
},
keywords: [
{

View File

@@ -4,7 +4,6 @@ interface SearchMarkersOptions {
searchTimestamp: number;
selectedIndex: number;
separateWordSearch: boolean;
withSelection?: boolean;
}
export interface SearchMarkers {

View File

@@ -167,8 +167,8 @@ class NoteSearchBarComponent extends React.Component {
type="text"
style={{ width: 200, marginRight: 5, backgroundColor: this.backgroundColor, color: theme.color }}
/>
{allowScrolling ? previousButton : null}
{allowScrolling ? nextButton : null}
{allowScrolling ? previousButton : null}
{allowScrolling ? matchesFoundString : null}
{!allowScrolling ? viewerWarning : null}
</div>

View File

@@ -56,7 +56,7 @@ class PromptDialog extends React.Component {
top: 0,
left: 0,
width: width,
height: height,
height: height - paddingTop,
backgroundColor: 'rgba(0,0,0,0.6)',
display: visible ? 'flex' : 'none',
alignItems: 'flex-start',

View File

@@ -139,21 +139,6 @@ function SearchBar(props: Props) {
}
}, [props.notesParentType, onExitSearch]);
// When the searchbar is remounted, exit the search if it was previously open
// or else other buttons stay hidden (e.g. when opening Layout Editor and closing it)
// https://github.com/laurent22/joplin/issues/5953
useEffect(() => {
if (props.notesParentType === 'Search' || props.isFocused) {
if (props.isFocused) {
props.dispatch({
type: 'FOCUS_CLEAR',
field: 'globalSearch',
});
}
void onExitSearch(true);
}
}, []);
return (
<Root className="search-bar">
<SearchInput

View File

@@ -17,12 +17,11 @@ import Folder from '@joplin/lib/models/Folder';
import Note from '@joplin/lib/models/Note';
import Tag from '@joplin/lib/models/Tag';
import Logger from '@joplin/lib/Logger';
import { FolderEntity, FolderIcon } from '@joplin/lib/services/database/types';
import { FolderEntity } from '@joplin/lib/services/database/types';
import stateToWhenClauseContext from '../../services/commands/stateToWhenClauseContext';
import { store } from '@joplin/lib/reducer';
import PerFolderSortOrderService from '../../services/sortOrder/PerFolderSortOrderService';
import { getFolderCallbackUrl, getTagCallbackUrl } from '@joplin/lib/callbackUrlUtils';
import FolderIconBox from '../FolderIconBox';
const { connect } = require('react-redux');
const shared = require('@joplin/lib/components/shared/side-menu-shared.js');
const { themeStyle } = require('@joplin/lib/theme');
@@ -78,12 +77,6 @@ function ExpandLink(props: any) {
);
}
const renderFolderIcon = (folderIcon: FolderIcon) => {
if (!folderIcon) return null;
return <div style={{ marginRight: 5, display: 'flex' }}><FolderIconBox folderIcon={folderIcon}/></div>;
};
function FolderItem(props: any) {
const { hasChildren, isExpanded, parentId, depth, selected, folderId, folderTitle, folderIcon, anchorRef, noteCount, onFolderDragStart_, onFolderDragOver_, onFolderDrop_, itemContextMenu, folderItem_click, onFolderToggleClick_, shareId } = props;
@@ -91,6 +84,8 @@ function FolderItem(props: any) {
const shareIcon = shareId && !parentId ? <StyledShareIcon className="fas fa-share-alt"></StyledShareIcon> : null;
const icon = folderIcon ? <span style={{ fontSize: 20, marginRight: 5 }}>{folderIcon.emoji}</span> : null;
return (
<StyledListItem depth={depth} selected={selected} className={`list-item-container list-item-depth-${depth} ${selected ? 'selected' : ''}`} onDragStart={onFolderDragStart_} onDragOver={onFolderDragOver_} onDrop={onFolderDrop_} draggable={true} data-folder-id={folderId}>
<ExpandLink themeId={props.themeId} hasChildren={hasChildren} folderId={folderId} onClick={onFolderToggleClick_} isExpanded={isExpanded}/>
@@ -110,7 +105,7 @@ function FolderItem(props: any) {
}}
onDoubleClick={onFolderToggleClick_}
>
{renderFolderIcon(folderIcon)}<span className="title" style={{ lineHeight: 0 }}>{folderTitle}</span>
{icon}<span className="title" style={{ lineHeight: 0 }}>{folderTitle}</span>
{shareIcon} {noteCountComp}
</StyledListItemAnchor>
</StyledListItem>

View File

@@ -193,36 +193,34 @@ export default function(props: Props) {
const onJoplinCloudLoginClick = useCallback(async () => {
setJoplinCloudLoginInProgress(true);
let result = null;
try {
result = await SyncTargetJoplinCloud.checkConfig({
const result = await SyncTargetJoplinCloud.checkConfig({
password: () => joplinCloudPassword,
path: () => Setting.value('sync.10.path'),
userContentPath: () => Setting.value('sync.10.userContentPath'),
username: () => joplinCloudEmail,
});
if (result.ok) {
Setting.setValue('sync.target', 10);
Setting.setValue('sync.10.username', joplinCloudEmail);
Setting.setValue('sync.10.password', joplinCloudPassword);
await Setting.saveAll();
alert(_('Thank you! Your Joplin Cloud account is now setup and ready to use.'));
closeDialog(props.dispatch);
props.dispatch({
type: 'NAV_GO',
routeName: 'Main',
});
} else {
alert(_('There was an error setting up your Joplin Cloud account. Please verify your email and password and try again. Error was:\n\n%s', result.errorMessage));
}
} finally {
setJoplinCloudLoginInProgress(false);
}
if (result.ok) {
Setting.setValue('sync.target', 10);
Setting.setValue('sync.10.username', joplinCloudEmail);
Setting.setValue('sync.10.password', joplinCloudPassword);
await Setting.saveAll();
alert(_('Thank you! Your Joplin Cloud account is now setup and ready to use.'));
closeDialog(props.dispatch);
props.dispatch({
type: 'NAV_GO',
routeName: 'Main',
});
} else {
alert(_('There was an error setting up your Joplin Cloud account. Please verify your email and password and try again. Error was:\n\n%s', result.errorMessage));
}
}, [joplinCloudEmail, joplinCloudPassword, props.dispatch]);
const onJoplinCloudCreateAccountClick = useCallback(() => {
@@ -232,10 +230,10 @@ export default function(props: Props) {
function renderJoplinCloudLoginForm() {
return (
<JoplinCloudLoginForm>
<div style={{ fontSize: '16px' }}>{_('Login below.')} <CreateAccountLink href="#" onClick={onJoplinCloudCreateAccountClick}>{_('Or create an account.')}</CreateAccountLink></div>
<FormLabel>{_('Email')}</FormLabel>
<div>{_('Login below.')} <CreateAccountLink href="#" onClick={onJoplinCloudCreateAccountClick}>{_('Or create an account.')}</CreateAccountLink></div>
<FormLabel>Email</FormLabel>
<StyledInput type="email" onChange={onJoplinCloudEmailChange}/>
<FormLabel>{_('Password')}</FormLabel>
<FormLabel>Password</FormLabel>
<StyledInput type="password" onChange={onJoplinCloudPasswordChange}/>
<SelectButton mt="1.3em" disabled={joplinCloudLoginInProgress} level={ButtonLevel.Primary} title={_('Login')} onClick={onJoplinCloudLoginClick}/>
</JoplinCloudLoginForm>

View File

@@ -277,9 +277,6 @@
let restoreAndRefreshTimeoutID_ = null;
let restoreAndRefreshTimeout_ = Date.now();
// If 'noteRenderComplete' message is ongoing, resizing should not trigger a 'percentScroll' messsage.
let noteRenderCompleteMessageIsOngoing_ = false;
// A callback anonymous function invoked when the scroll height changes.
const onRendering = observeRendering((cause, height, heightChanged) => {
if (!alreadyAllImagesLoaded && !scrollmap.isPresent()) {
@@ -288,7 +285,6 @@
alreadyAllImagesLoaded = true;
scrollmap.refresh();
restorePercentScroll();
noteRenderCompleteMessageIsOngoing_ = true;
ipcProxySendToHost('noteRenderComplete');
return;
}
@@ -297,8 +293,6 @@
const restoreAndRefresh = () => {
scrollmap.refresh();
restorePercentScroll();
// To ensures Editor's scroll position is synced with Viewer's
if (!noteRenderCompleteMessageIsOngoing_) ipcProxySendToHost('percentScroll', percentScroll_);
};
const now = Date.now();
if (now < restoreAndRefreshTimeout_) {
@@ -349,13 +343,11 @@
if (scrollmap.isPresent()) {
// Now, ready to receive scrollToHash/setPercentScroll from Editor.
noteRenderCompleteMessageIsOngoing_ = true;
ipcProxySendToHost('noteRenderComplete');
}
}
ipc.setPercentScroll = (event) => {
noteRenderCompleteMessageIsOngoing_ = false;
setPercentScroll(event.percent);
}

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/app-desktop",
"version": "2.7.11",
"version": "2.7.0",
"description": "Joplin for Desktop",
"main": "main.js",
"private": true,

View File

@@ -19,7 +19,6 @@ const { mergeOverlappingIntervals } = require('@joplin/lib/ArrayUtils.js');
import markupLanguageUtils from '../utils/markupLanguageUtils';
import focusEditorIfEditorCommand from '@joplin/lib/services/commands/focusEditorIfEditorCommand';
import Logger from '@joplin/lib/Logger';
import { MarkupToHtml } from '@joplin/renderer';
const logger = Logger.create('GotoAnything');
@@ -82,7 +81,7 @@ class Dialog extends React.PureComponent<Props, State> {
private inputRef: any;
private itemListRef: any;
private listUpdateIID_: any;
private markupToHtml_: MarkupToHtml;
private markupToHtml_: any;
private userCallback_: any = null;
constructor(props: Props) {

View File

@@ -1,4 +1,5 @@
import Logger from '@joplin/lib/Logger';
import time from '@joplin/lib/time';
const logger = Logger.create('BackOffHandler');
@@ -51,21 +52,13 @@ export default class BackOffHandler {
this.waitCount_++;
// For now don't actually apply a backoff and don't abort.
logger.warn(`Plugin ${this.pluginId_}: Applying a backoff of ${interval} seconds due to frequent plugin API calls. Consider reducing the number of calls, caching the data, or requesting more data per call. API call was: `, path, args, `[Wait count: ${this.waitCount_}]`);
if (this.waitCount_ > this.maxWaitCount_) logger.error(`Plugin ${this.pluginId_}: More than ${this.maxWaitCount_} API alls are waiting - aborting. Please consider queuing the API calls in your plugins to reduce the load on the application.`);
if (this.waitCount_ > this.maxWaitCount_) throw new Error(`Plugin ${this.pluginId_}: More than ${this.maxWaitCount_} API alls are waiting - aborting. Please consider queuing the API calls in your plugins to reduce the load on the application.`);
await time.sleep(interval);
this.waitCount_--;
// if (this.waitCount_ > this.maxWaitCount_) throw new Error(`Plugin ${this.pluginId_}: More than ${this.maxWaitCount_} API alls are waiting - aborting. Please consider queuing the API calls in your plugins to reduce the load on the application.`);
// await time.sleep(interval);
// this.waitCount_--;
}
}

View File

@@ -40,7 +40,6 @@ export default class PerFolderSortOrderService {
this.loadSharedSortOrder();
eventManager.appStateOn('notesParentType', this.onFolderSelectionMayChange.bind(this, 'notesParentType'));
eventManager.appStateOn('selectedFolderId', this.onFolderSelectionMayChange.bind(this, 'selectedFolderId'));
this.previousFolderId = Setting.value('activeFolderId');
}
public static isSet(folderId: string): boolean {

View File

@@ -30,10 +30,7 @@ function convertJsx(path) {
if (fileIsNewerThan(jsxPath, jsPath)) {
console.info(`Compiling ${jsxPath}...`);
// { shell: true } is needed to get it working on Windows:
// https://discourse.joplinapp.org/t/attempting-to-build-on-windows/22559/12
const result = spawnSync('yarn', ['run', 'babel', '--presets', 'react', '--out-file', jsPath, jsxPath], { shell: true });
const result = spawnSync('yarn', ['run', 'babel', '--presets', 'react', '--out-file', jsPath, jsxPath]);
if (result.status !== 0) {
const msg = [];
if (result.stdout) msg.push(result.stdout.toString());

View File

@@ -146,8 +146,8 @@ android {
applicationId "net.cozic.joplin"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 2097667
versionName "2.7.2"
versionCode 2097665
versionName "2.7.0"
ndk {
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
}

View File

@@ -1,6 +1,6 @@
const React = require('react');
const Component = React.Component;
const { Easing, Animated, TouchableOpacity, Text, StyleSheet, ScrollView, View, Alert, Image } = require('react-native');
const { Easing, Animated, TouchableOpacity, Text, StyleSheet, ScrollView, View, Alert } = require('react-native');
const { connect } = require('react-redux');
const Icon = require('react-native-vector-icons/Ionicons').default;
const Folder = require('@joplin/lib/models/Folder').default;
@@ -74,7 +74,7 @@ class SideMenuContentComponent extends Component {
styles.folderButton = Object.assign({}, styles.button);
styles.folderButton.paddingLeft = 0;
styles.folderButtonText = Object.assign({}, styles.buttonText, { paddingLeft: 0 });
styles.folderButtonText = Object.assign({}, styles.buttonText);
styles.folderButtonSelected = Object.assign({}, styles.folderButton);
styles.folderButtonSelected.backgroundColor = theme.selectedColor;
styles.folderIcon = Object.assign({}, theme.icon);
@@ -219,18 +219,6 @@ class SideMenuContentComponent extends Component {
if (actionDone === 'auth') this.props.dispatch({ type: 'SIDE_MENU_CLOSE' });
}
renderFolderIcon(theme, folderIcon) {
if (!folderIcon) return null;
if (folderIcon.type === 1) { // FolderIconType.Emoji
return <Text style={{ fontSize: theme.fontSize, marginRight: 4 }}>{folderIcon.emoji}</Text>;
} else if (folderIcon.type === 2) { // FolderIconType.DataUrl
return <Image style={{ width: 20, height: 20, marginRight: 4, resizeMode: 'contain' }} source={{ uri: folderIcon.dataUrl }}/>;
} else {
throw new Error(`Unsupported folder icon type: ${folderIcon.type}`);
}
}
renderFolderItem(folder, selected, hasChildren, depth) {
const theme = themeStyle(this.props.themeId);
@@ -240,7 +228,6 @@ class SideMenuContentComponent extends Component {
height: 36,
alignItems: 'center',
paddingRight: theme.marginRight,
paddingLeft: 10,
};
if (selected) folderButtonStyle.backgroundColor = theme.selectedColor;
folderButtonStyle.paddingLeft = depth * 10 + theme.marginLeft;
@@ -266,6 +253,7 @@ class SideMenuContentComponent extends Component {
);
const folderIcon = Folder.unserializeIcon(folder.icon);
const icon = folderIcon ? `${folderIcon.emoji} ` : '';
return (
<View key={folder.id} style={{ flex: 1, flexDirection: 'row' }}>
@@ -279,9 +267,8 @@ class SideMenuContentComponent extends Component {
}}
>
<View style={folderButtonStyle}>
{this.renderFolderIcon(theme, folderIcon)}
<Text numberOfLines={1} style={this.styles().folderButtonText}>
{Folder.displayTitle(folder)}
{icon + Folder.displayTitle(folder)}
</Text>
</View>
</TouchableOpacity>

View File

@@ -43,7 +43,6 @@ module.exports = {
'@joplin/renderer': path.resolve(__dirname, '../renderer/'),
'@joplin/tools': path.resolve(__dirname, '../tools/'),
'@joplin/fork-htmlparser2': path.resolve(__dirname, '../fork-htmlparser2/'),
'@joplin/fork-uslug': path.resolve(__dirname, '../fork-uslug/'),
},
{
get: (target, name) => {
@@ -61,6 +60,5 @@ module.exports = {
path.resolve(__dirname, '../renderer'),
path.resolve(__dirname, '../tools'),
path.resolve(__dirname, '../fork-htmlparser2'),
path.resolve(__dirname, '../fork-uslug'),
],
};

View File

@@ -1 +1 @@
module.exports = `LyoKCkF0b20gT25lIERhcmsgV2l0aCBzdXBwb3J0IGZvciBSZWFzb25NTCBieSBHaWRpIE1vcnJpcywgYmFzZWQgb2ZmIHdvcmsgYnkgRGFuaWVsIEdhbWFnZQoKT3JpZ2luYWwgT25lIERhcmsgU3ludGF4IHRoZW1lIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2F0b20vb25lLWRhcmstc3ludGF4CgoqLwouaGxqcyB7CiAgY29sb3I6ICNhYmIyYmY7CiAgYmFja2dyb3VuZDogIzI4MmMzNDsKfQouaGxqcy1rZXl3b3JkLCAuaGxqcy1vcGVyYXRvciB7CiAgY29sb3I6ICNGOTI2NzI7Cn0KLmhsanMtcGF0dGVybi1tYXRjaCB7CiAgY29sb3I6ICNGOTI2NzI7Cn0KLmhsanMtcGF0dGVybi1tYXRjaCAuaGxqcy1jb25zdHJ1Y3RvciB7CiAgY29sb3I6ICM2MWFlZWU7Cn0KLmhsanMtZnVuY3Rpb24gewogIGNvbG9yOiAjNjFhZWVlOwp9Ci5obGpzLWZ1bmN0aW9uIC5obGpzLXBhcmFtcyB7CiAgY29sb3I6ICNBNkUyMkU7Cn0KLmhsanMtZnVuY3Rpb24gLmhsanMtcGFyYW1zIC5obGpzLXR5cGluZyB7CiAgY29sb3I6ICNGRDk3MUY7Cn0KLmhsanMtbW9kdWxlLWFjY2VzcyAuaGxqcy1tb2R1bGUgewogIGNvbG9yOiAjN2U1N2MyOwp9Ci5obGpzLWNvbnN0cnVjdG9yIHsKICBjb2xvcjogI2UyYjkzZDsKfQouaGxqcy1jb25zdHJ1Y3RvciAuaGxqcy1zdHJpbmcgewogIGNvbG9yOiAjOUNDQzY1Owp9Ci5obGpzLWNvbW1lbnQsIC5obGpzLXF1b3RlIHsKICBjb2xvcjogI2IxOGViMTsKICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KLmhsanMtZG9jdGFnLCAuaGxqcy1mb3JtdWxhIHsKICBjb2xvcjogI2M2NzhkZDsKfQouaGxqcy1zZWN0aW9uLCAuaGxqcy1uYW1lLCAuaGxqcy1zZWxlY3Rvci10YWcsIC5obGpzLWRlbGV0aW9uLCAuaGxqcy1zdWJzdCB7CiAgY29sb3I6ICNlMDZjNzU7Cn0KLmhsanMtbGl0ZXJhbCB7CiAgY29sb3I6ICM1NmI2YzI7Cn0KLmhsanMtc3RyaW5nLCAuaGxqcy1yZWdleHAsIC5obGpzLWFkZGl0aW9uLCAuaGxqcy1hdHRyaWJ1dGUsIC5obGpzLW1ldGEgLmhsanMtc3RyaW5nIHsKICBjb2xvcjogIzk4YzM3OTsKfQouaGxqcy1idWlsdF9pbiwKLmhsanMtdGl0bGUuY2xhc3NfLAouaGxqcy1jbGFzcyAuaGxqcy10aXRsZSB7CiAgY29sb3I6ICNlNmMwN2I7Cn0KLmhsanMtYXR0ciwgLmhsanMtdmFyaWFibGUsIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLCAuaGxqcy10eXBlLCAuaGxqcy1zZWxlY3Rvci1jbGFzcywgLmhsanMtc2VsZWN0b3ItYXR0ciwgLmhsanMtc2VsZWN0b3ItcHNldWRvLCAuaGxqcy1udW1iZXIgewogIGNvbG9yOiAjZDE5YTY2Owp9Ci5obGpzLXN5bWJvbCwgLmhsanMtYnVsbGV0LCAuaGxqcy1saW5rLCAuaGxqcy1tZXRhLCAuaGxqcy1zZWxlY3Rvci1pZCwgLmhsanMtdGl0bGUgewogIGNvbG9yOiAjNjFhZWVlOwp9Ci5obGpzLWVtcGhhc2lzIHsKICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KLmhsanMtc3Ryb25nIHsKICBmb250LXdlaWdodDogYm9sZDsKfQouaGxqcy1saW5rIHsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQo=`;
module.exports = `cHJlIGNvZGUuaGxqc3tkaXNwbGF5OmJsb2NrO292ZXJmbG93LXg6YXV0bztwYWRkaW5nOjFlbX1jb2RlLmhsanN7cGFkZGluZzozcHggNXB4fS5obGpze2NvbG9yOiNhYmIyYmY7YmFja2dyb3VuZDojMjgyYzM0fS5obGpzLWtleXdvcmQsLmhsanMtb3BlcmF0b3IsLmhsanMtcGF0dGVybi1tYXRjaHtjb2xvcjojZjkyNjcyfS5obGpzLWZ1bmN0aW9uLC5obGpzLXBhdHRlcm4tbWF0Y2ggLmhsanMtY29uc3RydWN0b3J7Y29sb3I6IzYxYWVlZX0uaGxqcy1mdW5jdGlvbiAuaGxqcy1wYXJhbXN7Y29sb3I6I2E2ZTIyZX0uaGxqcy1mdW5jdGlvbiAuaGxqcy1wYXJhbXMgLmhsanMtdHlwaW5ne2NvbG9yOiNmZDk3MWZ9LmhsanMtbW9kdWxlLWFjY2VzcyAuaGxqcy1tb2R1bGV7Y29sb3I6IzdlNTdjMn0uaGxqcy1jb25zdHJ1Y3Rvcntjb2xvcjojZTJiOTNkfS5obGpzLWNvbnN0cnVjdG9yIC5obGpzLXN0cmluZ3tjb2xvcjojOWNjYzY1fS5obGpzLWNvbW1lbnQsLmhsanMtcXVvdGV7Y29sb3I6I2IxOGViMTtmb250LXN0eWxlOml0YWxpY30uaGxqcy1kb2N0YWcsLmhsanMtZm9ybXVsYXtjb2xvcjojYzY3OGRkfS5obGpzLWRlbGV0aW9uLC5obGpzLW5hbWUsLmhsanMtc2VjdGlvbiwuaGxqcy1zZWxlY3Rvci10YWcsLmhsanMtc3Vic3R7Y29sb3I6I2UwNmM3NX0uaGxqcy1saXRlcmFse2NvbG9yOiM1NmI2YzJ9LmhsanMtYWRkaXRpb24sLmhsanMtYXR0cmlidXRlLC5obGpzLW1ldGEgLmhsanMtc3RyaW5nLC5obGpzLXJlZ2V4cCwuaGxqcy1zdHJpbmd7Y29sb3I6Izk4YzM3OX0uaGxqcy1idWlsdF9pbiwuaGxqcy1jbGFzcyAuaGxqcy10aXRsZSwuaGxqcy10aXRsZS5jbGFzc197Y29sb3I6I2U2YzA3Yn0uaGxqcy1hdHRyLC5obGpzLW51bWJlciwuaGxqcy1zZWxlY3Rvci1hdHRyLC5obGpzLXNlbGVjdG9yLWNsYXNzLC5obGpzLXNlbGVjdG9yLXBzZXVkbywuaGxqcy10ZW1wbGF0ZS12YXJpYWJsZSwuaGxqcy10eXBlLC5obGpzLXZhcmlhYmxle2NvbG9yOiNkMTlhNjZ9LmhsanMtYnVsbGV0LC5obGpzLWxpbmssLmhsanMtbWV0YSwuaGxqcy1zZWxlY3Rvci1pZCwuaGxqcy1zeW1ib2wsLmhsanMtdGl0bGV7Y29sb3I6IzYxYWVlZX0uaGxqcy1lbXBoYXNpc3tmb250LXN0eWxlOml0YWxpY30uaGxqcy1zdHJvbmd7Zm9udC13ZWlnaHQ6NzAwfS5obGpzLWxpbmt7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0=`;

View File

@@ -1 +1 @@
module.exports = `LyoKCkF0b20gT25lIExpZ2h0IGJ5IERhbmllbCBHYW1hZ2UKT3JpZ2luYWwgT25lIExpZ2h0IFN5bnRheCB0aGVtZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hdG9tL29uZS1saWdodC1zeW50YXgKCmJhc2U6ICAgICNmYWZhZmEKbW9uby0xOiAgIzM4M2E0Mgptb25vLTI6ICAjNjg2Yjc3Cm1vbm8tMzogICNhMGExYTcKaHVlLTE6ICAgIzAxODRiYgpodWUtMjogICAjNDA3OGYyCmh1ZS0zOiAgICNhNjI2YTQKaHVlLTQ6ICAgIzUwYTE0ZgpodWUtNTogICAjZTQ1NjQ5Cmh1ZS01LTI6ICNjOTEyNDMKaHVlLTY6ICAgIzk4NjgwMQpodWUtNi0yOiAjYzE4NDAxCgoqLwoKLmhsanMgewogIGNvbG9yOiAjMzgzYTQyOwogIGJhY2tncm91bmQ6ICNmYWZhZmE7Cn0KCi5obGpzLWNvbW1lbnQsCi5obGpzLXF1b3RlIHsKICBjb2xvcjogI2EwYTFhNzsKICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KCi5obGpzLWRvY3RhZywKLmhsanMta2V5d29yZCwKLmhsanMtZm9ybXVsYSB7CiAgY29sb3I6ICNhNjI2YTQ7Cn0KCi5obGpzLXNlY3Rpb24sCi5obGpzLW5hbWUsCi5obGpzLXNlbGVjdG9yLXRhZywKLmhsanMtZGVsZXRpb24sCi5obGpzLXN1YnN0IHsKICBjb2xvcjogI2U0NTY0OTsKfQoKLmhsanMtbGl0ZXJhbCB7CiAgY29sb3I6ICMwMTg0YmI7Cn0KCi5obGpzLXN0cmluZywKLmhsanMtcmVnZXhwLAouaGxqcy1hZGRpdGlvbiwKLmhsanMtYXR0cmlidXRlLAouaGxqcy1tZXRhIC5obGpzLXN0cmluZyB7CiAgY29sb3I6ICM1MGExNGY7Cn0KCi5obGpzLWF0dHIsCi5obGpzLXZhcmlhYmxlLAouaGxqcy10ZW1wbGF0ZS12YXJpYWJsZSwKLmhsanMtdHlwZSwKLmhsanMtc2VsZWN0b3ItY2xhc3MsCi5obGpzLXNlbGVjdG9yLWF0dHIsCi5obGpzLXNlbGVjdG9yLXBzZXVkbywKLmhsanMtbnVtYmVyIHsKICBjb2xvcjogIzk4NjgwMTsKfQoKLmhsanMtc3ltYm9sLAouaGxqcy1idWxsZXQsCi5obGpzLWxpbmssCi5obGpzLW1ldGEsCi5obGpzLXNlbGVjdG9yLWlkLAouaGxqcy10aXRsZSB7CiAgY29sb3I6ICM0MDc4ZjI7Cn0KCi5obGpzLWJ1aWx0X2luLAouaGxqcy10aXRsZS5jbGFzc18sCi5obGpzLWNsYXNzIC5obGpzLXRpdGxlIHsKICBjb2xvcjogI2MxODQwMTsKfQoKLmhsanMtZW1waGFzaXMgewogIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKLmhsanMtc3Ryb25nIHsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLmhsanMtbGluayB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0K`;
module.exports = `cHJlIGNvZGUuaGxqc3tkaXNwbGF5OmJsb2NrO292ZXJmbG93LXg6YXV0bztwYWRkaW5nOjFlbX1jb2RlLmhsanN7cGFkZGluZzozcHggNXB4fS5obGpze2NvbG9yOiMzODNhNDI7YmFja2dyb3VuZDojZmFmYWZhfS5obGpzLWNvbW1lbnQsLmhsanMtcXVvdGV7Y29sb3I6I2EwYTFhNztmb250LXN0eWxlOml0YWxpY30uaGxqcy1kb2N0YWcsLmhsanMtZm9ybXVsYSwuaGxqcy1rZXl3b3Jke2NvbG9yOiNhNjI2YTR9LmhsanMtZGVsZXRpb24sLmhsanMtbmFtZSwuaGxqcy1zZWN0aW9uLC5obGpzLXNlbGVjdG9yLXRhZywuaGxqcy1zdWJzdHtjb2xvcjojZTQ1NjQ5fS5obGpzLWxpdGVyYWx7Y29sb3I6IzAxODRiYn0uaGxqcy1hZGRpdGlvbiwuaGxqcy1hdHRyaWJ1dGUsLmhsanMtbWV0YSAuaGxqcy1zdHJpbmcsLmhsanMtcmVnZXhwLC5obGpzLXN0cmluZ3tjb2xvcjojNTBhMTRmfS5obGpzLWF0dHIsLmhsanMtbnVtYmVyLC5obGpzLXNlbGVjdG9yLWF0dHIsLmhsanMtc2VsZWN0b3ItY2xhc3MsLmhsanMtc2VsZWN0b3ItcHNldWRvLC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLC5obGpzLXR5cGUsLmhsanMtdmFyaWFibGV7Y29sb3I6Izk4NjgwMX0uaGxqcy1idWxsZXQsLmhsanMtbGluaywuaGxqcy1tZXRhLC5obGpzLXNlbGVjdG9yLWlkLC5obGpzLXN5bWJvbCwuaGxqcy10aXRsZXtjb2xvcjojNDA3OGYyfS5obGpzLWJ1aWx0X2luLC5obGpzLWNsYXNzIC5obGpzLXRpdGxlLC5obGpzLXRpdGxlLmNsYXNzX3tjb2xvcjojYzE4NDAxfS5obGpzLWVtcGhhc2lze2ZvbnQtc3R5bGU6aXRhbGljfS5obGpzLXN0cm9uZ3tmb250LXdlaWdodDo3MDB9LmhsanMtbGlua3t0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfQ==`;

View File

@@ -1,5 +1,5 @@
module.exports = {
hash:"ea13a22d0df59339b671f6b5700e2914", files: {
hash:"dd2315568bb7795f97cee26a47e9b82b", files: {
'highlight.js/atom-one-dark-reasonable.css': { data: require('./highlight.js/atom-one-dark-reasonable.css.base64.js'), mime: 'text/css', encoding: 'base64' },
'highlight.js/atom-one-light.css': { data: require('./highlight.js/atom-one-light.css.base64.js'), mime: 'text/css', encoding: 'base64' },
'katex/fonts/KaTeX_AMS-Regular.woff2': { data: require('./katex/fonts/KaTeX_AMS-Regular.woff2.base64.js'), mime: 'application/octet-stream', encoding: 'base64' },

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
module.exports = `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`;
module.exports = `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`;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -550,7 +550,6 @@ async function initialize(dispatch: Function) {
// eslint-disable-next-line require-atomic-updates
BaseItem.encryptionService_ = EncryptionService.instance();
BaseItem.shareService_ = ShareService.instance();
Resource.shareService_ = ShareService.instance();
DecryptionWorker.instance().dispatch = dispatch;
DecryptionWorker.instance().setLogger(mainLogger);
DecryptionWorker.instance().setKvStore(KvStore.instance());

View File

@@ -54,7 +54,6 @@ import { loadMasterKeysFromSettings, migrateMasterPassword } from './services/e2
import SyncTargetNone from './SyncTargetNone';
import { setRSA } from './services/e2ee/ppk';
import RSA from './services/e2ee/RSA.node';
import Resource from './models/Resource';
const appLogger: LoggerWrapper = Logger.create('App');
@@ -856,7 +855,6 @@ export default class BaseApplication {
BaseItem.encryptionService_ = EncryptionService.instance();
BaseItem.shareService_ = ShareService.instance();
Resource.shareService_ = ShareService.instance();
DecryptionWorker.instance().setLogger(globalLogger);
DecryptionWorker.instance().setEncryptionService(EncryptionService.instance());
DecryptionWorker.instance().setKvStore(KvStore.instance());

View File

@@ -1,6 +1,7 @@
const urlUtils = require('./urlUtils.js');
const Entities = require('html-entities').AllHtmlEntities;
const htmlentities = new Entities().encode;
const htmlparser2 = require('@joplin/fork-htmlparser2');
const { escapeHtml } = require('./string-utils.js');
// [\s\S] instead of . for multiline matching
@@ -137,6 +138,40 @@ class HtmlUtils {
return output.join(' ');
}
public stripHtml(html: string) {
const output: string[] = [];
const tagStack: any[] = [];
const currentTag = () => {
if (!tagStack.length) return '';
return tagStack[tagStack.length - 1];
};
const disallowedTags = ['script', 'style', 'head', 'iframe', 'frameset', 'frame', 'object', 'base'];
const parser = new htmlparser2.Parser({
onopentag: (name: string) => {
tagStack.push(name.toLowerCase());
},
ontext: (decodedText: string) => {
if (disallowedTags.includes(currentTag())) return;
output.push(decodedText);
},
onclosetag: (name: string) => {
if (currentTag() === name.toLowerCase()) tagStack.pop();
},
}, { decodeEntities: true });
parser.write(html);
parser.end();
return output.join('').replace(/\s+/g, ' ');
}
}
export default new HtmlUtils();

View File

@@ -79,6 +79,7 @@
"Auto": "تلقائي",
"Auto-pair braces, parenthesis, quotations, etc.": "ادراج النصف الآخر للأقواس و علامات الإقتباس.",
"Automatically switch theme to match system theme": "التبديل تلقائيا للتنسيق لمطابقة تنسيق النضام",
"Automatically update the application": "تحديث التطبيق آلياً",
"Back": "عودة",
"Bold": "غامق",
"Browse all plugins": "تصفح جميع المكونات الإضافية",
@@ -484,6 +485,7 @@
"Note: Does not work in all desktop environments.": "ملاحظة: لا تعمل في كل بيئات سطح المكتب.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "ملاحظة: عند مشاركة ملاحظة ، لن يتم تشفيرها على الخادم.",
"Notebook list growth factor": "عامل نمو قائمة المفكرة",
"Notebook title:": "عنوان دفتر الملاحظات:",
"Notebook: %s": "دفتر ملاحظات: \"%s\"",
"Notebooks": "دفاتر ملاحظات",
"Notebooks cannot be named \"%s\", which is a reserved title.": "لا يمكن تسمية دفتر الملاحظات بـ \"%s\" لأنه عنوان محجوز.",

View File

@@ -40,6 +40,7 @@
"Authentication was not completed (did not receive an authentication token).": "Оторизирането не беше завършено (не получих оторизационен жетон).",
"Authorisation token:": "Оторизационен жетон:",
"Auto": "Автоматичен",
"Automatically update the application": "Автоматично обновление на приложението",
"Back": "Назад",
"Bold": "Удебелен",
"Browse...": "Търсене...",
@@ -280,6 +281,7 @@
"Note properties": "Атрибути на бележката",
"Note title": "Заглавие на бележката",
"Note: Does not work in all desktop environments.": "Внимание: Не работи с всички десктоп среди.",
"Notebook title:": "Заглавие на тетрадка:",
"Notebooks": "Тетрадки",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Тетрадки не могат да имат име \"%s\", защото това е запазено заглавие.",
"Notes and settings are stored in: %s": "Бележките и настройките са запазени в: %s",

View File

@@ -52,6 +52,7 @@
"Auto": "Automatski",
"Auto-pair braces, parenthesis, quotations, etc.": "Automatski piši u paru sve zagrade, navodnike itd.",
"Automatically switch theme to match system theme": "Automatski podesi temu prema sistemskoj",
"Automatically update the application": "Automatski ažuriraj aplikaciju",
"Back": "Nazad",
"Bold": "Masna slova",
"Browse all plugins": "Pogledaj dodatke",
@@ -352,6 +353,7 @@
"Note: Does not work in all desktop environments.": "Napomena: neće raditi na svim sistemima.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Napomena: bilješka koja se podijeli s drugima više neće biti šifrirana na serveru.",
"Notebook list growth factor": "Faktor rasta popisa bilježnica",
"Notebook title:": "Naziv bilježnice:",
"Notebook: %s": "Bilježnica: %s",
"Notebooks": "Bilježnice",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Bilježnica se ne može nazvati \"%s\", jer je to rezervisani naziv.",

View File

@@ -79,9 +79,10 @@
"Auto": "Automàtic",
"Auto-pair braces, parenthesis, quotations, etc.": "Aparellament automàtic de claus, parèntesis, cites, etc.",
"Automatically switch theme to match system theme": "Canvia de tema automàticament per a coincidir amb el tema del sistema",
"Automatically update the application": "Actualitza automàticament l'aplicació",
"Back": "Enrere",
"Bold": "Negreta",
"Browse all plugins": "Navega per totes les extensions",
"Browse all plugins": "Navega per tots els connectors",
"Browse...": "Navega...",
"Bulleted List": "Llista de pics",
"Cancel": "Cancel·la",
@@ -100,7 +101,6 @@
"Cannot refresh token: authentication data is missing. Starting the synchronisation again may fix the problem.": "No es pot actualitzar el testimoni: manquen les dades d'autenticació. Reiniciar la sincronització pot solucionar el problema.",
"Cannot save %s \"%s\" because it is larger than the allowed limit (%s)": "No es pot desar %s «%s» perquè és més gran que el límit permès (%s)",
"Cannot save %s \"%s\" because it would go over the total allowed size (%s) for this account": "No es pot desar %s «%s» perquè se'n passaria de l'espai total (%s) d'aquest compte",
"Cannot share encrypted notebook with recipient %s because they have not enabled end-to-end encryption. They may do so from the screen Configuration > Encryption.": "No es pot compartir el bloc de notes xifrat amb el destinatari %sperquè no té habilitat el xifrat d'extrem a extrem. Pot fer-ho des de la finestra Configuració > Xifrat",
"Change application layout": "Canvia la disposició de l'aplicació",
"Change language": "Canvia la llengua",
"Characters": "Caràcters",
@@ -139,12 +139,10 @@
"Conflicted: %d": "Conflictius: %d",
"Conflicts": "Conflictes",
"Conflicts (attachments)": "Conflictes (adjunts)",
"Content provided by %s": "Contingut proporcionat per %s",
"Convert to note": "Converteix a nota",
"Convert to todo": "Converteix a llistat de tasques pendents",
"Copy": "Copia",
"Copy dev mode command to clipboard": "Copia l'ordre en mode de desenvolupament al porta-retalls",
"Copy external link": "Copia l'enllaç extern",
"Copy Link Address": "Copia l'adreça de l'enllaç",
"Copy Markdown link": "Copia l'enllaç Markdown",
"Copy path to clipboard": "Copia el camí al porta-retalls",
@@ -152,12 +150,9 @@
"Copy token": "Copia testimoni",
"Could not authorise application:\n\n%s\n\nPlease try again.": "No s'ha pogut autoritzar l'aplicació:\n\n%s\n\nTorneu-ho a provar.",
"Could not connect to Joplin Server. Please check the Synchronisation options in the config screen. Full error was:\n\n%s": "No s'ha pogut connectar amb el Joplin Server. Comproveu la configuració en la pantalla de Sincronització. L'error complet és: %s",
"Could not connect to plugin repository.": "No s'ha pogut connectar al repositori d'extensions",
"Could not export notes: %s": "No s'han pogut exportar les notes: %s",
"Could not install plugin: %s": "No s'ha pogut instal·lar l'extensió: %s",
"Could not respond to the invitation. Please try again, or check with the notebook owner if they are still sharing it.\n\nThe error was: \"%s\"": "No s'ha pogut contestar a la invitació. Torneu-ho a provar, o comproveu amb el propietari del bloc de notes si encara l'està compartint.\n\nL'error és \"%s\"",
"Could not install plugin: %s": "No s'ha pogut instal·lar el complement: %s",
"Could not upgrade master key: %s": "No s'ha pogut actualitzar la clau mestra: %s",
"Could not verify the share status of this notebook - aborting. Please try again when you are connected to the internet.": "No s'ha pogut verificar l'estat de compartició d'aquest bloc de notes - s'està avortant. Torneu a provar quan tingueu connexió a Internet.",
"Create a notebook": "Crea un bloc de notes nou",
"Created": "Creació",
"created date": "data de creació",
@@ -197,7 +192,7 @@
"Delete note?": "Voleu suprimir la nota?",
"Delete notebook \"%s\"?\n\nAll notes and sub-notebooks within this notebook will also be deleted.": "Voleu suprimir el bloc de notes \"%s\"? \n\nTambé se suprimiran totes les notes i els subblocs d'aquest bloc de notes.",
"Delete notebook? All notes and sub-notebooks within this notebook will also be deleted.": "Voleu suprimir el bloc de notes? També se suprimiran totes les notes i els subblocs d'aquest bloc de notes.",
"Delete plugin \"%s\"?": "Voleu suprimir l'extensió \"%s\"?",
"Delete plugin \"%s\"?": "Voleu suprimir el complement \"%s\"?",
"Delete these %d notes?": "Voleu suprimir aquestes %d notes?",
"Delete this invitation? The recipient will no longer have access to this shared notebook.": "Voleu suprimir aquesta invitació? El destinatari ja no tindrà accés a aquest quadern compartit.",
"Deleted local items: %d.": "Elements locals suprimits: %d.",
@@ -228,7 +223,6 @@
"Displays version information": "Mostra la informació de versió",
"Do it now": "Fes-ho ara",
"Do not ask for confirmation.": "No demanis confirmació.",
"Do not lose the password as, for security purposes, this will be the *only* way to decrypt the data! To enable encryption, please enter your password below.": "No perdeu les contrasenyes perquè, per motius de seguretat, és l'única forma de desxifrar les dades. Per habilitar el xifrat, introduïu la vostra contrasenya.",
"Download": "Baixa",
"Download and install the relevant extension for your browser:": "Descarregueu i instal·leu l'extensió adient per al vostre navegador:",
"Downloaded": "Descarregat",
@@ -280,16 +274,12 @@
"Enable Web Clipper Service": "Activa el servei del porta-retalls de webs",
"Enable ~sub~ syntax": "Activa la sintaxi ~sub~",
"Enabled": "Activat",
"Enabling encryption means *all* your notes and attachments are going to be re-synchronised and sent encrypted to the sync target.": "Habilitar el xifrat significa que totes les notes i adjunts es tornaran a sincronitzar i s'enviaran de forma xifrada a la destinació de sincronització.",
"Encrypted": "Xifrat",
"Encrypted items cannot be modified": "Els elements xifrats no es poden modificar",
"Encrypted notebooks cannot be renamed": "No es pot canviar el nom dels blocs de notes xifrats",
"Encryption": "Xifratge",
"Encryption Config": "Configuració del xifratge",
"Encryption is: %s": "El xifratge és: %s",
"Encryption keys": "Claus de xifrat",
"Encryption:": "Xifrat:",
"End-to-end encryption": "Xifrat d'extrem a extrem",
"Enter code here": "Entreu el codi aquí",
"Enter master password:": "Introduïu una contrasenya mestra:",
"Enter notebook title": "Entra el títol del bloc de notes",
@@ -298,7 +288,7 @@
"Error opening note in editor: %s": "S'ha produït un error en l'obrir la nota amb l'editor: %s",
"Error. Please check that URL, username, password, etc. are correct and that the sync target is accessible. The reported error was:": "Error. Comproveu que l’URL, el nom d’usuari, la contrasenya, etc. siguin correctes i que el servei a sincronitzar sigui accessible. L'error reportat ha estat:",
"Error: %s": "Error: %s",
"Errors only": "Només errors",
"Errors only": "Només els errors",
"Evernote Export File (as HTML)": "Exporta com a fitxer de l'Evernote (com a HTML)",
"Evernote Export File (as Markdown)": "Exporta com a fitxer de l'Evernote (com a Markdown)",
"Exits the application.": "Surt de l'aplicació.",
@@ -331,13 +321,11 @@
"For information on how to customise the shortcuts please visit %s": "Per a obtenir informació sobre com personalitzar les dreceres de teclat, visiteu %s",
"For more information about End-To-End Encryption (E2EE) and advice on how to enable it please check the documentation:": "Per a més informació sobre el xifratge d'extrem a extrem (E2EE de l'anglès) i consells sobre com activar-lo, llegiu la documentació:",
"For the list of keyboard shortcuts and config options, type `help keymap`": "Per a llistar les dreceres de teclat i opcions de configuració, escriviu «help keymap»",
"Force path style": "Força l'estil del camí",
"Forward": "Endavant",
"Found: %d.": "Trobades: %d.",
"FTS enabled: %d": "FTS activat: %d",
"Full changelog": "Registre complet de canvis",
"General": "General",
"Generated": "Generat",
"Generating link...": "Generant enllaç...",
"Get it now:": "Obteniu-lo ara:",
"Get pre-releases when checking for updates": "Obtén prellançaments quan cerqui actualitzacions",
@@ -348,10 +336,8 @@
"Heading": "Capçalera",
"Help": "Ajuda",
"Hide %s": "Amaga %s",
"Hide disabled keys": "Amaga les claus deshabilitades",
"Hide Joplin": "Amaga el Joplin",
"Highlight": "Ressalta",
"Home": "Inici",
"Horizontal Rule": "Línia horitzontal",
"HTML Directory": "Directori HTML",
"HTML File": "Fitxer HTML",
@@ -389,10 +375,8 @@
"Invalid answer: %s": "La resposta no és vàlida: %s",
"Invalid command: \"%s\"": "Ordre no vàlida: «%s»",
"Invalid option value: \"%s\". Possible values are: %s.": "El valor de l'opció no és vàlid: «%s». Els valors possibles són: %s.",
"Invalid password": "Contrasenya incorrecta",
"Italic": "Cursiva",
"Item \"%s\" could not be downloaded: %s": "L'element \"%s\" no s'ha pogut descarregar: %s",
"Items": "Elements",
"Items that cannot be decrypted": "Elements que no s'han pogut desxifrar",
"Items that cannot be synchronised": "Elements que no s'han pogut sincronitzar",
"Joplin can synchronise your notes using various providers. Select one from the list below.": "Joplin pot sincronitzar les notes utilitzant diversos proveïdors. Seleccioneu-ne un de la llista inferior.",
@@ -415,14 +399,12 @@
"Keyboard Shortcut": "Drecera de teclat",
"Keyboard Shortcuts": "Dreceres de teclat",
"Keychain Supported: %s": "Clauer admès: %s",
"Keys that need upgrading": "Claus que requereixen actualització",
"Landscape": "Paisatge",
"Language": "Llengua",
"Last error: %s": "Últim error: %s",
"Later": "Més tard",
"Layout": "Disposició",
"Layout button sequence": "Seqüència del botó de disposició",
"Leave notebook...": "Surt del bloc de notes",
"Legal": "Legal",
"Letter": "Carta",
"Light": "Clar",
@@ -430,7 +412,6 @@
"Link has been copied to clipboard!": "L'enllaç s'ha copiat al porta-retalls!",
"Links with protocol \"%s\" are not supported": "Els enllaços amb el protocol %s no estan suportats",
"List item": "Element de llista",
"Loaded": "S'ha carregat",
"Location": "Ubicació",
"Lock file is already being hold. If you know that no synchronisation is taking place, you may delete the lock file at \"%s\" and resume the operation.": "El fitxer de bloqueig està ús. Si sabeu que no s'està executant cap sincronització ara mateix, podeu suprimir el fitxer de bloqueig a «%s» i reprendre l'operació.",
"Log": "Registre",
@@ -438,30 +419,22 @@
"Login below.": "Identifiqueu-vos baix.",
"Login with Dropbox": "Inicia sessió amb Dropbox",
"Login with OneDrive": "Inicia sessió amb OneDrive",
"Logout": "Desconnecta",
"Make a donation": "Donatius",
"Manage master password": "Gestiona la contrasenya mestra",
"Manage master password...": "Gestiona la contrasenya mestra...",
"Manage your plugins": "Gestioneu les extensions",
"Manages E2EE configuration. Commands are `enable`, `disable`, `decrypt`, `status`, `decrypt-file`, and `target-status`.": "Gestiona la configuració E2EE. Les ordres són `enable`, `disable`, `decrypt`, `status`, `decrypt-file`, i `target-status`.",
"Manage your plugins": "Gestioneu els connectors",
"Manual": "Manual",
"Markdown": "Markdown",
"Markdown + Front Matter": "Markdown + Front Matter",
"Marks a to-do as done.": "Marca un llistat de tasques pendents com a fet.",
"Marks a to-do as non-completed.": "Marca un llistat de tasques pendents com a no finalitzat.",
"Markup": "Marcatge",
"Master Key %s": "Clau mestra %s",
"Master password": "Contrasenya mestra",
"Master password:": "Contrasenya mestra:",
"Max concurrent connections": "Connexions simultànies màximes",
"Missing keys": "Claus que falten",
"Missing Master Keys": "Manquen les claus mestres",
"Missing required argument: %s": "Manca un argument requerit: %s",
"Mobile data - auto-sync disabled": "Dades mòbils - sincronització automàtica desactivada",
"More info": "Més informació",
"More information": "Més informació",
"More than one item match \"%s\". Please narrow down your query.": "Hi ha més d'un element que coincideix amb «%s». Restringiu la consulta.",
"Move %d notes to notebook \"%s\"?": "Voleu moure %dnotes al bloc de notes \"%s\"?",
"Move %d notes to notebook \"%s\"?": "Voleu moure %d notes al bloc de notes «%s»?",
"Move to notebook": "Mou al bloc de notes",
"Move to notebook...": "Mou al bloc de notes...",
"Move to notebook:": "Mou al bloc de notes:",
@@ -495,7 +468,6 @@
"Nord": "Nord",
"Not authentified with %s. Please provide any missing credentials.": "No esteu autenticats amb %s. Proporcioneu les credencials que falten.",
"Not downloaded": "No descarregat",
"Not generated": "No s'ha generat",
"note": "nota",
"Note": "Nota",
"Note area growth factor": "Factor de creixement de l'àrea de nota",
@@ -513,12 +485,11 @@
"Note&book": "&Blocs de notes",
"Note: Does not work in all desktop environments.": "Nota: no funciona en tots els entorns d'escriptori.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Nota: quan es comparteix una nota, deixa d'estar xifrada al servidor.",
"Notebook": "Bloc de notes",
"Notebook list growth factor": "Factor de creixement de la llista de blocs de notes",
"Notebook title:": "Títol del bloc de notes:",
"Notebook: %s": "Blocs de notes: %s",
"Notebooks": "Blocs de notes",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Els blocs de notes no poden tenir el nom «%s», és un títol reservat.",
"Notes": "otes",
"Notes and settings are stored in: %s": "Les notes i la configuració es desen a: %s",
"Notes can only be created within a notebook.": "Només podeu crear notes en un bloc de notes.",
"Numbered List": "Llista numerada",
@@ -551,21 +522,19 @@
"PDF File": "Fitxer PDF",
"Permission needed": "Cal permís",
"Permission to use camera": "Permís per a utilitzar la càmera",
"Please click on \"%s\" to proceed": "Feu clic a \"%s\" per a continuar",
"Please confirm that you would like to re-encrypt your complete database.": "Confirmeu que voleu tornar a xifrar la vostra base de dades completa.",
"Please enter your password in the master key list below before upgrading the key.": "Entreu la vostra contrasenya en la llista de claus mestres d'aquí a sota abans d'actualitzar la clau.",
"Please note that if it is a large notebook, it may take a few minutes for all the notes to show up on the recipient's device.": "Teniu en compte que si és un bloc de notes llarg, pot necessitar uns quants minuts fins que totes les notes es mostren al dispositiu del destinatari.",
"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.": "Obriu l'URL següent al navegador per a autenticar l'aplicació. L'aplicació crearà un directori a «Aplicacions/Joplin» i només llegirà i escriurà fitxers en aquest directory. No tindrà accés a cap fitxer fora d'aquest directori ni a cap dada personal. No es compartirà cap dada amb terceres parts.",
"Please select a notebook first.": "Cal que primer seleccioneu un bloc de notes.",
"Please select the note or notebook to be deleted first.": "Primer seleccioneu la nota o el bloc de notes que vulgueu suprimir.",
"Please select where the sync status should be exported to": "Seleccioneu on s'hauria d'exportar l'estat de la sincronització",
"Please specify import format for %s": "Indiqueu el format d'importació per a %s",
"Please specify the notebook where the notes should be imported to.": "Indiqueu el bloc de notes on s'haurien d'importar les notes.",
"Please upgrade Joplin to use this plugin": "Si us plau, actualitzeu Joplin per a utilitzar aquesta extensió",
"Please upgrade Joplin to use this plugin": "Si us plau, actualitzeu Joplin per a utilitzar aquest connector",
"Please wait for all attachments to be downloaded and decrypted. You may also switch to %s to edit the note.": "Espereu que tots els adjunts hagin estat descarregats i desxifrats. També podeu canviar a %s per a editar la nota.",
"Please wait...": "Espereu...",
"Plugin tools": "Eines de les extensions",
"Plugins": "Extensions",
"Plugin tools": "Eines dels connectors",
"Plugins": "Connectors",
"Portrait": "Retrat",
"Possible keys/values:": "Valors/claus possibles:",
"Possible values: %s.": "Valors possibles: %s.",
@@ -576,13 +545,12 @@
"Press Ctrl+D or type \"exit\" to exit the application": "Premeu Ctrl+D o escriviu «exit» per a sortir de l'aplicació",
"Press the shortcut": "Premeu la drecera",
"Press the shortcut and then press ENTER. Or, press BACKSPACE to clear the shortcut.": "Premeu la drecera i premeu RETORN. O, premeu RETROCÉS per a esborrar la drecera.",
"Press to set the decryption password.": "Premeu per a definir la contrasenya de desxifrat.",
"Press to set the decryption password.": "Premeu per a establir la contrasenya de desxifratge.",
"Previous versions of this note": "Versions prèvies d'aquesta nota",
"Print": "Imprimeix",
"Privacy Policy": "Política de privacitat",
"Profile Version: %s": "Versió del perfil: %s",
"Properties": "Propietats",
"Public-private key pair:": "Parell de claus pública-privada:",
"Publish note...": "Publica la nota...",
"Publish Notes": "Publica notes",
"Publish notes to the internet": "Publica les notes a internet",
@@ -607,7 +575,6 @@
"Rename tag:": "Canvia el nom de l'etiqueta:",
"Renames the given <item> (note or notebook) to <name>.": "Canvia el nom de la nota o bloc de notes indicat de <item> a <name>.",
"Renew token": "Renova el testimoni",
"Reset master password": "Torna a definir la contrasenya mestra",
"Resources: %d.": "Recursos: %d.",
"Restart and upgrade": "Reinicia i actualitza",
"Restart now": "Reinicia ara",
@@ -620,13 +587,7 @@
"Reverses the sorting order.": "Inverteix el criteri d'ordenació.",
"Revision: %s (%s)": "Revisió: %s (%s)",
"Runs the commands contained in the text file. There should be one command per line.": "Executa les ordres contingudes al fitxer de text. Hi ha d'haver una ordre per línia.",
"S3": "S3",
"S3 access key": "Clau d'acces d'S3",
"S3 bucket": "Bucket S3",
"S3 region": "Regió S3",
"S3 secret key": "Clau secreta S3",
"S3 URL": "URL S3",
"Safe mode is currently active. Note rendering and all plugins are temporarily disabled.": "El mode segur està actiu actualment. La renderització de notes i totes les extensions estan temporalment inhabilitades.",
"Safe mode is currently active. Note rendering and all plugins are temporarily disabled.": "El mode segur està actiu actualment. La renderització de notes i tots els connectors estan temporalment inhabilitats.",
"Save": "Desa",
"Save alarm": "Desa l'alarma",
"Save as...": "Anomena i desa...",
@@ -647,7 +608,6 @@
"Server is running on port %d": "El servidor està corrent en el port %d",
"Set alarm": "Estableix una alarma",
"Set alarm:": "Estableix una alarma:",
"Set it to 0 to make it take the complete available space. Recommended width is 600.": "Definiu-ho a 0 perquè ocupe tot l'espai disponible. L'amplària recomanada és 600.",
"Set the password": "Establiu la contrasenya",
"Sets the property <name> of the given <note> to the given [value]. Possible properties are:\n\n%s": "Estableix la propietat <name> de la <note> indicada al [valor] donat. Les propietats possibles són:\n\n%s",
"Share": "Comparteix",
@@ -658,9 +618,7 @@
"Show Advanced Settings": "Mostra opcions avançades",
"Show all": "Mostra-ho tot",
"Show completed to-dos": "Mostra els llistats de tasques pendents finalitzats",
"Show disabled keys": "Mostra les claus deshabilitades",
"Show note counts": "Mostra el nombre de notes",
"Show sort order buttons": "Mostra els botons de canviar l'ordenació",
"Show tray icon": "Mostra la icona a la safata",
"Sidebar": "Barra lateral",
"Size": "Mida",
@@ -671,7 +629,7 @@
"Solarised Light": "Solaritzat clar",
"Some items cannot be decrypted.": "Alguns elements no s'han pogut desxifrar.",
"Some items cannot be synchronised.": "Alguns elements no s'han pogut sincronitzar.",
"Some items cannot be synchronised. Press for more info.": "Alguns elements no es poden sincronitzar. Premeu per a més informació.",
"Some items cannot be synchronised. Press for more info.": "Alguns elements no s'han pogut sincronitzar. Premeu per a més informació.",
"Sort notebooks by": "Ordena els blocs de notes per",
"Sort notes by": "Ordena les notes per",
"Sort selected lines": "Ordena les línies seleccionades",
@@ -731,7 +689,6 @@
"Tagged: %d.": "Etiquetats: %d.",
"Tags": "Etiquetes",
"Take photo": "Fes una foto",
"Tasks": "Tasques",
"Text editor command": "Ordre de l'editor de text",
"Thank you! Your Joplin Cloud account is now setup and ready to use.": "Gràcies! El vostre compte de Joplin Cloud està preparat per a utilitzar-se.",
"The app is now going to close. Please relaunch it to complete the process.": "L'aplicació es tancarà ara. Si us plau, torneu-la a executar per a completar el procés.",
@@ -747,19 +704,14 @@
"The editor command (may include arguments) that will be used to open a note. If none is provided it will try to auto-detect the default editor.": "L'ordre de l'editor (que pot incloure arguments) que s'usarà per a obrir una nota. Si no se'n proporciona cap, es detectarà automàticament l'editor predeterminat.",
"The factor property sets how the item will grow or shrink to fit the available space in its container with respect to the other items. Thus an item with a factor of 2 will take twice as much space as an item with a factor of 1.Restart app to see changes.": "La propietat factor defineix com l’element creixerà o es reduirà per a ajustar-se a l’espai disponible al seu contenidor respecte als altres elements. Per tant, un element amb un factor de 2 ocuparà el doble d’espai que un element amb un factor d'1. Reinicieu l’aplicació per a veure els canvis.",
"The following attachments are being watched for changes:": "S'estan vigilant els següents adjunts per si hi ha canvis:",
"The following keys use an out-dated encryption algorithm and it is recommended to upgrade them. The upgraded key will still be able to decrypt and encrypt your data as usual.": "Les següents claus utilitzen un algorisme de xifrat obsolet i és recomanable actualitzar-les. La clau actualitzada podrà xifrar i desxifrar les dades com és habitual.",
"The Joplin mobile app does not currently support this type of link: %s": "L'aplicació mòbil del Joplin, ara per ara, no admet aquest tipus d'enllaç: %s",
"The Joplin team has vetted this plugin and it meets our standards for security and performance.": "L'equip de Joplin ha comprovat aquesta extensió i compleix els nostres estàndards de seguretat i rendiment.",
"The keys with these IDs are used to encrypt some of your items, however the application does not currently have access to them. It is likely they will eventually be downloaded via synchronisation.": "Les claus amb aquests ID s'utilitzen per a xifrar alguns elements. Tot i això, l'aplicació no hi té accés. És probable que es baixen en algun moment via sincronització.",
"The master key has been upgraded successfully!": "La clau mestra s'ha actualitzat amb èxit!",
"The master keys with these IDs are used to encrypt some of your items, however the application does not currently have access to them. It is likely they will eventually be downloaded via synchronisation.": "Les claus mestres amb aquests ID s'usen per a xifrar alguns dels elements. Tot i això l'aplicació actualment no hi té accés. Probablement es baixaran via sincronització.",
"The note \"%s\" has been successfully restored to the notebook \"%s\".": "La nota «%s» s'ha restaurat amb èxit en el bloc de notes «%s».",
"The notebook could not be saved: %s": "No s'ha pogut desar el bloc de notes: %s",
"The notes have been imported: %s": "Notes s'han importat: %s",
"The possible commands are:": "Les ordres possibles són:",
"The recipient could not be removed from the list. Please try again.\n\nThe error was: \"%s\"": "El destinatari no s'ha pogut eliminar de la llista. Torneu-ho a provar.\n\nL'error era \"%s\"",
"The sync target needs to be upgraded before Joplin can sync. The operation may take a few minutes to complete and the app needs to be restarted. To proceed please click on the link.": "Cal actualitzar l'objectiu de sincronització abans que Joplin pugui sincronitzar. L'operació pot trigar uns minuts a completar-se i cal reiniciar l'aplicació. Per a continuar, feu clic a l'enllaç.",
"The sync target needs to be upgraded. Press this banner to proceed.": "La destinació de sincronització s'ha d'actualitzar. Premeu aquest bàner per procedir.",
"The tag \"%s\" already exists. Please choose a different name.": "L'etiqueta \"%s\" ja existeix. Escolliu un nom diferent.",
"The target to synchronise to. Each sync target may have additional parameters which are named as `sync.NUM.NAME` (all documented below).": "L'objectiu on se sincronitzarà. Cada objectiu pot tenir paràmetres addicionals que s'anomenen «sync.NUM.NAME» (tots documentats a sota).",
"The Web Clipper needs your authorisation to access your data.": "El porta-retalls web necessita autorització per a accedir a les vostres dades.",
@@ -773,7 +725,7 @@
"There was an error downloading this attachment:": "Hi ha hagut un error en baixar aquest adjunt:",
"There was an error setting up your Joplin Cloud account. Please verify your email and password and try again. Error was:\n\n%s": "S'ha produït un error configurant el vostre compte de Joplin Cloud. Verifiqueu el vostre correu electrònic i la contrasenya, i proveu de nou. L'error ha sigut:\n\n%s",
"These items will remain on the device but will not be uploaded to the sync target. In order to find these items, either search for the title or the ID (which is displayed in brackets above).": "Aquests elements es mantindran al dispositiu, però no es pujaran a la destinació de sincronització. Per a poder trobar aquests elements, podeu cercar pel títol o la ID (que es mostra entre claudàtors a sobre).",
"These plugins enhance the Markdown renderer with additional features. Please note that, while these features might be useful, they are not standard Markdown and thus most of them will only work in Joplin. Additionally, some of them are *incompatible* with the WYSIWYG editor. If you open a note that uses one of these plugins in that editor, you will lose the plugin formatting. It is indicated below which plugins are compatible or not with the WYSIWYG editor.": "Aquestes extensions milloren el renderitzador de Markdown amb funcions addicionals. Tingueu en compte que, tot i que aquestes funcions poden ser útils, no són Markdown estàndard i, per tant, la majoria només funcionaran dins de Joplin. A més, alguneas d’ells són *incompatibles* amb l’editor WYSIWYG. Si obriu una nota que utilitza un d'aquestes extensions en aquest editor, perdreu el format de l'extensió. A continuació s’indica quines extensions són compatibles o no amb l’editor WYSIWYG.",
"These plugins enhance the Markdown renderer with additional features. Please note that, while these features might be useful, they are not standard Markdown and thus most of them will only work in Joplin. Additionally, some of them are *incompatible* with the WYSIWYG editor. If you open a note that uses one of these plugins in that editor, you will lose the plugin formatting. It is indicated below which plugins are compatible or not with the WYSIWYG editor.": "Aquestes extensions milloren el renderitzador de Markdown amb funcions addicionals. Tingueu en compte que, tot i que aquestes funcions poden ser útils, no són Markdown estàndard i, per tant, la majoria només funcionaran dins de Joplin. A més, alguns d’ells són *incompatibles* amb l’editor WYSIWYG. Si obriu una nota que utilitza un d'aquests connectors en aquest editor, perdreu el format del connector. A continuació s’indica quins connectors són compatibles o no amb l’editor WYSIWYG.",
"This attachment is not downloaded or not decrypted yet": "Aquest adjunt no ha estat descarregat o desxifrat encara",
"This attachment is not downloaded or not decrypted yet.": "Aquest adjunt no s'ha descarregat o no s'ha desxifrat encara.",
"This authorisation token is only needed to allow third-party applications to access Joplin.": "Aquest testimoni d'autorització només és necessari per a permetre l'accés d'aplicacions de tercers al Joplin.",
@@ -786,12 +738,10 @@
"This service allows the browser extension to communicate with Joplin. When enabling it your firewall may ask you to give permission to Joplin to listen to a particular port.": "Aquest servei permet que l'extensió del navegador pugui comunicar-se amb el Joplin. En activar-la, el tallafoc us podria demanar de donar permís al Joplin per a escoltar un port determinat.",
"This will allow Joplin to run in the background. It is recommended to enable this setting so that your notes are constantly being synchronised, thus reducing the number of conflicts.": "Això permetrà que Joplin s’executi en segon pla. Es recomana habilitar aquesta configuració perquè les notes se sincronitzin constantment, reduint així el nombre de conflictes.",
"This will open a new screen. Save your current changes?": "Això obrirà una nova pantalla. Voleu desar els canvis actuals?",
"This will remove the notebook from your collection and you will no longer have access to its content. Do you wish to continue?": "Això eliminarà el bloc de notes de la vostra col·lecció i no hi tindreu accés al contingut. Voleu continuar?",
"Time format": "Format horari",
"title": "títol",
"Title": "Títol",
"To allow Joplin to synchronise with Dropbox, please follow the steps below:": "Per a permetre que el Joplin sincronitzi amb el Dropbox, seguiu les passes següents:",
"To continue, please enter your master password below.": "Per a continuar, introduïu la contrasenya mestra.",
"To delete a tag, untag the associated notes.": "Per a suprimir una etiqueta, traieu l'etiqueta en les notes associades.",
"To delete: %d": "Per a suprimir: %d",
"To enter command line mode, press \":\"": "Per a anar al mode de línia d'ordres, premeu «:»",
@@ -808,10 +758,8 @@
"Toggle editors": "Canvia disposició de l'editor",
"Toggle external editing": "Activa/desactiva l'edició externa",
"Toggle note list": "Mostra o amaga llista de notes",
"Toggle own sort order": "Canvia l'ordenació",
"Toggle safe mode": "Activa/desactiva el mode segur",
"Toggle sidebar": "Mostra o amaga barra lateral",
"Toggle sort order field": "Canvia el camp d'ordenació",
"Token has been copied to the clipboard!": "El testimoni s'ha copiat al porta-retalls!",
"Tools": "Eines",
"Total: %d/%d": "Total: %d/%d",
@@ -851,7 +799,6 @@
"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.": "Utilitzeu això per a reconstruir l'índex de cerca si hi ha un problema amb la cerca. Pot trigar molt en funció del nombre de notes.",
"Used for most text in the markdown editor. If not found, a generic proportional (variable width) font is used.": "S'utilitza per a la majoria de text a l'editor Markdown. Si no es troba, s'utilitza un tipus de lletra genèric proporcional (amplada variable).",
"Used where a fixed width font is needed to lay out text legibly (e.g. tables, checkboxes, code). If not found, a generic monospace (fixed width) font is used.": "S'utilitza quan es necessita un tipus de lletra d'amplada fixa per a mostrar text de manera llegible (p. ex. taules, caselles de selecció, codi). Si no es troba, s'utilitza un tipus de lletra genèric monoespai (amplada fixa).",
"Users": "Usuaris",
"Valid": "Vàlid",
"View": "Vista",
"View on map": "Mostra-ho al mapa",
@@ -881,8 +828,6 @@
"You may use the tool below to re-encrypt your data, for example if you know that some of your notes are encrypted with an obsolete encryption method.": "Podeu utilitzar l'eina següent per tornar a xifrar les vostres dades, per exemple si sabeu que algunes de les vostres notes estan xifrades amb un mètode de xifratge obsolet.",
"Your choice: ": "La vostra tria: ",
"Your data is going to be re-encrypted and synced again.": "Les vostres dades es tornaran a xifrar i sincronitzar.",
"Your master password is needed to decrypt some of your data.": "La contrasenya mestra és necessària per a desxifrar algunes dades.",
"Your password is needed to decrypt some of your data. Type `:e2ee decrypt` to set it.": "La contrasenya és necessària per a desxifrar algunes dades. Teclegeu `:e2ee decrypt` per definir-la.",
"Your permission to use your camera is required.": "Es necessita el vostre permís per a utilitzar la càmera.",
"Your version: %s": "La vostra versió: %s",
"Zoom In": "Ampliar",

View File

@@ -77,6 +77,7 @@
"Auto": "Automaticky",
"Auto-pair braces, parenthesis, quotations, etc.": "Automaticky zdvojit uvozovky, závorky, apod.",
"Automatically switch theme to match system theme": "Automaticky přepnout téma vzhledu podle nastavení systému",
"Automatically update the application": "Automaticky aktualizovat aplikaci",
"Back": "Zpět",
"Bold": "Tučně",
"Browse all plugins": "Procházet všechna rozšíření",
@@ -465,6 +466,7 @@
"Note: Does not work in all desktop environments.": "Poznámka: Nefunguje v některých desktopových prostředích.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Poznámka: pokud je poznámka sdílena, už nebude na serveru šifrována.",
"Notebook list growth factor": "Růstový faktor seznamu notebooků",
"Notebook title:": "Název zápisníku:",
"Notebook: %s": "Zápisník: %s",
"Notebooks": "Zápisníky",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Zápisník se nemůže jmenovat \"%s\", tento název je rezervován.",

View File

@@ -51,8 +51,6 @@
"Add recipient:": "Tilføj modtager:",
"Add title": "Tilføj titel",
"Add to dictionary": "Tilføj til ordbog",
"Admin": "Admin",
"Admin dashboard": "Kontrolpanel til administration",
"Advanced options": "Avancerede indstillinger",
"Advanced tools": "Avancerede værktøjer",
"All notes": "Alle noter",
@@ -80,8 +78,8 @@
"Authorisation token:": "Autoriseringstoken:",
"Auto": "Auto",
"Auto-pair braces, parenthesis, quotations, etc.": "Auto-par klammer, parenteser, citater, etc.",
"Automatically check for updates": "Tjek automatisk efter opdateringer",
"Automatically switch theme to match system theme": "Skifter automatisk tema så det matcher systemets tema",
"Automatically update the application": "Opdater automatisk applikationen",
"Back": "Tilbage",
"Bold": "Fed",
"Browse all plugins": "Gennemse alle udvidelser",
@@ -148,7 +146,6 @@
"Copy": "Kopier",
"Copy dev mode command to clipboard": "Kopier udviklertilstand-kommando til udklipsholderen",
"Copy external link": "Kopiér eksternt link",
"Copy image": "Kopier billede",
"Copy Link Address": "Kopier linkadresse",
"Copy Markdown link": "Kopier markdown link",
"Copy path to clipboard": "Kopier sti til udklipsholder",
@@ -161,10 +158,7 @@
"Could not install plugin: %s": "Kunne ikke installere plugin: %s",
"Could not respond to the invitation. Please try again, or check with the notebook owner if they are still sharing it.\n\nThe error was: \"%s\"": "Kunne ikke svare på invitationen. Prøv venligst igen, eller kontakt ejeren af notesbogen, hvis de stadig deler den\n\nFejlen var: \"%s\"",
"Could not upgrade master key: %s": "Kunne ikke opgradere hovednøgle: %s",
"Could not verify the share status of this notebook - aborting. Please try again when you are connected to the internet.": "Kunne ikke verificere denne notesbogs status for deling - afbryder. Prøv venligst igen, når du har forbindelse til internettet.",
"Create a notebook": "Opret en notesbog",
"Create notebook": "Opret notesbog",
"Create user": "Opret bruger",
"Created": "Oprettet",
"created date": "oprettelsesdato",
"Created local items: %d.": "Oprettede lokale emner: %d.",
@@ -186,7 +180,6 @@
"Custom TLS certificates": "Brugerdefinerede TLS certifikater",
"Cut": "Klip",
"Dark": "Mørkt",
"Dashboard": "Kontrolpanel",
"Database v%s": "Database v%s",
"Date": "Dato",
"Date format": "Datoformat",
@@ -338,7 +331,6 @@
"For information on how to customise the shortcuts please visit %s": "For info om tilpasning af links, besøg %s",
"For more information about End-To-End Encryption (E2EE) and advice on how to enable it please check the documentation:": "Se dokumentationen for nærmere oplysninger om End-To-End-kryptering (E2EE) og vejledning om hvordan det skal aktiveres:",
"For the list of keyboard shortcuts and config options, type `help keymap`": "For at få vist listen af tastatur genveje og konfigurationsmuligheder, test `help keymap`",
"Force path style": "Gennemtving sti-stil",
"Forward": "Videresend",
"Found: %d.": "Fundet: %d.",
"FTS enabled: %d": "Fuld-tekst søgning slået til: %d",
@@ -353,17 +345,14 @@
"Goto Anything...": "Gå til tilfældig...",
"Grant authorisation": "Giv tilladelse",
"Heading": "Overskrift",
"Help": "Hjælp",
"Hide %s": "Skjul %s",
"Hide disabled keys": "Skjul deaktiverede nøgler",
"Hide Joplin": "Skjul Joplin",
"Highlight": "Fremhæv",
"Home": "Hjem",
"Horizontal Rule": "Vandret linje",
"HTML Directory": "HTML Indeks",
"HTML File": "HTML fil",
"Hyperlink": "Hyperlink",
"Icon": "Ikon",
"ID": "ID",
"Idle": "Ledig",
"Ignore": "Ignorér",
@@ -396,10 +385,8 @@
"Invalid answer: %s": "Forkert svar: %s",
"Invalid command: \"%s\"": "Ulovlig kommando: \"%s\"",
"Invalid option value: \"%s\". Possible values are: %s.": "Ulovlig indstillingsværdi: \"%s\". Mulige valg er: %s.",
"Invalid password": "Ugyldig adgangskode",
"Italic": "Kursiv",
"Item \"%s\" could not be downloaded: %s": "Emnet \"%s\" kunne ikke downloades: %s",
"Items": "Emner",
"Items that cannot be decrypted": "Emner der ikke kan dekrypteres",
"Items that cannot be synchronised": "Emner kan ikke synkroniseres",
"Joplin can synchronise your notes using various providers. Select one from the list below.": "Joplin kan synkronisere dine noter ved hjælp af forskellige tjenesteudbydere. Vælg en fra listen nedenfor.",
@@ -445,8 +432,6 @@
"Login below.": "Log ind nedenfor.",
"Login with Dropbox": "Log på med Dropbox",
"Login with OneDrive": "Log på med OneDrive",
"Logout": "Log ud",
"Logs": "Logfiler",
"Make a donation": "Giv en donation",
"Manage master password": "Administrer hovedadgangskode",
"Manage master password...": "Administrer hovedadgangskode...",
@@ -521,12 +506,11 @@
"Note&book": "Note&bog",
"Note: Does not work in all desktop environments.": "OBS: Virker ikke i alle skrivebordsmiljøer.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Bemærk: Når en note bliver delt, vil den ikke længere være krypteret på serveren.",
"Notebook": "Notesbog",
"Notebook list growth factor": "Notesbogsliste-vækstfaktor",
"Notebook title:": "Notesbogstitel:",
"Notebook: %s": "Notesbog: %s",
"Notebooks": "Notesbøger",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Notesbøger kan ikke navngives \"%s\", da det er en reserveret titel.",
"Notes": "Noter",
"Notes and settings are stored in: %s": "Noter og indstillinger er gemt i: %s",
"Notes can only be created within a notebook.": "Noter kan kun oprettes i en notesbog.",
"Numbered List": "Nummeret liste",
@@ -588,7 +572,6 @@
"Previous versions of this note": "Tidligere udgaver af denne note",
"Print": "Udskriv",
"Privacy Policy": "Privatlivspolitik",
"Profile": "Profil",
"Profile Version: %s": "Profil-version: %s",
"Properties": "Egenskaber",
"Public-private key pair:": "Offentligt-privat nøglepar:",
@@ -629,12 +612,6 @@
"Reverses the sorting order.": "Modsat sortering.",
"Revision: %s (%s)": "Revision: %s (%s)",
"Runs the commands contained in the text file. There should be one command per line.": "Afvikler kommandoerne i tekstfilen. Der skal være én kommando pr. linje.",
"S3": "S3",
"S3 access key": "S3-adgangsnøgle",
"S3 bucket": "S3 bucket",
"S3 region": "S3-region",
"S3 secret key": "S3 hemmelig nøgle",
"S3 URL": "S3 URL",
"Safe mode is currently active. Note rendering and all plugins are temporarily disabled.": "Fejlsikret tilstand er aktiv i øjeblikket. Notegengivelse og alle plugins er midlertidigt deaktiveret.",
"Save": "Gem",
"Save alarm": "Gem alarm",
@@ -669,7 +646,6 @@
"Show completed to-dos": "Vis færdige opgaver",
"Show disabled keys": "Vis deaktiverede nøgler",
"Show note counts": "Vis noteantal",
"Show sort order buttons": "Vis knapper til sorteringsrækkefølge",
"Show tray icon": "Vis ikon på bundbjælke",
"Sidebar": "Sidebjælke",
"Size": "Størrelse",
@@ -740,7 +716,6 @@
"Tagged: %d.": "Etiketterede: %d.",
"Tags": "Etiketter",
"Take photo": "Tag et foto",
"Tasks": "Opgaver",
"Text editor command": "Tekstredigeringskomando",
"Thank you! Your Joplin Cloud account is now setup and ready to use.": "Mange tak! Din Joplin Cloud-konto er nu indstillet og klar til brug.",
"The app is now going to close. Please relaunch it to complete the process.": "Appen lukker nu. Genstart den for at fuldføre processen.",
@@ -817,10 +792,8 @@
"Toggle editors": "Skift editorer",
"Toggle external editing": "Slå ekstern redigering til eller fra",
"Toggle note list": "Slå noteliste til eller fra",
"Toggle own sort order": "Slå egen sorteringsrækkefølge til eller fra",
"Toggle safe mode": "Slå fejlsikret tilstand til eller fra",
"Toggle sidebar": "Slå sidebar til eller fra",
"Toggle sort order field": "Slå felt for sorteringsrækkefølge til eller fra",
"Token has been copied to the clipboard!": "Din token er blevet kopieret til udklipsholderen!",
"Tools": "Værktøjer",
"Total: %d/%d": "I alt: %d/%d",
@@ -841,7 +814,6 @@
"Unsupported link or message: %s": "Ugyldigt link eller besked: %s",
"Untitled": "Uden titel",
"Update": "Opdater",
"Update profile": "Opdater profil",
"Updated": "Opdateret",
"updated date": "opdateringsdato",
"Updated local items: %d.": "Opdaterede lokale emner: %d.",
@@ -861,8 +833,6 @@
"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.": "Brug denne funktion til at genopbygge søgeindekset, hvis der er problemer med søgning. Det kan tage lang tid afhængig af antallet af noter.",
"Used for most text in the markdown editor. If not found, a generic proportional (variable width) font is used.": "Bruges til det meste tekst i markdown-editoren. Hvis ikke fundet, bruges en proportional (variabel bredde) font.",
"Used where a fixed width font is needed to lay out text legibly (e.g. tables, checkboxes, code). If not found, a generic monospace (fixed width) font is used.": "Bruges hvor en font med fast bredde er nødvendig for at vise læsbar tekst (f.eks. tabeller, afkrydsningsfelter, kode). Hvis ikke fundet, bruges en generisk monospatieret (fast bredde) font.",
"User deletions": "Brugersletninger",
"Users": "Brugere",
"Valid": "Gyldig",
"View": "Vis",
"View on map": "Vis på kort",
@@ -893,7 +863,6 @@
"Your choice: ": "Dit valg: ",
"Your data is going to be re-encrypted and synced again.": "Dine data bliver genkrypteret og synkroniseret igen.",
"Your master password is needed to decrypt some of your data.": "Din hovedadgangskode er nødvendig for at dekryptere nogle af dine data.",
"Your password is needed to decrypt some of your data. Type `:e2ee decrypt` to set it.": "Din adgangskode er nødvendig for at dekryptere nogle af dine data. Tast `:e2ee decrypt` for at indstille den.",
"Your permission to use your camera is required.": "Din tilladelse til at bruge kameraet er påkrævet.",
"Your version: %s": "Din version: %s",
"Zoom In": "Zoom ind",

View File

@@ -51,8 +51,6 @@
"Add recipient:": "Füge Empfänger hinzu:",
"Add title": "Titel hinzufügen",
"Add to dictionary": "Zum Wörterbuch hinzufügen",
"Admin": "Admin",
"Admin dashboard": "Admin-Übersichtsseite",
"Advanced options": "Erweiterte Optionen",
"Advanced tools": "Erweiterte Optionen",
"All notes": "Alle Notizen",
@@ -80,8 +78,8 @@
"Authorisation token:": "Berechtigungstoken:",
"Auto": "Automatisch",
"Auto-pair braces, parenthesis, quotations, etc.": "Automatisches Hinzufügen von geschweiften Klammern, runden Klammern, Anführungszeichen usw.",
"Automatically check for updates": "Automatisch auf Aktualisierungen prüfen",
"Automatically switch theme to match system theme": "Automatisch das Design ändern, um es dem System-Design anzupassen",
"Automatically update the application": "Die Anwendung automatisch aktualisieren",
"Back": "Zurück",
"Bold": "Fett",
"Browse all plugins": "Alle Erweiterungen durchsuchen",
@@ -135,7 +133,6 @@
"Completed": "Abgeschlossen",
"Completed decryption.": "Entschlüsselung abgeschlossen.",
"Completed: %s (%s)": "Abgeschlossen: %s (%s)",
"Compress old changes": "Komprimiere alte Änderungen",
"Configuration": "Konfiguration",
"Confirm password cannot be empty": "Bestätigungs-Passwort darf nicht leer sein",
"Confirm password:": "Passwort bestätigen:",
@@ -149,7 +146,6 @@
"Copy": "Kopieren",
"Copy dev mode command to clipboard": "Entwicklermodus-Befehl in Zwischenablage kopieren",
"Copy external link": "Externen Link kopieren",
"Copy image": "Bild kopieren",
"Copy Link Address": "Link-Adresse kopieren",
"Copy Markdown link": "Markdown-Link kopieren",
"Copy path to clipboard": "Pfad in Zwischenablage kopieren",
@@ -164,8 +160,6 @@
"Could not upgrade master key: %s": "Konnte Hauptschlüssel nicht aktualisieren: %s",
"Could not verify the share status of this notebook - aborting. Please try again when you are connected to the internet.": "Der Freigabestatus dieses Notizbuchs konnte nicht überprüft werden - Vorgang wird abgebrochen. Bitte versuche es erneut, wenn eine Internetverbindung besteht.",
"Create a notebook": "Notizbuch erstellen",
"Create notebook": "Notizbuch erstellen",
"Create user": "Benutzer erstellen",
"Created": "Erstellt",
"created date": "Erstellungsdatum",
"Created local items: %d.": "Lokale Elemente erstellt: %d.",
@@ -177,7 +171,7 @@
"Creates a new note.": "Erstellt eine neue Notiz.",
"Creates a new notebook.": "Erstellt ein neues Notizbuch.",
"Creates a new to-do.": "Erstellt eine neue Aufgabe.",
"Creating new %s...": "Neue(s) %s erstellen ...",
"Creating new %s...": "Neue(s) %s wird erstellt ...",
"Creating report...": "Bericht wird erstellt ...",
"Current version is up-to-date.": "Die aktuelle Version ist auf dem neuesten Stand.",
"custom order": "Benutzerdefinierte Reihenfolge",
@@ -187,7 +181,6 @@
"Custom TLS certificates": "Benutzerdefinierte TLS-Zertifikate",
"Cut": "Ausschneiden",
"Dark": "Dunkel",
"Dashboard": "Übersichtsseite",
"Database v%s": "Datenbank v%s",
"Date": "Datum",
"Date format": "Datumsformat",
@@ -199,8 +192,6 @@
"Default: %s": "Standard: %s",
"Delete": "Löschen",
"Delete attachment \"%s\"?": "Anhang „%s“ löschen?",
"Delete expired sessions": "Lösche abgelaufene Sitzungen",
"Delete expired tokens": "Lösche abgelaufene Tokens",
"Delete line": "Zeile löschen",
"Delete local data and re-download from sync target": "Lösche lokale Daten und lade Daten erneut vom Synchronisierungsziel",
"Delete note \"%s\"?": "Notiz „%s“ löschen?",
@@ -265,8 +256,6 @@
"Editor monospace font family": "Nichtproportionale Schriftfamilie im Editor",
"Either \"text\" or \"json\"": "Entweder „text“ oder „json“",
"Emacs": "Emacs",
"Email": "E-Mail",
"Emails": "E-Mails",
"emphasised text": "hervorgehobener Text",
"Enable": "Aktivieren",
"Enable ++insert++ syntax": "Syntax ++insert++ aktivieren",
@@ -451,7 +440,6 @@
"Login with Dropbox": "Mit Dropbox anmelden",
"Login with OneDrive": "Mit OneDrive anmelden",
"Logout": "Abmelden",
"Logs": "Protokolle",
"Make a donation": "Spenden",
"Manage master password": "Master-Passwort verwalten",
"Manage master password...": "Master-Passwort verwalten...",
@@ -528,6 +516,7 @@
"Note: When a note is shared, it will no longer be encrypted on the server.": "Achtung: Wenn eine Notiz geteilt wird, wird sie auf dem Server nicht mehr verschlüsselt sein.",
"Notebook": "Notizbuch",
"Notebook list growth factor": "Notizbuch-Listenwachstumsfaktor",
"Notebook title:": "Notizbuch-Titel:",
"Notebook: %s": "Notizbuch: %s",
"Notebooks": "Notizbücher",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Notizbücher können nicht „%s“ genannt werden, da dies ein reservierter Titel ist.",
@@ -593,10 +582,6 @@
"Previous versions of this note": "Vorherige Version dieser Notiz",
"Print": "Drucken",
"Privacy Policy": "Datenschutzrichtlinie",
"Process failed payment subscriptions": "Verarbeite fehlgeschlagene Zahlungsabonnements",
"Process oversized accounts": "Verarbeite zu große Konten",
"Process user deletions": "Verarbeite Benutzerlöschungen",
"Profile": "Profil",
"Profile Version: %s": "Profil-Version: %s",
"Properties": "Eigenschaften",
"Public-private key pair:": "Öffentlich-Privates Schlüsselpaar:",
@@ -638,11 +623,6 @@
"Revision: %s (%s)": "Revision: %s (%s)",
"Runs the commands contained in the text file. There should be one command per line.": "Führe Befehle aus der Textdatei aus. Jede Zeile darf nur einen Befehl enthalten.",
"S3": "S3",
"S3 access key": "S3-Zugriffsschlüssel",
"S3 bucket": "S3 Bucket",
"S3 region": "S3-Region",
"S3 secret key": "S3 geheimer Sschlüssel",
"S3 URL": "S3 URL",
"Safe mode is currently active. Note rendering and all plugins are temporarily disabled.": "Sicherer Modus aktiv. Notizdarstellung und alle Plugins werden vorübergehend deaktiviert.",
"Save": "Speichern",
"Save alarm": "Alarm speichern",
@@ -849,8 +829,6 @@
"Unsupported link or message: %s": "Nicht unterstützter Link oder Nachricht: %s",
"Untitled": "Unbenannt",
"Update": "Aktualisieren",
"Update profile": "Profil aktualisieren",
"Update total sizes": "Aktualisiere Gesamtgrößen",
"Updated": "Aktualisiert",
"updated date": "Aktualisierungsdatum",
"Updated local items: %d.": "Lokale Elemente aktualisiert: %d.",
@@ -870,7 +848,6 @@
"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.": "Verwende dies, um den Suchindex neu aufzubauen, wenn es ein Problem mit der Suche gibt. Dies kann je nach Anzahl der Notizen eine lange Zeit dauern.",
"Used for most text in the markdown editor. If not found, a generic proportional (variable width) font is used.": "Hauptsächlich für Text im Markdown-Editor verwendet. Falls nicht vorhanden wird eine generische Proportional-Schriftart (mit variabler Breite) verwendet.",
"Used where a fixed width font is needed to lay out text legibly (e.g. tables, checkboxes, code). If not found, a generic monospace (fixed width) font is used.": "Verwendete Schriftart mit fester Breite, um Text lesbar zu machen (z.B. in Tabellen, Kontrollkästchen, Code). Falls nicht vorhanden wird eine Monotype-Scrhiftart (mit fester Breite) verwendet.",
"User deletions": "Benutzer-Löschungen",
"Users": "Benutzer",
"Valid": "Gültig",
"View": "Ansicht",

View File

@@ -73,6 +73,7 @@
"Auto": "Αυτόματα",
"Auto-pair braces, parenthesis, quotations, etc.": "Αυτόματη-σύζευξη αγκίστρων, παρενθέσεων, εισαγωγικών, κ.λπ.",
"Automatically switch theme to match system theme": "Αυτόματη εναλλαγή θέματος ώστε να ταιριάζει με το θέμα συστήματος",
"Automatically update the application": "Αυτόματη ενημέρωση της εφαρμογής",
"Back": "Πίσω",
"Bold": "Έντονη γραφή",
"Browse all plugins": "Αναζήτηση όλων των plugin",
@@ -456,6 +457,7 @@
"Note: Does not work in all desktop environments.": "Σημείωση: Δεν λειτουργεί σε όλα τα γραφικά περιβάλλοντα.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Σημείωση: Όταν μια σημείωση είναι κοινόχρηστη, δεν θα κρυπτογραφείται πλέον στο διακομιστή.",
"Notebook list growth factor": "Συντελεστής ανάπτυξης λίστας σημειωματάριων",
"Notebook title:": "Τίτλος σημειωματάριου:",
"Notebook: %s": "Σημειωματάριο: %s",
"Notebooks": "Σημειωματάρια",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Τα σημειωματάρια δεν μπορούν να ονομαστούν \"%s\", που είναι δεσμευμένος τίτλος.",

View File

@@ -168,6 +168,7 @@
"Note History": "Nota Historio",
"Note is not a to-do: \"%s\"": "Noto ne estas tasko: \"%s\"",
"Note properties": "Notaj atributoj",
"Notebook title:": "Notlibra titolo:",
"Notebook: %s": "Notlibro: %s",
"Notebooks": "Notlibroj",
"Notes and settings are stored in: %s": "Notoj kaj agordoj estas konservitaj en: %s",

View File

@@ -79,6 +79,7 @@
"Auto": "Automático",
"Auto-pair braces, parenthesis, quotations, etc.": "Autoemparejar llaves, paréntesis, comillas, etc.",
"Automatically switch theme to match system theme": "Cambiar automáticamente el tema para que coincida con el tema del sistema",
"Automatically update the application": "Actualizar la aplicación automáticamente",
"Back": "Retroceder",
"Bold": "Negrita",
"Browse all plugins": "Explorar todos los plugins",
@@ -515,6 +516,7 @@
"Note: When a note is shared, it will no longer be encrypted on the server.": "Nota: Cuando se comparte una nota, deja de estar cifrada en el servidor.",
"Notebook": "Libreta",
"Notebook list growth factor": "Factor de crecimiento de la lista de libretas",
"Notebook title:": "Título de libreta:",
"Notebook: %s": "Libretas: %s",
"Notebooks": "Libretas",
"Notebooks cannot be named \"%s\", which is a reserved title.": "No se puede usar el nombre «%s» para una libreta, es un título reservado.",

View File

@@ -280,6 +280,7 @@
"Note is not a to-do: \"%s\"": "Märkus ei ole ülesannete loetelu: %s",
"Note properties": "Märkme atribuudid",
"Note: Does not work in all desktop environments.": "Märkus: ei tööta kõigil töölaua keskkondades.",
"Notebook title:": "Märkmiku tiitel:",
"Notebook: %s": "Märkmik: %s",
"Notebooks": "Sülearvutid",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Märkmikke ei saa nimega \"%s\", mis on reserveeritud tiitel.",

View File

@@ -19,6 +19,7 @@
"Attach photo": "Argazkia erantsi",
"Attaches the given file to the note.": "Erantsi fitxategia notan",
"Authentication was not completed (did not receive an authentication token).": "Autentifikazioa ez da egin osorik (ez du token-ik hartu).",
"Automatically update the application": "Automatikoki eguneratu aplikazioa",
"Back": "Atzera",
"Cancel": "Utzi",
"Cancelling background synchronisation... Please wait.": "Atzeko sinkronizazioa uzten... Mesedez itxaron.",
@@ -139,6 +140,7 @@
"Note does not exist: \"%s\". Create it?": "Ez dago oharrik: \"%s\". Sortu?",
"Note has been saved.": "Oharra gorde da.",
"Note is not a to-do: \"%s\"": "Oharra ez da zeregina: \"%s\"",
"Notebook title:": "Koadernoaren izenburua: ",
"Notebooks": "Koadernoak",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Koadernoak ezin izendatu daitezke \"%s\", izen hori Joplinek gordeta dauka",
"Notes and settings are stored in: %s": "Oharrak eta ezarpenak hemen daude gordeta: %s",

View File

@@ -52,6 +52,7 @@
"Authorisation token:": "توکن مجوز:",
"Auto": "خودکار",
"Automatically switch theme to match system theme": "به طور خودکار پوسته هماهنگ با پوسته سیستم تغییر کند",
"Automatically update the application": "به طور خودکار نرم‌افزار را به‌روز کن",
"Back": "بازگشت",
"Bold": "پررنگ",
"Browse...": "مرور...",
@@ -339,6 +340,7 @@
"Note properties": "جزییات یادداشت",
"Note title": "عنوان یادداشت",
"Notebook list growth factor": "فاکتور رشد لیست دفترچه",
"Notebook title:": "عنوان دفترچه:",
"Notebook: %s": "دفترچه: %s",
"Notebooks": "دفترچه ها",
"Notebooks cannot be named \"%s\", which is a reserved title.": "دفترچه نمی‌تواند «%s» نام داشته باشد، این نام رزرو شده.",

View File

@@ -79,6 +79,7 @@
"Auto": "Automaattinen",
"Auto-pair braces, parenthesis, quotations, etc.": "Yhdistä sulut, sulkeet, lainaukset jne.",
"Automatically switch theme to match system theme": "Vaihda teema automaattisesti vastaamaan järjestelmän teemaa",
"Automatically update the application": "Päivitä sovellus automaattisesti",
"Back": "Takaisin",
"Bold": "Lihavoitu",
"Browse all plugins": "Selaa kaikkia laajennuksia",
@@ -485,6 +486,7 @@
"Note: Does not work in all desktop environments.": "Huomautus: Ei toimi kaikissa työpöytäympäristöissä.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Huomautus: Kun muistiinpano on jaettu, sitä ei enää salata palvelimella.",
"Notebook list growth factor": "Muistikirjaluettelon kasvutekijä",
"Notebook title:": "Muistikirjan otsikko:",
"Notebook: %s": "Muistikirja: %s",
"Notebooks": "Muistikirjat",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Muistikirjoja ei voi nimetä \"%s\", joka on varattu otsikko.",

View File

@@ -51,8 +51,6 @@
"Add recipient:": "Ajouter destinataire :",
"Add title": "Ajoutez le titre",
"Add to dictionary": "Ajouter au dictionnaire",
"Admin": "Admin",
"Admin dashboard": "Tableau de bord",
"Advanced options": "Options avancées",
"Advanced tools": "Outils avancés",
"All notes": "Toutes les notes",
@@ -79,10 +77,9 @@
"Authentication was not completed (did not receive an authentication token).": "Impossible d'autoriser le logiciel (jeton d'identification non‑reçu).",
"Authorisation token:": "Code d'authentification :",
"Auto": "Auto",
"Auto-add disabled accounts for deletion": "Supprimer automatiquement les comptes désactivés",
"Auto-pair braces, parenthesis, quotations, etc.": "Auto‑compléter les paires de parenthèses, guillemets, etc.",
"Automatically check for updates": "Vérifier automatiquement les mises à jour…",
"Automatically switch theme to match system theme": "Changer le thème automatiquement pour correspondre au thème système",
"Automatically update the application": "Mettre à jour le logiciel automatiquement",
"Back": "Retour",
"Bold": "Gras",
"Browse all plugins": "Parcourir les plugins",
@@ -136,7 +133,6 @@
"Completed": "Terminé",
"Completed decryption.": "Déchiffrement complété.",
"Completed: %s (%s)": "Terminé : %s (%s)",
"Compress old changes": "Compresser les vieux changements",
"Configuration": "Configuration",
"Confirm password cannot be empty": "Le mot de passe de confirmation ne peut être vide",
"Confirm password:": "Confirmer le mot de passe :",
@@ -150,7 +146,6 @@
"Copy": "Copier",
"Copy dev mode command to clipboard": "Copier commande de développement dans presse papier",
"Copy external link": "Copier le lien externe",
"Copy image": "Copier image",
"Copy Link Address": "Copier l'adresse du lien",
"Copy Markdown link": "Copier lien Markdown",
"Copy path to clipboard": "Copier le chemin",
@@ -165,8 +160,6 @@
"Could not upgrade master key: %s": "Impossible de mettre la clef à niveau : %s",
"Could not verify the share status of this notebook - aborting. Please try again when you are connected to the internet.": "Impossible de vérifier l'état du partage du carnet - annulation. Veuillez réessayer lorsque vous serez connecté à internet.",
"Create a notebook": "Créer un carnet",
"Create notebook": "Créer un carnet",
"Create user": "Créer utilisateur",
"Created": "Créé",
"created date": "date de création",
"Created local items: %d.": "Objets créés localement : %d.",
@@ -188,7 +181,6 @@
"Custom TLS certificates": "Certificats TLS personnalisés",
"Cut": "Couper",
"Dark": "Sombre",
"Dashboard": "Tableau de bord",
"Database v%s": "Base de données v%s",
"Date": "Date",
"Date format": "Format de la date",
@@ -200,8 +192,6 @@
"Default: %s": "Défaut : %s",
"Delete": "Supprimer",
"Delete attachment \"%s\"?": "Supprimer fichier joint \"%s\" ?",
"Delete expired sessions": "Supprimer les sessions expirées",
"Delete expired tokens": "Supprimer les tokens expirés",
"Delete line": "Supprimer la ligne",
"Delete local data and re-download from sync target": "Supprimer les données locales et re‑télécharger depuis la cible de synchronisation",
"Delete note \"%s\"?": "Supprimer note \"%s\" ?",
@@ -266,8 +256,6 @@
"Editor monospace font family": "Police monospace de l'éditeur",
"Either \"text\" or \"json\"": "Soit \"text\" soit \"json\"",
"Emacs": "Emacs",
"Email": "Email",
"Emails": "Emails",
"emphasised text": "texte en italique",
"Enable": "Activer",
"Enable ++insert++ syntax": "Activer la syntaxe ++insertion++",
@@ -374,7 +362,6 @@
"Idle": "Arrêté",
"Ignore": "Ignorer",
"Ignore TLS certificate errors": "Ignorer les erreurs de certificats TLS",
"Images": "Images",
"Import": "Importer",
"Importing from \"%s\" as \"%s\" format. Please wait...": "Importer depuis \"%s\" au format \"%s\". Veuillez patienter…",
"Importing notes...": "Importation des notes…",
@@ -453,7 +440,6 @@
"Login with Dropbox": "Se connecter à Dropbox",
"Login with OneDrive": "Se connecter à OneDrive",
"Logout": "Se déconnecter",
"Logs": "Journal",
"Make a donation": "Faire un don",
"Manage master password": "Gestion du mot de passe maître",
"Manage master password...": "Gestion du mot de passe maître...",
@@ -530,6 +516,7 @@
"Note: When a note is shared, it will no longer be encrypted on the server.": "Note : Lorsqu'une note est partagée, elle ne sera plus chiffrée sur le serveur.",
"Notebook": "Carnet",
"Notebook list growth factor": "Facteur de croissance de la liste de carnets",
"Notebook title:": "Titre du carnet :",
"Notebook: %s": "Carnet : %s",
"Notebooks": "Carnets",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Les carnets ne peuvent être nommés \"%s\" car c'est un nom réservé.",
@@ -554,7 +541,6 @@
"Operation cancelled": "Opération annulée",
"Options": "Options",
"Or create an account.": "Ou créer un compte.",
"Other applications...": "Autres applications...",
"Output format: %s": "Format de la sortie : %s",
"Page orientation for PDF export": "Orientation de page pour l'export PDF",
"Page size for PDF export": "Taille de page pour l'export PDF",
@@ -596,10 +582,6 @@
"Previous versions of this note": "Versions précédentes de cette note",
"Print": "Imprimer",
"Privacy Policy": "Politique de confidentialité",
"Process failed payment subscriptions": "Traiter les inscriptions avec échec de paiement",
"Process oversized accounts": "Traiter les comptes ayant excédé leur limite",
"Process user deletions": "Traiter la suppression d'utilisateurs",
"Profile": "Profil",
"Profile Version: %s": "Version du profil : %s",
"Properties": "Propriétés",
"Public-private key pair:": "Paire de clefs publiques privées :",
@@ -662,8 +644,6 @@
"See the pre-release page for more details: %s": "Voir la page des pré‑release pour plus de détails : %s",
"Select": "Sélectionner",
"Select all": "Sélectionner tout",
"Select emoji...": "Sélectionner émoji...",
"Select file...": "Sélectionner fichier",
"Server is already running on port %d": "Le serveur tourne déjà sur le port %d",
"Server is not running.": "Le serveur est arrêté.",
"Server is running on port %d": "Le serveur tourne sur le port %d",
@@ -854,8 +834,6 @@
"Unsupported link or message: %s": "Lien ou message non géré : %s",
"Untitled": "Sans titre",
"Update": "Mettre à jour",
"Update profile": "Mettre à jour le profil",
"Update total sizes": "Mettre à jour les tailles totales",
"Updated": "Mis à jour",
"updated date": "date de modification",
"Updated local items: %d.": "Objets màj localement : %d.",
@@ -875,7 +853,6 @@
"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.": "Utilisez ceci pour corriger l'index du moteur de recherche en cas de problème. Cela peut prendre longtemps selon le nombre de notes.",
"Used for most text in the markdown editor. If not found, a generic proportional (variable width) font is used.": "Utilisée pour la plupart du texte de l'éditeur Markdown. Par défaut, une police proportionnelle sera utilisée.",
"Used where a fixed width font is needed to lay out text legibly (e.g. tables, checkboxes, code). If not found, a generic monospace (fixed width) font is used.": "Utilisée lorsque une police à taille fixe est nécessaire pour afficher le texte de façon lisible (par ex. pour les tables, code source, etc.).",
"User deletions": "Suppressions d'utilisateurs",
"Users": "Utilisateurs",
"Valid": "Valide",
"View": "Affichage",

View File

@@ -20,6 +20,7 @@
"Attach photo": "Anexar foto",
"Attaches the given file to the note.": "Anexa o ficheiro dado á nota.",
"Authentication was not completed (did not receive an authentication token).": "A autenticación non foi completada (non recibiu un token de autenticación).",
"Automatically update the application": "Actualizar automaticamente o aplicativo",
"Back": "Anterior",
"Cancel": "Cancelar",
"Cancelling background synchronisation... Please wait.": "Cancelando sincronización en segundo plano... Agarde.",
@@ -172,6 +173,7 @@
"Note does not exist: \"%s\". Create it?": "A nota non existe: «%s». Desexa creala?",
"Note has been saved.": "A nota foi gardada.",
"Note is not a to-do: \"%s\"": "A nota non é unha tarefa: «%s»",
"Notebook title:": "Título do caderno:",
"Notebooks": "Cadernos",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Os cadernos non poden levar o nome «%s» porque é un título reservado.",
"Notes and settings are stored in: %s": "As notas e axustes gardáronse en: %s",

View File

@@ -79,6 +79,7 @@
"Auto": "Automatski",
"Auto-pair braces, parenthesis, quotations, etc.": "Automatski uskladi zagrade, navodnike itd.",
"Automatically switch theme to match system theme": "Automatski promijeni temu na temu sustava",
"Automatically update the application": "Automatski aktualiziraj program",
"Back": "Natrag",
"Bold": "Podebljano",
"Browse all plugins": "Pregledaj sve dodatke",
@@ -506,6 +507,7 @@
"Note: Does not work in all desktop environments.": "Napomena: Ne radi u svim radnim okruženjima.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Napomena: Kad se bilješka dijeli, više neće biti šifrirana na poslužitelju.",
"Notebook list growth factor": "Faktor povećanja popisa bilježnice",
"Notebook title:": "Naslov bilježnice:",
"Notebook: %s": "Bilježnica: %s",
"Notebooks": "Bilježnice",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Naslov „%s” je rezerviran i ne može se koristiti za bilježnice.",

View File

@@ -69,6 +69,7 @@
"Auto": "Auto",
"Auto-pair braces, parenthesis, quotations, etc.": "Auto-párosítása az idézőjeleknek, zárójeleknek, stb.",
"Automatically switch theme to match system theme": "Automatikusan kapcsoljon olyan témára, ami egyezik a rendszer témával",
"Automatically update the application": "Automatikusan frissítse az alkalmazást",
"Back": "Vissza",
"Bold": "Félkövér",
"Browse all plugins": "Plugin-ok tallózása",
@@ -420,6 +421,7 @@
"Note title": "Jegyzet címe",
"Note: Does not work in all desktop environments.": "Megjegyzés: Nem működik minden asztali környezetben.",
"Notebook list growth factor": "Jegyzetfüzet lista növekedési faktor",
"Notebook title:": "Jegyzetfüzet címe:",
"Notebook: %s": "Jegyzetfüzet: %s",
"Notebooks": "Jegyzetfüzetek",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Jegyzetfüzet nem nevezhető \"%s\"-nak, az egy fenntartott cím.",

View File

@@ -77,6 +77,7 @@
"Auto": "Otomatis",
"Auto-pair braces, parenthesis, quotations, etc.": "Pasangkan secara otomatis kurung kurawal, tanda kurung, kutipan, dll.",
"Automatically switch theme to match system theme": "Beralih tema secara otomatis untuk menyesuaikannya dengan tema sistem",
"Automatically update the application": "Perbarui aplikasi secara otomatis",
"Back": "Kembali",
"Bold": "Tebal",
"Browse all plugins": "Lihat semua plugin",
@@ -478,6 +479,7 @@
"Note: Does not work in all desktop environments.": "Catatan: Tidak berfungsi di semua lingkungan desktop.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Catatan: Ketika sebuah catatan dibagikan, ia tidak akan dienkripsi lagi di server.",
"Notebook list growth factor": "Faktor pertumbuhan daftar buku catatan",
"Notebook title:": "Judul buku catatan:",
"Notebook: %s": "Buku catatan: %s",
"Notebooks": "Buku catatan",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Buku catatan tidak dapat dinamai \"%s\", yang merupakan judul yang telah dipesan.",

View File

@@ -41,45 +41,45 @@ locales['uk_UA'] = require('./uk_UA.json');
locales['vi'] = require('./vi.json');
locales['zh_CN'] = require('./zh_CN.json');
locales['zh_TW'] = require('./zh_TW.json');
stats['ar'] = {"percentDone":90};
stats['eu'] = {"percentDone":26};
stats['bs_BA'] = {"percentDone":65};
stats['bg_BG'] = {"percentDone":51};
stats['ca'] = {"percentDone":97};
stats['hr_HR'] = {"percentDone":94};
stats['cs_CZ'] = {"percentDone":87};
stats['da_DK'] = {"percentDone":98};
stats['ar'] = {"percentDone":93};
stats['eu'] = {"percentDone":27};
stats['bs_BA'] = {"percentDone":67};
stats['bg_BG'] = {"percentDone":53};
stats['ca'] = {"percentDone":93};
stats['hr_HR'] = {"percentDone":97};
stats['cs_CZ'] = {"percentDone":89};
stats['da_DK'] = {"percentDone":97};
stats['de_DE'] = {"percentDone":99};
stats['et_EE'] = {"percentDone":50};
stats['et_EE'] = {"percentDone":51};
stats['en_GB'] = {"percentDone":100};
stats['en_US'] = {"percentDone":100};
stats['es_ES'] = {"percentDone":96};
stats['eo'] = {"percentDone":29};
stats['fi_FI'] = {"percentDone":91};
stats['es_ES'] = {"percentDone":99};
stats['eo'] = {"percentDone":30};
stats['fi_FI'] = {"percentDone":93};
stats['fr_FR'] = {"percentDone":100};
stats['gl_ES'] = {"percentDone":33};
stats['id_ID'] = {"percentDone":90};
stats['it_IT'] = {"percentDone":87};
stats['hu_HU'] = {"percentDone":76};
stats['nl_BE'] = {"percentDone":89};
stats['nl_NL'] = {"percentDone":83};
stats['nb_NO'] = {"percentDone":88};
stats['fa'] = {"percentDone":62};
stats['pl_PL'] = {"percentDone":82};
stats['pt_BR'] = {"percentDone":91};
stats['pt_PT'] = {"percentDone":82};
stats['ro'] = {"percentDone":57};
stats['sl_SI'] = {"percentDone":91};
stats['sv'] = {"percentDone":96};
stats['th_TH'] = {"percentDone":41};
stats['vi'] = {"percentDone":88};
stats['tr_TR'] = {"percentDone":98};
stats['uk_UA'] = {"percentDone":81};
stats['el_GR'] = {"percentDone":84};
stats['ru_RU'] = {"percentDone":91};
stats['sr_RS'] = {"percentDone":73};
stats['zh_CN'] = {"percentDone":99};
stats['zh_TW'] = {"percentDone":88};
stats['ja_JP'] = {"percentDone":96};
stats['ko'] = {"percentDone":87};
stats['gl_ES'] = {"percentDone":34};
stats['id_ID'] = {"percentDone":92};
stats['it_IT'] = {"percentDone":90};
stats['hu_HU'] = {"percentDone":78};
stats['nl_BE'] = {"percentDone":81};
stats['nl_NL'] = {"percentDone":85};
stats['nb_NO'] = {"percentDone":90};
stats['fa'] = {"percentDone":64};
stats['pl_PL'] = {"percentDone":84};
stats['pt_BR'] = {"percentDone":94};
stats['pt_PT'] = {"percentDone":84};
stats['ro'] = {"percentDone":59};
stats['sl_SI'] = {"percentDone":93};
stats['sv'] = {"percentDone":97};
stats['th_TH'] = {"percentDone":43};
stats['vi'] = {"percentDone":90};
stats['tr_TR'] = {"percentDone":93};
stats['uk_UA'] = {"percentDone":83};
stats['el_GR'] = {"percentDone":87};
stats['ru_RU'] = {"percentDone":93};
stats['sr_RS'] = {"percentDone":76};
stats['zh_CN'] = {"percentDone":97};
stats['zh_TW'] = {"percentDone":90};
stats['ja_JP'] = {"percentDone":98};
stats['ko'] = {"percentDone":89};
module.exports = { locales: locales, stats: stats };

View File

@@ -76,6 +76,7 @@
"Auto": "Auto",
"Auto-pair braces, parenthesis, quotations, etc.": "Auto- accoppia parentesi graffe, parentesi, citazione, ecc.",
"Automatically switch theme to match system theme": "Usa il tema di sistema",
"Automatically update the application": "Aggiorna automaticamente l'applicazione",
"Back": "Indietro",
"Bold": "Grassetto",
"Browse all plugins": "Sfoglia tutti i plugins",
@@ -469,6 +470,7 @@
"Note: Does not work in all desktop environments.": "Nota: non funziona in tutti gli ambienti desktop.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Nota: Quando una nota è condivisa, non sarà più criptata nel server.",
"Notebook list growth factor": "Fattore di crescita del taccuino",
"Notebook title:": "Titolo del taccuino:",
"Notebook: %s": "Taccuini: %s",
"Notebooks": "Taccuini",
"Notebooks cannot be named \"%s\", which is a reserved title.": "I blocchi non possono essere chiamati \"%s\". È un titolo riservato.",

View File

@@ -79,6 +79,7 @@
"Auto": "自動",
"Auto-pair braces, parenthesis, quotations, etc.": "始めの括弧や引用符入力時に終わりの括弧や引用符を自動入力する。",
"Automatically switch theme to match system theme": "システムのテーマにあわせて自動設定",
"Automatically update the application": "アプリケーションを自動的にアップデート",
"Back": "戻る",
"Bold": "太字",
"Browse all plugins": "プラグイン一覧を参照",
@@ -511,6 +512,7 @@
"Note: When a note is shared, it will no longer be encrypted on the server.": "注意: ノートを共有すると、該当ノートはサーバー上で暗号化されなくなります。",
"Notebook": "ノートブック",
"Notebook list growth factor": "ノートブック一覧のストレッチ係数",
"Notebook title:": "ノートブックの題名:",
"Notebook: %s": "ノートブック: %s",
"Notebooks": "ノートブック",
"Notebooks cannot be named \"%s\", which is a reserved title.": "\"%s\" というノートブックの名称はシステムで使用するために予約済みです。名称の変更はできません。",

View File

@@ -76,6 +76,7 @@
"Auto": "자동",
"Auto-pair braces, parenthesis, quotations, etc.": "괄호, 중괄호, 인용 부호 등의 자동 완성.",
"Automatically switch theme to match system theme": "시스템 테마에 적합한 테마로 자동으로 변경",
"Automatically update the application": "자동으로 업데이트하기",
"Back": "뒤로 가기",
"Bold": "굵게",
"Browse all plugins": "모든 플러그인 보기",
@@ -466,6 +467,7 @@
"Note: Does not work in all desktop environments.": "참고: 모든 데스크탑 환경에서 작동하는 것은 아닙니다.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "참고: 공유된 노트는 서버에서 암호화될 수 없습니다.",
"Notebook list growth factor": "노트북 목록 증가 인수",
"Notebook title:": "노트북 제목:",
"Notebook: %s": "노트북: %s",
"Notebooks": "노트북",
"Notebooks cannot be named \"%s\", which is a reserved title.": "노트북 제목을 \"%s\" 으로 정할 수 없습니다. 이미 예약 중입니다.",

View File

@@ -77,6 +77,7 @@
"Auto": "Auto",
"Auto-pair braces, parenthesis, quotations, etc.": "Automatisk lukk klammer, paranteser, fnutter, etc.",
"Automatically switch theme to match system theme": "Bytt tema automatisk for å matche systemtema",
"Automatically update the application": "Oppdater applikasjonen automatisk",
"Back": "Tilbake",
"Bold": "Fet",
"Browse all plugins": "Bla igjennom alle utvidelser",
@@ -471,6 +472,7 @@
"Note: Does not work in all desktop environments.": "Merk: fungerer ikke i alle skrivebordsmiljøer.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Merk: Når et notat blir delt vil det ikke lenger være kryptert på serveren.",
"Notebook list growth factor": "Notatbok liste vekst verdi",
"Notebook title:": "Tittel på notatbok:",
"Notebook: %s": "Notatbok: %s",
"Notebooks": "Notatbøker",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Notatbøker kan ikke hete %s, som er en reservert tittel.",

View File

@@ -7,7 +7,6 @@
"%d notes match this pattern. Delete them?": "%d notities voldoen aan het patroon. Deze verwijderen?",
"%s %s (%s, %s)": "%s %s (%s, %s)",
"%s (%s) could not be uploaded: %s": "%s (%s) kon niet opgeladen worden: %s",
"%s (%s) would like to share a notebook with you.": "%s (%s) wil graag een notitieboek met je delen.",
"%s (%s): %s": "%s (%s): %s",
"%s (pre-release)": "%s (pre-release)",
"%s - Copy": "%s - Kopieer",
@@ -19,7 +18,7 @@
"%s: %d notes": "%s: %d notities",
"%s: %d/%d": "%s: %d/%d",
"%s: %s": "%s: %s",
"&Edit": "&Bewerken",
"&Edit": "&Bijwerken",
"&File": "&Bestand",
"&Go": "&Ga",
"&Help": "&Help",
@@ -27,7 +26,6 @@
"&Tools": "&Hulpmiddelen",
"&View": "&Weergave",
"(%s)": "(%s)",
"(None)": "(None)",
"(wysiwyg: %s)": "(wysiwyg: %s)",
"- Camera: to allow taking a picture and attaching it to a note.": "- Camera: om toe te laten een foto te maken en deze als bijlage te voegen bij een notitie.",
"- Location: to allow attaching geo-location information to a note.": "- Locatie: om toe te laten geo-locatie toe te voegen aan een notitie.",
@@ -38,16 +36,10 @@
"A4": "A4",
"A5": "A5",
"About Joplin": "Over Joplin",
"accelerator": "accelerator",
"Accelerator \"%s\" is not valid.": "Accelerator \"%s\" is ongeldig.",
"Accelerator \"%s\" is used for \"%s\" and \"%s\" commands. This may lead to unexpected behaviour.": "Accelerator \"%s\" wordt gebruikt voor \"%s\" en \"%s\" commands. Dit kan leiden tot ongewild gedrag..",
"Accept": "Aanvaarden",
"Action": "Actie",
"Active": "Actief",
"Actual Size": "Huidige grootte",
"Add body": "Body toevoegen",
"Add or remove tags:": "Tags toevoegen of verwijderen:",
"Add recipient:": "Ontvanger toevoegen:",
"Add title": "Titel toevoegen",
"Add to dictionary": "Toevoegen aan woordenboek",
"Advanced options": "Geavanceerde opties",
@@ -55,11 +47,10 @@
"All potential ports are in use - please report the issue at %s": "Alle potentiële poorten zijn in gebruik - gelieve dit te rapporteren aan %s",
"Also displays unset and hidden config variables.": "Toont ook niet-ingestelde en verborgen configuratie-opties.",
"Always": "Altijd",
"An update is available, do you want to download it now?": "Er is een update beschikbaar; wil je dit nu downloaden?",
"An update is available, do you want to download it now?": "Er is een update beschikbaar; wilt u die nu ophalen?",
"Appearance": "Weergave",
"Application": "Applicatie",
"Apply": "Toepassen",
"Are you sure you want to renew the authorisation token?": "Ben je zeker dat je de authorisatietoken wil vernieuwen?",
"Arguments:": "Argumenten:",
"Aritim Dark": "Aritim donker",
"Attach file": "Voeg bestand toe",
@@ -70,19 +61,20 @@
"Attachment download behaviour": "Modus voor ophalen van bijlages",
"Attachments": "Bijlagen",
"Attachments that could not be downloaded": "Bijlagen die niet opgehaald konden worden",
"Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: %s": "Opgelet: als je deze locatie wijzigt, zorg er dan voor dat je al je inhoud naar deze locatie kopieert voordat je synchroniseert, anders worden alle bestanden verwijderd! Zie de FAQ voor meer details: %s",
"Authentication was not completed (did not receive an authentication token).": "Authenticatie was niet voltooid (geen authenticatietoken ontvangen).",
"Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: %s": "Opgelet: als u deze locatie wijzigt, zorg er dan voor dat u al uw inhoud naar deze locatie kopieert voordat u synchroniseert, anders worden alle bestanden verwijderd! Zie de FAQ voor meer details: %s",
"Authentication was not completed (did not receive an authentication token).": "Verificatie was niet voltooid (geen verificatietoken ontvangen).",
"Authorisation token:": "Autorisatietoken:",
"Auto": "Auto",
"Auto-pair braces, parenthesis, quotations, etc.": "Haakjes, aanhalingstekens, etc. automatisch aanvullen",
"Automatically switch theme to match system theme": "Thema automatisch wisselen overeenkomstig het systeem-thema",
"Automatically update the application": "Update de applicatie automatisch",
"Back": "Terug",
"Bold": "Vet",
"Browse all plugins": "Plugin doorbladeren",
"Bold": "Vetjes",
"Browse all plugins": "Door alle plugins bladeren",
"Browse...": "Bladeren ...",
"Bulleted List": "Opsommingstekens",
"Cancel": "Annuleer",
"Cancelling background synchronisation... Please wait.": "Achtergrond-synchronisatie wordt geannuleerd... Even geduld.",
"Cancelling background synchronisation... Please wait.": "Achtergrond synchronisatie wordt geannuleerd... Even geduld.",
"Cancelling...": "Annuleren...",
"Cancelling... Please wait.": "Annuleren.. Even geduld.",
"Cannot access %s": "Geen toegang tot %s",
@@ -90,19 +82,14 @@
"Cannot copy note to \"%s\" notebook": "Kan notitie niet naar notitieboek \"%s\" kopiëren",
"Cannot find \"%s\".": "Kan \"%s\" niet vinden.",
"Cannot initialise synchroniser.": "Kan de synchronisatie niet starten.",
"Cannot load \"%s\" module for format \"%s\" and output \"%s\"": "Kan de module \"%s\" niet laden voor formaat \"%s\" en output \"%s\"",
"Cannot load \"%s\" module for format \"%s\" and target \"%s\"": "Kan de module \"%s\" niet laden voor formaat \"%s\" en doel \"%s\"",
"Cannot move note to \"%s\" notebook": "Kan notitie niet naar notitieboek \"%s\" verplaatsen",
"Cannot move notebook to this location": "Kan notitieboek niet naar deze locatie verplaatsen",
"Cannot refresh token: authentication data is missing. Starting the synchronisation again may fix the problem.": "Kan token niet vernieuwen: authenticatiegegevens ontbreken. De synchronisatie opnieuw starten, zou het probleem kunnen oplossen.",
"Cannot save %s \"%s\" because it is larger than the allowed limit (%s)": "Kan %s \"%s\" niet opslaan omdat de bestandsgrootte groter is dan de toegestane limiet (%s)",
"Cannot save %s \"%s\" because it would go over the total allowed size (%s) for this account": "Kan %s \"%s\" niet opslaan omdat het groter is dan de maximum toegestane bestandsgrootte voor dit account",
"Cannot share encrypted notebook with recipient %s because they have not enabled end-to-end encryption. They may do so from the screen Configuration > Encryption.": "Kan het versleutelde notitieblok niet delen met ontvanger %s omdat ze de end-to-end versleuteling niet hebben ingesteld. Dit kan via Configuratie > Encryptie.",
"Change application layout": "Layout veranderen",
"Cannot refresh token: authentication data is missing. Starting the synchronisation again may fix the problem.": "Kan token niet vernieuwen: verificatiegegevens ontbreken. De synchronisatie opnieuw starten, zou het probleem kunnen oplossen.",
"Change application layout": "Verander de layout",
"Change language": "Taal wijzigen",
"Characters": "Tekens",
"Characters excluding spaces": "Tekens zonder spaties",
"Check for updates...": "Controleren op updates ...",
"Check for updates...": "Kijken of er updates zijn ...",
"Check synchronisation configuration": "Verifieer de configuratie van de synchronisatie",
"Checkbox": "Selectievakje",
"Checkbox list": "Selectievakjeslijst",
@@ -144,9 +131,7 @@
"Could not connect to Joplin Server. Please check the Synchronisation options in the config screen. Full error was:\n\n%s": "Kon geen verbinding maken met de Joplin Server. Controleer de Synchronisatie opties in het configuratie scherm. Volledige fout was:\n\n%s",
"Could not export notes: %s": "Kon notities niet exporteren: %s",
"Could not install plugin: %s": "Kon plugin niet installeren: %s",
"Could not respond to the invitation. Please try again, or check with the notebook owner if they are still sharing it.\n\nThe error was: \"%s\"": "Kon niet antwoorden op de uitnodiging. Probeer opnieuw, of ga na of het notitieboek nog steeds wordt gedeeld.\n\nDe foutmelding was: \"%s\"",
"Could not upgrade master key: %s": "Kon hoofdsleutel niet upgraden: %s",
"Could not verify the share status of this notebook - aborting. Please try again when you are connected to the internet.": "Kon de deelstatus van dit notitieblok niet nagaan - annuleren. Probeer opnieuw wanneer je terug een netwerkverbinding hebt.",
"Create a notebook": "Maak nieuw notitieboek aan",
"Created": "Aangemaakt",
"created date": "datum aanmaak",
@@ -163,14 +148,10 @@
"Current version is up-to-date.": "Actuele versie is up-to-date.",
"custom order": "aangepaste rangschikking",
"Custom order": "Aangepaste rangschikking",
"Custom stylesheet for Joplin-wide app styles": "Aangepaste stijlweergave voor algemene stijl",
"Custom stylesheet for rendered Markdown": "Aangepaste stijlweergave voor gerenderde Markdown",
"Custom TLS certificates": "Aangepaste TLS-certificaten",
"Cut": "Knip",
"Dark": "Donker",
"Database v%s": "Databank v%s",
"Date": "Datum",
"Date format": "Datumformaat",
"Date format": "Datumnotatie",
"days": "dagen",
"Decrypted items: %d": "Gedecrypteerde items: %d",
"Decrypted items: %s / %s": "Gedecrypteerde items: %s / %s",
@@ -180,14 +161,12 @@
"Delete": "Verwijderen",
"Delete attachment \"%s\"?": "Bijlage \"%s\" verwijderen?",
"Delete line": "Lijn verwijderen",
"Delete local data and re-download from sync target": "Verwijder lokale gegevens en download opnieuw van synchronisatie locatie",
"Delete note \"%s\"?": "Notities \"%s\" verwijderen?",
"Delete note?": "Notitie verwijderen?",
"Delete notebook \"%s\"?\n\nAll notes and sub-notebooks within this notebook will also be deleted.": "Notitieboek \"%s\" verwijderen?\n\nAlle notities en sub-notitieboeken in dit notitieboek zullen ook verwijderd worden.",
"Delete notebook? All notes and sub-notebooks within this notebook will also be deleted.": "Notitieboek verwijderen? Alle notities en sub-notitieboeken in dit notitieboek zullen ook verwijderd worden.",
"Delete plugin \"%s\"?": "Plugin \"%s\" verwijderen?",
"Delete these %d notes?": "Deze notities %d verwijderen?",
"Delete this invitation? The recipient will no longer have access to this shared notebook.": "Deze uitnodiging verwijderen? De ontvanger heeft niet langer toegang tot dit gedeelde notitieblok.",
"Deleted local items: %d.": "Verwijderde lokale items: %d.",
"Deleted remote items: %d.": "Verwijderde remote items: %d.",
"Deletes the given notebook.": "Verwijdert het opgegeven notitieboek.",
@@ -196,38 +175,37 @@
"Deletes the notes without asking for confirmation.": "Verwijdert de notities zonder om bevestiging te vragen.",
"Destination format: %s": "Doelformaat: %s",
"Directory": "Map",
"Directory to synchronise with (absolute path)": "Map om mee te synchroniseren (absolute pad)",
"Directory to synchronise with (absolute path)": "Folder om mee te synchroniseren (absolute pad)",
"Disable encryption": "Schakel encryptie uit",
"Disable safe mode and restart": "Veilige modues uitschakelen en opnieuw opstarten",
"Disable Web Clipper Service": "Web Clipper Service uitschakelen",
"Disabled": "Uitgeschakeld",
"Disabling encryption means *all* your notes and attachments are going to be re-synchronised and sent unencrypted to the sync target. Do you wish to continue?": "Encryptie uitschakelen betekent dat *al* je notities en toevoegingen opnieuw gesynchroniseerd zullen worden en ontsleuteld naar het synchronisatiedoel zullen gestuurd worden. Wil je verdergaan?",
"Discard changes": "Wijzigingen annuleren",
"Disabling encryption means *all* your notes and attachments are going to be re-synchronised and sent unencrypted to the sync target. Do you wish to continue?": "Encryptie uitschakelen betekent dat *al* uw notities en toevoegingen opnieuw gesynchroniseerd zullen worden en ontsleuteld naar het synchronisatiedoel zullen gestuurd worden. Wil u verder gaan?",
"Discard changes": "Verwerp wijzigingen",
"Dismiss": "Verwerpen",
"Displays a geolocation URL for the note.": "Geeft een geo-locatie-URL voor de notitie weer.",
"Displays a geolocation URL for the note.": "Toont een geo-locatie-URL voor de notitie.",
"Displays only the first top <num> notes.": "Toont enkel de top <num> notities.",
"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 `-tnt` would display notes and to-dos.": "Toont enkel de items van de specifieke type(s). Kan `n` zijn voor notities, `t` voor to-do's, of `nt` voor notities en to-do's (bv. `-tt` zou alleen to-do's tonen, terwijl `-tnt` notities en to-do's zou tonen).",
"Displays summary about the notes and notebooks.": "Geeft een overzicht van alle notities en notitieboeken weer.",
"Displays the complete information about note.": "Geeft de volledige informatie van een notitie weer.",
"Displays the given note.": "Geeft de opgegeven notitie weer.",
"Displays the notes in the current notebook. Use `ls /` to display the list of notebooks.": "Geeft notities in het huidige notitieboek weer. Gebruik `ls /` om een lijst van notitieboeken weer te geven.",
"Displays usage information.": "Geeft informatie over het verbruik weer.",
"Displays version information": "Weergave versie informatie",
"Displays summary about the notes and notebooks.": "Toont een overzicht van alle notities en notitieboeken.",
"Displays the complete information about note.": "Toont de volledige informatie van een notitie.",
"Displays the given note.": "Toont de opgegeven notitie.",
"Displays the notes in the current notebook. Use `ls /` to display the list of notebooks.": "Toont de notities in het huidige notitieboek. Gebruik `ls /` om een lijst van notitieboeken te tonen.",
"Displays usage information.": "Toont gebruiksinformatie.",
"Displays version information": "Toont versie informatie",
"Do it now": "Nu doen",
"Do not ask for confirmation.": "Vraag niet om bevestiging.",
"Download": "Downloaden",
"Download and install the relevant extension for your browser:": "Downloaden en installeren van de overeenkomstige extensie voor je browser:",
"Downloaded": "Gedownload",
"Downloaded and decrypted": "Gedownload en gedecrypteerd",
"Downloaded and encrypted": "Gedownload en geëncrypteerd",
"Downloading": "Aan het downloaded ...",
"Downloading resources...": "Bijlagen downloaden ...",
"Download": "Ophalen",
"Download and install the relevant extension for your browser:": "Ophalen en installeren van de overeenkomstige extensie voor je browser:",
"Downloaded": "Opgehaald",
"Downloaded and decrypted": "Opgehaald en gedecrypteerd",
"Downloaded and encrypted": "Opgehaald en geëncrypteerd",
"Downloading": "Ophalen ...",
"Downloading resources...": "Bijlagen ophalen ...",
"Dracula": "Dracula",
"Drop notes or files here": "Sleep notities of bestanden hier naartoe",
"Dropbox": "Dropbox",
"Dropbox Login": "Dropbox Login",
"Duplicate": "Dupliceer",
"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current notebook.": "Dupliceert de notities die voldoen aan <note> in [notitieboek]. Als er geen notitieboek is gespecifieerd, zal de notitie gedupliceerd worden in het huidige notitieboek.",
"Duplicates the notes matching <note> to [notebook]. If no notebook is specified the note is duplicated in the current notebook.": "Dupliceert de notities die voldoen aan <note> in [notitieboek]. Als er geen notitieboek is gespecifeerd, zal de notitie gedupliceerd worden in het huidige notitieboek.",
"Edit": "Bewerk",
"Edit in external editor": "Bewerken in externe editor",
"Edit note.": "Bewerk notitie.",
@@ -236,17 +214,10 @@
"Editor font": "Lettertype editor",
"Editor font family": "Lettertype editor",
"Editor font size": "Lettergrootte editor",
"Editor maximum width": "Maximum breedte editor",
"Either \"text\" or \"json\"": "Of \"text\" of \"json\"",
"Emacs": "Emacs",
"emphasised text": "gemarkeerde tekst",
"Enable": "Activeer",
"Enable ++insert++ syntax": "Activeer ++insert++ syntax",
"Enable ==mark== syntax": "Activeer ==mark== syntax",
"Enable ^sup^ syntax": "Activeer ^sup^ syntax",
"Enable abbreviation syntax": "Activeer afkorting syntax",
"Enable audio player": "Audiospeler inschakelen",
"Enable deflist syntax": "Activeer definitielijst syntax",
"Enable encryption": "Schakel encryptie in",
"Enable footnotes": "Voetnoten inschakelen",
"Enable Fountain syntax support": "Ondersteuning van Fountain syntax inschakelen",
@@ -254,15 +225,11 @@
"Enable markdown emoji": "Markdown emoji inschakelen",
"Enable math expressions": "Schakel wiskundige formules in",
"Enable Mermaid diagrams support": "Ondersteuning van Mermaid diagrammen inschakelen",
"Enable multimarkdown table extension": "Activeer multimarkdown tabel extensie",
"Enable note history": "Schakel notitiehistoriek in",
"Enable PDF viewer": "Schakel PDF weergave in",
"Enable soft breaks": "Soft breaks inschakelen",
"Enable table of contents extension": "Extensie voor inhoudstafel inschakelen",
"Enable typographer support": "Schakel ondersteuning voor typograaf in",
"Enable video player": "Schakel videospeler in",
"Enable Web Clipper Service": "Web Clipper Service inschakelen",
"Enable ~sub~ syntax": "Activeer ~sub~ syntax",
"Enabled": "Ingeschakeld",
"Encrypted": "Versleuteld",
"Encrypted items cannot be modified": "Versleutelde items kunnen niet aangepast worden",
@@ -293,7 +260,6 @@
"Fail-safe": "Beveiligd tegen falen",
"Fail-safe: Do not wipe out local data when sync target is empty (often the result of a misconfiguration or bug)": "Beveiligd tegen falen: Wis de lokale data niet wanneer de synchronisatiebestemming leeg is (vaak het resultaat van een misconfiguratie of bug)",
"Fatal error:": "Fatale fout:",
"Feature flags": "Feature vlaggen",
"Fetched items: %d/%d.": "Opgehaalde items: %d/%d.",
"Fetching resources: %d/%d": "Bijlages ophalen: %d/%d",
"File": "Bestand",
@@ -309,10 +275,8 @@
"For information on how to customise the shortcuts please visit %s": "Voor informatie over hoe de snelkoppeling aan te passen, bezoek %s",
"For more information about End-To-End Encryption (E2EE) and advice on how to enable it please check the documentation:": "Voor meer informatie over End-To-End Encryptie (E2EE) en advies over hoe u dit kunt inschakelen, gelieve de documentatie te raadplegen:",
"For the list of keyboard shortcuts and config options, type `help keymap`": "Voor de lijst van snelkoppelingen en configuratieopties, typ `help keymap`",
"Force path style": "Forceer stijl van pad",
"Forward": "Verder",
"Found: %d.": "Gevonden: %d.",
"Full changelog": "Volledige log van wijzigingen",
"General": "Algemeen",
"Generating link...": "Generatie koppeling ...",
"Get it now:": "Nu ophalen:",
@@ -322,15 +286,11 @@
"Goto Anything...": "Ga naar om het even wat ...",
"Heading": "Hoofding",
"Hide %s": "Verberg %s",
"Hide disabled keys": "Uitgeschakelde toetsen verbergen",
"Hide Joplin": "Verberg Joplin",
"Highlight": "Markeren",
"Home": "Thuis",
"Horizontal Rule": "Horizontale lijn",
"HTML Directory": "HTML Map",
"HTML File": "HTML Bestand",
"Hyperlink": "Koppeling",
"Icon": "Icoon",
"ID": "ID",
"Idle": "Inactief",
"Ignore": "Negeer",
@@ -351,7 +311,6 @@
"Indent more": "Insprong vergroten",
"Information": "Informatie",
"Inline Code": "Inline-code",
"Insert": "Invoegen",
"Insert Date Time": "Datum en tijd inlassen",
"Insert Hyperlink": "Koppeling inlassen",
"Install": "Installeren",
@@ -365,10 +324,8 @@
"Invalid option value: \"%s\". Possible values are: %s.": "Ongeldige optie: \"%s\". Geldige waarden zijn: %s.",
"Italic": "Cursief",
"Item \"%s\" could not be downloaded: %s": "Item \"%s\" kon niet opgehaald worden: %s",
"Items": "Items",
"Items that cannot be decrypted": "Items die niet gedecrypteerd kunnen worden",
"Items that cannot be synchronised": "Items die niet gesynchroniseerd kunnen worden",
"Joplin can synchronise your notes using various providers. Select one from the list below.": "Joplin kan je notities synchroniseren met verscheidene providers. Selecteer een provider van onderstaande lijst.",
"Joplin Export Directory": "Joplin Exportmap",
"Joplin Export File": "Joplin Exportbestand",
"Joplin failed to decrypt these items multiple times, possibly because they are corrupted or too large. These items will remain on the device but Joplin will no longer attempt to decrypt them.": "Joplin is er meerdere malen niet in geslaagd deze items te decrypteren, mogelijk omdat ze corrupt of te groot zijn. Deze items blijven op het apparaat staan, maar Joplin zal niet langer proberen ze te decrypteren.",
@@ -378,7 +335,6 @@
"Joplin Server URL": "Joplin Server URL",
"Joplin Web Clipper allows saving web pages and screenshots from your browser to Joplin.": "Joplin Web Clipper laat toe webpagina's en schermafbeeldingen van je browser op te slaan in Joplin.",
"Joplin website": "Joplin website",
"Joplin's own sync service. Also gives access to Joplin-specific features such as publishing notes or collaborating on notebooks with others.": "Joplins eigen synchronisatie service. Geeft ook toegang tot specifieke features zoals het publiceren van notities of samenwerken aan notitieboeken met anderen.",
"Keep note history for": "Bewaar notitiehistoriek gedurende",
"Keyboard Mode": "Toetsenbordmodus",
"Keyboard Shortcut": "Sneltoets",
@@ -396,20 +352,15 @@
"Lines": "Regels",
"Link has been copied to clipboard!": "Koppeling is gekopieerd naar klembord!",
"Links with protocol \"%s\" are not supported": "Koppelingen met protocol \"%s\" worden niet ondersteund",
"List item": "Lijst item",
"Location": "Locatie",
"Lock file is already being hold. If you know that no synchronisation is taking place, you may delete the lock file at \"%s\" and resume the operation.": "Vergrendelingsbestand is al bezet. Als u zeker bent dat er geen synchronisatie bezig is, mag u het vergrendelingsbestand verwijderen op \"%s\" en de synchronisatie hervatten.",
"Log": "Log",
"Login": "Aanmelden",
"Login below.": "Meld hieronder aan",
"Login with Dropbox": "Login with Dropbox",
"Login with OneDrive": "Log in met OneDrive",
"Logout": "Afmelden",
"Make a donation": "Doe een gift",
"Manage your plugins": "Beheer uw plugins",
"Manual": "Handmatig",
"Markdown": "Markdown",
"Markdown + Front Matter": "Markdown + Front Matter",
"Marks a to-do as done.": "Markeert een to-do als voltooid.",
"Marks a to-do as non-completed.": "Markeert een to-do als onvoltooid.",
"Markup": "Opmaak",
@@ -417,7 +368,6 @@
"Max concurrent connections": "Maximum aantal gelijktijdige connecties",
"Missing Master Keys": "Ontbrekende Hoofdsleutels",
"Missing required argument: %s": "Benodigde argumenten niet voorzien: %s",
"Mobile data - auto-sync disabled": "Mobiele datagegevens - auto-synchronisatie uitegeschakeld",
"More info": "Meer informatie",
"More information": "Meer informatie",
"More than one item match \"%s\". Please narrow down your query.": "Meer dan één item voldoet aan de zoekterm \"%s\". Verfijn uw zoekterm a.u.b.",
@@ -455,7 +405,6 @@
"Nord": "Nord",
"Not authentified with %s. Please provide any missing credentials.": "Niet geverifieerd voor %s. Gelieve ontbrekende referenties in te vullen.",
"Not downloaded": "Niet opgehaald",
"Not generated": "Niet gegenereerd",
"note": "notitie",
"Note": "Notitie",
"Note area growth factor": "Groeifactor notitiegrootte",
@@ -473,6 +422,7 @@
"Note: Does not work in all desktop environments.": "Opmerking: werkt niet in alle desktop-omgevingen.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Opmerking: wanneer een notitie gedeeld wordt, is ze niet langer geëncrypteerd op de server.",
"Notebook list growth factor": "Groeifactor notitieboeklijst",
"Notebook title:": "Notitieboek titel:",
"Notebook: %s": "Notitieboek: %s",
"Notebooks": "Notitieboeken",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Notitieboeken kunnen niet \"%s\" genoemd worden, dit is een gereserveerd woord.",
@@ -491,7 +441,6 @@
"Open": "Open",
"Open %s": "Open %s",
"Open profile directory": "Open profielmap",
"Open Sync Wizard...": "Sync Wizard openen...",
"Open...": "Openen ...",
"Operation cancelled": "Actie geannuleerd",
"Options": "Opties",
@@ -507,10 +456,8 @@
"PDF File": "PDF Bestand",
"Permission needed": "Toestemming vereist",
"Permission to use camera": "Toestemming camera te gebruiken",
"Please click on \"%s\" to proceed": "Gelieve op \"%s\" te klikken om verder te gaan",
"Please confirm that you would like to re-encrypt your complete database.": "Gelieve te bevestigen dat u uw hele databank opnieuw wil encrypteren.",
"Please enter your password in the master key list below before upgrading the key.": "Gelieve uw paswoord in te geven in de lijst hoofdsleutels hieronder, alvorens de sleutel te upgraden.",
"Please note that if it is a large notebook, it may take a few minutes for all the notes to show up on the recipient's device.": "Gelieve er rekening mee te houden dat bij grote notitieboeken het enkele minuten kan duren vooraleer de notities op het apparaat van de ontvanger verschijnen.",
"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.": "Open de volgende URL in uw browser om de toepassing te verifiëren. De toepassing zal een map aanmaken in \"Apps/Joplin\" en zal enkel in déze map bestanden lezen en schrijven. Het zal geen toegang hebben tot bestanden buiten deze map, noch tot andere persoonlijke gegevens. Er worden geen gegevens gedeeld met derden.",
"Please select a notebook first.": "Selecteer eerst een notitieboek.",
"Please select the note or notebook to be deleted first.": "Selecteer eerst het notitieboek of de notitie om te verwijderen.",
@@ -538,22 +485,12 @@
"Privacy Policy": "Privacybeleid",
"Profile Version: %s": "Profielversie: %s.",
"Properties": "Eigenschappen",
"Public-private key pair:": "Publiek-private sleutelpaar",
"Publish Notes": "Notities Publiceren",
"Publish notes to the internet": "Notities publiceren op het Internet",
"Quit": "Stop",
"Re-encrypt data": "Herencrypteer de gegevens",
"Re-encryption": "Her-encryptie",
"Re-upload local data to sync target": "Lokale gegevens opnieuw uploaden naar synchronisatie doel",
"Read more about it": "Meer hierover",
"Read time: %s min": "Leestijd: %s min",
"Recipient has accepted the invitation": "Ontvanger heeft de uitnodiging aanvaard",
"Recipient has not yet accepted the invitation": "Ontvanger heeft de uitnodiging nog niet aanvaard",
"Recipient has rejected the invitation": "Ontvanger heeft de uitnodiging verworpen",
"Recipients:": "Ontvangers:",
"Redo": "Opnieuw",
"Refresh": "Vernieuwen",
"Reject": "Verwerpen",
"Remove": "Verwijderen",
"Remove tag \"%s\" from all notes?": "De tag \"%s\" verwijderen van alle notities?",
"Remove this search from the sidebar?": "Dit item verwijderen van de zijbalk?",
@@ -561,7 +498,6 @@
"Rename notebook:": "Hernoem notitieboek:",
"Rename tag:": "Hernoem tag:",
"Renames the given <item> (note or notebook) to <name>.": "Hernoemt het gegeven <item> (notitie of notitieboek) naar <name>.",
"Renew token": "Token vernieuwen",
"Resources: %d.": "Bijlagen: %d.",
"Restart and upgrade": "Herstarten en upgraden",
"Restart now": "Nu herstarten",
@@ -573,10 +509,6 @@
"Reverse sort order": "Draai rangschikking om",
"Reverses the sorting order.": "Draait de rangschikking om.",
"Revision: %s (%s)": "Revisie: %s (%s)",
"Runs the commands contained in the text file. There should be one command per line.": "Voert de commandos in het tekstbestand uit. Er zou een commando per lijn moeten zijn.",
"S3": "S3",
"S3 region": "S3 regio",
"Safe mode is currently active. Note rendering and all plugins are temporarily disabled.": "Veilige modus is actief. Renderen van notities en alle plugins zijn tijdelijk gedeactiveerd.",
"Save": "Opslaan",
"Save alarm": "Melding opslaan",
"Save as...": "Opslaan als ...",
@@ -596,19 +528,16 @@
"Server is running on port %d": "Server is actief op poort %d",
"Set alarm": "Stel melding in",
"Set alarm:": "Stel melding in:",
"Set it to 0 to make it take the complete available space. Recommended width is 600.": "Zet dit op 0 om de volledige ruimte te benutten. Aanbevolen breedte is 600",
"Set the password": "Stel het wachtwoord in",
"Sets the property <name> of the given <note> to the given [value]. Possible properties are:\n\n%s": "Zet de eigenschap <name> van de opgegeven <note> naar de opgegeven [value]. Mogelijke eigenschappen zijn:\n\n%s",
"Share": "Delen",
"Shortcuts are not available in CLI mode.": "Snelkoppelingen zijn niet beschikbaar in command line modus.",
"Show Advanced Settings": "Toon geavanceerde opties",
"Show all": "Alles tonen",
"Show completed to-dos": "Toon voltooide to-do's",
"Show note counts": "Toon aantal notities",
"Show tray icon": "Toon tray icon",
"Sidebar": "Zijbalk",
"Size": "Grootte",
"Skip this version": "Deze versie overslaan",
"Skipped items: %d (use --retry-failed-items to retry decrypting them)": "Overgeslagen items: %d (gebruik --retry-failed-items om opnieuw te proberen)",
"Skipped: %d.": "Overgeslagen: %d.",
"Solarised Dark": "Gesolariseerd Donker",
@@ -639,12 +568,8 @@
"Step 2: Install the extension": "Step 2: installeer de extensie",
"Stop": "Stop",
"Stop external editing": "Beëindig externe bijwerking",
"Strikethrough": "Doorstrepen",
"strong text": "benadrukte text",
"Submit": "Verzenden",
"Subscript": "Subschrift",
"Success! Synchronisation configuration appears to be correct.": "Succes! De configuratie van de synchronisatie is blijkbaar correct.",
"Superscript": "Superschrift",
"Swap line down": "Een regel omlaag",
"Swap line up": "Een regel omhoog",
"Switch between note and to-do type": "Wissel tussen notitie en to-do",
@@ -664,16 +589,13 @@
"Synchronisation target": "Synchronisatiedoel",
"Synchronisation target: %s (%s)": "Synchronisatiedoel: %s (%s)",
"Synchronise": "Synchroniseren",
"Synchronise only over WiFi connection": "Alleen synchroniseren over een WiFi-verbinding",
"Synchronises with remote storage.": "Synchroniseert met externe opslag.",
"Synchronising...": "Synchroniseren ...",
"Tabloid": "Tabloid",
"Tagged: %d.": "Getagd: %d.",
"Tags": "Tags",
"Take photo": "Maak en foto",
"Tasks": "Taken",
"Text editor command": "Teksteditorcommando",
"Thank you! Your Joplin Cloud account is now setup and ready to use.": "Bedankt! Je Joplin Cloud account is geconfigureerd en klaar voor gebruik.",
"The app is now going to close. Please relaunch it to complete the process.": "De app gaat nu sluiten. Gelieve ze te herstarten om het proces te voltooien.",
"The application has been authorised - you may now close this browser tab.": "De applicatie werd geautoriseerd - U kan deze tab sluiten.",
"The application has been authorised!": "De applicatie is succesvol geautoriseerd!",
@@ -688,18 +610,15 @@
"The factor property sets how the item will grow or shrink to fit the available space in its container with respect to the other items. Thus an item with a factor of 2 will take twice as much space as an item with a factor of 1.Restart app to see changes.": "De factor-eigenschap bepaalt hoe het item zal groeien of krimpen om de beschikbare ruimte in zijn container te passen ten opzichte van de andere items. Zo zal een item met factor 2 twee keer zoveel ruimte innemen als een item met factor 1. Herstart de app om de veranderingen te zien.",
"The following attachments are being watched for changes:": "Van volgende bijlagen wordt het wijzigen opgevolgd:",
"The Joplin mobile app does not currently support this type of link: %s": "De mobiele Joplin app ondersteunt momenteel dit type koppeling niet: %s",
"The Joplin team has vetted this plugin and it meets our standards for security and performance.": "Het Joplin-team heeft deze plugin geaudit en het voldoet aan de standaarden voor performantie en veiligheid.",
"The master key has been upgraded successfully!": "De hoofdsleutel is met succes geüpgrade!",
"The master keys with these IDs are used to encrypt some of your items, however the application does not currently have access to them. It is likely they will eventually be downloaded via synchronisation.": "De hoofdsleutels met deze ID's worden gebruikt om sommige van uw items te versleutelen, maar de toepassing heeft daar momenteel geen toegang toe. Het is waarschijnlijk dat ze uiteindelijk via synchronisatie zullen worden opgehaald.",
"The note \"%s\" has been successfully restored to the notebook \"%s\".": "De notitie \"%s\" werd met succes teruggezet naar het notitieboek \"%s\".",
"The notebook could not be saved: %s": "Het notitieboek kon niet opgeslagen worden: %s",
"The notes have been imported: %s": "De notities zijn geïmporteerd: %s",
"The possible commands are:": "Mogelijke commando's zijn:",
"The recipient could not be removed from the list. Please try again.\n\nThe error was: \"%s\"": "De ontvanger kon niet verwijderd worden van de lijst. Probeer opnieuw.\n\nDe foutmelding was: \"%s\"",
"The sync target needs to be upgraded before Joplin can sync. The operation may take a few minutes to complete and the app needs to be restarted. To proceed please click on the link.": "Het synchronisatiedoel moet worden geüpgraded voordat Joplin kan synchroniseren. Het kan een paar minuten duren voordat deze operatie voltooid is en de app moet dan opnieuw worden opgestart. Klik op de koppeling om verder te gaan.",
"The tag \"%s\" already exists. Please choose a different name.": "De tag \"%s\" bestaat al. Kies een andere naam.",
"The target to synchronise to. Each sync target may have additional parameters which are named as `sync.NUM.NAME` (all documented below).": "Het doel waarnaartoe gesynchroniseerd wordt. Elk synchronisatiedoel kan bijkomende parameters hebben die benoemd worden als 'sync.NUM.NAME' (hieronder gedocumenteerd).",
"The Web Clipper needs your authorisation to access your data.": "De Web Clipper plugin heeft jouw authorisatie nodig om je gegevens te raadplegen.",
"The web clipper service is enabled and set to auto-start.": "De web clipper service is ingeschakeld en ingesteld als auto-start.",
"The web clipper service is not enabled.": "De web clipper service is niet ingeschakeld.",
"Theme": "Thema",
@@ -708,7 +627,6 @@
"There is no data to export.": "Er zijn geen gegevens om te exporteren.",
"There was a [conflict](%s) on the attachment below.\n\n%s": "Er was een [conflict] (%s) voor onderstaande bijlage.\n\n%s",
"There was an error downloading this attachment:": "Er was een fout bij het ophalen van deze bijlage:",
"There was an error setting up your Joplin Cloud account. Please verify your email and password and try again. Error was:\n\n%s": "Er is een probleem opgetreden bij het configureren van je Joplin Cloud gebruiker. Gelievee je e-mailadres en wachtwoord te controleren en opnieuw te proberen. Fout was:\n\n%s",
"These items will remain on the device but will not be uploaded to the sync target. In order to find these items, either search for the title or the ID (which is displayed in brackets above).": "Deze items zullen op het apparaat beschikbaar blijven, maar zullen niet geüpload worden naar het synchronistatiedoel. Om deze items te vinden, zoek naar de titel of het ID (afgebeeld bovenaan tussen haakjes).",
"These plugins enhance the Markdown renderer with additional features. Please note that, while these features might be useful, they are not standard Markdown and thus most of them will only work in Joplin. Additionally, some of them are *incompatible* with the WYSIWYG editor. If you open a note that uses one of these plugins in that editor, you will lose the plugin formatting. It is indicated below which plugins are compatible or not with the WYSIWYG editor.": "Deze plugins verbeteren de Markdown renderer met extra mogelijkheden. Merk op dat, hoewel deze functies nuttig kunnen zijn, ze geen standaard Markdown zijn en dat de meeste dus alleen in Joplin zullen werken. Bovendien zijn sommige *incompatibel* met de WYSIWYG editor. Als je een nota opent die een van deze plugins gebruikt in die editor, zal je de opmaak van de plugins verliezen. Hieronder wordt aangegeven welke plugins al dan niet compatibel zijn met de WYSIWYG editor.",
"This attachment is not downloaded or not decrypted yet": "Deze bijlage is nog niet opgehaald of nog niet gedecrypteerd",
@@ -723,7 +641,6 @@
"This service allows the browser extension to communicate with Joplin. When enabling it your firewall may ask you to give permission to Joplin to listen to a particular port.": "Deze dienst laat de browserextensie toe om te communiceren met Joplin. Wanneer u deze inschakelt, kan uw firewall u vragen om Joplin toestemming te geven om op een bepaalde poort te luisteren.",
"This will allow Joplin to run in the background. It is recommended to enable this setting so that your notes are constantly being synchronised, thus reducing the number of conflicts.": "Dit laat Joplin toe in de achtergrond actief te blijven. Dit is aanbevolen omdat zo uw notities voortdurend gesynchroniseerd worden en het aantal conflicten verminderd wordt.",
"This will open a new screen. Save your current changes?": "Dit opent een nieuw venster. Lopende wijzigingen opslaan?",
"This will remove the notebook from your collection and you will no longer have access to its content. Do you wish to continue?": "Dit zal de notitieboek van je verzameling verwijderen. Je zal niet langer toegang hebben tot deze inhoud. Wil je verder gaan?",
"Time format": "Tijdsnotatie",
"title": "titel",
"Title": "Titel",
@@ -748,7 +665,6 @@
"Token has been copied to the clipboard!": "Token is gekopieerd naar het klembord!",
"Tools": "Hulpmiddelen",
"Total: %d/%d": "Totaal: %d/%d",
"Try again": "Probeer opnieuw",
"Type `help [command]` for more information about a command; or type `help all` for the complete usage information.": "Typ `help [commando]` voor meer informatie over een commando; of typ `help all` voor de volledige gebruiksaanwijzing.",
"Type `joplin help` for usage information.": "Typ `joplin help` voor gebruiksinformatie.",
"Type a note title or part of its content to jump to it. Or type # followed by a tag name, or @ followed by a notebook name. Or type : to search for commands.": "Typ de titel van een notitie of een deel van de inhoud om er naartoe te springen. Of typ # gevolgd door de naam van een tag, of @ gevolgd door de naam van een notitieboek. Of typ : om naar commando's te zoeken.",
@@ -758,7 +674,6 @@
"Undo": "Ongedaan maken",
"Unknown flag: %s": "Onbekende optie: %s",
"Unknown item type downloaded - please upgrade Joplin to the latest version": "Onbekend item type opgehaald - gelieve Joplin te upgraden naar de recentste versie",
"Unshare this notebook? The recipients will no longer have access to its content.": "Dit notitieboek niet meer delen? De ontvangers zullen geen toegang meer hebben tot de inhoud.",
"Unsupported image type: %s": "Afbeeldingstype %s wordt niet ondersteund",
"Unsupported link or message: %s": "Niet-ondersteunde koppeling of bericht: %s",
"Untitled": "Untitled",
@@ -779,9 +694,6 @@
"Use the arrows and page up/down to scroll the lists and text areas (including this console).": "Gebruik de pijltjes en page up/down om door de lijsten en de tekstvelden te scrollen (ook in deze console).",
"Use the arrows to move the layout items. Press \"Escape\" to exit.": "Gebruik de pijlen om de schermonderdelen te verplaatsen. Druk op \"escape\" om te eindigen.",
"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.": "Gebruik dit om de zoekindex opnieuw op te bouwen als er een probleem is met het zoeken. Dit kan lang duren, afhankelijk van het aantal notities.",
"Used for most text in the markdown editor. If not found, a generic proportional (variable width) font is used.": "Wordt gebruikt voor de voornaamste tekst in de markdown bewerken. Wanneer dit niet gevonden wordt, zal een proportioneel (variabele breedte) lettertype gebruikt worden.",
"Used where a fixed width font is needed to lay out text legibly (e.g. tables, checkboxes, code). If not found, a generic monospace (fixed width) font is used.": "Wordt gebruikt waar een lettertype met vaste breedte nodig is om de tekst leesbaar uit te lijnen (e.g. tabellen, checkboxes, code). Indien niet gevonden zal er een algemeen monoscape lettertype met vaste breedte worden gebruikt.",
"Users": "Gebruikers",
"View": "Weergave",
"View on map": "Toon op de kaart",
"View them now": "Bekijk ze nu",
@@ -810,8 +722,6 @@
"You may use the tool below to re-encrypt your data, for example if you know that some of your notes are encrypted with an obsolete encryption method.": "U kunt het onderstaande hulpmiddel gebruiken om uw gegevens opnieuw te encrypteren, bijvoorbeeld als u weet dat sommige van uw notities geëncrypteerd zijn met een verouderde encryptiemethode.",
"Your choice: ": "Uw keuze: ",
"Your data is going to be re-encrypted and synced again.": "Uw data zullen opnieuw geëncrypteerd en gesynchroniseerd worden.",
"Your master password is needed to decrypt some of your data.": "Je masterwachtwoord is nodig om een deel van je gegevens te decrypteren.",
"Your password is needed to decrypt some of your data. Type `:e2ee decrypt` to set it.": "Je wachtwoord is nodig om een deel van je gegevens te decrypteren. Typ :e2ee decrypt` om je wachtwoord in te stellen.",
"Your permission to use your camera is required.": "Uw toestemming om de camera te gebruiken is vereist.",
"Your version: %s": "Uw versie: %s",
"Zoom In": "Inzoomen",

View File

@@ -72,6 +72,7 @@
"Auto": "Auto",
"Auto-pair braces, parenthesis, quotations, etc.": "Auto-paar accolades, haakjes, citaten, enz.",
"Automatically switch theme to match system theme": "Automatisch omschakelen thema op basis van systeemthema",
"Automatically update the application": "Applicatie automatisch bijwerken",
"Back": "Terug",
"Bold": "Vetgedrukt",
"Browse all plugins": "Blader door alle plugins",
@@ -448,6 +449,7 @@
"Note: Does not work in all desktop environments.": "Let op: dit werkt niet in alle desktop-omgevingen.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Let op: wanneer een notitie wordt gedeeld, zal deze niet langer versleuteld zijn.",
"Notebook list growth factor": "Notitieboeklijst groeifactor",
"Notebook title:": "Titel van notitieboek:",
"Notebook: %s": "Notitieboek: %s",
"Notebooks": "Notitieboeken",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Notitieboeken mogen niet \"%s\" heten; dit is een gereserveerde titel.",

View File

@@ -71,6 +71,7 @@
"Auto": "Automatyczny",
"Auto-pair braces, parenthesis, quotations, etc.": "Zamykaj klamry, nawiasy, cudzysłowy itd.",
"Automatically switch theme to match system theme": "Automatycznie dopasuj motyw do motywu systemowego",
"Automatically update the application": "Automatycznie aktualizuj aplikację",
"Back": "Cofnij",
"Bold": "Pogrubienie",
"Browse all plugins": "Przeglądaj wszystkie wtyczki",
@@ -337,7 +338,7 @@
"Insert Hyperlink": "Wstaw Hyperlink",
"Install": "Zainstaluj",
"Install from file": "Zainstaluj z pliku",
"Installed": "Zainstalowany",
"Installed": "Zainstwalony",
"Installing...": "Instalowanie.",
"Invalid": "Nieprawidłowy",
"Invalid %s: %s.": "Nieprawidłowy %s: %s.",
@@ -445,6 +446,7 @@
"Note: Does not work in all desktop environments.": "Informacja: Nie działa na wszystkich środowiskach sprzętowych.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Uwaga: Po udostępnieniu notatka nie będzie już szyfrowana na serwerze.",
"Notebook list growth factor": "Czynnik rośnięcia listy notatników",
"Notebook title:": "Tytuł notatnika:",
"Notebook: %s": "Notatnik: %s",
"Notebooks": "Notatniki",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Notatniki nie mogą być nazwane \"%s\", ponieważ jest to nazwa zastrzeżona.",

View File

@@ -79,6 +79,7 @@
"Auto": "Automático",
"Auto-pair braces, parenthesis, quotations, etc.": "Parear automaticamente chaves, parênteses, aspas etc.",
"Automatically switch theme to match system theme": "Automaticamente alterar o tema para o tema do sistema",
"Automatically update the application": "Atualizar automaticamente o aplicativo",
"Back": "Voltar",
"Bold": "Negrito",
"Browse all plugins": "Procurar todos os plugins",
@@ -489,6 +490,7 @@
"Note: Does not work in all desktop environments.": "Nota: não funciona em todos os ambientes de desktop.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Nota: Quando uma nota é compartilhada, não é mais criptografada no servidor.",
"Notebook list growth factor": "Fator de crescimento do bloco de notas",
"Notebook title:": "Título do caderno:",
"Notebook: %s": "Caderno: %s",
"Notebooks": "Cadernos",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Os cadernos não podem ser nomeados como\"%s\", que é um título reservado.",

View File

@@ -71,6 +71,7 @@
"Auto": "Automático",
"Auto-pair braces, parenthesis, quotations, etc.": "Emparelhar automaticamente parênteses curvos, parênteses, citações, etc.",
"Automatically switch theme to match system theme": "Mudar automaticamente o tema para combinar com o tema do sistema",
"Automatically update the application": "Atualizar a aplicação automaticamente",
"Back": "Atrás",
"Bold": "Negrito",
"Browse all plugins": "Procurar todos os plugins",
@@ -445,6 +446,7 @@
"Note: Does not work in all desktop environments.": "Nota: Não funciona em todos os ambientes de trabalho.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Nota: Quando uma nota é partilhada, a mesma deixará de estar encriptada no servidor.",
"Notebook list growth factor": "Fator de crescimento do caderno",
"Notebook title:": "Título do caderno:",
"Notebook: %s": "Caderno: %s",
"Notebooks": "Cadernos",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Cadernos não podem ser nomeados \"%s\", dado que é um título reservado.",

View File

@@ -47,6 +47,7 @@
"Authorisation token:": "Token autorizare:",
"Auto": "Auto",
"Automatically switch theme to match system theme": "Comutați automat tema pentru a se potrivi cu tema sistemului",
"Automatically update the application": "Actualizați automat aplicația",
"Back": "Înapoi",
"Bold": "Bold",
"Browse...": "Căutare...",
@@ -302,6 +303,7 @@
"Note properties": "Titlul caietului de notițe",
"Note title": "Titlul caietului de notițe",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Notă: Când o notă este partajată, aceasta nu va mai fi criptată pe server.",
"Notebook title:": "Titlul agendei:",
"Notebooks": "Caiete de notițe",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Agendele nu pot fi denumite \"%s\", care au un titlu rezervat.",
"Notes can only be created within a notebook.": "Notițele pot fi create numai în cadrul unui caiet de notițe.",

View File

@@ -79,6 +79,7 @@
"Auto": "Автоматически",
"Auto-pair braces, parenthesis, quotations, etc.": "Автоматическое закрытие скобок, кавычек и т. д.",
"Automatically switch theme to match system theme": "Автоматическая смена темы в соответствии с настройками системы",
"Automatically update the application": "Автоматически обновлять приложение",
"Back": "Назад",
"Bold": "Полужирный",
"Browse all plugins": "Просмотр всех плагинов",
@@ -488,6 +489,7 @@
"Note: Does not work in all desktop environments.": "Примечание: работает не во всех окружениях рабочего стола.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Примечание: если вы поделились заметкой - она будет храниться на сервере в незашифрованном виде.",
"Notebook list growth factor": "Фактор роста списка блокнотов",
"Notebook title:": "Название блокнота:",
"Notebook: %s": "Блокнот: %s",
"Notebooks": "Блокноты",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Блокнот не может быть назван \"%s\", так как это зарезервированное название.",

View File

@@ -79,6 +79,7 @@
"Auto": "Avtomatsko",
"Auto-pair braces, parenthesis, quotations, etc.": "Avtomatsko zapri oglate oklepaje, oklepaje, narekovaje, itd.",
"Automatically switch theme to match system theme": "Avtomatsko zamenjaj teme glede na sistemski način teme",
"Automatically update the application": "Samodejno posodobi aplikacijo",
"Back": "Nazaj",
"Bold": "Krepko",
"Browse all plugins": "Brskaj med vsemi dodatki",
@@ -487,6 +488,7 @@
"Note: Does not work in all desktop environments.": "Beležka: Ne deluje v vseh namiznih okoljih.",
"Note: When a note is shared, it will no longer be encrypted on the server.": "Beležka: Ko je bila beležka deljena, ne bo več kodirana na strežniku.",
"Notebook list growth factor": "Rastoči faktor seznamov zvezkov",
"Notebook title:": "Naslov zvezka:",
"Notebook: %s": "Zvezki: %s",
"Notebooks": "Zvezki",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Zvezek ne more biti imenovan \"%s\", ker je to rezervirano ime.",

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