1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-12-23 23:33:01 +02:00

Compare commits

..

1 Commits

Author SHA1 Message Date
Laurent Cozic
7028f25748 Tools: Update scripts for Joplin Cloud support 2022-02-22 11:57:37 +00:00
152 changed files with 5601 additions and 6497 deletions

View File

@@ -490,12 +490,6 @@ packages/app-desktop/gui/NoteEditor/utils/clipboardUtils.test.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenu.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenu.js
packages/app-desktop/gui/NoteEditor/utils/contextMenu.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.js
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.js
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.js.map
packages/app-desktop/gui/NoteEditor/utils/index.d.ts
packages/app-desktop/gui/NoteEditor/utils/index.js
packages/app-desktop/gui/NoteEditor/utils/index.js.map
@@ -730,9 +724,6 @@ packages/app-desktop/gui/utils/convertToScreenCoordinates.js.map
packages/app-desktop/gui/utils/loadScript.d.ts
packages/app-desktop/gui/utils/loadScript.js
packages/app-desktop/gui/utils/loadScript.js.map
packages/app-desktop/loadResources.testEnv.d.ts
packages/app-desktop/loadResources.testEnv.js
packages/app-desktop/loadResources.testEnv.js.map
packages/app-desktop/plugins/GotoAnything.d.ts
packages/app-desktop/plugins/GotoAnything.js
packages/app-desktop/plugins/GotoAnything.js.map
@@ -1648,9 +1639,6 @@ packages/lib/services/searchengine/SearchEngineUtils.js.map
packages/lib/services/searchengine/SearchEngineUtils.test.d.ts
packages/lib/services/searchengine/SearchEngineUtils.test.js
packages/lib/services/searchengine/SearchEngineUtils.test.js.map
packages/lib/services/searchengine/SearchFilter.test.d.ts
packages/lib/services/searchengine/SearchFilter.test.js
packages/lib/services/searchengine/SearchFilter.test.js.map
packages/lib/services/searchengine/filterParser.d.ts
packages/lib/services/searchengine/filterParser.js
packages/lib/services/searchengine/filterParser.js.map
@@ -1978,15 +1966,15 @@ packages/tools/generate-images.js.map
packages/tools/git-changelog.d.ts
packages/tools/git-changelog.js
packages/tools/git-changelog.js.map
packages/tools/licenseChecker.d.ts
packages/tools/licenseChecker.js
packages/tools/licenseChecker.js.map
packages/tools/release-android.d.ts
packages/tools/release-android.js
packages/tools/release-android.js.map
packages/tools/release-cli.d.ts
packages/tools/release-cli.js
packages/tools/release-cli.js.map
packages/tools/release-cloud.d.ts
packages/tools/release-cloud.js
packages/tools/release-cloud.js.map
packages/tools/release-electron.d.ts
packages/tools/release-electron.js
packages/tools/release-electron.js.map
@@ -2026,15 +2014,6 @@ packages/tools/website/updateDownloadPage.js.map
packages/tools/website/utils/frontMatter.d.ts
packages/tools/website/utils/frontMatter.js
packages/tools/website/utils/frontMatter.js.map
packages/tools/website/utils/openGraph.d.ts
packages/tools/website/utils/openGraph.js
packages/tools/website/utils/openGraph.js.map
packages/tools/website/utils/openGraph.test.d.ts
packages/tools/website/utils/openGraph.test.js
packages/tools/website/utils/openGraph.test.js.map
packages/tools/website/utils/parser.d.ts
packages/tools/website/utils/parser.js
packages/tools/website/utils/parser.js.map
packages/tools/website/utils/pressCarousel.d.ts
packages/tools/website/utils/pressCarousel.js
packages/tools/website/utils/pressCarousel.js.map

View File

@@ -38,6 +38,7 @@ echo "GITHUB_REF=$GITHUB_REF"
echo "RUNNER_OS=$RUNNER_OS"
echo "GIT_TAG_NAME=$GIT_TAG_NAME"
echo "BUILD_SEQUENCIAL=$BUILD_SEQUENCIAL"
echo "BUILD_SERVER=$BUILD_SERVER"
echo "SERVER_REPOSITORY=$SERVER_REPOSITORY"
echo "SERVER_TAG_PREFIX=$SERVER_TAG_PREFIX"
@@ -171,7 +172,7 @@ cd "$ROOT_DIR/packages/app-desktop"
if [[ $GIT_TAG_NAME = v* ]]; then
echo "Step: Building and publishing desktop application..."
USE_HARD_LINKS=false yarn run dist
elif [[ $IS_LINUX = 1 ]] && [[ $GIT_TAG_NAME = $SERVER_TAG_PREFIX-* ]]; then
elif [[ $IS_LINUX = 1 ]] && ([[ $GIT_TAG_NAME = $SERVER_TAG_PREFIX-* ]] || [[ $BUILD_SERVER = 1 ]]); then
echo "Step: Building Docker Image..."
cd "$ROOT_DIR"
yarn run buildServerDocker --tag-name $GIT_TAG_NAME --push-images --repository $SERVER_REPOSITORY

66
.github/workflows/joplin-cloud.yml vendored Normal file
View File

@@ -0,0 +1,66 @@
name: Joplin Cloud
on: [push, pull_request]
jobs:
Main:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
steps:
# Silence apt-get update errors (for example when a module doesn't
# exist) since otherwise it will make the whole build fails, even though
# it might work without update. libsecret-1-dev is required for keytar -
# https://github.com/atom/node-keytar
- name: Install Linux dependencies
run: |
sudo apt-get update || true
sudo apt-get install -y gettext
sudo apt-get install -y libsecret-1-dev
sudo apt-get install -y translate-toolkit
- name: Install Docker Engine
run: |
sudo apt-get install -y apt-transport-https
sudo apt-get install -y ca-certificates
sudo apt-get install -y curl
sudo apt-get install -y gnupg
sudo apt-get install -y lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update || true
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- uses: actions/checkout@v2
- uses: olegtarasov/get-tag@v2.1
- uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install Yarn
run: |
# https://yarnpkg.com/getting-started/install
corepack enable
# Login to Docker only if we're on a server release tag. If we run this on
# a pull request it will fail because the PR doesn't have access to
# secrets
- uses: docker/login-action@v1
if: startsWith(github.ref, 'refs/tags/cloud-v')
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Run tests, build and publish Linux and macOS apps
env:
BUILD_SERVER: 1
IS_CONTINUOUS_INTEGRATION: 1
BUILD_SEQUENCIAL: 1
SERVER_REPOSITORY: laurent22/joplin-cloud
SERVER_TAG_PREFIX: cloud
run: |
"${GITHUB_WORKSPACE}/.github/scripts/run_ci.sh"

27
.gitignore vendored
View File

@@ -480,12 +480,6 @@ packages/app-desktop/gui/NoteEditor/utils/clipboardUtils.test.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenu.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenu.js
packages/app-desktop/gui/NoteEditor/utils/contextMenu.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.js
packages/app-desktop/gui/NoteEditor/utils/contextMenu.test.js.map
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.d.ts
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.js
packages/app-desktop/gui/NoteEditor/utils/contextMenuUtils.js.map
packages/app-desktop/gui/NoteEditor/utils/index.d.ts
packages/app-desktop/gui/NoteEditor/utils/index.js
packages/app-desktop/gui/NoteEditor/utils/index.js.map
@@ -720,9 +714,6 @@ packages/app-desktop/gui/utils/convertToScreenCoordinates.js.map
packages/app-desktop/gui/utils/loadScript.d.ts
packages/app-desktop/gui/utils/loadScript.js
packages/app-desktop/gui/utils/loadScript.js.map
packages/app-desktop/loadResources.testEnv.d.ts
packages/app-desktop/loadResources.testEnv.js
packages/app-desktop/loadResources.testEnv.js.map
packages/app-desktop/plugins/GotoAnything.d.ts
packages/app-desktop/plugins/GotoAnything.js
packages/app-desktop/plugins/GotoAnything.js.map
@@ -1638,9 +1629,6 @@ packages/lib/services/searchengine/SearchEngineUtils.js.map
packages/lib/services/searchengine/SearchEngineUtils.test.d.ts
packages/lib/services/searchengine/SearchEngineUtils.test.js
packages/lib/services/searchengine/SearchEngineUtils.test.js.map
packages/lib/services/searchengine/SearchFilter.test.d.ts
packages/lib/services/searchengine/SearchFilter.test.js
packages/lib/services/searchengine/SearchFilter.test.js.map
packages/lib/services/searchengine/filterParser.d.ts
packages/lib/services/searchengine/filterParser.js
packages/lib/services/searchengine/filterParser.js.map
@@ -1968,15 +1956,15 @@ packages/tools/generate-images.js.map
packages/tools/git-changelog.d.ts
packages/tools/git-changelog.js
packages/tools/git-changelog.js.map
packages/tools/licenseChecker.d.ts
packages/tools/licenseChecker.js
packages/tools/licenseChecker.js.map
packages/tools/release-android.d.ts
packages/tools/release-android.js
packages/tools/release-android.js.map
packages/tools/release-cli.d.ts
packages/tools/release-cli.js
packages/tools/release-cli.js.map
packages/tools/release-cloud.d.ts
packages/tools/release-cloud.js
packages/tools/release-cloud.js.map
packages/tools/release-electron.d.ts
packages/tools/release-electron.js
packages/tools/release-electron.js.map
@@ -2016,15 +2004,6 @@ packages/tools/website/updateDownloadPage.js.map
packages/tools/website/utils/frontMatter.d.ts
packages/tools/website/utils/frontMatter.js
packages/tools/website/utils/frontMatter.js.map
packages/tools/website/utils/openGraph.d.ts
packages/tools/website/utils/openGraph.js
packages/tools/website/utils/openGraph.js.map
packages/tools/website/utils/openGraph.test.d.ts
packages/tools/website/utils/openGraph.test.js
packages/tools/website/utils/openGraph.test.js.map
packages/tools/website/utils/parser.d.ts
packages/tools/website/utils/parser.js
packages/tools/website/utils/parser.js.map
packages/tools/website/utils/pressCarousel.d.ts
packages/tools/website/utils/pressCarousel.js
packages/tools/website/utils/pressCarousel.js.map

View File

@@ -307,7 +307,7 @@ p,
div.navbar-mobile-content a.sponsor-button {
padding: 4px 12px;
font-size: 0.9em;
margin-right: 0.5em;
margin-right: 1em;
}
#nav-section.white-bg a {
@@ -670,8 +670,8 @@ footer .bottom-links-row p {
margin-right: auto;
}
.news-page .main-content img,
.news-item-page .main-content img {
.news-page img,
.news-item-page img {
max-width: 100%;
}
@@ -740,7 +740,7 @@ footer .bottom-links-row p {
}
#nav-section .button-link {
padding: 4px 10px;
padding: 4px 12px;
font-size: 15px;
}
}
@@ -937,25 +937,6 @@ footer .bottom-links-row p {
}
}
/*****************************************************************
VERY NARROW VIEW
eg for Galaxy Fold
*****************************************************************/
@media (max-width: 350px) {
#nav-section .navbar-mobile-content a.sponsor-button {
background-color: transparent;
color: #0557ba !important;
font-size: 18px;
}
#nav-section .navbar-mobile-content a.sponsor-button .sponsor-button-label {
display: none;
}
}
/*****************************************************************
PLANS PAGE
*****************************************************************/
@@ -1073,10 +1054,6 @@ footer .bottom-links-row p {
display: none;
}
.joplin-cloud-feature-list table {
width: 100%;
}
.price-row .plan-type {
display: flex;
align-items: center;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

View File

@@ -10,8 +10,8 @@
<link rel="icon" href="{{imageBaseUrl}}/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="Joplin, the open source note-taking application" />
<link rel="stylesheet" href="{{{assetUrls.css.fontawesome}}}">
{{> openGraphTags}}
<link
rel="stylesheet"
href="{{cssBaseUrl}}/bootstrap5.0.2.min.css"

View File

@@ -23,7 +23,7 @@ https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}
<link rel="icon" href="{{imageBaseUrl}}/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
{{> openGraphTags}}
<meta name="description" content="Joplin, the open source note-taking application" />
<link
rel="stylesheet"
href="{{cssBaseUrl}}/bootstrap5.0.2.min.css"
@@ -65,6 +65,11 @@ https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}
{{{contentHtml}}}
{{#showBottomLinks}}
<div class="bottom-links">
{{#discussOnForumLink}}
<a class="bottom-link" href="{{{discussOnForumLink}}}">
<i class="fab fa-discourse"></i></i> Discuss on the forum
</a>
{{/discussOnForumLink}}
{{#showImproveThisDoc}}
<a class="bottom-link" href="https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}">
<i class="fab fa-github"></i> Improve this doc

View File

@@ -12,7 +12,7 @@
</a>
</div>
<div class="col-9 text-right d-none d-md-block">
{{> twitterLink}}
<a href="https://twitter.com/joplinapp" title="Joplin Twitter feed" class="fw500"><i class="fab fa-twitter"></i></a>
<a href="{{baseUrl}}/news/" class="fw500">News</a>
<a href="{{baseUrl}}/help/" class="fw500">Help</a>
<a href="{{forumUrl}}" class="fw500">Forum</a>
@@ -22,7 +22,6 @@
{{> supportButton}}
</div>
<div class="col-9 text-right d-block d-md-none navbar-mobile-content">
{{> twitterLink}}
{{> supportButton}}
<span class="pointer"

View File

@@ -1,14 +0,0 @@
{{#openGraph}}
<meta name="description" content="{{openGraph.description}}" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@joplinapp" />
<meta property="og:url" content="{{{openGraph.url}}}" />
<meta property="og:title" content="{{openGraph.title}}" />
<meta property="twitter:title" content="{{openGraph.title}}" />
<meta property="og:description" content="{{openGraph.description}}" />
<meta property="twitter:description" content="{{openGraph.description}}" />
{{#openGraph.image}}
<meta property="og:image" content="{{{openGraph.image}}}" />
<meta property="twitter:image" content="{{{openGraph.image}}}" />
{{/openGraph.image}}
{{/openGraph}}

View File

@@ -6,11 +6,11 @@
</div>
<div class="plan-price plan-price-monthly">
{{priceMonthly.formattedMonthlyAmount}}<sub class="per-month">&nbsp;/month{{#footnote}} (*){{/footnote}}</sub>
{{priceMonthly.formattedMonthlyAmount}}<sub class="per-month">&nbsp;/month</sub>
</div>
<div class="plan-price plan-price-yearly">
{{priceYearly.formattedMonthlyAmount}}<sub class="per-month">&nbsp;/month{{#footnote}} (*){{/footnote}}</sub>
{{priceYearly.formattedMonthlyAmount}}<sub class="per-month">&nbsp;/month</sub>
</div>
</div>
@@ -20,19 +20,17 @@
</div>
</div>
{{#featureLabelsOn}}
{{#featuresOn}}
<p><i class="fas fa-check feature feature-on"></i>{{.}}</p>
{{/featureLabelsOn}}
{{/featuresOn}}
{{#featureLabelsOff}}
{{#featuresOff}}
<p class="unchecked-text"><i class="fas fa-times feature feature-off"></i>{{.}}</p>
{{/featureLabelsOff}}
{{/featuresOff}}
<p class="text-center subscribe-wrapper">
<a id="subscribeButton-{{name}}" href="{{cfaUrl}}" class="button-link btn-white subscribeButton">{{cfaLabel}}</a>
</p>
{{#footnote}}<sub>(*) {{.}}</sub>{{/footnote}}
</div>
<script>

View File

@@ -1,3 +1,3 @@
<a class="button-link btn-blue sponsor-button" href="{{baseUrl}}/donate">
<i class="fas fa-heart heart-full"></i><i class="far fa-heart heart-line"></i><span class="sponsor-button-label">&nbsp;Support us</span>
<i class="fas fa-heart heart-full"></i><i class="far fa-heart heart-line"></i>&nbsp;Support us
</a>

View File

@@ -1 +0,0 @@
<a href="https://twitter.com/joplinapp" title="Joplin Twitter feed" class="fw500"><i class="fab fa-twitter"></i></a>

View File

@@ -42,23 +42,13 @@
{{> plan}}
{{/plans.pro}}
{{#plans.teams}}
{{#plans.business}}
{{> plan}}
{{/plans.teams}}
{{/plans.business}}
<p class="joplin-cloud-login-info">Already have a Joplin Cloud account? <a href="https://joplincloud.com">Login now</a></p>
</div>
<div class="row">
<div>
<h1>Feature comparison</h1>
<div class="joplin-cloud-feature-list">
{{{featureListHtml}}}
</div>
<p>&nbsp;</p>
</div>
</div>
<div class="row">
{{{faqHtml}}}
</div>

View File

@@ -25,8 +25,6 @@ There are also a few forks of existing packages under the "fork-*" name.
## Building
Make sure the path to the project directory does not contain spaces or the build may fail.
Before doing anything else, from the root of the project, run:
yarn install

View File

@@ -38,7 +38,7 @@ If you want to start contributing to the project's code, please follow these gui
- **Changes that will consist of more than 50 lines of code should be discussed on the [Joplin Forum](https://discourse.joplinapp.org/)**, so that you don't spend too much time implementing something that might not be accepted.
- All the applications share the same backend (database, synchronisation, settings, models, business logic, etc.) so if you change something in the backend in one app, make sure it still works in the other apps. Usually it does, but keep this in mind.
- Pull requests that make many changes using an automated tool, like for spell fixing, styling, etc. will not be accepted. An exception would be if the changes have been discussed in the forum and someone has agreed to review **and test** the pull request.
- Pull requests that address multiple issues will most likely stall and eventually be closed. This is because we might be fine with one of the changes but not with others and untangling that kind of pull request is too much hassle both for maintainers and the person who submitted it. So most of the time someone gives up and the PR gets closed. So please keep the pull request focused on one issue.
- Pull requests that make address multiple issues will most likely stall and eventually be closed. This is because we might be fine with one of the changes but not with others and untangling that kind of pull request is too much hassle both for maintainers and the person who submitted it. So most of the time someone gives up and the PR gets closed. So please keep the pull request focused on one issue.
- **Do not mark your reviewer's comments as "resolved"**. If you do that, the comments will be hidden and the reviewer will not know what are the pending issues in the pull request. Only the reviewer should resolve the comments.
Building the apps is relatively easy - please [see the build instructions](https://github.com/laurent22/joplin/blob/dev/BUILD.md) for more details.
@@ -53,57 +53,37 @@ For changes made to the Desktop client that affect the user interface, refer to
## Automated tests
When submitting a pull request for a new feature or a bug fix, please add automated tests. We use [Jest](https://jestjs.io/) as a testing framework so you will need to be familiar with it or go through their documentation.
When submitting a pull request for a new feature or a bug fix, please add automated tests for your code whenever possible. Tests in Joplin are divided into **unit tests** and **feature tests**.
### Running the tests
* **Unit tests** are used to test models, services or utility classes - they are relatively low level. Unit tests should be prefixed with the type of class that is being tested - for example "models_Folder" or "services_SearchEngine".
To run all the test units, run from the root:
* **Feature tests** on the other hand are to test higher level functionalities such as interactions with the GUI and how they affect the underlying model. Often these tests would dispatch Redux actions, and inspect how the application state has been changed. The feature tests should be prefixed with "feature_", for example "feature_TagList". There's a good explanation on what qualifies as a feature test in [this post](https://github.com/laurent22/joplin/pull/2819#issuecomment-603502230).
The tests are under packages/app-cli/tests. To get them running, you first need to build the CLI app:
```sh
yarn install
cd packages/app-cli
```
To run all the test units:
```sh
yarn test
```
Or you can go inside a package folder, and run the tests from there. For example to run all the library tests, go in `packages/lib` and run `yarn test`
To run just one particular file:
```sh
# Run all the tests in markdownUtils.test.ts
yarn test markdownUtils
yarn test --filter=markdownUtils # Don't add the .js extension
```
To run only a particular test in a file:
To filter tests. For example, to run all the test units that contain "should handle conflict" in their description:
```sh
# Run only the test described as "should handle conflict"
# inside markdownUtils.test.ts:
yarn test markdownUtils --filter="should handle conflict"
yarn test --filter="should handle conflict"
```
### Adding a new test file
To add a test, simply create a new file with an extension `.test.ts` in the same directory. For example if you are working on the file `example.ts`, create a file `example.test.ts` for the unit tests. If this file already exist, simply add your tests directly to it.
### Setting the testing environment
Many utility functions are available under the package `@joplin/lib/testing/test-utils`. Have a look for example at [Note.test.ts](https://github.com/laurent22/joplin/blob/dev/packages/lib/models/Note.test.ts) to see how to setup test units with database support and synchroniser support. Note that this is not needed for all tests - if you just have a simple functions to test you won't need that extra setup.
### Testing React Hooks
To test React Hooks please use the package `@testing-library/react-hooks`. See [useLayoutItemSizes.test.ts](https://github.com/laurent22/joplin/blob/dev/packages/app-desktop/gui/ResizableLayout/utils/useLayoutItemSizes.test.ts) for an example.
### If it is not possible to add tests
More often than not, it is actually possible to add tests - just go back to your code and see if it can be refactored and certain functionalities moved to simple functions (with no dependencies). Once you have a simple function, you can easily add unit tests for it.
Additionally, if the unit tests are not sufficient, please provide a **manual testing plan**, which should include detailed steps on:
- How to test that your feature is working. Include at least 5 tests. Try to think of the possible inputs - if it's a list, how does it work with 0 elements, or 1, or 10, or 100,000. If it's a text input, how does it work with an empty string, or a very large string, etc. Basically don't just put one test that check the best case scenario.
- How to verify that related parts of the applications are not broken. For example if you changed the note loading logic, check that the toolbar is still working as expected (and not modifying the previously loaded note for example), check that switching from one note to another still works. Look at the note list and verify that the note title is updated there too, etc.
A reviewer should be able to run the app with your changes, then do the above steps to verify that everything's working as expected.
## About abandoned pull requests
It happens that a pull request is started but not finished and despite our attempts to contact the contributor, we don't hear from them again.

View File

@@ -4,10 +4,6 @@
* * *
🌞 Joplin participates in **Google Summer of Code 2022**! More info on [the announcement post](https://github.com/laurent22/joplin/blob/dev/readme/news/20220308-gsoc2022-start.md). 🌞
* * *
<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.
@@ -28,11 +24,11 @@ Three types of applications are available: for **desktop** (Windows, macOS and L
Operating System | Download
---|---
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/Joplin-Setup-2.7.15.exe'><img alt='Get it on Windows' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/Joplin-2.7.15.dmg'><img alt='Get it on macOS' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/Joplin-2.7.15.AppImage'><img alt='Get it on Linux' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeLinux.png'/></a>
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v2.6.10/Joplin-Setup-2.6.10.exe'><img alt='Get it on Windows' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v2.6.10/Joplin-2.6.10.dmg'><img alt='Get it on macOS' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v2.6.10/Joplin-2.6.10.AppImage'><img alt='Get it on Linux' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeLinux.png'/></a>
**On Windows**, you may also use the <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/JoplinPortable.exe'>Portable version</a>. The [portable application](https://en.wikipedia.org/wiki/Portable_application) allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.
**On Windows**, you may also use the <a href='https://github.com/laurent22/joplin/releases/download/v2.6.10/JoplinPortable.exe'>Portable version</a>. The [portable application](https://en.wikipedia.org/wiki/Portable_application) allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.
**On Linux**, the recommended way is to use the following installation script as it will handle the desktop icon too:
@@ -42,7 +38,7 @@ Linux | <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/J
Operating System | Download | Alt. Download
---|---|---
Android | <a href='https://play.google.com/store/apps/details?id=net.cozic.joplin&utm_source=GitHub&utm_campaign=README&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeAndroid.png'/></a> | or download the APK file: [64-bit](https://github.com/laurent22/joplin-android/releases/download/android-v2.7.2/joplin-v2.7.2.apk) [32-bit](https://github.com/laurent22/joplin-android/releases/download/android-v2.7.2/joplin-v2.7.2-32bit.apk)
Android | <a href='https://play.google.com/store/apps/details?id=net.cozic.joplin&utm_source=GitHub&utm_campaign=README&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeAndroid.png'/></a> | or download the APK file: [64-bit](https://github.com/laurent22/joplin-android/releases/download/android-v2.6.9/joplin-v2.6.9.apk) [32-bit](https://github.com/laurent22/joplin-android/releases/download/android-v2.6.9/joplin-v2.6.9-32bit.apk)
iOS | <a href='https://itunes.apple.com/us/app/joplin/id1315599797'><img alt='Get it on the App Store' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeIOS.png'/></a> | -
## Terminal application
@@ -80,11 +76,11 @@ A community maintained list of these distributions can be found here: [Unofficia
| :---: | :---: | :---: | :---: |
| <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/49439044?s=96&v=4"/></br>[fourstepper](https://github.com/fourstepper) | <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/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) |
| | | | |
<!-- SPONSORS-GITHUB -->
<!-- TOC -->
@@ -133,7 +129,6 @@ A community maintained list of these distributions can be found here: [Unofficia
- [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)
- [Desktop application styling](https://github.com/laurent22/joplin/blob/dev/readme/spec/desktop_styling.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)
- [Synchronous Scroll spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_scroll.md)
@@ -534,7 +529,7 @@ Current translations:
<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) | miucci | 92%
<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/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%

View File

@@ -1,19 +1,8 @@
# This is a sample docker-compose file that can be used to run Joplin Server
# along with a PostgreSQL server.
#
# Update the following fields in the stanza below:
#
# POSTGRES_USER
# POSTGRES_PASSWORD
# APP_BASE_URL
#
# APP_BASE_URL: This is the base public URL where the service will be running.
# - If Joplin Server needs to be accessible over the internet, configure APP_BASE_URL as follows: https://example.com/joplin.
# - If Joplin Server does not need to be accessible over the internet, set the the APP_BASE_URL to your server's hostname.
# For Example: http://[hostname]:22300. The base URL can include the port.
# APP_PORT: The local port on which the Docker container will listen.
# - This would typically be mapped to port to 443 (TLS) with a reverse proxy.
# - If Joplin Server does not need to be accessible over the internet, the port can be mapped to 22300.
# All environment variables are optional. If you don't set them, you will get a
# warning from docker-compose, however the app should use working defaults.
version: '3'

View File

@@ -1 +0,0 @@
eine Notiz- und Aufgaben-App mit Sync zwischen Linux, macOS, Windows

View File

@@ -1,9 +0,0 @@
<strong>Joplin</strong> is a 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 <a href="#markdown">Markdown format</a>.
Notes exported from Evernote and other applications <a href="https://joplinapp.org/help/#importing">can be imported</a> 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 <a href="https://joplinapp.org/help/#synchronisation">synchronised</a> using <a href="https://joplinapp.org/help/#encryption">end-to-end encryption</a> with various cloud services including Nextcloud, Dropbox, OneDrive and <a href="https://joplinapp.org/plans/">Joplin Cloud</a>.
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 <a href="https://joplinapp.org/clipper/">Web Clipper</a>, to save web pages and screenshots from your browser, is also available for <a href="https://addons.mozilla.org/firefox/addon/joplin-web-clipper/">Firefox</a> and <a href="https://chrome.google.com/webstore/detail/joplin-web-clipper/alofnhikmmkdbbbgpnglcpdollgjjfek?hl=en-GB">Chrome</a>.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

View File

@@ -1 +0,0 @@
a note taking and to-do app with sync between Linux, macOS, Windows, and mobile

View File

@@ -313,10 +313,6 @@ async function fetchAllNotes() {
lines.push('');
lines.push('\tcurl -F \'data=@/path/to/file.jpg\' -F \'props={"title":"my resource title"}\' http://localhost:41184/resources');
lines.push('');
lines.push('Or to **update** a resource:');
lines.push('');
lines.push('\tcurl -X PUT -F \'data=@/path/to/file.jpg\' -F \'props={"title":"my modified title"}\' http://localhost:41184/resources/8fe1417d7b184324bf6b0122b76c4696');
lines.push('');
lines.push('The "data" field is required, while the "props" one is not. If not specified, default values will be used.');
lines.push('');
lines.push('**From a plugin** the syntax to create a resource is also a bit special:');
@@ -372,11 +368,6 @@ async function fetchAllNotes() {
lines.push(`Sets the properties of the ${singular} with ID :id`);
lines.push('');
if (model.type === BaseModel.TYPE_RESOURCE) {
lines.push('You may also update the file data by specifying a file (See `POST /resources` example).');
lines.push('');
}
lines.push(`## DELETE /${tableName}/:id`);
lines.push('');
lines.push(`Deletes the ${singular} with ID :id`);

View File

@@ -63,15 +63,13 @@ class AppComponent extends Component {
contentScriptLoaded: false,
selectedTags: [],
contentScriptError: '',
newNoteId: null,
});
this.confirm_click = async () => {
this.confirm_click = () => {
const content = Object.assign({}, this.props.clippedContent);
content.tags = this.state.selectedTags.join(',');
content.parent_id = this.props.selectedFolderId;
const response = await bridge().sendContentToJoplin(content);
this.setState({ newNoteId: response.id });
bridge().sendContentToJoplin(content);
};
this.contentTitle_change = (event) => {
@@ -404,24 +402,6 @@ class AppComponent extends Component {
);
};
const openNewNoteButton = () => {
if (!this.state.newNoteId) { return null; } else {
return (
// The jopin:// link must be opened in a new tab. When it's opened for the first time, a system dialog will ask for the user's permission.
// The system dialog is too big to fit into the popup so the user will not be able to see the dialog buttons and get stuck.
<a
className="Button"
href={`joplin://x-callback-url/openNote?id=${encodeURIComponent(this.state.newNoteId)}`}
target="_blank"
onClick={() => this.setState({ newNoteId: null })}
>
Open newly created note
</a>
);
}
};
const tagDataListOptions = [];
for (let i = 0; i < this.props.tags.length; i++) {
const tag = this.props.tags[i];
@@ -457,7 +437,6 @@ class AppComponent extends Component {
</div>
{ warningComponent }
{ previewComponent }
{ openNewNoteButton() }
{ clipperStatusComp() }
</div>
);

View File

@@ -463,11 +463,9 @@ class Bridge {
// This is the perfect Heisenbug - it happens always when opening the popup the first time EXCEPT
// when the debugger is open. Then everything is working fine and the bug NEVER EVER happens,
// so it's impossible to understand what's going on.
const response = await this.clipperApiExec('POST', 'notes', { nounce: this.nounce_++ }, content);
await this.clipperApiExec('POST', 'notes', { nounce: this.nounce_++ }, content);
this.dispatch({ type: 'CONTENT_UPLOAD', operation: { uploading: false, success: true } });
return response;
} catch (error) {
if (error.message === '{"error":"Duplicate Nounce"}') {
this.dispatch({ type: 'CONTENT_UPLOAD', operation: { uploading: false, success: true } });

View File

@@ -572,15 +572,8 @@ function useMenu(props: Props) {
menuItemDic.textPaste,
menuItemDic.textSelectAll,
separator(),
// Using the generic "undo"/"redo" roles mean the menu
// item will work in every text fields, whether it's the
// editor or a regular text field.
{
role: 'undo',
},
{
role: 'redo',
},
menuItemDic['editor.undo'],
menuItemDic['editor.redo'],
separator(),
menuItemDic.textBold,
menuItemDic.textItalic,

View File

@@ -732,19 +732,15 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
// It might be buggy, refer to the below issue
// https://github.com/laurent22/joplin/pull/3974#issuecomment-718936703
useEffect(() => {
function pointerInsideEditor(params: any) {
const x = params.x, y = params.y, isEditable = params.isEditable, inputFieldType = params.inputFieldType;
function pointerInsideEditor(x: number, y: number) {
const elements = document.getElementsByClassName('codeMirrorEditor');
// inputFieldType: The input field type of CodeMirror is "textarea" so the inputFieldType = "none",
// and any single-line input above codeMirror has inputFieldType value according to the type of input e.g.(text = plainText, password = password, ...).
if (!elements.length || !isEditable || inputFieldType !== 'none') return null;
if (!elements.length) return null;
const rect = convertToScreenCoordinates(Setting.value('windowContentZoomFactor'), elements[0].getBoundingClientRect());
return rect.x < x && rect.y < y && rect.right > x && rect.bottom > y;
}
async function onContextMenu(_event: any, params: any) {
if (!pointerInsideEditor(params)) return;
if (!pointerInsideEditor(params.x, params.y)) return;
const menu = new Menu();

View File

@@ -3,8 +3,7 @@ import { PluginStates } from '@joplin/lib/services/plugins/reducer';
import SpellCheckerService from '@joplin/lib/services/spellChecker/SpellCheckerService';
import { useEffect } from 'react';
import bridge from '../../../../../services/bridge';
import { ContextMenuOptions, ContextMenuItemType } from '../../../utils/contextMenuUtils';
import { menuItems } from '../../../utils/contextMenu';
import { menuItems, ContextMenuOptions, ContextMenuItemType } from '../../../utils/contextMenu';
import MenuUtils from '@joplin/lib/services/commands/MenuUtils';
import CommandService from '@joplin/lib/services/CommandService';
import convertToScreenCoordinates from '../../../../utils/convertToScreenCoordinates';
@@ -68,8 +67,6 @@ export default function(editor: any, plugins: PluginStates, dispatch: Function)
contextMenuActionOptions.current = {
itemType,
resourceId,
filename: null,
mime: null,
linkToCopy,
textToCopy: null,
htmlToCopy: editor.selection ? editor.selection.getContent() : '',

View File

@@ -93,11 +93,11 @@ const declarations: CommandDeclaration[] = [
},
{
name: 'editor.undo',
label: () => _('Editor: %s', _('Undo')),
label: () => _('Undo'),
},
{
name: 'editor.redo',
label: () => _('Editor: %s', _('Redo')),
label: () => _('Redo'),
},
{
name: 'editor.indentLess',

View File

@@ -1,41 +0,0 @@
/** @jest-environment ./loadResources.testEnv */
// eslint-disable-next-line strict, lines-around-directive
'use strict';
// use strict is necessary here so that typescript doesn't place "use strict" above the jest docblock
// https://github.com/microsoft/TypeScript/issues/15819#issuecomment-782235619
import { textToDataUri, svgUriToPng } from './contextMenuUtils';
jest.mock('@joplin/lib/models/Resource');
describe('contextMenu', () => {
it('should provide proper copy path', async () => {
const testCase = [
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">test</svg>',
'image/svg+xml',
];
const expectedText = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIj50ZXN0PC9zdmc+';
expect(textToDataUri(testCase[0], testCase[1])).toBe(expectedText);
});
it('should convert to png binary', async () => {
const testCase = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiIGhlaWdodD0iMTAwcHgiIHdpZHRoPSIxMDBweCI+CjxnPgoJPHBhdGggZD0iTTI4LjEsMzYuNmM0LjYsMS45LDEyLjIsMS42LDIwLjksMS4xYzguOS0wLjQsMTktMC45LDI4LjksMC45YzYuMywxLjIsMTEuOSwzLjEsMTYuOCw2Yy0xLjUtMTIuMi03LjktMjMuNy0xOC42LTMxLjMgICBjLTQuOS0wLjItOS45LDAuMy0xNC44LDEuNEM0Ny44LDE3LjksMzYuMiwyNS42LDI4LjEsMzYuNnoiLz4KCTxwYXRoIGQ9Ik03MC4zLDkuOEM1Ny41LDMuNCw0Mi44LDMuNiwzMC41LDkuNWMtMyw2LTguNCwxOS42LTUuMywyNC45YzguNi0xMS43LDIwLjktMTkuOCwzNS4yLTIzLjFDNjMuNywxMC41LDY3LDEwLDcwLjMsOS44eiIvPgoJPHBhdGggZD0iTTE2LjUsNTEuM2MwLjYtMS43LDEuMi0zLjQsMi01LjFjLTMuOC0zLjQtNy41LTctMTEtMTAuOGMtMi4xLDYuMS0yLjgsMTIuNS0yLjMsMTguN0M5LjYsNTEuMSwxMy40LDUwLjIsMTYuNSw1MS4zeiIvPgoJPHBhdGggZD0iTTksMzEuNmMzLjUsMy45LDcuMiw3LjYsMTEuMSwxMS4xYzAuOC0xLjYsMS43LTMuMSwyLjYtNC42YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC42Yy0yLjktMy4zLTMuMS05LjItMC42LTE3LjYgICBjMC44LTIuNywxLjgtNS4zLDIuNy03LjRjLTUuMiwzLjQtOS44LDgtMTMuMywxMy43QzEwLjgsMjcuOSw5LjgsMjkuNyw5LDMxLjZ6Ii8+Cgk8cGF0aCBkPSJNMTUuNCw1NC43Yy0yLjYtMS02LjEsMC43LTkuNywzLjRjMS4yLDYuNiwzLjksMTMsOCwxOC41QzEzLDY5LjMsMTMuNSw2MS44LDE1LjQsNTQuN3oiLz4KCTxwYXRoIGQ9Ik0zOS44LDU3LjZDNTQuMyw2Ni43LDcwLDczLDg2LjUsNzYuNGMwLjYtMC44LDEuMS0xLjYsMS43LTIuNWM0LjgtNy43LDctMTYuMyw2LjgtMjQuOGMtMTMuOC05LjMtMzEuMy04LjQtNDUuOC03LjcgICBjLTkuNSwwLjUtMTcuOCwwLjktMjMuMi0xLjdjLTAuMSwwLjEtMC4yLDAuMy0wLjMsMC40Yy0xLDEuNy0yLDMuNC0yLjksNS4xQzI4LjIsNDkuNywzMy44LDUzLjksMzkuOCw1Ny42eiIvPgoJPHBhdGggZD0iTTI2LjIsODguMmMzLjMsMiw2LjcsMy42LDEwLjIsNC43Yy0zLjUtNi4yLTYuMy0xMi42LTguOC0xOC41Yy0zLjEtNy4yLTUuOC0xMy41LTktMTcuMmMtMS45LDgtMiwxNi40LTAuMywyNC43ICAgQzIwLjYsODQuMiwyMy4yLDg2LjMsMjYuMiw4OC4yeiIvPgoJPHBhdGggZD0iTTMwLjksNzNjMi45LDYuOCw2LjEsMTQuNCwxMC41LDIxLjJjMTUuNiwzLDMyLTIuMyw0Mi42LTE0LjZDNjcuNyw3Niw1Mi4yLDY5LjYsMzcuOSw2MC43QzMyLDU3LDI2LjUsNTMsMjEuMyw0OC42ICAgYy0wLjYsMS41LTEuMiwzLTEuNyw0LjZDMjQuMSw1Ny4xLDI3LjMsNjQuNSwzMC45LDczeiIvPgo8L2c+Cjwvc3ZnPg==';
const png = await svgUriToPng(document, testCase);
expect(png).toBeInstanceOf(Uint8Array);
});
it('should throw error on invalid svg uri', async () => {
// We are mocking console.error since jsdom throws errors to console when we try to load an invalid img
// https://github.com/facebook/jest/pull/5267#issuecomment-356605468
const consoleError = console.error;
console.error = jest.fn();
const testCases: Array<string> = [
'data:image/svg+xml;base64,error',
'invalid',
];
for (const testCase of testCases) {
await expect(svgUriToPng(document, testCase)).rejects.toBeInstanceOf(Error);
}
console.error = consoleError;
});
});

View File

@@ -2,7 +2,6 @@ import ResourceEditWatcher from '@joplin/lib/services/ResourceEditWatcher/index'
import { _ } from '@joplin/lib/locale';
import { copyHtmlToClipboard } from './clipboardUtils';
import bridge from '../../../services/bridge';
import { ContextMenuItemType, ContextMenuOptions, ContextMenuItems, resourceInfo, textToDataUri, svgUriToPng } from './contextMenuUtils';
const Menu = bridge().Menu;
const MenuItem = bridge().MenuItem;
import Resource from '@joplin/lib/models/Resource';
@@ -11,10 +10,43 @@ import BaseModel from '@joplin/lib/BaseModel';
import { processPastedHtml } from './resourceHandling';
import { NoteEntity, ResourceEntity } from '@joplin/lib/services/database/types';
const fs = require('fs-extra');
const { writeFile } = require('fs-extra');
const { clipboard } = require('electron');
const { toSystemSlashes } = require('@joplin/lib/path-utils');
export enum ContextMenuItemType {
None = '',
Image = 'image',
Resource = 'resource',
Text = 'text',
Link = 'link',
}
export interface ContextMenuOptions {
itemType: ContextMenuItemType;
resourceId: string;
linkToCopy: string;
textToCopy: string;
htmlToCopy: string;
insertContent: Function;
isReadOnly?: boolean;
}
interface ContextMenuItem {
label: string;
onAction: Function;
isActive: Function;
}
interface ContextMenuItems {
[key: string]: ContextMenuItem;
}
async function resourceInfo(options: ContextMenuOptions): Promise<any> {
const resource = options.resourceId ? await Resource.load(options.resourceId) : null;
const resourcePath = resource ? Resource.fullPath(resource) : '';
return { resource, resourcePath };
}
function handleCopyToClipboard(options: ContextMenuOptions) {
if (options.textToCopy) {
clipboard.writeText(options.textToCopy);
@@ -23,12 +55,6 @@ function handleCopyToClipboard(options: ContextMenuOptions) {
}
}
async function saveFileData(data: any, filename: string) {
const newFilePath = await bridge().showSaveDialog({ defaultPath: filename });
if (!newFilePath) return;
await writeFile(newFilePath, data);
}
export async function openItemById(itemId: string, dispatch: Function, hash: string = '') {
const item = await BaseItem.loadItemById(itemId);
@@ -74,7 +100,7 @@ export function menuItems(dispatch: Function): ContextMenuItems {
onAction: async (options: ContextMenuOptions) => {
await openItemById(options.resourceId, dispatch);
},
isActive: (itemType: ContextMenuItemType, options: ContextMenuOptions) => !options.textToCopy && (itemType === ContextMenuItemType.Image || itemType === ContextMenuItemType.Resource),
isActive: (itemType: ContextMenuItemType) => itemType === ContextMenuItemType.Image || itemType === ContextMenuItemType.Resource,
},
saveAs: {
label: _('Save as...'),
@@ -86,32 +112,7 @@ export function menuItems(dispatch: Function): ContextMenuItems {
if (!filePath) return;
await fs.copy(resourcePath, filePath);
},
// We handle images received as text seperately as it can be saved in multiple formats
isActive: (itemType: ContextMenuItemType, options: ContextMenuOptions) => !options.textToCopy && (itemType === ContextMenuItemType.Image || itemType === ContextMenuItemType.Resource),
},
saveAsSvg: {
label: _('Save as SVG'),
onAction: async (options: ContextMenuOptions) => {
await saveFileData(options.textToCopy, options.filename);
},
isActive: (itemType: ContextMenuItemType, options: ContextMenuOptions) => !!options.textToCopy && itemType === ContextMenuItemType.Image && options.mime?.startsWith('image/svg'),
},
saveAsPng: {
label: _('Save as PNG'),
onAction: async (options: ContextMenuOptions) => {
// First convert it to png then save
if (options.mime != 'image/svg+xml') {
throw new Error(`Unsupported image type: ${options.mime}`);
}
if (!options.filename) {
throw new Error('Filename is needed to save as png');
}
const dataUri = textToDataUri(options.textToCopy, options.mime);
const png = await svgUriToPng(document, dataUri);
const filename = options.filename.replace('.svg', '.png');
await saveFileData(png, filename);
},
isActive: (itemType: ContextMenuItemType, options: ContextMenuOptions) => !!options.textToCopy && itemType === ContextMenuItemType.Image && options.mime?.startsWith('image/svg'),
isActive: (itemType: ContextMenuItemType) => itemType === ContextMenuItemType.Image || itemType === ContextMenuItemType.Resource,
},
revealInFolder: {
label: _('Reveal file in folder'),
@@ -119,20 +120,13 @@ export function menuItems(dispatch: Function): ContextMenuItems {
const { resourcePath } = await resourceInfo(options);
bridge().showItemInFolder(resourcePath);
},
isActive: (itemType: ContextMenuItemType, options: ContextMenuOptions) => !options.textToCopy && itemType === ContextMenuItemType.Image || itemType === ContextMenuItemType.Resource,
isActive: (itemType: ContextMenuItemType) => itemType === ContextMenuItemType.Image || itemType === ContextMenuItemType.Resource,
},
copyPathToClipboard: {
label: _('Copy path to clipboard'),
onAction: async (options: ContextMenuOptions) => {
let path = '';
if (options.textToCopy && options.mime) {
path = textToDataUri(options.textToCopy, options.mime);
} else {
const { resourcePath } = await resourceInfo(options);
if (resourcePath) path = toSystemSlashes(resourcePath);
}
if (!path) return;
clipboard.writeText(path);
const { resourcePath } = await resourceInfo(options);
clipboard.writeText(toSystemSlashes(resourcePath));
},
isActive: (itemType: ContextMenuItemType) => itemType === ContextMenuItemType.Image || itemType === ContextMenuItemType.Resource,
},
@@ -143,7 +137,7 @@ export function menuItems(dispatch: Function): ContextMenuItems {
const image = bridge().createImageFromPath(resourcePath);
clipboard.writeImage(image);
},
isActive: (itemType: ContextMenuItemType, options: ContextMenuOptions) => !options.textToCopy && itemType === ContextMenuItemType.Image,
isActive: (itemType: ContextMenuItemType) => itemType === ContextMenuItemType.Image,
},
cut: {
label: _('Cut'),
@@ -151,14 +145,14 @@ export function menuItems(dispatch: Function): ContextMenuItems {
handleCopyToClipboard(options);
options.insertContent('');
},
isActive: (itemType: ContextMenuItemType, options: ContextMenuOptions) => itemType != ContextMenuItemType.Image && (!options.isReadOnly && (!!options.textToCopy || !!options.htmlToCopy)),
isActive: (_itemType: ContextMenuItemType, options: ContextMenuOptions) => !options.isReadOnly && (!!options.textToCopy || !!options.htmlToCopy),
},
copy: {
label: _('Copy'),
onAction: async (options: ContextMenuOptions) => {
handleCopyToClipboard(options);
},
isActive: (itemType: ContextMenuItemType, options: ContextMenuOptions) => itemType != ContextMenuItemType.Image && (!!options.textToCopy || !!options.htmlToCopy),
isActive: (_itemType: ContextMenuItemType, options: ContextMenuOptions) => !!options.textToCopy || !!options.htmlToCopy,
},
paste: {
label: _('Paste'),
@@ -190,6 +184,7 @@ export default async function contextMenu(options: ContextMenuOptions, dispatch:
const items = menuItems(dispatch);
if (!('readyOnly' in options)) options.isReadOnly = true;
for (const itemKey in items) {
const item = items[itemKey];

View File

@@ -1,92 +0,0 @@
import Resource from '@joplin/lib/models/Resource';
export enum ContextMenuItemType {
None = '',
Image = 'image',
Resource = 'resource',
Text = 'text',
Link = 'link',
}
export interface ContextMenuOptions {
itemType: ContextMenuItemType;
resourceId: string;
mime: string;
filename: string;
linkToCopy: string;
textToCopy: string;
htmlToCopy: string;
insertContent: Function;
isReadOnly?: boolean;
}
export interface ContextMenuItem {
label: string;
onAction: Function;
isActive: Function;
}
export interface ContextMenuItems {
[key: string]: ContextMenuItem;
}
export async function resourceInfo(options: ContextMenuOptions): Promise<any> {
const resource = options.resourceId ? await Resource.load(options.resourceId) : null;
const filePath = resource ? Resource.fullPath(resource) : null;
const filename = resource ? (resource.filename ? resource.filename : resource.title) : options.filename ? options.filename : '';
return { resource, filePath, filename };
}
export function textToDataUri(text: string, mime: string): string {
return `data:${mime};base64,${Buffer.from(text).toString('base64')}`;
}
export const svgUriToPng = (document: Document, svg: string) => {
return new Promise<Uint8Array>((resolve, reject) => {
let canvas: HTMLCanvasElement;
let img: HTMLImageElement;
const cleanUpAndReject = (e: Error) => {
if (canvas) canvas.remove();
if (img) img.remove();
return reject(e);
};
try {
img = document.createElement('img');
if (!img) throw new Error('Failed to create img element');
} catch (e) {
return cleanUpAndReject(e);
}
img.onload = function() {
try {
canvas = document.createElement('canvas');
if (!canvas) throw new Error('Failed to create canvas element');
canvas.width = img.width;
canvas.height = img.height;
const ctx = canvas.getContext('2d');
if (!ctx) throw new Error('Failed to get context');
ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, img.width, img.height);
const pngUri = canvas.toDataURL('image/png');
if (!pngUri) throw new Error('Failed to generate png uri');
const pngBase64 = pngUri.split(',')[1];
const byteString = atob(pngBase64);
// write the bytes of the string to a typed array
const buff = new Uint8Array(byteString.length);
for (let i = 0; i < byteString.length; i++) {
buff[i] = byteString.charCodeAt(i);
}
canvas.remove();
img.remove();
resolve(buff);
} catch (err) {
cleanUpAndReject(err);
}
};
img.onerror = function(e) {
cleanUpAndReject(new Error(e.toString()));
};
img.src = svg;
});
};

View File

@@ -35,8 +35,6 @@ export default function useMessageHandler(scrollWhenReady: any, setScrollWhenRea
const menu = await contextMenu({
itemType: arg0 && arg0.type,
resourceId: arg0.resourceId,
filename: arg0.filename,
mime: arg0.mime,
textToCopy: arg0.textToCopy,
linkToCopy: arg0.linkToCopy || null,
htmlToCopy: '',

View File

@@ -40,13 +40,8 @@ export default function() {
'toggleVisiblePanes',
'editor.deleteLine',
'editor.duplicateLine',
// We cannot put the undo/redo commands in the menu because they are
// editor-specific commands. If we put them there it will break the
// undo/redo in regular text fields.
// https://github.com/laurent22/joplin/issues/6214
// 'editor.undo',
// 'editor.redo',
'editor.undo',
'editor.redo',
'editor.indentLess',
'editor.indentMore',
'editor.toggleComment',

View File

@@ -586,24 +586,9 @@
}));
document.addEventListener('contextmenu', webviewLib.logEnabledEventHandler(event => {
// To handle right clicks on resource icons
let element = event.target;
// Mermaid svgs are wrapped inside a <pre> with class "mermaid"
let mermaidElement = element.closest(".mermaid")?.children[0];
if (mermaidElement) {
const svgString = new XMLSerializer().serializeToString(mermaidElement);
if (!!svgString) {
ipcProxySendToHost('contextMenu', {
type: 'image',
textToCopy: svgString,
mime: 'image/svg+xml',
filename: mermaidElement.id + '.svg',
});
}
return;
}
// To handle right clicks on resource icons
if (element && !element.getAttribute('data-resource-id')) element = element.parentElement;
if (element && element.getAttribute('data-resource-id')) {

View File

@@ -1,20 +0,0 @@
/**
* A Jest custom test Environment to load the resources for the tests.
* Use this test envirenment when you work with resources like images, files.
* See gui/NoteEditor/utils/contextMenu.test.ts for an example.
*/
const JSDOMEnvironment = require('jest-environment-jsdom');
import type { EnvironmentContext } from '@jest/environment';
import type { Config } from '@jest/types';
export default class CustomEnvironment extends JSDOMEnvironment {
constructor(config: Config.ProjectConfig, context?: EnvironmentContext) {
// Resources is set to 'usable' to enable fetching of resources like images and fonts while testing
// Which does not happen by default in jest
// https://stackoverflow.com/a/49482563
config.testEnvironmentOptions.resources = 'usable';
super(config, context);
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/app-desktop",
"version": "2.7.14",
"version": "2.7.12",
"description": "Joplin for Desktop",
"main": "main.js",
"private": true,
@@ -67,7 +67,7 @@
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": false,
"allowToChangeInstallationDirectory": true,
"differentialPackage": false
},
"portable": {
@@ -116,7 +116,6 @@
"app-builder-bin": "^1.9.11",
"babel-cli": "^6.26.0",
"babel-preset-react": "^6.24.1",
"canvas": "^2.9.0",
"electron": "14.1.0",
"electron-builder": "^22.11.7",
"electron-notarize": "^1.0.0",

View File

@@ -210,7 +210,7 @@ class CameraView extends Component {
<View style={{ flex: 1, flexDirection: 'row', justifyContent: 'center', alignItems: 'flex-end' }}>
<View style={{ flex: 1, flexDirection: 'row', justifyContent: 'center', alignItems: 'center', marginBottom: 20 }}>
{ reverseCameraButton }
<TouchableOpacity onPress={this.photo_onPress} disabled={this.state.snapping}>
<TouchableOpacity onPress={this.photo_onPress}>
<View style={{ flexDirection: 'row', borderRadius: 90, width: 90, height: 90, backgroundColor: '#ffffffaa', display: 'flex', justifyContent: 'center', alignItems: 'center' }}>
<Icon
name={photoIcon}

View File

@@ -103,7 +103,7 @@ export default class SelectDateTimeDialog extends React.PureComponent<any, any>
return (
<View style={{ flex: 0, margin: 20, alignItems: 'center' }}>
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
{ this.state.date && <Text style={{ ...theme.normalText,color: theme.color, marginRight: 10 }}>{time.formatDateToLocal(this.state.date)}</Text> }
{ this.state.date && <Text style={{ ...theme.normalText, marginRight: 10 }}>{time.formatDateToLocal(this.state.date)}</Text> }
<Button title="Set date" onPress={this.onSetDate} />
</View>
<DateTimePickerModal

View File

@@ -21,7 +21,6 @@ class NoteTagsDialogComponent extends React.Component {
tagListData: [],
newTags: '',
savingTags: false,
tagFilter: '',
};
const noteHasTag = tagId => {
@@ -89,10 +88,6 @@ class NoteTagsDialogComponent extends React.Component {
this.cancelButton_press = () => {
if (this.props.onCloseRequested) this.props.onCloseRequested();
};
this.filterTags = (allTags) => {
return allTags.filter((tag) => tag.title.includes(this.state.tagFilter.toLowerCase()), allTags);
};
}
UNSAFE_componentWillMount() {
@@ -145,16 +140,16 @@ class NoteTagsDialogComponent extends React.Component {
fontSize: 20,
color: theme.color,
},
tagBox: {
newTagBox: {
flexDirection: 'row',
alignItems: 'center',
paddingLeft: 10,
paddingRight: 10,
paddingLeft: theme.marginLeft,
paddingRight: theme.marginRight,
borderBottomWidth: 1,
borderBottomColor: theme.dividerColor,
},
newTagBoxLabel: Object.assign({}, theme.normalText, { marginRight: 8 }),
tagBoxInput: Object.assign({}, theme.lineInput, { flex: 1 }),
newTagBoxInput: Object.assign({}, theme.lineInput, { flex: 1 }),
};
this.styles_[themeId] = StyleSheet.create(styles);
@@ -166,7 +161,7 @@ class NoteTagsDialogComponent extends React.Component {
const dialogContent = (
<View style={{ flex: 1 }}>
<View style={this.styles().tagBox}>
<View style={this.styles().newTagBox}>
<Text style={this.styles().newTagBoxLabel}>{_('New tags:')}</Text>
<TextInput
selectionColor={theme.textSelectionColor}
@@ -175,23 +170,10 @@ class NoteTagsDialogComponent extends React.Component {
onChangeText={value => {
this.setState({ newTags: value });
}}
style={this.styles().tagBoxInput}
placeholder={_('tag1,tag2,...')}
style={this.styles().newTagBoxInput}
/>
</View>
<View style={this.styles().tagBox}>
<TextInput
selectionColor={theme.textSelectionColor}
keyboardAppearance={theme.keyboardAppearance}
value={this.state.tagFilter}
onChangeText={value => {
this.setState({ tagFilter: value });
}}
placeholder={_('Filter tags')}
style={this.styles().tagBoxInput}
/>
</View>
<FlatList data={this.filterTags(this.state.tagListData)} renderItem={this.renderTag} keyExtractor={this.tagKeyExtractor} />
<FlatList data={this.state.tagListData} renderItem={this.renderTag} keyExtractor={this.tagKeyExtractor} />
</View>
);

View File

@@ -66,7 +66,7 @@
"Aritim Dark": "Aritim Dark",
"Attach file": "Liitä tiedosto",
"Attach photo": "Liitä valokuva",
"Attach...": "Liitä...",
"Attach...": "Liitä...",
"Attaches the given file to the note.": "Liittää annetun tiedoston muistiinpanoon.",
"attachment": "liite",
"Attachment conflict: \"%s\"": "Liitteen ristiriita: \"%s\"",
@@ -78,7 +78,6 @@
"Authorisation token:": "Valtuutuksen tunnus:",
"Auto": "Automaattinen",
"Auto-pair braces, parenthesis, quotations, etc.": "Yhdistä sulut, sulkeet, lainaukset jne.",
"Automatically check for updates": "Tarkista päivitykset automaattisesti",
"Automatically switch theme to match system theme": "Vaihda teema automaattisesti vastaamaan järjestelmän teemaa",
"Back": "Takaisin",
"Bold": "Lihavoitu",
@@ -143,7 +142,6 @@
"Convert to todo": "Muunna tehtäväksi",
"Copy": "Kopioi",
"Copy dev mode command to clipboard": "Kopioi kehitystila komento leikepöydälle",
"Copy image": "Kopioi kuva",
"Copy Link Address": "Kopioi linkin osoite",
"Copy Markdown link": "Kopioi Merkinnän linkki",
"Copy path to clipboard": "Kopioi polku leikepöydälle",
@@ -155,8 +153,6 @@
"Could not install plugin: %s": "Laajennuksen asentaminen epäonnistui: %s",
"Could not upgrade master key: %s": "Pääavainta ei voitu päivittää: %s",
"Create a notebook": "Luo muistikirja",
"Create notebook": "Luo muistikirja",
"Create user": "Luo käyttäjä",
"Created": "Luotu",
"created date": "luotu päivämäärä",
"Created local items: %d.": "Luodut paikalliset kohteet: %d.",
@@ -252,8 +248,6 @@
"Editor monospace font family": "Editorin monospace fonttiperhe",
"Either \"text\" or \"json\"": "Joko \"text\" tai \"json\"",
"Emacs": "Emacs",
"Email": "Sähköposti",
"Emails": "Sähköpostit",
"emphasised text": "korostettu teksti",
"Enable": "Ota käyttöön",
"Enable ++insert++ syntax": "Ota käyttöön ++insert++ syntax",
@@ -285,8 +279,6 @@
"Encryption": "Salaus",
"Encryption Config": "Salauksen määritys",
"Encryption is: %s": "Salaus on: %s",
"Encryption keys": "Salausavaimet",
"Encryption:": "Salaus:",
"Enter code here": "Syötä koodi tähän",
"Enter master password:": "Syötä pääsalasana:",
"Enter notebook title": "Anna muistikirjan otsikko",
@@ -354,7 +346,6 @@
"Idle": "Käyttämättömänä",
"Ignore": "Ohita",
"Ignore TLS certificate errors": "Ohita TLS varmenteen virheet",
"Images": "Kuvat",
"Import": "Tuo",
"Importing from \"%s\" as \"%s\" format. Please wait...": "Tuodaan kohteesta \"%s\" as \"%s\" muodossa. Odota...",
"Importing notes...": "Muistiinpanojen tuominen...",
@@ -383,7 +374,6 @@
"Invalid answer: %s": "Virheellinen vastaus: %s",
"Invalid command: \"%s\"": "Virheellinen komento: \"%s\"",
"Invalid option value: \"%s\". Possible values are: %s.": "Virheellinen asetusarvo: \"%s\". Mahdolliset arvot ovat: %s.",
"Invalid password": "Virheellinen salasana",
"Italic": "Kursiivi",
"Item \"%s\" could not be downloaded: %s": "Kohdetta \"%s\" ei voitu ladata: %s",
"Items that cannot be decrypted": "Kohteet, joita ei voi purkaa",
@@ -429,8 +419,6 @@
"Login with Dropbox": "Kirjaudu sisään Dropbox",
"Login with OneDrive": "Kirjaudu sisään OneDrive",
"Make a donation": "Tee lahjoitus",
"Manage master password": "Pääsalasanan hallinta",
"Manage master password...": "Pääsalasanan hallinta...",
"Manage your plugins": "Hallitse laajennuksia",
"Manual": "Manuaalinen",
"Markdown": "Markdown",
@@ -438,8 +426,6 @@
"Marks a to-do as non-completed.": "Merkitsee tehtävän keskeneräiseksi.",
"Markup": "Merkintä",
"Master Key %s": "Pääavain %s",
"Master password": "Pääsalasana",
"Master password:": "Pääsalasana:",
"Max concurrent connections": "Samanaikaiset yhteydet enintään",
"Missing Master Keys": "Puuttuvat pääavaimet",
"Missing required argument: %s": "Vaadittu argumentti puuttuu: %s",
@@ -489,7 +475,7 @@
"Note body": "Muistiinpanon kappale",
"Note does not exist: \"%s\". Create it?": "Huomautusta ei ole: \"%s\". Luodaanko se?",
"Note has been saved.": "Huomautus on tallennettu.",
"Note History": "Muistiinpanohistoria",
"Note History": "Muistiinpano historia",
"Note is not a to-do: \"%s\"": "Huomautus ei ole tehtävä: \"%s\"",
"Note list": "Muistiinpanot",
"Note list growth factor": "Huomautus luettelon kasvutekijä",
@@ -498,12 +484,10 @@
"Note&book": "&Muistikirjat",
"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": "Muistikirja",
"Notebook list growth factor": "Muistikirjaluettelon kasvutekijä",
"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.",
"Notes": "Muistiinpanot",
"Notes and settings are stored in: %s": "Muistiinpanot ja oletusasetukset tallennetaan: %s",
"Notes can only be created within a notebook.": "Muistiinpanoja voi luoda vain muistikirjaan.",
"Numbered List": "Numeroitu luettelo",
@@ -617,7 +601,6 @@
"See the pre-release page for more details: %s": "Lisätietoja on ennakkojulkaisusivulla: %s",
"Select": "Valitse",
"Select all": "Valitse kaikki",
"Select file...": "Valitse tiedosto...",
"Server is already running on port %d": "Palvelin on jo käynnissä portissa %d",
"Server is not running.": "Palvelin ei ole käynnissä.",
"Server is running on port %d": "Palvelin on käynnissä portissa %d",
@@ -814,7 +797,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.": "Tämän avulla voit muodostaa hakuindeksin uudelleen, jos haussa on ongelma. Se voi kestää kauan muistiinpanojen määrästä riippuen.",
"Used for most text in the markdown editor. If not found, a generic proportional (variable width) font is used.": "Käytetään useimmissa teksteissä markdown editorissa. Jos sitä ei löydy, käytetään yleistä suhteellista fonttia (vaihtelevaa leveyttä).",
"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.": "Käytetään, kun tekstiin tarvitaan kiinteäleveyksinen fontti (esim. taulukot, valintaruudut, koodi). Jos sitä ei löydy, käytetään yleistä monospace fonttia (kiinteäleveyksinen).",
"Users": "Käyttäjät",
"Valid": "Kelvollinen",
"View": "Näytä",
"View on map": "Näytä kartalla",

View File

@@ -81,7 +81,7 @@
"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 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",
"Back": "Retour",
"Bold": "Gras",
@@ -663,7 +663,7 @@
"Select": "Sélectionner",
"Select all": "Sélectionner tout",
"Select emoji...": "Sélectionner émoji...",
"Select file...": "Sélectionner fichier...",
"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",

View File

@@ -55,7 +55,7 @@ stats['en_GB'] = {"percentDone":100};
stats['en_US'] = {"percentDone":100};
stats['es_ES'] = {"percentDone":96};
stats['eo'] = {"percentDone":29};
stats['fi_FI'] = {"percentDone":92};
stats['fi_FI'] = {"percentDone":91};
stats['fr_FR'] = {"percentDone":100};
stats['gl_ES'] = {"percentDone":33};
stats['id_ID'] = {"percentDone":90};

View File

@@ -15,17 +15,8 @@ export class MarkupLanguageUtils {
throw new Error(`Unsupported markup language: ${language}`);
}
public extractImageUrls(language: MarkupLanguage, text: string): string[] {
let urls: string[] = [];
if (language === MarkupLanguage.Any) {
urls = urls.concat(this.lib_(MarkupLanguage.Markdown).extractImageUrls(text));
urls = urls.concat(this.lib_(MarkupLanguage.Html).extractImageUrls(text));
} else {
urls = this.lib_(language).extractImageUrls(text);
}
return urls;
public extractImageUrls(language: MarkupLanguage, text: string) {
return this.lib_(language).extractImageUrls(text);
}
// Create a new MarkupToHtml instance while injecting options specific to Joplin

View File

@@ -1,6 +1,6 @@
import { expectNotThrow, naughtyStrings, setupDatabaseAndSynchronizer, switchClient } from '../testing/test-utils';
import Note from '../models/Note';
import Revision, { ObjectPatch } from '../models/Revision';
import Revision from '../models/Revision';
describe('models/Revision', function() {
@@ -139,53 +139,6 @@ describe('models/Revision', function() {
expect(JSON.stringify(merged)).toBe(JSON.stringify(newObject));
}));
it('should handle invalid object patch', (async () => {
const oldObject = {
one: '123',
two: '456',
three: '789',
};
const brokenPatch = `{"new":{"four":"444
"},"deleted":["one"]}`;
const expected = {
two: '456',
three: '789',
four: '444',
};
const merged = Revision.applyObjectPatch(oldObject, brokenPatch);
expect(JSON.stringify(merged)).toBe(JSON.stringify(expected));
}));
it('should not strip off newlines from object values', (async () => {
const oldObject = {
one: '123',
two: '456',
three: '789',
};
const patch: ObjectPatch = {
'new': {
'four': 'one line\ntwo line',
},
'deleted': [],
};
const expected = {
one: '123',
two: '456',
three: '789',
four: 'one line\ntwo line',
};
const merged = Revision.applyObjectPatch(oldObject, JSON.stringify(patch));
expect(JSON.stringify(merged)).toBe(JSON.stringify(expected));
}));
it('should move target revision to the top', (async () => {
const revs = [
{ id: '123' },
@@ -229,10 +182,6 @@ describe('models/Revision', function() {
%0A%0A# `,
expected: [-(19 + 27 + 2), 17 + 67 + 4],
},
{
patch: '',
expected: [-0, +0],
},
];
for (const test of tests) {

View File

@@ -8,11 +8,6 @@ const { sprintf } = require('sprintf-js');
const dmp = new DiffMatchPatch();
export interface ObjectPatch {
new: Record<string, any>;
deleted: string[];
}
export default class Revision extends BaseItem {
static tableName() {
return 'revisions';
@@ -53,7 +48,7 @@ export default class Revision extends BaseItem {
private static isNewPatch(patch: string): boolean {
if (!patch) return true;
return patch.indexOf('[{') === 0 || patch === '[]';
return patch.indexOf('[{') === 0;
}
public static applyTextPatch(text: string, patch: string): string {
@@ -63,7 +58,7 @@ export default class Revision extends BaseItem {
// An empty patch should be '[]', but legacy data may be just "".
// However an empty string would make JSON.parse fail so we set it
// to '[]'.
const result = dmp.patch_apply(this.parsePatch(patch), text);
const result = dmp.patch_apply(JSON.parse(patch ? patch : '[]'), text);
if (!result || !result.length) throw new Error('Could not apply patch');
return result[0];
}
@@ -83,10 +78,10 @@ export default class Revision extends BaseItem {
return true;
}
public static createObjectPatch(oldObject: any, newObject: any) {
static createObjectPatch(oldObject: any, newObject: any) {
if (!oldObject) oldObject = {};
const output: ObjectPatch = {
const output: any = {
new: {},
deleted: [],
};
@@ -105,22 +100,16 @@ export default class Revision extends BaseItem {
return JSON.stringify(output);
}
// We need to sanitise the object patch because it seems some are broken and
// may contain new lines: https://github.com/laurent22/joplin/issues/6209
private static sanitizeObjectPatch(patch: string): string {
return patch.replace(/[\n\r]/g, '');
}
public static applyObjectPatch(object: any, patch: string) {
const parsedPatch: ObjectPatch = JSON.parse(this.sanitizeObjectPatch(patch));
static applyObjectPatch(object: any, patch: any) {
patch = JSON.parse(patch);
const output = Object.assign({}, object);
for (const k in parsedPatch.new) {
output[k] = parsedPatch.new[k];
for (const k in patch.new) {
output[k] = patch.new[k];
}
for (let i = 0; i < parsedPatch.deleted.length; i++) {
delete output[parsedPatch.deleted[i]];
for (let i = 0; i < patch.deleted.length; i++) {
delete output[patch.deleted[i]];
}
return output;
@@ -131,7 +120,7 @@ export default class Revision extends BaseItem {
// line, so that it can be processed by patchStats().
private static newPatchToDiffFormat(patch: string): string {
const changeList: string[] = [];
const patchArray = this.parsePatch(patch);
const patchArray = JSON.parse(patch);
for (const patchItem of patchArray) {
for (const d of patchItem.diffs) {
if (d[0] !== 0) changeList.push(d[0] < 0 ? `-${d[1].replace(/[\n\r]/g, ' ')}` : `+${d[1].trim().replace(/[\n\r]/g, ' ')}`);
@@ -248,7 +237,7 @@ export default class Revision extends BaseItem {
}
// Note: revs must be sorted by update_time ASC (as returned by allByType)
public static async mergeDiffs(revision: RevisionEntity, revs: RevisionEntity[] = null) {
static async mergeDiffs(revision: RevisionEntity, revs: RevisionEntity[] = null) {
if (!('encryption_applied' in revision) || !!revision.encryption_applied) throw new JoplinError('Target revision is encrypted', 'revision_encrypted');
if (!revs) {
@@ -284,12 +273,7 @@ export default class Revision extends BaseItem {
if (rev.encryption_applied) throw new JoplinError(sprintf('Revision "%s" is encrypted', rev.id), 'revision_encrypted');
output.title = this.applyTextPatch(output.title, rev.title_diff);
output.body = this.applyTextPatch(output.body, rev.body_diff);
try {
output.metadata = this.applyObjectPatch(output.metadata, rev.metadata_diff);
} catch (error) {
error.message = `Revision ${rev.id}: Could not apply patch: ${error.message}: ${rev.metadata_diff}`;
throw error;
}
output.metadata = this.applyObjectPatch(output.metadata, rev.metadata_diff);
}
return output;
@@ -346,9 +330,4 @@ export default class Revision extends BaseItem {
const existingRev = await Revision.latestRevision(itemType, itemId);
return existingRev && existingRev.item_updated_time === updatedTime;
}
private static parsePatch(patch: any): any[] {
return patch ? JSON.parse(patch) : [];
}
}

View File

@@ -1,7 +1,7 @@
const { setupDatabaseAndSynchronizer, switchClient, createNTestNotes, createNTestFolders, createNTestTags } = require('./testing/test-utils.js');
const reducer = require('./reducer').default;
const { defaultState, MAX_HISTORY } = require('./reducer');
// const { ALL_NOTES_FILTER_ID } = require('./reserved-ids');
const { ALL_NOTES_FILTER_ID } = require('./reserved-ids');
function initTestState(folders, selectedFolderIndex, notes, selectedNoteIndexes, tags = null, selectedTagIndex = null) {
let state = defaultState;
@@ -571,24 +571,24 @@ describe('reducer', function() {
expect(state.forwardHistoryNotes.map(x => x.id)).toEqual([]);
}));
// it('should not change folders when all notes filter is on', async () => {
// const folders = await createNTestFolders(2);
// const notes = [];
// for (let i = 0; i < folders.length; i++) {
// notes.push(...await createNTestNotes(1, folders[i]));
// }
// // initialize state with no folders selected
// let state = initTestState(folders, null, notes.slice(0,2), null);
it('should not change folders when all notes filter is on', async () => {
const folders = await createNTestFolders(2);
const notes = [];
for (let i = 0; i < folders.length; i++) {
notes.push(...await createNTestNotes(1, folders[i]));
}
// initialize state with no folders selected
let state = initTestState(folders, null, notes.slice(0,2), null);
// // turn on 'All Notes' filter
// state = reducer(state, { type: 'SMART_FILTER_SELECT', id: ALL_NOTES_FILTER_ID });
// turn on 'All Notes' filter
state = reducer(state, { type: 'SMART_FILTER_SELECT', id: ALL_NOTES_FILTER_ID });
// // change folder
// state = reducer(state, { type: 'FOLDER_AND_NOTE_SELECT', folderId: folders[1].id, noteId: notes[1].id });
// change folder
state = reducer(state, { type: 'FOLDER_AND_NOTE_SELECT', folderId: folders[1].id, noteId: notes[1].id });
// expect(state.selectedFolderId).toEqual(null);
// expect(state.selectedNoteIds[0]).toEqual(notes[1].id);
// });
expect(state.selectedFolderId).toEqual(null);
expect(state.selectedNoteIds[0]).toEqual(notes[1].id);
});
// tests for NOTE_UPDATE_ALL about issue #5447
it('should not change selectedNoteIds object when selections are not changed', async () => {

View File

@@ -754,9 +754,15 @@ const reducer = produce((draft: Draft<State> = defaultState, action: any) => {
case 'FOLDER_AND_NOTE_SELECT':
{
changeSelectedFolder(draft, action);
const noteSelectAction = Object.assign({}, action, { type: 'NOTE_SELECT' });
changeSelectedNotes(draft, noteSelectAction);
if (draft.notesParentType === 'SmartFilter' && draft.selectedSmartFilterId === ALL_NOTES_FILTER_ID) {
// we don't want to change folder when 'All Notes' filter is on
changeSelectedNotes(draft, noteSelectAction);
} else {
changeSelectedFolder(draft, action);
changeSelectedNotes(draft, noteSelectAction);
}
}
break;

View File

@@ -4,11 +4,10 @@ import Setting from '../models/Setting';
import Note from '../models/Note';
import ItemChange from '../models/ItemChange';
import Revision from '../models/Revision';
import BaseModel, { ModelType } from '../BaseModel';
import BaseModel from '../BaseModel';
import RevisionService from '../services/RevisionService';
import { MarkupLanguage } from '../../renderer';
describe('services/RevisionService', function() {
describe('services_Revision', function() {
beforeEach(async (done) => {
await setupDatabaseAndSynchronizer(1);
@@ -473,82 +472,4 @@ describe('services/RevisionService', function() {
expect(Date.now() - interval < timeRev2).toBe(true); // check the computer is not too slow for this test
expect((await Revision.all()).length).toBe(2);
}));
it('should give a detailed error when a patch cannot be applied', async () => {
const n1_v0 = await Note.save({ title: '', is_todo: 1, todo_completed: 0 });
const n1_v1 = await Note.save({ id: n1_v0.id, title: 'hello' });
await revisionService().collectRevisions(); // REV 1
await time.msleep(100);
await Note.save({ id: n1_v1.id, title: 'hello welcome', todo_completed: 1000 });
await revisionService().collectRevisions(); // REV 2
// Corrupt the metadata diff to generate the error - we assume that it's
// been truncated for whatever reason.
const corruptedMetadata = '{"new":{"todo_completed":10';
const revId2 = (await Revision.all())[1].id;
await Revision.save({ id: revId2, metadata_diff: corruptedMetadata });
const note = await Note.load(n1_v0.id);
let error = null;
try {
await revisionService().createNoteRevision_(note);
} catch (e) {
error = e;
}
expect(error).toBeTruthy();
expect(error.message).toContain(revId2);
expect(error.message).toContain(note.id);
expect(error.message).toContain(corruptedMetadata);
});
it('note revisions should include certain required properties', async () => {
const revisions = [
{
id: '2b7d7aa51f944aa5b63b8453e1182cb0',
parent_id: '',
item_type: 1,
item_id: 'cc333327a8d64456a73773b13f22a1ce',
item_updated_time: 1647101206511,
title_diff: '[{"diffs":[[1,"hello"]],"start1":0,"start2":0,"length1":0,"length2":5}]',
body_diff: '[]',
metadata_diff: '{"new":{},"deleted":[]}',
encryption_applied: 0,
type_: 13,
},
{
id: 'd2e1cd8433364bcba8e689aaa20dfef2',
parent_id: '2b7d7aa51f944aa5b63b8453e1182cb0',
item_type: 1,
item_id: 'cc333327a8d64456a73773b13f22a1ce',
item_updated_time: 1647101206622,
title_diff: '[{"diffs":[[0,"hello"],[1," welcome"]],"start1":0,"start2":0,"length1":5,"length2":13}]',
body_diff: '[]',
metadata_diff: '{"new":{},"deleted":[]}',
encryption_applied: 0,
type_: 13,
},
];
const note1 = await revisionService().revisionNote(revisions, 1);
expect(note1.title).toBe('hello welcome');
expect(note1.body).toBe('');
expect(note1.markup_language).toBe(MarkupLanguage.Markdown);
expect(note1.type_).toBe(ModelType.Note);
// Check that it's not overidding the property if it's already set
const revisions2 = revisions.slice();
revisions2[0] = {
...revisions2[0],
metadata_diff: '{"new":{"markup_language":2},"deleted":[]}',
};
const note2 = await revisionService().revisionNote(revisions2, 1);
expect(note2.markup_language).toBe(MarkupLanguage.Html);
});
});

View File

@@ -10,7 +10,6 @@ import BaseService from './BaseService';
import { _ } from '../locale';
import { ItemChangeEntity, NoteEntity, RevisionEntity } from './database/types';
import Logger from '../Logger';
import { MarkupLanguage } from '../../renderer';
const { substrWithEllipsis } = require('../string-utils');
const { sprintf } = require('sprintf-js');
const { wrapError } = require('../errorUtils');
@@ -138,56 +137,32 @@ export default class RevisionService extends BaseService {
const change = changes[i];
const noteId = change.item_id;
try {
if (change.type === ItemChange.TYPE_UPDATE && doneNoteIds.indexOf(noteId) < 0) {
const note = BaseModel.byId(notes, noteId);
const oldNote = change.before_change_item ? JSON.parse(change.before_change_item) : null;
if (change.type === ItemChange.TYPE_UPDATE && doneNoteIds.indexOf(noteId) < 0) {
const note = BaseModel.byId(notes, noteId);
const oldNote = change.before_change_item ? JSON.parse(change.before_change_item) : null;
if (note) {
if (oldNote && oldNote.updated_time < this.oldNoteCutOffDate_()) {
// This is where we save the original version of this old note
const rev = await this.createNoteRevision_(oldNote);
if (rev) logger.debug(sprintf('collectRevisions: Saved revision %s (old note)', rev.id));
}
const rev = await this.createNoteRevision_(note);
if (rev) logger.debug(sprintf('collectRevisions: Saved revision %s (Last rev was more than %d ms ago)', rev.id, Setting.value('revisionService.intervalBetweenRevisions')));
doneNoteIds.push(noteId);
this.isOldNotesCache_[noteId] = false;
if (note) {
if (oldNote && oldNote.updated_time < this.oldNoteCutOffDate_()) {
// This is where we save the original version of this old note
const rev = await this.createNoteRevision_(oldNote);
if (rev) logger.debug(sprintf('RevisionService::collectRevisions: Saved revision %s (old note)', rev.id));
}
}
if (change.type === ItemChange.TYPE_DELETE && !!change.before_change_item) {
const note = JSON.parse(change.before_change_item);
const revExists = await Revision.revisionExists(BaseModel.TYPE_NOTE, note.id, note.updated_time);
if (!revExists) {
const rev = await this.createNoteRevision_(note);
if (rev) logger.debug(sprintf('collectRevisions: Saved revision %s (for deleted note)', rev.id));
}
const rev = await this.createNoteRevision_(note);
if (rev) logger.debug(sprintf('RevisionService::collectRevisions: Saved revision %s (Last rev was more than %d ms ago)', rev.id, Setting.value('revisionService.intervalBetweenRevisions')));
doneNoteIds.push(noteId);
this.isOldNotesCache_[noteId] = false;
}
} catch (error) {
if (error.code === 'revision_encrypted') {
throw error;
} else {
// If any revision creation fails, we continue
// processing the other changes. It seems a rare bug
// in diff-match-patch can cause the creation of
// revisions to fail in some case. It should be rare
// and it's best to continue processing the other
// changes. The alternative would be to stop here
// and fix the bug, but in the meantime revisions
// will no longer be generated.
}
// The drawback is that once a change has been
// skipped it will never be processed again because
// the error will be in the past (before
// revisionService.lastProcessedChangeId)
//
// https://github.com/laurent22/joplin/issues/5531
logger.error(`collectRevisions: Processing one of the changes for note ${noteId} failed. Other changes will still be processed. Error was: `, error);
logger.error('collectRevisions: Change was:', change);
if (change.type === ItemChange.TYPE_DELETE && !!change.before_change_item) {
const note = JSON.parse(change.before_change_item);
const revExists = await Revision.revisionExists(BaseModel.TYPE_NOTE, note.id, note.updated_time);
if (!revExists) {
const rev = await this.createNoteRevision_(note);
if (rev) logger.debug(sprintf('RevisionService::collectRevisions: Saved revision %s (for deleted note)', rev.id));
}
doneNoteIds.push(noteId);
}
Setting.setValue('revisionService.lastProcessedChangeId', change.id);
@@ -198,11 +173,15 @@ export default class RevisionService extends BaseService {
// One or more revisions are encrypted - stop processing for now
// and these revisions will be processed next time the revision
// collector runs.
logger.info('collectRevisions: One or more revision was encrypted. Processing was stopped but will resume later when the revision is decrypted.', error);
logger.info('RevisionService::collectRevisions: One or more revision was encrypted. Processing was stopped but will resume later when the revision is decrypted.', error);
} else {
// This should not happen anymore because we handle the error in
// the loop above.
logger.error('collectRevisions:', error);
// Note that, for now, if any revision creation fails, the whole
// process fails. This is on purpose because if we keep on
// processing, whatever caused the error will be in the past
// changes (before revisionService.lastProcessedChangeId) and
// will never be processed again. Now that the diff-match-patch
// issue is fixed, there should be no such error anyway.
logger.error('RevisionService::collectRevisions:', error);
}
}
@@ -211,14 +190,14 @@ export default class RevisionService extends BaseService {
this.isCollecting_ = false;
logger.info(`collectRevisions: Created revisions for ${doneNoteIds.length} notes`);
logger.info(`RevisionService::collectRevisions: Created revisions for ${doneNoteIds.length} notes`);
}
async deleteOldRevisions(ttl: number) {
return Revision.deleteOldRevisions(ttl);
}
public async revisionNote(revisions: RevisionEntity[], index: number) {
async revisionNote(revisions: RevisionEntity[], index: number) {
if (index < 0 || index >= revisions.length) throw new Error(`Invalid revision index: ${index}`);
const rev = revisions[index];
@@ -234,7 +213,6 @@ export default class RevisionService extends BaseService {
output.updated_time = output.user_updated_time;
output.created_time = output.user_created_time;
(output as any).type_ = BaseModel.TYPE_NOTE;
if (!('markup_language' in output)) output.markup_language = MarkupLanguage.Markdown;
return output;
}
@@ -286,23 +264,23 @@ export default class RevisionService extends BaseService {
this.maintenanceCalls_.push(true);
try {
const startTime = Date.now();
logger.info('maintenance: Starting...');
logger.info('RevisionService::maintenance: Starting...');
if (!Setting.value('revisionService.enabled')) {
logger.info('maintenance: Service is disabled');
logger.info('RevisionService::maintenance: Service is disabled');
// We do as if we had processed all the latest changes so that they can be cleaned up
// later on by ItemChangeUtils.deleteProcessedChanges().
Setting.setValue('revisionService.lastProcessedChangeId', await ItemChange.lastChangeId());
await this.deleteOldRevisions(Setting.value('revisionService.ttlDays') * 24 * 60 * 60 * 1000);
} else {
logger.info('maintenance: Service is enabled');
logger.info('RevisionService::maintenance: Service is enabled');
await this.collectRevisions();
await this.deleteOldRevisions(Setting.value('revisionService.ttlDays') * 24 * 60 * 60 * 1000);
logger.info(`maintenance: Done in ${Date.now() - startTime}ms`);
logger.info(`RevisionService::maintenance: Done in ${Date.now() - startTime}ms`);
}
} catch (error) {
logger.error('maintenance:', error);
logger.error('RevisionService::maintenance:', error);
} finally {
this.maintenanceCalls_.pop();
}
@@ -314,7 +292,7 @@ export default class RevisionService extends BaseService {
if (collectRevisionInterval === null) collectRevisionInterval = 1000 * 60 * 10;
logger.info(`runInBackground: Starting background service with revision collection interval ${collectRevisionInterval}`);
logger.info(`RevisionService::runInBackground: Starting background service with revision collection interval ${collectRevisionInterval}`);
this.maintenanceTimer1_ = shim.setTimeout(() => {
void this.maintenance();

View File

@@ -413,9 +413,9 @@ export default class InteropService {
const ItemClass = BaseItem.getClassByItemType(itemType);
const itemOrId = itemsToExport[i].itemOrId;
const rawItem = typeof itemOrId === 'object' ? itemOrId : await ItemClass.load(itemOrId);
const item = this.normalizeItemForExport(itemType, typeof itemOrId === 'object' ? itemOrId : await ItemClass.load(itemOrId));
if (!rawItem) {
if (!item) {
if (itemType === BaseModel.TYPE_RESOURCE) {
result.warnings.push(sprintf('A resource that does not exist is referenced in a note. The resource was skipped. Resource ID: %s', itemOrId));
} else {
@@ -424,8 +424,6 @@ export default class InteropService {
continue;
}
const item = this.normalizeItemForExport(itemType, rawItem);
if (item.encryption_applied || item.encryption_blob_encrypted) {
result.warnings.push(sprintf('This item is currently encrypted: %s "%s" (%s) and was not exported. You may wait for it to be decrypted and try again.', BaseModel.modelTypeToName(itemType), item.title ? item.title : item.id, item.id));
continue;

View File

@@ -1,33 +1,21 @@
import InteropService_Importer_Md from '../../services/interop/InteropService_Importer_Md';
import Note from '../../models/Note';
import Folder from '../../models/Folder';
import * as fs from 'fs-extra';
import { createTempDir, setupDatabaseAndSynchronizer, supportDir, switchClient } from '../../testing/test-utils';
import { setupDatabaseAndSynchronizer, supportDir, switchClient } from '../../testing/test-utils';
import { MarkupToHtml } from '@joplin/renderer';
import { FolderEntity } from '../database/types';
describe('InteropService_Importer_Md', function() {
let tempDir: string;
describe('InteropService_Importer_Md: importLocalImages', function() {
async function importNote(path: string) {
const importer = new InteropService_Importer_Md();
importer.setMetadata({ fileExtensions: ['md', 'html'] });
return await importer.importFile(path, 'notebook');
}
async function importNoteDirectory(path: string) {
const importer = new InteropService_Importer_Md();
importer.setMetadata({ fileExtensions: ['md', 'html'] });
return await importer.importDirectory(path, 'notebook');
}
beforeEach(async (done) => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
tempDir = await createTempDir();
done();
});
afterEach(async () => {
await fs.remove(tempDir);
});
it('should import linked files and modify tags appropriately', async function() {
const note = await importNote(`${supportDir}/test_notes/md/sample.md`);
@@ -129,30 +117,4 @@ describe('InteropService_Importer_Md', function() {
const preservedAlt = note.body.includes('alt="../../photo.jpg"');
expect(preservedAlt).toBe(true);
});
it('should import non-empty directory', async function() {
await fs.mkdirp(`${tempDir}/non-empty/non-empty`);
await fs.writeFile(`${tempDir}/non-empty/non-empty/sample.md`, '# Sample');
await importNoteDirectory(`${tempDir}/non-empty`);
const allFolders = await Folder.all();
expect(allFolders.map((f: FolderEntity) => f.title).indexOf('non-empty')).toBeGreaterThanOrEqual(0);
});
it('should not import empty directory', async function() {
await fs.mkdirp(`${tempDir}/empty/empty`);
await importNoteDirectory(`${tempDir}/empty`);
const allFolders = await Folder.all();
expect(allFolders.map((f: FolderEntity) => f.title).indexOf('empty')).toBe(-1);
});
it('should import directory with non-empty subdirectory', async function() {
await fs.mkdirp(`${tempDir}/non-empty-subdir/non-empty-subdir/subdir-empty`);
await fs.mkdirp(`${tempDir}/non-empty-subdir/non-empty-subdir/subdir-non-empty`);
await fs.writeFile(`${tempDir}/non-empty-subdir/non-empty-subdir/subdir-non-empty/sample.md`, '# Sample');
await importNoteDirectory(`${tempDir}/non-empty-subdir`);
const allFolders = await Folder.all();
expect(allFolders.map((f: FolderEntity) => f.title).indexOf('non-empty-subdir')).toBeGreaterThanOrEqual(0);
expect(allFolders.map((f: FolderEntity) => f.title).indexOf('subdir-empty')).toBe(-1);
expect(allFolders.map((f: FolderEntity) => f.title).indexOf('subdir-non-empty')).toBeGreaterThanOrEqual(0);
});
});

View File

@@ -47,16 +47,13 @@ export default class InteropService_Importer_Md extends InteropService_Importer_
async importDirectory(dirPath: string, parentFolderId: string) {
console.info(`Import: ${dirPath}`);
const supportedFileExtension = this.metadata().fileExtensions;
const stats = await shim.fsDriver().readDirStats(dirPath);
for (let i = 0; i < stats.length; i++) {
const stat = stats[i];
if (stat.isDirectory()) {
if (await this.isDirectoryEmpty(`${dirPath}/${stat.path}`)) {
console.info(`Ignoring empty directory: ${stat.path}`);
continue;
}
const folderTitle = await Folder.findUniqueItemTitle(basename(stat.path));
const folder = await Folder.save({ title: folderTitle, parent_id: parentFolderId });
await this.importDirectory(`${dirPath}/${basename(stat.path)}`, folder.id);
@@ -66,24 +63,6 @@ export default class InteropService_Importer_Md extends InteropService_Importer_
}
}
private async isDirectoryEmpty(dirPath: string) {
const supportedFileExtension = this.metadata().fileExtensions;
const innerStats = await shim.fsDriver().readDirStats(dirPath);
for (let i = 0; i < innerStats.length; i++) {
const innerStat = innerStats[i];
if (innerStat.isDirectory()) {
if (!(await this.isDirectoryEmpty(`${dirPath}/${innerStat.path}`))) {
return false;
}
} else if (supportedFileExtension.indexOf(fileExtension(innerStat.path).toLowerCase()) >= 0) {
return false;
}
}
return true;
}
private trimAnchorLink(link: string) {
if (link.indexOf('#') <= 0) return link;

View File

@@ -325,7 +325,7 @@ describe('services_rest_Api', function() {
expect(response.body.indexOf(resource.id) >= 0).toBe(true);
}));
it('should not compress images uploaded through resource API', (async () => {
it('should not compress images uploaded through resource api', (async () => {
const originalImagePath = `${supportDir}/photo-large.png`;
await api.route(RequestMethod.POST, 'resources', null, JSON.stringify({
title: 'testing resource',
@@ -345,39 +345,6 @@ describe('services_rest_Api', function() {
expect(originalImageSize).toEqual(uploadedImageSize);
}));
it('should update a resource', (async () => {
await api.route(RequestMethod.POST, 'resources', null, JSON.stringify({
title: 'resource',
}), [
{
path: `${supportDir}/photo.jpg`,
},
]);
const resourceV1 = (await Resource.all())[0];
await msleep(1);
await api.route(RequestMethod.PUT, `resources/${resourceV1.id}`, null, JSON.stringify({
title: 'resource mod',
}), [
{
path: `${supportDir}/photo-large.png`,
},
]);
const resourceV2 = (await Resource.all())[0];
expect(resourceV2.title).toBe('resource mod');
expect(resourceV2.mime).toBe('image/png');
expect(resourceV2.file_extension).toBe('png');
expect(resourceV2.updated_time).toBeGreaterThan(resourceV1.updated_time);
expect(resourceV2.created_time).toBe(resourceV1.created_time);
expect(resourceV2.size).toBeGreaterThan(resourceV1.size);
expect(resourceV2.size).toBe((await shim.fsDriver().stat(Resource.fullPath(resourceV2))).size);
}));
it('should delete resources', (async () => {
const f = await Folder.save({ title: 'mon carnet' });

View File

@@ -47,17 +47,13 @@ export default async function(request: Request, id: string = null, link: string
if (link) throw new ErrorNotFound();
}
if (request.method === RequestMethod.POST || request.method === RequestMethod.PUT) {
const isUpdate = request.method === RequestMethod.PUT;
if (request.method === RequestMethod.POST) {
if (!request.files.length) throw new ErrorBadRequest('Resource cannot be created without a file');
if (isUpdate && !id) throw new ErrorBadRequest('Missing resource ID');
const filePath = request.files[0].path;
const defaultProps = request.bodyJson(readonlyProperties(request.method));
const defaultProps = request.bodyJson(readonlyProperties('POST'));
return shim.createResourceFromPath(filePath, defaultProps, {
userSideValidation: true,
resizeLargeImages: 'never',
destinationResourceId: isUpdate ? id : '',
});
}

View File

@@ -1,19 +1,18 @@
/* @typescript-eslint/prefer-const */
/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars, prefer-const */
import time from '@joplin/lib/time';
import { setupDatabaseAndSynchronizer, supportDir, db, createNTestNotes, switchClient } from '@joplin/lib/testing//test-utils';
import SearchEngine from '@joplin/lib/services/searchengine/SearchEngine';
import Note from '@joplin/lib/models/Note';
import Folder from '@joplin/lib/models/Folder';
import Tag from '@joplin/lib/models/Tag';
import shim from '@joplin/lib/shim';
import ResourceService from '@joplin/lib/services/ResourceService';
import { NoteEntity } from '@joplin/lib/services/database/types';
const time = require('../../time').default;
const { setupDatabaseAndSynchronizer, supportDir, db, createNTestNotes, switchClient } = require('../../testing/test-utils.js');
const SearchEngine = require('../../services/searchengine/SearchEngine').default;
const Note = require('../../models/Note').default;
const Folder = require('../../models/Folder').default;
const Tag = require('../../models/Tag').default;
const shim = require('../../shim').default;
const ResourceService = require('../../services/ResourceService').default;
let engine: any = null;
let engine = null;
const ids = (array: NoteEntity[]) => array.map(a => a.id);
const ids = (array) => array.map(a => a.id);
describe('services_SearchFilter', function() {
beforeEach(async (done) => {
@@ -68,59 +67,25 @@ describe('services_SearchFilter', function() {
for (const searchType of [SearchEngine.SEARCH_TYPE_FTS, SearchEngine.SEARCH_TYPE_NONLATIN_SCRIPT]) {
describe(`search type ${searchType}`, () => {
it('Check case insensitivity for filter keywords', (async () => {
let rows;
const notebook1 = await Folder.save({ title: 'folderA' });
const notebook2 = await Folder.save({ title: 'folderB' });
const note1 = await Note.save({ title: 'Note1', body: 'obelix', parent_id: notebook1.id });
const note2 = await Note.save({ title: 'Note2', body: 'asterix', parent_id: notebook2.id });
const note3 = await Note.save({ title: 'Note3', body: 'rom', parent_id: notebook1.id });
await Tag.setNoteTagsByTitles(note1.id, ['tag1', 'tag2']);
await Tag.setNoteTagsByTitles(note2.id, ['tag2', 'tag3']);
await Tag.setNoteTagsByTitles(note3.id, ['tag3', 'tag4', 'space travel']);
await engine.syncTables();
const testCases = [
{ searchString: 'tag:tag2', expectedResults: 2, expectedtNoteIds: [note1.id, note2.id] },
{ searchString: 'tAg:tag2', expectedResults: 2, expectedtNoteIds: [note1.id, note2.id] },
{ searchString: 'Tag:tag2', expectedResults: 2, expectedtNoteIds: [note1.id, note2.id] },
{ searchString: '-tag:tag2', expectedResults: 1, expectedtNoteIds: [note3.id] },
{ searchString: '-Tag:tag2', expectedResults: 1, expectedtNoteIds: [note3.id] },
{ searchString: 'title:Note1', expectedResults: 1, expectedtNoteIds: [note1.id] },
{ searchString: 'Title:Note1', expectedResults: 1, expectedtNoteIds: [note1.id] },
{ searchString: 'Any:1 -tag:tag1 -notebook:folderB', expectedResults: 1, expectedtNoteIds: [note3.id] },
{ searchString: 'notebook:folderA', expectedResults: 2, expectedtNoteIds: [note1.id, note3.id] },
{ searchString: 'notebooK:folderA', expectedResults: 2, expectedtNoteIds: [note1.id, note3.id] },
];
for (const testCase of testCases) {
rows = await engine.search(testCase.searchString, { searchType });
expect(rows.length).toBe(testCase.expectedResults);
for (const expectedNoteId of testCase.expectedtNoteIds) {
expect(ids(rows)).toContain(expectedNoteId);
}
}
}));
it('should return note matching title', (async () => {
let rows;
const n1 = await Note.save({ title: 'abcd', body: 'body 1' });
await Note.save({ title: 'efgh', body: 'body 2' });
const n2 = await Note.save({ title: 'efgh', body: 'body 2' });
await engine.syncTables();
const rows = await engine.search('title: abcd', { searchType });
rows = await engine.search('title: abcd', { searchType });
expect(rows.length).toBe(1);
expect(rows[0].id).toBe(n1.id);
}));
it('should return note matching negated title', (async () => {
await Note.save({ title: 'abcd', body: 'body 1' });
let rows;
const n1 = await Note.save({ title: 'abcd', body: 'body 1' });
const n2 = await Note.save({ title: 'efgh', body: 'body 2' });
await engine.syncTables();
const rows = await engine.search('-title: abcd', { searchType });
rows = await engine.search('-title: abcd', { searchType });
expect(rows.length).toBe(1);
@@ -128,11 +93,12 @@ describe('services_SearchFilter', function() {
}));
it('should return note matching body', (async () => {
let rows;
const n1 = await Note.save({ title: 'abcd', body: 'body1' });
await Note.save({ title: 'efgh', body: 'body2' });
const n2 = await Note.save({ title: 'efgh', body: 'body2' });
await engine.syncTables();
const rows = await engine.search('body: body1', { searchType });
rows = await engine.search('body: body1', { searchType });
expect(rows.length).toBe(1);
@@ -140,33 +106,36 @@ describe('services_SearchFilter', function() {
}));
it('should return note matching negated body', (async () => {
await Note.save({ title: 'abcd', body: 'body1' });
let rows;
const n1 = await Note.save({ title: 'abcd', body: 'body1' });
const n2 = await Note.save({ title: 'efgh', body: 'body2' });
await engine.syncTables();
const rows = await engine.search('-body: body1', { searchType });
rows = await engine.search('-body: body1', { searchType });
expect(rows.length).toBe(1);
expect(rows[0].id).toBe(n2.id);
}));
it('should return note matching title containing multiple words', (async () => {
let rows;
const n1 = await Note.save({ title: 'abcd xyz', body: 'body1' });
await Note.save({ title: 'efgh ijk', body: 'body2' });
const n2 = await Note.save({ title: 'efgh ijk', body: 'body2' });
await engine.syncTables();
const rows = await engine.search('title: "abcd xyz"', { searchType });
rows = await engine.search('title: "abcd xyz"', { searchType });
expect(rows.length).toBe(1);
expect(rows[0].id).toBe(n1.id);
}));
it('should return note matching body containing multiple words', (async () => {
await Note.save({ title: 'abcd', body: 'ho ho ho' });
let rows;
const n1 = await Note.save({ title: 'abcd', body: 'ho ho ho' });
const n2 = await Note.save({ title: 'efgh', body: 'foo bar' });
await engine.syncTables();
const rows = await engine.search('body: "foo bar"', { searchType });
rows = await engine.search('body: "foo bar"', { searchType });
expect(rows.length).toBe(1);
expect(rows[0].id).toBe(n2.id);
@@ -174,7 +143,7 @@ describe('services_SearchFilter', function() {
it('should return note matching title AND body', (async () => {
let rows;
await Note.save({ title: 'abcd', body: 'ho ho ho' });
const n1 = await Note.save({ title: 'abcd', body: 'ho ho ho' });
const n2 = await Note.save({ title: 'efgh', body: 'foo bar' });
await engine.syncTables();
@@ -194,8 +163,8 @@ describe('services_SearchFilter', function() {
await engine.syncTables();
rows = await engine.search('any:1 title: abcd body: "foo bar"', { searchType });
expect(rows.length).toBe(2);
expect(ids(rows)).toContain(n1.id);
expect(ids(rows)).toContain(n2.id);
expect(rows.map(r=>r.id)).toContain(n1.id);
expect(rows.map(r=>r.id)).toContain(n2.id);
rows = await engine.search('any:1 title: wxyz body: "blah blah"', { searchType });
expect(rows.length).toBe(0);
@@ -212,12 +181,12 @@ describe('services_SearchFilter', function() {
// Note: This is NOT saying to match notes containing foo bar in title/body
rows = await engine.search('foo bar', { searchType });
expect(rows.length).toBe(2);
expect(ids(rows)).toContain(n1.id);
expect(ids(rows)).toContain(n2.id);
expect(rows.map(r=>r.id)).toContain(n1.id);
expect(rows.map(r=>r.id)).toContain(n2.id);
rows = await engine.search('foo -bar', { searchType });
expect(rows.length).toBe(1);
expect(ids(rows)).toContain(n3.id);
expect(rows.map(r=>r.id)).toContain(n3.id);
rows = await engine.search('foo efgh', { searchType });
expect(rows.length).toBe(1);
@@ -228,60 +197,65 @@ describe('services_SearchFilter', function() {
}));
it('should return notes matching any negated text', (async () => {
let rows;
const n1 = await Note.save({ title: 'abc', body: 'def' });
const n2 = await Note.save({ title: 'def', body: 'ghi' });
const n3 = await Note.save({ title: 'ghi', body: 'jkl' });
await engine.syncTables();
const rows = await engine.search('any:1 -abc -ghi', { searchType });
rows = await engine.search('any:1 -abc -ghi', { searchType });
expect(rows.length).toBe(3);
expect(ids(rows)).toContain(n1.id);
expect(ids(rows)).toContain(n2.id);
expect(ids(rows)).toContain(n3.id);
expect(rows.map(r=>r.id)).toContain(n1.id);
expect(rows.map(r=>r.id)).toContain(n2.id);
expect(rows.map(r=>r.id)).toContain(n3.id);
}));
it('should return notes matching any negated title', (async () => {
let rows;
const n1 = await Note.save({ title: 'abc', body: 'def' });
const n2 = await Note.save({ title: 'def', body: 'ghi' });
const n3 = await Note.save({ title: 'ghi', body: 'jkl' });
await engine.syncTables();
const rows = await engine.search('any:1 -title:abc -title:ghi', { searchType });
rows = await engine.search('any:1 -title:abc -title:ghi', { searchType });
expect(rows.length).toBe(3);
expect(ids(rows)).toContain(n1.id);
expect(ids(rows)).toContain(n2.id);
expect(ids(rows)).toContain(n3.id);
expect(rows.map(r=>r.id)).toContain(n1.id);
expect(rows.map(r=>r.id)).toContain(n2.id);
expect(rows.map(r=>r.id)).toContain(n3.id);
}));
it('should return notes matching any negated body', (async () => {
let rows;
const n1 = await Note.save({ title: 'abc', body: 'def' });
const n2 = await Note.save({ title: 'def', body: 'ghi' });
const n3 = await Note.save({ title: 'ghi', body: 'jkl' });
await engine.syncTables();
const rows = await engine.search('any:1 -body:xyz -body:ghi', { searchType });
rows = await engine.search('any:1 -body:xyz -body:ghi', { searchType });
expect(rows.length).toBe(3);
expect(ids(rows)).toContain(n1.id);
expect(ids(rows)).toContain(n2.id);
expect(ids(rows)).toContain(n3.id);
expect(rows.map(r=>r.id)).toContain(n1.id);
expect(rows.map(r=>r.id)).toContain(n2.id);
expect(rows.map(r=>r.id)).toContain(n3.id);
}));
it('should support phrase search', (async () => {
let rows;
const n1 = await Note.save({ title: 'foo beef', body: 'bar dog' });
await Note.save({ title: 'bar efgh', body: 'foo dog' });
const n2 = await Note.save({ title: 'bar efgh', body: 'foo dog' });
await engine.syncTables();
const rows = await engine.search('"bar dog"', { searchType });
rows = await engine.search('"bar dog"', { searchType });
expect(rows.length).toBe(1);
expect(rows[0].id).toBe(n1.id);
}));
it('should support prefix search', (async () => {
let rows;
const n1 = await Note.save({ title: 'foo beef', body: 'bar dog' });
const n2 = await Note.save({ title: 'bar efgh', body: 'foo dog' });
await engine.syncTables();
const rows = await engine.search('"bar*"', { searchType });
rows = await engine.search('"bar*"', { searchType });
expect(rows.length).toBe(2);
expect(ids(rows)).toContain(n1.id);
expect(ids(rows)).toContain(n2.id);
@@ -364,35 +338,38 @@ describe('services_SearchFilter', function() {
}));
it('should support filtering by notebook', (async () => {
let rows;
const folder0 = await Folder.save({ title: 'notebook0' });
const folder1 = await Folder.save({ title: 'notebook1' });
const notes0 = await createNTestNotes(5, folder0);
await createNTestNotes(5, folder1);
const notes1 = await createNTestNotes(5, folder1);
await engine.syncTables();
const rows = await engine.search('notebook:notebook0', { searchType });
rows = await engine.search('notebook:notebook0', { searchType });
expect(rows.length).toBe(5);
expect(ids(rows).sort()).toEqual(ids(notes0).sort());
}));
it('should support filtering by nested notebook', (async () => {
let rows;
const folder0 = await Folder.save({ title: 'notebook0' });
const folder00 = await Folder.save({ title: 'notebook00', parent_id: folder0.id });
const folder1 = await Folder.save({ title: 'notebook1' });
const notes0 = await createNTestNotes(5, folder0);
const notes00 = await createNTestNotes(5, folder00);
await createNTestNotes(5, folder1);
const notes1 = await createNTestNotes(5, folder1);
await engine.syncTables();
const rows = await engine.search('notebook:notebook0', { searchType });
rows = await engine.search('notebook:notebook0', { searchType });
expect(rows.length).toBe(10);
expect(ids(rows).sort()).toEqual(ids(notes0.concat(notes00)).sort());
}));
it('should support filtering by multiple notebooks', (async () => {
let rows;
const folder0 = await Folder.save({ title: 'notebook0' });
const folder00 = await Folder.save({ title: 'notebook00', parent_id: folder0.id });
const folder1 = await Folder.save({ title: 'notebook1' });
@@ -400,11 +377,11 @@ describe('services_SearchFilter', function() {
const notes0 = await createNTestNotes(5, folder0);
const notes00 = await createNTestNotes(5, folder00);
const notes1 = await createNTestNotes(5, folder1);
await createNTestNotes(5, folder2);
const notes2 = await createNTestNotes(5, folder2);
await engine.syncTables();
const rows = await engine.search('notebook:notebook0 notebook:notebook1', { searchType });
rows = await engine.search('notebook:notebook0 notebook:notebook1', { searchType });
expect(rows.length).toBe(15);
expect(ids(rows).sort()).toEqual(ids(notes0).concat(ids(notes00).concat(ids(notes1))).sort());
}));
@@ -633,7 +610,7 @@ describe('services_SearchFilter', function() {
let rows;
const t1 = await Note.save({ title: 'This is a ', body: 'todo', is_todo: 1 });
const t2 = await Note.save({ title: 'This is another', body: 'todo but completed', is_todo: 1, todo_completed: 1590085027710 });
await Note.save({ title: 'This is NOT a ', body: 'todo' });
const t3 = await Note.save({ title: 'This is NOT a ', body: 'todo' });
await engine.syncTables();
@@ -657,13 +634,14 @@ describe('services_SearchFilter', function() {
}));
it('should support filtering by type note', (async () => {
await Note.save({ title: 'This is a ', body: 'todo', is_todo: 1 });
await Note.save({ title: 'This is another', body: 'todo but completed', is_todo: 1, todo_completed: 1590085027710 });
let rows;
const t1 = await Note.save({ title: 'This is a ', body: 'todo', is_todo: 1 });
const t2 = await Note.save({ title: 'This is another', body: 'todo but completed', is_todo: 1, todo_completed: 1590085027710 });
const t3 = await Note.save({ title: 'This is NOT a ', body: 'todo' });
await engine.syncTables();
const rows = await engine.search('type:note', { searchType });
rows = await engine.search('type:note', { searchType });
expect(rows.length).toBe(1);
expect(ids(rows)).toContain(t3.id);
}));
@@ -672,7 +650,7 @@ describe('services_SearchFilter', function() {
let rows;
const toDo1 = await Note.save({ title: 'ToDo 1', body: 'todo', is_todo: 1, todo_due: Date.parse('2021-04-27') });
const toDo2 = await Note.save({ title: 'ToDo 2', body: 'todo', is_todo: 1, todo_due: Date.parse('2021-03-17') });
await Note.save({ title: 'Note 1', body: 'Note' });
const note1 = await Note.save({ title: 'Note 1', body: 'Note' });
await engine.syncTables();
@@ -886,8 +864,8 @@ describe('services_SearchFilter', function() {
const subFolder = await Folder.save({ title: 'child', parent_id: parentFolder.id });
await Note.save({ title: 'task3', body: 'baz', parent_id: subFolder.id });
await Note.save({ title: 'task4', body: 'blah', parent_id: subFolder.id });
const n3 = await Note.save({ title: 'task3', body: 'baz', parent_id: subFolder.id });
const n4 = await Note.save({ title: 'task4', body: 'blah', parent_id: subFolder.id });
await engine.syncTables();
@@ -908,20 +886,20 @@ describe('services_SearchFilter', function() {
rows = await engine.search(`id:${note1.id}`, { searchType });
expect(rows.length).toBe(1);
expect(ids(rows)).toContain(note1.id);
expect(rows.map(r=>r.id)).toContain(note1.id);
rows = await engine.search(`any:1 id:${note1.id} id:${note2.id}`, { searchType });
expect(rows.length).toBe(2);
expect(ids(rows)).toContain(note1.id);
expect(ids(rows)).toContain(note2.id);
expect(rows.map(r=>r.id)).toContain(note1.id);
expect(rows.map(r=>r.id)).toContain(note2.id);
rows = await engine.search(`any:0 id:${note1.id} id:${note2.id}`, { searchType });
expect(rows.length).toBe(0);
rows = await engine.search(`-id:${note2.id}`, { searchType });
expect(rows.length).toBe(2);
expect(ids(rows)).toContain(note1.id);
expect(ids(rows)).toContain(note3.id);
expect(rows.map(r=>r.id)).toContain(note1.id);
expect(rows.map(r=>r.id)).toContain(note3.id);
}));
});

View File

@@ -54,8 +54,8 @@ const getTerms = (query: string, validFilters: Set<string>): Term[] => {
}
if (c === ':' && !inQuote && !inTerm &&
(validFilters.has(currentTerm.toLowerCase()) || currentTerm[0] === '-' && validFilters.has(currentTerm.toLowerCase().substr(1, currentTerm.length)))) {
currentCol = currentTerm.toLowerCase();
(validFilters.has(currentTerm) || currentTerm[0] === '-' && validFilters.has(currentTerm.substr(1, currentTerm.length)))) {
currentCol = currentTerm;
currentTerm = '';
inTerm = true; // to ignore any other ':' before a space eg.'sourceurl:https://www.google.com'
continue;

View File

@@ -221,15 +221,10 @@ function shimInit(options = null) {
return true;
};
// This is a bit of an ugly method that's used to both create a new resource
// from a file, and update one. To update a resource, pass the
// destinationResourceId option. This method is indirectly tested in
// Api.test.ts.
shim.createResourceFromPath = async function(filePath, defaultProps = null, options = null) {
options = Object.assign({
resizeLargeImages: 'always', // 'always', 'ask' or 'never'
userSideValidation: false,
destinationResourceId: '',
}, options);
const readChunk = require('read-chunk');
@@ -241,10 +236,9 @@ function shimInit(options = null) {
defaultProps = defaultProps ? defaultProps : {};
let resourceId = defaultProps.id ? defaultProps.id : uuid.create();
if (options.destinationResourceId) resourceId = options.destinationResourceId;
const resourceId = defaultProps.id ? defaultProps.id : uuid.create();
let resource = options.destinationResourceId ? {} : Resource.new();
const resource = Resource.new();
resource.id = resourceId;
resource.mime = mimeUtils.fromFilename(filePath);
resource.title = basename(filePath);
@@ -287,18 +281,7 @@ function shimInit(options = null) {
const saveOptions = { isNew: true };
if (options.userSideValidation) saveOptions.userSideValidation = true;
if (options.destinationResourceId) {
saveOptions.isNew = false;
const tempPath = `${targetPath}.tmp`;
await shim.fsDriver().move(targetPath, tempPath);
resource = await Resource.save(resource, saveOptions);
await Resource.updateResourceBlobContent(resource.id, tempPath);
await shim.fsDriver().remove(tempPath);
return resource;
} else {
return Resource.save(resource, saveOptions);
}
return Resource.save(resource, saveOptions);
};
shim.attachFileToNoteBody = async function(noteBody, filePath, position = null, options = null) {

View File

@@ -1,26 +1,4 @@
import * as fs from 'fs-extra';
import markdownUtils, { MarkdownTableHeader, MarkdownTableRow } from '../markdownUtils';
type FeatureId = string;
export enum PlanName {
Basic = 'basic',
Pro = 'pro',
Teams = 'teams',
}
interface PlanFeature {
title: string;
basic: boolean;
pro: boolean;
teams: boolean;
basicInfo?: string;
proInfo?: string;
teamsInfo?: string;
basicInfoShort?: string;
proInfoShort?: string;
teamsInfoShort?: string;
}
export interface Plan {
name: string;
@@ -29,13 +7,10 @@ export interface Plan {
priceYearly: StripePublicConfigPrice;
featured: boolean;
iconName: string;
featuresOn: FeatureId[];
featuresOff: FeatureId[];
featureLabelsOn: string[];
featureLabelsOff: string[];
featuresOn: string[];
featuresOff: string[];
cfaLabel: string;
cfaUrl: string;
footnote: string;
}
export enum PricePeriod {
@@ -65,6 +40,31 @@ export interface StripePublicConfig {
webhookBaseUrl: string;
}
export interface PlanFeature {
label: string;
enabled: boolean;
}
export function getFeatureList(plan: Plan): PlanFeature[] {
const output: PlanFeature[] = [];
for (const f of plan.featuresOn) {
output.push({
label: f,
enabled: true,
});
}
for (const f of plan.featuresOff) {
output.push({
label: f,
enabled: false,
});
}
return output;
}
function formatPrice(amount: string | number, currency: PriceCurrency): string {
amount = typeof amount === 'number' ? (Math.ceil(amount * 100) / 100).toFixed(2) : amount;
if (currency === PriceCurrency.EUR) return `${amount}`;
@@ -110,181 +110,28 @@ export function findPrice(prices: StripePublicConfigPrice[], query: FindPriceQue
return output;
}
const features: Record<FeatureId, PlanFeature> = {
maxItemSize: {
title: 'Publish notes to the internet',
basic: true,
pro: true,
teams: true,
basicInfo: '10 MB per note or attachment',
proInfo: '200 MB per note or attachment',
teamsInfo: '200 MB per note or attachment',
basicInfoShort: '10 MB',
proInfoShort: '200 MB',
teamsInfoShort: '200 MB',
},
maxStorage: {
title: 'Storage space',
basic: true,
pro: true,
teams: true,
basicInfo: '1 GB storage space',
proInfo: '200 GB storage space',
teamsInfo: '200 GB storage space',
basicInfoShort: '1 GB',
proInfoShort: '200 GB',
teamsInfoShort: '200 GB',
},
publishNote: {
title: 'Publish notes to the internet',
basic: true,
pro: true,
teams: true,
},
sync: {
title: 'Sync as many devices as you want',
basic: true,
pro: true,
teams: true,
},
clipper: {
title: 'Web Clipper',
basic: true,
pro: true,
teams: true,
},
collaborate: {
title: 'Share and collaborate on a notebook',
basic: false,
pro: true,
teams: true,
},
multiUsers: {
title: 'Manage multiple users',
basic: false,
pro: false,
teams: true,
},
consolidatedBilling: {
title: 'Consolidated billing',
basic: false,
pro: false,
teams: true,
},
sharingAccessControl: {
title: 'Sharing access control',
basic: false,
pro: false,
teams: true,
},
prioritySupport: {
title: 'Priority support',
basic: false,
pro: false,
teams: true,
},
};
const businessAccountEmailBody = `Hello,
export const getFeatureIdsByPlan = (planName: PlanName, featureOn: boolean): FeatureId[] => {
const output: FeatureId[] = [];
This is an automatically generated email. The Business feature is coming soon, and in the meantime we offer a business discount if you would like to register multiple users.
for (const [k, v] of Object.entries(features)) {
if (v[planName] === featureOn) {
output.push(k);
}
}
If so please let us know the following details and we will get back to you as soon as possible:
return output;
};
- Name:
export const getFeatureLabelsByPlan = (planName: PlanName, featureOn: boolean): string[] => {
const output: FeatureId[] = [];
- Email:
for (const [featureId, v] of Object.entries(features)) {
if (v[planName] === featureOn) {
output.push(getFeatureLabel(planName, featureId));
}
}
- Number of users: `;
return output;
};
export const getAllFeatureIds = (): FeatureId[] => {
return Object.keys(features);
};
export const getFeatureById = (featureId: FeatureId): PlanFeature => {
return features[featureId];
};
export const getFeaturesByPlan = (planName: PlanName, featureOn: boolean): PlanFeature[] => {
const output: PlanFeature[] = [];
for (const [, v] of Object.entries(features)) {
if (v[planName] === featureOn) {
output.push(v);
}
}
return output;
};
export const getFeatureLabel = (planName: PlanName, featureId: FeatureId): string => {
const feature = features[featureId];
const k = `${planName}Info`;
if ((feature as any)[k]) return (feature as any)[k];
return feature.title;
};
export const getFeatureEnabled = (planName: PlanName, featureId: FeatureId): boolean => {
const feature = features[featureId];
return feature[planName];
};
export const createFeatureTableMd = () => {
const headers: MarkdownTableHeader[] = [
{
name: 'featureLabel',
label: 'Feature',
},
{
name: 'basic',
label: 'Basic',
},
{
name: 'pro',
label: 'Pro',
},
{
name: 'teams',
label: 'Teams',
},
];
const rows: MarkdownTableRow[] = [];
const getCellInfo = (planName: PlanName, feature: PlanFeature) => {
if (!feature[planName]) return '-';
const infoShort: string = (feature as any)[`${planName}InfoShort`];
if (infoShort) return infoShort;
return '✔️';
export function getPlans(stripeConfig: StripePublicConfig): Record<string, Plan> {
const features = {
publishNote: 'Publish notes to the internet',
sync: 'Sync as many devices as you want',
clipper: 'Web Clipper',
collaborate: 'Share and collaborate on a notebook',
multiUsers: 'Up to 10 users',
prioritySupport: 'Priority support',
};
for (const [, feature] of Object.entries(features)) {
const row: MarkdownTableRow = {
featureLabel: feature.title,
basic: getCellInfo(PlanName.Basic, feature),
pro: getCellInfo(PlanName.Pro, feature),
teams: getCellInfo(PlanName.Teams, feature),
};
rows.push(row);
}
return markdownUtils.createMarkdownTable(headers, rows);
};
export function getPlans(stripeConfig: StripePublicConfig): Record<PlanName, Plan> {
return {
basic: {
name: 'basic',
@@ -299,13 +146,20 @@ export function getPlans(stripeConfig: StripePublicConfig): Record<PlanName, Pla
}),
featured: false,
iconName: 'basic-icon',
featuresOn: getFeatureIdsByPlan(PlanName.Basic, true),
featuresOff: getFeatureIdsByPlan(PlanName.Basic, false),
featureLabelsOn: getFeatureLabelsByPlan(PlanName.Basic, true),
featureLabelsOff: getFeatureLabelsByPlan(PlanName.Basic, false),
featuresOn: [
'Max 10 MB per note or attachment',
features.publishNote,
features.sync,
features.clipper,
'1 GB storage space',
],
featuresOff: [
features.collaborate,
features.multiUsers,
features.prioritySupport,
],
cfaLabel: 'Try it now',
cfaUrl: '',
footnote: '',
},
pro: {
@@ -321,35 +175,42 @@ export function getPlans(stripeConfig: StripePublicConfig): Record<PlanName, Pla
}),
featured: true,
iconName: 'pro-icon',
featuresOn: getFeatureIdsByPlan(PlanName.Pro, true),
featuresOff: getFeatureIdsByPlan(PlanName.Pro, false),
featureLabelsOn: getFeatureLabelsByPlan(PlanName.Pro, true),
featureLabelsOff: getFeatureLabelsByPlan(PlanName.Pro, false),
featuresOn: [
'Max 200 MB per note or attachment',
features.publishNote,
features.sync,
features.clipper,
'10 GB storage space',
features.collaborate,
],
featuresOff: [
features.multiUsers,
features.prioritySupport,
],
cfaLabel: 'Try it now',
cfaUrl: '',
footnote: '',
},
teams: {
name: 'teams',
title: 'Teams',
priceMonthly: findPrice(stripeConfig.prices, {
accountType: 3,
period: PricePeriod.Monthly,
}),
priceYearly: findPrice(stripeConfig.prices, {
accountType: 3,
period: PricePeriod.Yearly,
}),
business: {
name: 'business',
title: 'Business',
priceMonthly: { accountType: 3, formattedMonthlyAmount: '49.99€' } as any,
priceYearly: { accountType: 3, formattedMonthlyAmount: '39.99€', formattedAmount: '479.88€' } as any,
featured: false,
iconName: 'business-icon',
featuresOn: getFeatureIdsByPlan(PlanName.Teams, true),
featuresOff: getFeatureIdsByPlan(PlanName.Teams, false),
featureLabelsOn: getFeatureLabelsByPlan(PlanName.Teams, true),
featureLabelsOff: getFeatureLabelsByPlan(PlanName.Teams, false),
cfaLabel: 'Try it now',
cfaUrl: '',
footnote: 'Per user. Minimum of 2 users.',
featuresOn: [
'Max 200 MB per note or attachment',
features.publishNote,
features.sync,
features.clipper,
'10 GB storage space',
features.collaborate,
features.multiUsers,
features.prioritySupport,
],
featuresOff: [],
cfaLabel: 'Contact us',
cfaUrl: `mailto:business@joplincloud.com?subject=${encodeURIComponent('Joplin Cloud Business Account Order')}&body=${encodeURIComponent(businessAccountEmailBody)}`,
},
};
}

View File

@@ -48,8 +48,8 @@ module.exports = {
},
{
"id": "5ec2e7505ec2e7505ec2e7505ec2e750",
"title": "5. Joplin Privacy Policy",
"body": "# Joplin Privacy Policy\n\nThe Joplin applications, including the Android, iOS, Windows, macOS and Linux 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.\n\nIf you choose to synchronise with a third-party, such as OneDrive or Dropbox, the notes will be sent to that account, in which case the third-party privacy policy applies.\n\nIn order to provide certain features, Joplin may need to connect to third-party services. You can disable most of these features in the application settings:\n\n| Feature | Description | Default | Can be disabled |\n| -------- | ------------- | -------- | --- |\n| Auto-update | Joplin periodically connects to GitHub to check for new releases. | Enabled | Yes |\n| Geo-location | Joplin saves geo-location information in note properties when you create a note. | Enabled | Yes |\n| 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 | Yes |\n| Wifi connection check | On mobile, Joplin checks for Wifi connectivity to give the option to synchronise data only when Wifi is enabled. | Enabled | No <sup>(1)</sup> |\n| Spellchecker dictionary | On Linux and Windows, the desktop application downloads the spellchecker dictionary from `redirector.gvt1.com`. | Enabled | Yes <sup>(2)</sup> |\n| Plugin repository | The desktop application downloads the list of available plugins from the [official GitHub repository](https://github.com/joplin/plugins). If this repository is not accessible (eg. in China) the app will try to get the plugin list from [various mirrors](https://github.com/laurent22/joplin/blob/8ac6017c02017b6efd59f5fcab7e0b07f8d44164/packages/lib/services/plugins/RepositoryApi.ts#L22), in which case the plugin screen [works slightly differently](https://github.com/laurent22/joplin/issues/5161#issuecomment-925226975). | Enabled | No\n\n<sup>(1) https://github.com/laurent22/joplin/issues/5705</sup><br/>\n<sup>(2) If the spellchecker is disabled, [it will not download the dictionary](https://discourse.joplinapp.org/t/new-version-of-joplin-contacting-google-servers-on-startup/23000/40?u=laurent).</sup>\n\nFor any question about Joplin privacy policy, please leave a message [on the forum](https://discourse.joplinapp.org/).\n",
"title": "5. Privacy policy",
"body": "# Privacy policy\n\nJoplin values your privacy by giving you complete control over your information and digital footprint.\n\nJoplin 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.\n\nJoplin has many modern features, some of which use third-party services. You can disable most of these features in the application settings. These features are:\n\n| Feature | Description | Default | Can be disabled |\n| -------- | ------------- | -------- | --- |\n| Auto-update | Joplin periodically connects to GitHub to check for new releases. | Enabled | Yes |\n| Geo-location | Joplin saves geo-location information in note properties when you create a note. | Enabled | Yes |\n| 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 | Yes |\n| Wifi connection check | On mobile, Joplin checks for Wifi connectivity to give the option to synchronise data only when Wifi is enabled. | Enabled | No <sup>(1)</sup> |\n\n(1) https://github.com/laurent22/joplin/issues/5705\n\nJoplin is developed as an open-source application and the source code is freely available online to inspect.\n\nFor any question about Joplin privacy, please leave a message on the [Joplin Forum](https://discourse.joplinapp.org/).\n",
"tags": [],
"resources": {},
"parent_id": "9bb5d498aba74cc6a047cfdc841e82a1"

View File

@@ -7,7 +7,6 @@ const MarkdownIt = require('markdown-it');
export enum MarkupLanguage {
Markdown = 1,
Html = 2,
Any = 3,
}
export interface RenderResultPluginAsset {

View File

@@ -10,7 +10,7 @@ export default async function(ctx: AppContext) {
const requestStartTime = Date.now();
try {
const { response: responseObject, path } = await execRequest(ctx.joplin.routes, ctx);
const responseObject = await execRequest(ctx.joplin.routes, ctx);
if (responseObject instanceof Response) {
ctx.response = responseObject.response;
@@ -20,7 +20,7 @@ export default async function(ctx: AppContext) {
const view = responseObject as View;
ctx.response.status = view?.content?.error ? view?.content?.error?.httpCode || 500 : 200;
ctx.response.body = await ctx.joplin.services.mustache.renderView(view, {
currentPath: path,
currentUrl: ctx.URL,
notifications: ctx.joplin.notifications || [],
hasNotifications: !!ctx.joplin.notifications && !!ctx.joplin.notifications.length,
owner: ctx.joplin.owner,

View File

@@ -159,22 +159,21 @@ describe('UserDeletionModel', function() {
disabled_time: t0,
});
await models().userDeletion().autoAdd(10, 90 * Day, t0 + 3 * Day);
await models().userDeletion().autoAdd(10, 90 * Day, 3 * Day);
expect(await models().userDeletion().count()).toBe(0);
const t1 = new Date('2022-05-30').getTime();
jest.setSystemTime(t1);
await models().userDeletion().autoAdd(10, 90 * Day, t1 + 3 * Day);
await models().userDeletion().autoAdd(10, 90 * Day, 3 * Day);
expect(await models().userDeletion().count()).toBe(1);
const d = (await models().userDeletion().all())[0];
expect(d.user_id).toBe(user2.id);
expect(d.scheduled_time).toBe(t1 + 3 * Day);
// Shouldn't add it again if running autoAdd() again
await models().userDeletion().autoAdd(10, 90 * Day, t1 + 3 * Day);
await models().userDeletion().autoAdd(10, 90 * Day, 3 * Day);
expect(await models().userDeletion().count()).toBe(1);
jest.useRealTimers();

View File

@@ -1,8 +1,8 @@
import { redirect, SubPath } from '../../utils/routeUtils';
import { makeUrl, redirect, SubPath, UrlType } from '../../utils/routeUtils';
import Router from '../../utils/Router';
import { RouteType } from '../../utils/types';
import { AppContext } from '../../utils/types';
import { ErrorBadRequest, ErrorForbidden } from '../../utils/errors';
import { ErrorBadRequest, ErrorForbidden, ErrorMethodNotAllowed } from '../../utils/errors';
import defaultView from '../../utils/defaultView';
import { yesOrNo } from '../../utils/strings';
import { makeTablePagination, makeTableView, Row, Table } from '../../utils/views/table';
@@ -18,105 +18,108 @@ router.get('admin/user_deletions', async (_path: SubPath, ctx: AppContext) => {
const user = ctx.joplin.owner;
if (!user.is_admin) throw new ErrorForbidden();
const pagination = makeTablePagination(ctx.query, 'scheduled_time', PaginationOrderDir.ASC);
const page = await ctx.joplin.models.userDeletion().allPaginated(pagination);
const users = await ctx.joplin.models.user().loadByIds(page.items.map(d => d.user_id), { fields: ['id', 'email'] });
if (ctx.method === 'GET') {
const pagination = makeTablePagination(ctx.query, 'scheduled_time', PaginationOrderDir.ASC);
const page = await ctx.joplin.models.userDeletion().allPaginated(pagination);
const users = await ctx.joplin.models.user().loadByIds(page.items.map(d => d.user_id), { fields: ['id', 'email'] });
const table: Table = {
baseUrl: adminUserDeletionsUrl(),
requestQuery: ctx.query,
pageCount: page.page_count,
pagination,
headers: [
{
name: 'select',
label: '',
canSort: false,
},
{
name: 'email',
label: 'Email',
stretch: true,
canSort: false,
},
{
name: 'process_data',
label: 'Data?',
},
{
name: 'process_account',
label: 'Account?',
},
{
name: 'scheduled_time',
label: 'Scheduled',
},
{
name: 'start_time',
label: 'Start',
},
{
name: 'end_time',
label: 'End',
},
{
name: 'success',
label: 'Success?',
},
{
name: 'error',
label: 'Error',
},
],
rows: page.items.map(d => {
const isDone = d.end_time && d.success;
const row: Row = [
const table: Table = {
baseUrl: adminUserDeletionsUrl(),
requestQuery: ctx.query,
pageCount: page.page_count,
pagination,
headers: [
{
value: `checkbox_${d.id}`,
checkbox: true,
name: 'select',
label: '',
canSort: false,
},
{
value: isDone ? d.user_id : users.find(u => u.id === d.user_id).email,
name: 'email',
label: 'Email',
stretch: true,
url: isDone ? '' : userUrl(d.user_id),
},
{
value: yesOrNo(d.process_data),
name: 'process_data',
label: 'Data?',
},
{
value: yesOrNo(d.process_account),
name: 'process_account',
label: 'Account?',
},
{
value: formatDateTime(d.scheduled_time),
name: 'scheduled_time',
label: 'Scheduled',
},
{
value: formatDateTime(d.start_time),
name: 'start_time',
label: 'Start',
},
{
value: formatDateTime(d.end_time),
name: 'end_time',
label: 'End',
},
{
value: d.end_time ? yesOrNo(d.success) : '-',
name: 'success',
label: 'Success?',
},
{
value: d.error,
name: 'error',
label: 'Error',
},
];
],
rows: page.items.map(d => {
const isDone = d.end_time && d.success;
return row;
}),
};
const row: Row = [
{
value: `checkbox_${d.id}`,
checkbox: true,
},
{
value: isDone ? d.user_id : users.find(u => u.id === d.user_id).email,
stretch: true,
url: isDone ? '' : userUrl(d.user_id),
},
{
value: yesOrNo(d.process_data),
},
{
value: yesOrNo(d.process_account),
},
{
value: formatDateTime(d.scheduled_time),
},
{
value: formatDateTime(d.start_time),
},
{
value: formatDateTime(d.end_time),
},
{
value: d.end_time ? yesOrNo(d.success) : '-',
},
{
value: d.error,
},
];
const view = defaultView('admin/user_deletions', 'User deletions');
view.content = {
userDeletionTable: makeTableView(table),
postUrl: adminUserDeletionsUrl(),
csrfTag: await createCsrfTag(ctx),
};
view.cssFiles = ['index/user_deletions'];
return row;
}),
};
return view;
const view = defaultView('admin/user_deletions', 'User deletions');
view.content = {
userDeletionTable: makeTableView(table),
postUrl: makeUrl(UrlType.UserDeletions),
csrfTag: await createCsrfTag(ctx),
};
view.cssFiles = ['index/user_deletions'];
return view;
}
throw new ErrorMethodNotAllowed();
});
router.post('admin/user_deletions', async (_path: SubPath, ctx: AppContext) => {
@@ -139,7 +142,7 @@ router.post('admin/user_deletions', async (_path: SubPath, ctx: AppContext) => {
throw new ErrorBadRequest('Invalid action');
}
return redirect(ctx, adminUserDeletionsUrl());
return redirect(ctx, makeUrl(UrlType.UserDeletions));
});
export default router;

View File

@@ -2,7 +2,7 @@ import { SubPath, redirect } from '../../utils/routeUtils';
import Router from '../../utils/Router';
import { RouteType } from '../../utils/types';
import { AppContext } from '../../utils/types';
import { findPrice, PricePeriod, PlanName, getFeatureLabel, getFeatureEnabled, getAllFeatureIds } from '@joplin/lib/utils/joplinCloud';
import { findPrice, getFeatureList, getPlans, PricePeriod } from '@joplin/lib/utils/joplinCloud';
import config from '../../config';
import defaultView from '../../utils/defaultView';
import { stripeConfig, stripePriceIdByUserId, updateSubscriptionType } from '../../utils/stripe';
@@ -28,23 +28,21 @@ router.get('upgrade', async (_path: SubPath, ctx: AppContext) => {
proLabel: string;
}
const featureIds = getAllFeatureIds();
const plans = getPlans(stripeConfig());
const basicFeatureList = getFeatureList(plans.basic);
const proFeatureList = getFeatureList(plans.pro);
const planRows: PlanRow[] = [];
for (let i = 0; i < featureIds.length; i++) {
const featureId = featureIds[i];
for (let i = 0; i < basicFeatureList.length; i++) {
const basic = basicFeatureList[i];
const pro = proFeatureList[i];
const basicLabel = getFeatureLabel(PlanName.Basic, featureId);
const proLabel = getFeatureLabel(PlanName.Pro, featureId);
const basicEnabled = getFeatureEnabled(PlanName.Basic, featureId);
const proEnabled = getFeatureEnabled(PlanName.Pro, featureId);
if (basicLabel === proLabel && basicEnabled === proEnabled) continue;
if (basic.label === pro.label && basic.enabled === pro.enabled) continue;
planRows.push({
basicLabel: basicEnabled ? basicLabel : '-',
proLabel: proLabel,
basicLabel: basic.enabled ? basic.label : '-',
proLabel: pro.label,
});
}

View File

@@ -5,12 +5,23 @@ import config from '../config';
import { filename } from '@joplin/lib/path-utils';
import { NotificationView } from '../utils/types';
import { User } from '../services/database/types';
import { makeUrl, SubPath, UrlType } from '../utils/routeUtils';
import { makeUrl, UrlType } from '../utils/routeUtils';
import MarkdownIt = require('markdown-it');
import { headerAnchor } from '@joplin/renderer';
import { _ } from '@joplin/lib/locale';
import { adminDashboardUrl, adminEmailsUrl, adminTasksUrl, adminUserDeletionsUrl, adminUsersUrl, changesUrl, homeUrl, itemsUrl } from '../utils/urlUtils';
import { MenuItem, setSelectedMenu } from '../utils/views/menu';
import { adminDashboardUrl, adminEmailsUrl, adminTasksUrl, adminUserDeletionsUrl, adminUsersUrl, changesUrl, homeUrl, itemsUrl, stripOffQueryParameters } from '../utils/urlUtils';
import { URL } from 'url';
type MenuItemSelectedCondition = (selectedUrl: URL)=> boolean;
export interface MenuItem {
title: string;
url?: string;
children?: MenuItem[];
selected?: boolean;
icon?: string;
selectedCondition?: MenuItemSelectedCondition;
}
export interface RenderOptions {
partials?: any;
@@ -30,7 +41,6 @@ export interface View {
cssFiles?: string[];
jsFiles?: string[];
strings?: Record<string, string>; // List of translatable strings
sidebarMenu?: MenuItem[];
}
interface GlobalParams {
@@ -54,7 +64,7 @@ interface GlobalParams {
isAdminPage?: boolean;
adminMenu?: MenuItem[];
navbarMenu?: MenuItem[];
currentPath?: SubPath;
currentUrl?: URL;
}
export function isView(o: any): boolean {
@@ -102,7 +112,25 @@ export default class MustacheService {
return `${config().layoutDir}/${name}.mustache`;
}
private makeAdminMenu(selectedPath: SubPath): MenuItem[] {
private setSelectedMenu(selectedUrl: URL, menuItems: MenuItem[]) {
if (!selectedUrl) return;
if (!menuItems) return;
const url = stripOffQueryParameters(selectedUrl.href);
for (const menuItem of menuItems) {
if (menuItem.url) {
if (menuItem.selectedCondition) {
menuItem.selected = menuItem.selectedCondition(selectedUrl);
} else {
menuItem.selected = url === menuItem.url;
}
}
this.setSelectedMenu(selectedUrl, menuItem.children);
}
}
private makeAdminMenu(selectedUrl: URL): MenuItem[] {
const output: MenuItem[] = [
{
title: _('General'),
@@ -131,10 +159,12 @@ export default class MustacheService {
},
];
return setSelectedMenu(selectedPath, output);
this.setSelectedMenu(selectedUrl, output);
return output;
}
private makeNavbar(selectedPath: SubPath, isAdmin: boolean): MenuItem[] {
private makeNavbar(selectedUrl: URL, isAdmin: boolean): MenuItem[] {
let output: MenuItem[] = [
{
title: _('Home'),
@@ -156,14 +186,16 @@ export default class MustacheService {
title: _('Admin'),
url: adminDashboardUrl(),
icon: 'fas fa-hammer',
selectedCondition: (selectedPath: SubPath) => {
return selectedPath.schema.startsWith('admin/') || selectedPath.schema === 'admin';
selectedCondition: (selectedUrl: URL) => {
return selectedUrl.pathname.startsWith('/admin/') || selectedUrl.pathname === '/admin';
},
},
]);
}
return setSelectedMenu(selectedPath, output);
this.setSelectedMenu(selectedUrl, output);
return output;
}
private get defaultLayoutOptions(): GlobalParams {
@@ -263,8 +295,8 @@ export default class MustacheService {
globalParams = {
...this.defaultLayoutOptions,
...globalParams,
adminMenu: globalParams ? this.makeAdminMenu(globalParams.currentPath) : null,
navbarMenu: this.makeNavbar(globalParams?.currentPath, globalParams?.owner ? !!globalParams.owner.is_admin : false),
adminMenu: globalParams ? this.makeAdminMenu(globalParams.currentUrl) : null,
navbarMenu: this.makeNavbar(globalParams?.currentUrl, globalParams?.owner ? !!globalParams.owner.is_admin : false),
userDisplayName: this.userDisplayName(globalParams ? globalParams.owner : null),
isAdminPage,
s: {
@@ -289,7 +321,6 @@ export default class MustacheService {
cssFiles: cssFiles,
jsFiles: jsFiles,
navbar: view.navbar,
sidebarMenu: view.sidebarMenu,
...view.content,
};

View File

@@ -112,7 +112,7 @@ export default class UserDeletionService extends BaseService {
const addedUserIds = await this.models.userDeletion().autoAdd(
10,
this.config.USER_DATA_AUTO_DELETE_AFTER_DAYS * Day,
Date.now() + 3 * Day,
3 * Day,
{
processAccount: true,
processData: true,

View File

@@ -1,4 +1,4 @@
import { findMatchingRoute, isValidOrigin, parseSubPath, splitItemPath, urlMatchesSchema } from './routeUtils';
import { findMatchingRoute, isValidOrigin, parseSubPath, splitItemPath } from './routeUtils';
import { ItemAddressingType } from '../services/database/types';
import { RouteType } from './types';
import { expectThrow } from './testing/testUtils';
@@ -99,7 +99,7 @@ describe('routeUtils', function() {
});
it('should check the request origin for API URLs', async function() {
const testCases: [string, string, boolean][] = [
const testCases: any[] = [
[
'https://example.com', // Request origin
'https://example.com', // Config base URL
@@ -141,7 +141,7 @@ describe('routeUtils', function() {
});
it('should check the request origin for User Content URLs', async function() {
const testCases: [string, string, boolean][] = [
const testCases: any[] = [
[
'https://usercontent.local', // Request origin
'https://usercontent.local', // Config base URL
@@ -170,40 +170,4 @@ describe('routeUtils', function() {
}
});
it('should check if a URL matches a schema', async function() {
const testCases: [string, string, boolean][] = [
[
'https://test.com/items/123/children',
'items/:id/children',
true,
],
[
'https://test.com/items/123',
'items/:id',
true,
],
[
'https://test.com/items',
'items',
true,
],
[
'https://test.com/items/123/children',
'items/:id',
false,
],
[
'',
'items/:id',
false,
],
];
for (const testCase of testCases) {
const [url, schema, expected] = testCase;
const actual = urlMatchesSchema(url, schema);
expect(actual).toBe(expected);
}
});
});

View File

@@ -6,7 +6,6 @@ import { AppContext, HttpMethod, RouteType } from './types';
import { URL } from 'url';
import { csrfCheck } from './csrf';
import { contextSessionId } from './requestUtils';
import { stripOffQueryParameters } from './urlUtils';
const { ltrimSlashes, rtrimSlashes } = require('@joplin/lib/path-utils');
@@ -113,12 +112,6 @@ export function isPathBasedAddressing(fileId: string): boolean {
return fileId.indexOf(':') >= 0;
}
export const urlMatchesSchema = (url: string, schema: string): boolean => {
url = stripOffQueryParameters(url);
const regex = new RegExp(`${schema.replace(/:id/, '[a-zA-Z0-9]+')}$`);
return !!url.match(regex);
};
// Allows parsing the two types of paths supported by the API:
//
// root:/Documents/MyFile.md:/content
@@ -196,12 +189,7 @@ function disabledAccountCheck(route: MatchedRoute, user: User) {
if (route.subPath.schema.startsWith('api/')) throw new ErrorForbidden(`This account is disabled. Please login to ${config().baseUrl} for more information.`);
}
interface ExecRequestResult {
response: any;
path: SubPath;
}
export async function execRequest(routes: Routers, ctx: AppContext): Promise<ExecRequestResult> {
export async function execRequest(routes: Routers, ctx: AppContext) {
const match = findMatchingRoute(ctx.path, routes);
if (!match) throw new ErrorNotFound();
@@ -227,10 +215,7 @@ export async function execRequest(routes: Routers, ctx: AppContext): Promise<Exe
await csrfCheck(ctx, isPublicRoute);
disabledAccountCheck(match, ctx.joplin.owner);
return {
response: await endPoint.handler(match.subPath, ctx),
path: match.subPath,
};
return endPoint.handler(match.subPath, ctx);
}
// In a path such as "/api/files/SOME_ID/content" we want to find:

View File

@@ -46,12 +46,17 @@ export default function(env: Env, models: Models, config: Config, services: Serv
run: (models: Models) => models.user().handleOversizedAccounts(),
},
{
id: TaskId.DeleteExpiredSessions,
description: taskIdToLabel(TaskId.DeleteExpiredSessions),
schedule: '0 */6 * * *',
run: (models: Models) => models.session().deleteExpiredSessions(),
},
// This should be enabled eventually. As of version 2.5
// (2021-11-08T11:07:11Z) all Joplin clients support handling of expired
// sessions, however we don't know how many people have Joplin 2.5+ so
// be safe we don't enable it just yet.
// {
// id: TaskId.DeleteExpiredSessions,
// description: taskIdToLabel(TaskId.DeleteExpiredSessions),
// schedule: '0 */6 * * *',
// run: (models: Models) => models.session().deleteExpiredSessions(),
// },
];
if (config.USER_DATA_AUTO_DELETE_ENABLED) {

View File

@@ -1,39 +0,0 @@
import { SubPath, urlMatchesSchema } from '../routeUtils';
export type MenuItemSelectedCondition = (selectedUrl: SubPath)=> boolean;
export interface MenuItem {
title: string;
url?: string;
children?: MenuItem[];
selected?: boolean;
icon?: string;
selectedCondition?: MenuItemSelectedCondition;
}
export const setSelectedMenu = (selectedPath: SubPath, menuItems: MenuItem[]) => {
if (!selectedPath) return menuItems;
if (!menuItems) return menuItems;
menuItems = menuItems.slice();
for (let i = 0; i < menuItems.length; i++) {
const menuItem = menuItems[i];
let selected = menuItem.selected;
if (menuItem.url) {
if (menuItem.selectedCondition) {
selected = menuItem.selectedCondition(selectedPath);
} else {
selected = urlMatchesSchema(menuItem.url, selectedPath.schema);
}
}
menuItems[i] = {
...menuItem,
selected,
children: setSelectedMenu(selectedPath, menuItem.children),
};
}
return menuItems;
};

View File

@@ -25,25 +25,13 @@
<div class="container main-container">
{{> notifications}}
{{! ADMIN PAGE }}
{{#global.isAdminPage}}
{{> adminLayout}}
{{/global.isAdminPage}}
{{! USER PAGE - WITH SIDEBAR }}
{{^sidebarMenu}}
{{^global.isAdminPage}}
{{{contentHtml}}}
{{/global.isAdminPage}}
{{/sidebarMenu}}
{{! USER PAGE - NO SIDEBAR }}
{{#sidebarMenu}}
{{> sidebarLayout}}
{{/sidebarMenu}}
{{^global.isAdminPage}}
{{{contentHtml}}}
{{/global.isAdminPage}}
</div>
</main>
{{> footer}}

View File

@@ -1,20 +0,0 @@
<div style="display: flex; flex-direction: row;">
<div style="display: flex; margin-right: 3rem; background-color: #f5f5f5; padding: 1.5rem;">
<aside class="menu">
{{#sidebarMenu}}
<p class="menu-label">{{title}}</p>
<ul class="menu-list">
{{#children}}
<li><a href="{{{url}}}" class="{{#selected}}is-active{{/selected}}">{{title}}</a></li>
{{/children}}
</ul>
{{/sidebarMenu}}
</aside>
</div>
<div style="display: flex; flex: 1;">
<div>
{{{contentHtml}}}
</div>
</div>
</div>

View File

@@ -30,20 +30,6 @@
"period": "yearly",
"amount": "57.48",
"currency": "EUR"
},
{
"accountType": 3,
"id": "price_1Kl9uBLx4fybOTqJhx7q4zzj",
"period": "monthly",
"amount": "7.99",
"currency": "EUR"
},
{
"accountType": 3,
"id": "price_1Kl9uNLx4fybOTqJpsB2l3Kg",
"period": "yearly",
"amount": "80.28",
"currency": "EUR"
}
]
},
@@ -78,20 +64,6 @@
"period": "yearly",
"amount": "57.48",
"currency": "EUR"
},
{
"accountType": 3,
"id": "price_1Kl9jyLx4fybOTqJN0i1A88B",
"period": "monthly",
"amount": "7.99",
"currency": "EUR"
},
{
"accountType": 3,
"id": "price_1Kl9nLLx4fybOTqJYTtts35z",
"period": "yearly",
"amount": "80.28",
"currency": "EUR"
}
]
}

View File

@@ -126,7 +126,7 @@ function filterLogs(logs: LogEntry[], platform: Platform) {
if (platform === 'cli' && prefix.indexOf('cli') >= 0) addIt = true;
if (platform === 'clipper' && prefix.indexOf('clipper') >= 0) addIt = true;
if (platform === 'server' && prefix.indexOf('server') >= 0) addIt = true;
if (platform === 'cloud' && (prefix.indexOf('cloud') >= 0 || prefix.indexOf('server'))) addIt = true;
if (platform === 'cloud' && prefix.indexOf('cloud') >= 0) addIt = true;
// Translation updates often comes in format "Translation: Update pt_PT.po"
// but that's not useful in a changelog especially since most people

View File

@@ -1,78 +0,0 @@
import { readdir, stat, writeFile } from 'fs-extra';
import { chdir, cwd } from 'process';
import { execCommand2, rootDir } from './tool-utils';
interface LicenseInfo {
licenses: string;
repository: string;
path: string;
}
const getLicenses = async (directory: string): Promise<Record<string, LicenseInfo>> => {
const previousDir = cwd();
await chdir(directory);
const result = await execCommand2(['license-checker-rseidelsohn', '--production', '--json'], { quiet: true });
const info: Record<string, LicenseInfo> = JSON.parse(result);
if (!info) throw new Error(`Could not parse JSON: ${directory}`);
await chdir(previousDir);
return info;
};
const createCsvLine = (items: string[]) => {
try {
return `"${items.map(i => i.replace(/"/g, '""')).join('", "')}"`;
} catch (error) {
error.message = `Could not process line: ${JSON.stringify(items)}: ${error.message}`;
throw error;
}
};
const enforceString = (line: any): string => {
if (Array.isArray(line)) return line.join(', ');
return line ? (`${line}`) : '';
};
async function main() {
const directories: string[] = [];
const packageItems = await readdir(`${rootDir}/packages`);
for (const item of packageItems) {
const fullPath = `${rootDir}/packages/${item}`;
const info = await stat(fullPath);
if (info.isDirectory()) directories.push(fullPath);
}
directories.push(rootDir);
let licenses: Record<string, LicenseInfo> = {};
for (const dir of directories) {
console.info(`Processing ${dir}...`);
const dirLicenses = await getLicenses(dir);
for (const [, v] of Object.entries(dirLicenses)) {
v.path = dir.substr(rootDir.length);
}
licenses = { ...licenses, ...dirLicenses };
}
const csv: string[][] = [];
csv.push(['Package', 'Licenses', 'Repository', 'Path']);
for (const [packageName, info] of Object.entries(licenses)) {
csv.push([
enforceString(packageName),
enforceString(info.licenses),
enforceString(info.repository),
enforceString(info.path),
]);
}
const outputFile = `${rootDir}/licenses.csv`;
await writeFile(outputFile, csv.map(line => createCsvLine(line)).join('\n'));
console.info(`Created summary in ${outputFile}`);
}
main().catch((error) => {
console.error('Fatal error');
console.error(error);
process.exit(1);
});

View File

@@ -241,7 +241,7 @@ msgstr "نشط"
msgid "Actual Size"
msgstr "الحجم الفعلي"
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "أضف الجسم"
@@ -253,7 +253,7 @@ msgstr "إضافة أو حذف وسوم:"
msgid "Add recipient:"
msgstr "أضِف المستلم:"
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "أضف العنوان"
@@ -261,8 +261,8 @@ msgstr "أضف العنوان"
msgid "Add to dictionary"
msgstr "أضف إلى القاموس"
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -328,15 +328,15 @@ msgstr "Aritim Dark"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "إرفاق ملف"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "إرفاق صورة"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "إرفاق..."
@@ -447,8 +447,8 @@ msgstr "قائمة تعداد نقطي"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -504,8 +504,8 @@ msgstr "لا يمكن نسخ الملاحظة إلى دفتر الملاحظات
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "لا يمكن العثور على \"%s\"."
@@ -513,11 +513,11 @@ msgstr "لا يمكن العثور على \"%s\"."
msgid "Cannot initialise synchroniser."
msgstr "لم يتمكن من تمهيد المزامن."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "لا يمكن تحميل الوحدة النمطية \"%s\" للتنسيق \"%s\" والإخراج \"%s\""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "لا يمكن تحميل الوحدة النمطية \"%s\" للتنسيق \"%s\" والهدف \"%s\""
@@ -593,7 +593,7 @@ msgstr "قائمة خانات اختيار"
msgid "Checking... Please wait."
msgstr "التحقق جارٍ... فضلاً انتظر."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "إختر خيار"
@@ -738,17 +738,17 @@ msgstr "التعارضات (المرفقات)"
msgid "Content provided by %s"
msgstr "خصائص الملاحظة"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "تحويل إلى ملاحظة"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "تحويل إلى قائمة مهام"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "نسخ"
@@ -774,7 +774,7 @@ msgid "Copy Link Address"
msgstr "نسخ عنوان الرابط"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "نسخ رابط Markdown"
@@ -896,7 +896,7 @@ msgid "Created: %d."
msgstr "تم إنشاؤها: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "الإنشاء في: %s"
@@ -945,7 +945,7 @@ msgid "Custom TLS certificates"
msgstr "شهادات TLS خاصة"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "قص"
@@ -954,7 +954,7 @@ msgstr "قص"
msgid "Dark"
msgstr "غامقة"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -1003,7 +1003,7 @@ msgstr "التلقائية: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "حذف"
@@ -1035,7 +1035,7 @@ msgid "Delete note \"%s\"?"
msgstr "حذف الملاحظة \"%s\" ؟"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "حذف الملاحظة؟"
@@ -1147,7 +1147,7 @@ msgstr ""
"تعطيل التشفير يعني أن *كل* ملاحظاتك ومرفقاتها ستجري إعادة مزامنتها ثم ترسل "
"دون تشفير إلى وجهة المزامنة. هل ترغب الاستمرار؟"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "تجاهل التغييرات"
@@ -1285,7 +1285,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "تحرير"
@@ -1342,7 +1342,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1545,11 +1545,11 @@ msgstr ""
msgid "Errors only"
msgstr "الأخطاء فقط"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr "ملف تصدير Evernote (بتنسيق HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr "ملف تصدير Evernote (بتنسيق Markdown)"
@@ -1719,7 +1719,7 @@ msgid "Full changelog"
msgstr "سجل التغيير بكامله"
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "عام"
@@ -1756,7 +1756,7 @@ msgstr ""
"التطبيق قيمة [name] (اسم). إذا لم يجر التزويد بـ [name] ولا [value] فسيسرد "
"التطبيق الإعداد الحالي."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "الذهاب إلى عنوان URL المصدر"
@@ -1773,7 +1773,7 @@ msgstr "منح ال"
msgid "Heading"
msgstr "ترويسة"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr "مساعدة"
@@ -1794,8 +1794,8 @@ msgstr "إخفي Joplin"
msgid "Highlight"
msgstr "تَمييز النَص"
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1803,11 +1803,11 @@ msgstr ""
msgid "Horizontal Rule"
msgstr "خط تسطير أفقي"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr "دليل HTML"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr "ملف HTML"
@@ -1883,7 +1883,7 @@ msgstr ""
"دفتر الملاحظات المختار حالياً. يمكن استخدام `$c` للإشارة إلى العنصر المختار "
"حالياً."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2024,8 +2024,8 @@ msgstr "مائل"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "العنصر \"%s\" لم يتم الإمكان من تحميله: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -2057,13 +2057,13 @@ msgstr "بريد Joplin Cloud"
msgid "Joplin Cloud password"
msgstr "كلمة مرور Joplin Cloud"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "دليل تصدير بيانات Joplin"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "ملف تصدير Joplin"
@@ -2157,7 +2157,7 @@ msgstr "آخر خطأ: %s"
msgid "Later"
msgstr "لاحقا"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "تخطيط"
@@ -2196,7 +2196,7 @@ msgstr[3] "تم نسخ الروابط إلى الحافظة!"
msgstr[4] "تم نسخ الروابط إلى الحافظة!"
msgstr[5] "تم نسخ الروابط إلى الحافظة!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "الروابط مع البروتوكول \"%s\" غير مدعومة"
@@ -2226,7 +2226,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "السجل"
@@ -2246,11 +2246,11 @@ msgstr "تسجيل الدخول عبر Dropbox"
msgid "Login with OneDrive"
msgstr "تسجيل الدخول عبر OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2288,13 +2288,13 @@ msgid "Manual"
msgstr "يدوي"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "تنسيق Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2446,7 +2446,7 @@ msgid "no"
msgstr "كلّا"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "لا"
@@ -2455,7 +2455,7 @@ msgstr "لا"
msgid "No active notebook."
msgstr "لا يوجد دفتر ملاحظات نشط."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "لا يوجد عنصر بالمعرّف %s"
@@ -2751,7 +2751,7 @@ msgid "Passwords do not match!"
msgstr "كلمات المرور غير متطابقة!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "لصق"
@@ -2765,7 +2765,7 @@ msgstr "المسار:"
msgid "PDF File"
msgstr "ملف PDF"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr "مطلوب الإذن"
@@ -2821,7 +2821,7 @@ msgstr "يرجى اختيار الملاحظة أو دفتر الملاحظات
msgid "Please select where the sync status should be exported to"
msgstr "فضلاً اختر أين سيتم تصدير حالة المزامنة"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "فضلاً حدّد تنسيق الاستيراد لـ %s"
@@ -2935,7 +2935,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "نسخة الملف الشخصي: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "الخصائص"
@@ -3162,7 +3162,7 @@ msgstr "حفظ المنبّه"
msgid "Save as..."
msgstr "حفظ باسم..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "حفظ التغييرات"
@@ -3236,7 +3236,7 @@ msgid "Server is running on port %d"
msgstr "الخادم قيد التشغيل على المنفذ %d"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "ضبط منبّه"
@@ -3269,7 +3269,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "مشاركة"
@@ -3626,18 +3626,18 @@ msgstr "تم وسمها: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "وسوم"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "التقاط صورة"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3737,7 +3737,7 @@ msgstr ""
"تستخدم المفاتيح الرئيسية التالية خوارزمية تشفير قديمة ويوَصّى بترقيتها. سيظل "
"المفتاح الرئيسي الذي تمت ترقيته قادرًا على فك تشفير بياناتك وتشفيرها كالمعتاد."
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "تطبيق Joplin على الهاتف الجوال لا يدعم حالياً هذا النوع من الربط : %s"
@@ -3913,7 +3913,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "لم يجر تنزيل هذا المرفق أو فك تشفيره حتى الآن"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr "لم يجر تنزيل هذا المرفق أو فك تشفيره حتى الآن."
@@ -3939,11 +3939,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "ليس لدى هذه الملاحظة معلومة موقع جغرافي."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "جرى تعديل هذه الملاحظة:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4188,7 +4188,7 @@ msgid ""
msgstr ""
"إلغاء مشاركة هذا الدفتر ؟ لن يتمكن المستلمون من الوصول إلى محتوياته بعد الآن."
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "نوع صورة غير مدعوم: %s"
@@ -4245,7 +4245,7 @@ msgstr "تم تحديثها: "
msgid "Updated: %d."
msgstr "تم تحديثها: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "تم تحديثها: %s"
@@ -4321,13 +4321,13 @@ msgstr ""
"الجداول وخانات الاختيار والشفرة البرمجية مثلاً). عندما لا يُعثر عليه سيتم "
"استخدام خط عامّ أحادي المسافة (ثابت العرض)."
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4339,7 +4339,7 @@ msgstr "صحيح"
msgid "View"
msgstr "عرض"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "عرض على الخريطة"
@@ -4433,12 +4433,12 @@ msgid "yes"
msgstr "نعم"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "نعم"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -248,7 +248,7 @@ msgstr "Активен"
msgid "Actual Size"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr ""
@@ -260,7 +260,7 @@ msgstr "Добавяне и махане на тагове:"
msgid "Add recipient:"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
#, fuzzy
msgid "Add title"
msgstr "заглавие"
@@ -269,8 +269,8 @@ msgstr "заглавие"
msgid "Add to dictionary"
msgstr ""
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -338,15 +338,15 @@ msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Прикачи файл"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Прикачи снимка"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
#, fuzzy
msgid "Attach..."
msgstr "Търсене..."
@@ -463,8 +463,8 @@ msgstr "Неномериран списък"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -520,8 +520,8 @@ msgstr "Не можах да копира бележката в тетрадка
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Не успях да намеря \"%s\"."
@@ -530,12 +530,12 @@ msgstr "Не успях да намеря \"%s\"."
msgid "Cannot initialise synchroniser."
msgstr "Не успях да инициализирам синхронизатора."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
#, fuzzy
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "Не можах да заредя модул \"%s\" за формат \"%s\""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
#, fuzzy
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "Не можах да заредя модул \"%s\" за формат \"%s\""
@@ -613,7 +613,7 @@ msgstr "Поле за отметка"
msgid "Checking... Please wait."
msgstr "Проверявам... Моля изчакайте."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
#, fuzzy
msgid "Choose an option"
msgstr "Покажи настройките за напреднали"
@@ -771,17 +771,17 @@ msgstr "Прикачи файл"
msgid "Content provided by %s"
msgstr "Атрибути на бележката"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Конвертиране към бележка"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Конвертиране към задача"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Копирай"
@@ -808,7 +808,7 @@ msgid "Copy Link Address"
msgstr "Копирай адреса на линка"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "Копирай Markdown линк"
@@ -927,7 +927,7 @@ msgid "Created: %d."
msgstr "Създадени: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Създаден: %s"
@@ -977,7 +977,7 @@ msgid "Custom TLS certificates"
msgstr "Допълнителни TLS сертификати"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Изрежи"
@@ -986,7 +986,7 @@ msgstr "Изрежи"
msgid "Dark"
msgstr "Тъмна"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -1037,7 +1037,7 @@ msgstr "Стойност по подразбиране: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Изтрий"
@@ -1071,7 +1071,7 @@ msgid "Delete note \"%s\"?"
msgstr "Да изтрия ли бележка \"%s\"?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Да изтрия ли бележката?"
@@ -1184,7 +1184,7 @@ msgstr ""
"файлове ще бъдат синхронизирани наново и изпратени некриптирани на целта за "
"синхронизация. Искате ли да продължите?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Отхвърли промените"
@@ -1327,7 +1327,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Редактиране"
@@ -1387,7 +1387,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1603,12 +1603,12 @@ msgstr ""
msgid "Errors only"
msgstr "Само грешки"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Evernote експорт файл"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
#, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "Evernote експорт файл"
@@ -1779,7 +1779,7 @@ msgid "Full changelog"
msgstr ""
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "Общи"
@@ -1813,7 +1813,7 @@ msgstr ""
"покаже стойността на [име]. Ако нито [име] нито [стойност] са дадени, "
"изрежда цялата настояща конфигурация."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Иди на уеб адреса (URL)"
@@ -1831,7 +1831,7 @@ msgstr "Оторизационен жетон:"
msgid "Heading"
msgstr "Заглавие"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
#, fuzzy
msgid "Help"
msgstr "Помощ (&H)"
@@ -1853,8 +1853,8 @@ msgstr "Относно Joplin"
msgid "Highlight"
msgstr ""
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1862,12 +1862,12 @@ msgstr ""
msgid "Horizontal Rule"
msgstr "Хоризонтална черта"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
#, fuzzy
msgid "HTML Directory"
msgstr "Директория"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
#, fuzzy
msgid "HTML File"
msgstr "Файл"
@@ -1944,7 +1944,7 @@ msgstr ""
"представляващи съответно настоящата бележка и настоящата тетрадка. `$c` може "
"да се ползва за рефериране на избрания обект."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2072,8 +2072,8 @@ msgstr "Курсив"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "Обект \"%s\" не можа да бъде свален: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -2106,13 +2106,13 @@ msgstr "Уебсайта на Joplin"
msgid "Joplin Cloud password"
msgstr "Въведете главната парола:"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "Joplin експорт директория"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "Joplin експорт файл"
@@ -2210,7 +2210,7 @@ msgstr "Последна грешка: %s"
msgid "Later"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Разположеня"
@@ -2246,7 +2246,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] "Жетона бе копиран в клипборда!"
msgstr[1] "Жетона бе копиран в клипборда!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
@@ -2276,7 +2276,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Лог"
@@ -2296,11 +2296,11 @@ msgstr "Вписване с Dropbox"
msgid "Login with OneDrive"
msgstr "Вписване в OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2338,13 +2338,13 @@ msgid "Manual"
msgstr "Ръчен"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2504,7 +2504,7 @@ msgid "no"
msgstr "н"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Не"
@@ -2513,7 +2513,7 @@ msgstr "Не"
msgid "No active notebook."
msgstr "Няма активна тетрадка."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "Няма обект с идентификатор %s"
@@ -2827,7 +2827,7 @@ msgid "Passwords do not match!"
msgstr "Паролата не може да е празна"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Постави"
@@ -2841,7 +2841,7 @@ msgstr ""
msgid "PDF File"
msgstr "PDF файл"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
#, fuzzy
msgid "Permission needed"
msgstr "Разрешение за употреба на камерата"
@@ -2898,7 +2898,7 @@ msgstr ""
msgid "Please select where the sync status should be exported to"
msgstr "Моля изберете къде да бъде експортиран статуса на синхронизацията"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "Моля задайте формата за импортиране от %s"
@@ -3012,7 +3012,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "Нова версия: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
#, fuzzy
msgid "Properties"
msgstr "Атрибути на бележката"
@@ -3238,7 +3238,7 @@ msgstr "Запази алармата"
msgid "Save as..."
msgstr "Запазаи като..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Запази промените"
@@ -3314,7 +3314,7 @@ msgid "Server is running on port %d"
msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Задай аларма"
@@ -3347,7 +3347,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Сподели"
@@ -3718,18 +3718,18 @@ msgstr "Тагнати: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Тагове"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Снимане"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3821,7 +3821,7 @@ msgid ""
"and encrypt your data as usual."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
"Мобилното приложение на Joplin в момента не поддържа този вид линкове: %s"
@@ -3985,7 +3985,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "Прикаченият файл не е свален или все още не е декриптиран."
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr "Прикаченият файл не е свален или все още не е декриптиран."
@@ -4009,11 +4009,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Тази бележка няма информация за геолокация."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Тази бележка беше променена:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4266,7 +4266,7 @@ msgid ""
"content."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Този тип изображения не се поддържа: %s"
@@ -4325,7 +4325,7 @@ msgstr "Обновени: %d."
msgid "Updated: %d."
msgstr "Обновени: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
#, fuzzy
msgid "Updated: %s"
msgstr "Обновени: %d."
@@ -4396,13 +4396,13 @@ msgid ""
"font is used."
msgstr ""
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4416,7 +4416,7 @@ msgstr "Невалиден отговор: %s"
msgid "View"
msgstr "Изглед(&V)"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Покажи на карта"
@@ -4514,12 +4514,12 @@ msgid "yes"
msgstr "Да"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Да"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -251,7 +251,7 @@ msgstr "Aktivan"
msgid "Actual Size"
msgstr "Početne dimenzije"
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "Dodaj tekst"
@@ -263,7 +263,7 @@ msgstr "Dodajte ili uklonite oznake:"
msgid "Add recipient:"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "Dodaj naziv"
@@ -271,8 +271,8 @@ msgstr "Dodaj naziv"
msgid "Add to dictionary"
msgstr ""
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -339,15 +339,15 @@ msgstr "Aritim tamna"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Priloži datoteku"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Priloži sliku"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "Priloži..."
@@ -463,8 +463,8 @@ msgstr "Nabrajanje"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -520,8 +520,8 @@ msgstr "Bilješka se ne može kopirati u bilježnicu \"%s\""
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Ne mogu pronaći \"%s\"."
@@ -530,12 +530,12 @@ msgstr "Ne mogu pronaći \"%s\"."
msgid "Cannot initialise synchroniser."
msgstr "Sinhronizovanje se ne može započeti."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
#, fuzzy
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "Ne može se učitati modul \"%s\" za format \"%s\""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
#, fuzzy
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "Ne može se učitati modul \"%s\" za format \"%s\""
@@ -613,7 +613,7 @@ msgstr "Polje za kvačicu"
msgid "Checking... Please wait."
msgstr "Provjeravam... Pričekajte."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "Odaberi opciju"
@@ -769,17 +769,17 @@ msgstr "Priložene bilješke"
msgid "Content provided by %s"
msgstr "Svojstva bilješke"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Preinači u bilješku"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Preinači u zadatak"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Kopiraj"
@@ -806,7 +806,7 @@ msgid "Copy Link Address"
msgstr "Kopiraj adresu veze"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "Kopiraj Markdown vezu"
@@ -934,7 +934,7 @@ msgid "Created: %d."
msgstr "Kreirano: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Kreirano: %s"
@@ -984,7 +984,7 @@ msgid "Custom TLS certificates"
msgstr "TLS certifikati"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Izreži"
@@ -993,7 +993,7 @@ msgstr "Izreži"
msgid "Dark"
msgstr "Tamna"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -1044,7 +1044,7 @@ msgstr "Prekonfigurisano: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Izbriši"
@@ -1078,7 +1078,7 @@ msgid "Delete note \"%s\"?"
msgstr "Izbrisati bilješku \"%s\"?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Izbrisati bilješku?"
@@ -1190,7 +1190,7 @@ msgstr ""
"Po isključivanju šifriranja *sve* Vaše bilješke i prilozi bit će iznova "
"sinhronizovani i poslani nešifrirani na zadatu lokaciju. Želite li nastaviti?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Odbaci izmjene"
@@ -1334,7 +1334,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Uredi"
@@ -1393,7 +1393,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1603,11 +1603,11 @@ msgstr ""
msgid "Errors only"
msgstr "Samo greške"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr "Evernote datoteka za prenos (kao HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr "Evernote datoteka za prenos (kao Markdown)"
@@ -1779,7 +1779,7 @@ msgid "Full changelog"
msgstr ""
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "Opće"
@@ -1814,7 +1814,7 @@ msgstr ""
"tada će biti prikazana vrijednost [name]. Ako ni [name] ni [value] nisu "
"precizirane, prikazat će se trenutna konfiguracija."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Idi do izvornog URL-a"
@@ -1832,7 +1832,7 @@ msgstr "Token za ovjeru:"
msgid "Heading"
msgstr "Naslov"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
#, fuzzy
msgid "Help"
msgstr "Pomoć"
@@ -1854,8 +1854,8 @@ msgstr "O Joplinu"
msgid "Highlight"
msgstr "Oznaci"
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1863,12 +1863,12 @@ msgstr ""
msgid "Horizontal Rule"
msgstr "Vodoravna linija"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
#, fuzzy
msgid "HTML Directory"
msgstr "HTML direktorij"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
#, fuzzy
msgid "HTML File"
msgstr "HTML datoteka"
@@ -1947,7 +1947,7 @@ msgstr ""
"$b` trenutno označene bilješke ili bilježnice. `$c` se može koristiti za "
"trenutno označenu stavku."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2093,8 +2093,8 @@ msgstr "Kurziv"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "Stavka \"%s\" nije mogla biti preuzeta: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -2127,13 +2127,13 @@ msgstr "Joplin internet stranica"
msgid "Joplin Cloud password"
msgstr "Unesite glavnu lozinku:"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "Joplin direktorij za prenos"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "Joplin datoteka za prenos"
@@ -2232,7 +2232,7 @@ msgstr "Zadnja greška: %s"
msgid "Later"
msgstr "Poslije"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Prikaz"
@@ -2269,7 +2269,7 @@ msgstr[0] "Veza je kopirana u spremnik!"
msgstr[1] "Veze su kopirane u spremnik!"
msgstr[2] "Veze su kopirano u spremnik!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "Veze sa protokolom \"%s\" nisu podržane"
@@ -2300,7 +2300,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Radni dnevnik"
@@ -2320,11 +2320,11 @@ msgstr "Prijavite se preko Dropboxa"
msgid "Login with OneDrive"
msgstr "Prijavite se preko OneDrivea"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2364,13 +2364,13 @@ msgid "Manual"
msgstr "Ručno"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2528,7 +2528,7 @@ msgid "no"
msgstr "Ne"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Ne"
@@ -2537,7 +2537,7 @@ msgstr "Ne"
msgid "No active notebook."
msgstr "Nema aktivne bilježnice."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "Nema stavke čiji je ID %s"
@@ -2852,7 +2852,7 @@ msgid "Passwords do not match!"
msgstr "Lozinke se ne podudaraju!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Zalijepi"
@@ -2866,7 +2866,7 @@ msgstr ""
msgid "PDF File"
msgstr "PDF datoteka"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
#, fuzzy
msgid "Permission needed"
msgstr "Dozvola za korištenje kamere"
@@ -2925,7 +2925,7 @@ msgstr "Prvo odaberite bilješku ili bilježnicu koju želite izbrisati."
msgid "Please select where the sync status should be exported to"
msgstr "Navedite gdje će biti pohranjen status sinhronizacije"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "Precizirajte format za %s"
@@ -3041,7 +3041,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "Verzija profila: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "Svojstva"
@@ -3268,7 +3268,7 @@ msgstr "Memoriši zvučnu napomenu"
msgid "Save as..."
msgstr "Pohrani kao..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Pohrani izmjene"
@@ -3345,7 +3345,7 @@ msgid "Server is running on port %d"
msgstr "Server je u funkciji preko porta %d"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Podesi zvučnu napomenu"
@@ -3378,7 +3378,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Podijeli"
@@ -3752,18 +3752,18 @@ msgstr "Označeno: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Oznake"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Uslikaj"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3871,7 +3871,7 @@ msgstr ""
"preporučuje se njihova nadogradnja. Nadograđeni glavni ključ i dalje će "
"dešifrirati i šifrirati podatke kao i ranije."
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "Mobilna Joplin aplikacija trenutno ne podržava ovu vrstu veze: %s"
@@ -4041,7 +4041,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "Prilog nije preuzet ili još nije dešifrovan"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr "Prilog nije preuzet ili još nije dešifrovan."
@@ -4068,11 +4068,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Ova bilješka ne sadržava informacije o geografskoj lokaciji."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Ova je bilješka izmijenjena:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4329,7 +4329,7 @@ msgid ""
"content."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Nepodržana vrsta slike: %s"
@@ -4388,7 +4388,7 @@ msgstr "Ažurirano: %s"
msgid "Updated: %d."
msgstr "Ažurirano: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "Ažurirano: %s"
@@ -4460,13 +4460,13 @@ msgid ""
"font is used."
msgstr ""
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4480,7 +4480,7 @@ msgstr "Nevažeći odgovor: %s"
msgid "View"
msgstr "Prikaz"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Vidi na karti"
@@ -4577,12 +4577,12 @@ msgid "yes"
msgstr "Da"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Da"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

File diff suppressed because it is too large Load Diff

View File

@@ -249,7 +249,7 @@ msgstr "Aktivní"
msgid "Actual Size"
msgstr "Skutečná velikost"
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "Přidat tělo"
@@ -261,7 +261,7 @@ msgstr "Přidat či odebrat štítky:"
msgid "Add recipient:"
msgstr "Přidat příjemce:"
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "Přidejte nadpis"
@@ -269,8 +269,8 @@ msgstr "Přidejte nadpis"
msgid "Add to dictionary"
msgstr "Přidat do slovníku"
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -337,15 +337,15 @@ msgstr "Aritim Dark"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Přiložit soubor"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Přiložit obrázek"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "Přiložit..."
@@ -457,8 +457,8 @@ msgstr "Seznam s odrážkami"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -514,8 +514,8 @@ msgstr "Poznámku \"%s\" nelze zkopírovat do zápisníku"
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Výraz \"%s\" nebyl nalezen."
@@ -523,11 +523,11 @@ msgstr "Výraz \"%s\" nebyl nalezen."
msgid "Cannot initialise synchroniser."
msgstr "Nelze inicializovat synchronizátor."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "Nelze načíst modul \"%s\" pro formát \"%s\" a výstup \"%s\""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "Nelze načíst modul \"%s\" pro formát \"%s\" a cíl \"%s\""
@@ -606,7 +606,7 @@ msgstr "Zaškrtávací pole"
msgid "Checking... Please wait."
msgstr "Probíhá kontrola... Počkejte prosím."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "Zvolit možnost"
@@ -756,17 +756,17 @@ msgstr "Přílohy poznámky"
msgid "Content provided by %s"
msgstr "Nastavení poznámek"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Konvertovat na poznámku"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Převést na úkolexpr"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Kopírovat"
@@ -792,7 +792,7 @@ msgid "Copy Link Address"
msgstr "Kopírovat adresu odkazu"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "Vytvořit Markdown odkaz"
@@ -914,7 +914,7 @@ msgid "Created: %d."
msgstr "Vytvořeno: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Vytvořeno: %s"
@@ -963,7 +963,7 @@ msgid "Custom TLS certificates"
msgstr "Vlastní TLS certifikát"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Vyjmout"
@@ -972,7 +972,7 @@ msgstr "Vyjmout"
msgid "Dark"
msgstr "Tmavý"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -1021,7 +1021,7 @@ msgstr "Výchozí: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Smazat"
@@ -1053,7 +1053,7 @@ msgid "Delete note \"%s\"?"
msgstr "Smazat poznámku \"%s\"?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Smazat poznámku?"
@@ -1166,7 +1166,7 @@ msgstr ""
"Vypnutí šifrování znamená, že *všechny* vaše poznámky a přílohy budou "
"synchronizovány na cílové úložiště nešifrované. Přejete si pokračovat?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Zahodit změny"
@@ -1305,7 +1305,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Upravit"
@@ -1362,7 +1362,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1565,11 +1565,11 @@ msgstr ""
msgid "Errors only"
msgstr "Pouze chyby"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr "Soubor exportu Evernote (jako HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr "Soubor exportu Evernote (jako Markdown)"
@@ -1737,7 +1737,7 @@ msgid "Full changelog"
msgstr "Úplný seznam změn"
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "Obecná nastavení"
@@ -1771,7 +1771,7 @@ msgstr ""
"zobrazí hodnotu položky [jméno]. Pokud není specifikována [hodnota] ani "
"[jméno], je zobrazena současná konfigurace."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Jít na zdrojovou URL"
@@ -1789,7 +1789,7 @@ msgstr "Autorizační token:"
msgid "Heading"
msgstr "Nadpis"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr "Nápověda"
@@ -1809,8 +1809,8 @@ msgstr "Skrýt Joplin"
msgid "Highlight"
msgstr "Zvýraznění"
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1818,11 +1818,11 @@ msgstr ""
msgid "Horizontal Rule"
msgstr "Horizontální čára"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr "HTML adresář"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr "HTML soubor"
@@ -1897,7 +1897,7 @@ msgstr ""
"ID, nebo zkratkami `$n` a `$b` pro nyní vybranou poznámku či zápisník. `$c` "
"odkazuje na současně vybranou položku."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2039,8 +2039,8 @@ msgstr "Kurzíva"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "Soubor \"%s\" se nepodařilo stáhnout: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -2070,13 +2070,13 @@ msgstr "E-mailová adresa Joplin cloudu"
msgid "Joplin Cloud password"
msgstr "Heslo Joplin cloudu"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "Složka pro export"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "Soubor Joplin Export"
@@ -2170,7 +2170,7 @@ msgstr "Poslední chyba: %s"
msgid "Later"
msgstr "Později"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Rozložení"
@@ -2206,7 +2206,7 @@ msgstr[0] "Odkaz byl zkopírován do schránky!"
msgstr[1] "Odkazy byly zkopírovány do schránky!"
msgstr[2] "Odkazy byly zkopírovány do schránky!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "Odkazy s protokolem \"%s\" nejsou podporovány"
@@ -2236,7 +2236,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Log"
@@ -2256,11 +2256,11 @@ msgstr "Přihlášení Dropbox"
msgid "Login with OneDrive"
msgstr "Přihlásit se pomocí OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2299,13 +2299,13 @@ msgid "Manual"
msgstr "Ručně"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2458,7 +2458,7 @@ msgid "no"
msgstr "nekompatibilní"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Ne"
@@ -2467,7 +2467,7 @@ msgstr "Ne"
msgid "No active notebook."
msgstr "Není vybrán žádný zápisník."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "Nenalezena položka s ID %s"
@@ -2764,7 +2764,7 @@ msgid "Passwords do not match!"
msgstr "Hesla se neshodují!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Vložit"
@@ -2778,7 +2778,7 @@ msgstr "Cesta:"
msgid "PDF File"
msgstr "PDF soubor"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr "Vyžadováno oprávnění"
@@ -2834,7 +2834,7 @@ msgstr "Nejprve prosím vyberte poznámku či zápisník ke smazání."
msgid "Please select where the sync status should be exported to"
msgstr "Prosím vyberte, kam má být stav synchronizace exportován"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "Prosím specifikujte formát pro import %s"
@@ -2948,7 +2948,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "Verze profilu: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "Nastavení"
@@ -3177,7 +3177,7 @@ msgstr "Nastavit alarm"
msgid "Save as..."
msgstr "Uložit jako..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Uložit změny"
@@ -3252,7 +3252,7 @@ msgid "Server is running on port %d"
msgstr "Server je spuštěný na portu %d"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Nastavit alarm"
@@ -3285,7 +3285,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Sdílet"
@@ -3648,18 +3648,18 @@ msgstr "Označeno pomocí štítků: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Štítky"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Přiložit foto"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3763,7 +3763,7 @@ msgstr ""
"doporučeno je upgradovat. Upgradovaný hlavní klíč bude i nadále schopen "
"dešifrovat a zašifrovat vaše data jako obvykle."
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "Mobilní aplikace Joplin aktuálně nepodporuje tento typ odkazu: %s"
@@ -3936,7 +3936,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "Tato příloha ještě není stažena nebo dešifrována"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr "Tato příloha není ještě stažena nebo dešifrována."
@@ -3963,11 +3963,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Tato poznámka nemá informace o zeměpisné poloze."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Poznámka byla upravena:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4221,7 +4221,7 @@ msgstr ""
"Opravdu chcete přestat sdílet tento zápisník? Příjemci už pak nebudou mít "
"přístup k jeho obsahu."
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Nepodporovaný formát obrázku: %s"
@@ -4279,7 +4279,7 @@ msgstr "Upraveno: %s"
msgid "Updated: %d."
msgstr "Upraveno: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "Upraveno: %s"
@@ -4358,13 +4358,13 @@ msgstr ""
"nebude nalezeno, bude použito obecné neproporcionální písmo s jednotnou "
"šířkou znaků."
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4377,7 +4377,7 @@ msgstr "Neplatné"
msgid "View"
msgstr "Zobrazit"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Zobrazit na map+"
@@ -4472,12 +4472,12 @@ msgid "yes"
msgstr "kompatibilní"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Ano"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -13,10 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Poedit 2.4.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
#: packages/app-mobile/components/screens/ConfigScreen.tsx:565
msgid "- Camera: to allow taking a picture and attaching it to a note."
@@ -245,7 +243,7 @@ msgstr "Aktiv"
msgid "Actual Size"
msgstr "Faktisk størrelse"
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "Tilføj brødtekst"
@@ -257,7 +255,7 @@ msgstr "Tilføj eller fjern etiketter:"
msgid "Add recipient:"
msgstr "Tilføj modtager:"
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "Tilføj titel"
@@ -265,8 +263,8 @@ msgstr "Tilføj titel"
msgid "Add to dictionary"
msgstr "Tilføj til ordbog"
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr "Admin"
@@ -332,15 +330,15 @@ msgstr "Aritim Mørk"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Vedhæft fil"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Vedhæft foto"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "Vedhæft..."
@@ -397,7 +395,7 @@ msgstr "Auto"
#: packages/server/src/services/TaskService.ts:39
msgid "Auto-add disabled accounts for deletion"
msgstr "Føj automatisk deaktiverede konti til sletning"
msgstr ""
#: packages/lib/models/Setting.ts:855
msgid "Auto-pair braces, parenthesis, quotations, etc."
@@ -451,8 +449,8 @@ msgstr "Punktliste"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -508,8 +506,8 @@ msgstr "Kan ikke kopiere note til \"%s\" notesbog"
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Kan ikke finde \"%s\"."
@@ -517,11 +515,11 @@ msgstr "Kan ikke finde \"%s\"."
msgid "Cannot initialise synchroniser."
msgstr "Kan ikke starte synkroniseringen."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "Kan ikke indlæse \"%s\" modul til format \"%s\" og output \"%s\""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "Kan ikke indlæse \"%s\" modul til format \"%s\" og mål \"%s\""
@@ -602,7 +600,7 @@ msgstr "Afkrydsningsliste"
msgid "Checking... Please wait."
msgstr "Tjekker... Vent venligst."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "Vælg en mulighed"
@@ -711,7 +709,7 @@ msgstr "Fuldført: %s (%s)"
#: packages/server/src/services/TaskService.ts:37
msgid "Compress old changes"
msgstr "Komprimér gamle ændringer"
msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:637
#: packages/app-mobile/components/side-menu-content.js:332
@@ -747,17 +745,17 @@ msgstr "Konflikter (vedhæftninger)"
msgid "Content provided by %s"
msgstr "Indhold leveret af %s"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Konverter til note"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Konverter til opgave"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Kopier"
@@ -781,7 +779,7 @@ msgid "Copy Link Address"
msgstr "Kopier linkadresse"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "Kopier markdown link"
@@ -905,7 +903,7 @@ msgid "Created: %d."
msgstr "Oprettet: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Oprettet: %s"
@@ -954,7 +952,7 @@ msgid "Custom TLS certificates"
msgstr "Brugerdefinerede TLS certifikater"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Klip"
@@ -963,7 +961,7 @@ msgstr "Klip"
msgid "Dark"
msgstr "Mørkt"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr "Kontrolpanel"
@@ -1012,7 +1010,7 @@ msgstr "Standard: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Slet"
@@ -1022,12 +1020,14 @@ msgid "Delete attachment \"%s\"?"
msgstr "Slet venhæftning \"%s\"?"
#: packages/server/src/services/TaskService.ts:36
#, fuzzy
msgid "Delete expired sessions"
msgstr "Slet udløbne sessioner"
msgstr "Slå matematiske udtryk til"
#: packages/server/src/services/TaskService.ts:31
#, fuzzy
msgid "Delete expired tokens"
msgstr "Slet udløbne tokens"
msgstr "Slet disse %d noter?"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:88
msgid "Delete line"
@@ -1042,7 +1042,7 @@ msgid "Delete note \"%s\"?"
msgstr "Slet noten \"%s\"?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Slet note?"
@@ -1154,7 +1154,7 @@ msgstr ""
"Slås kryptering fra vil *alle* dine noter og vedhæftninger blive re-"
"synkroniseret og sendt ukrypteret til synk-modtageren. Vil du fortsætte?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Kassér ændringer"
@@ -1291,7 +1291,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Redigér"
@@ -1345,12 +1345,12 @@ msgstr "Emacs"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:236
#: packages/server/src/routes/admin/emails.ts:128
msgid "Email"
msgstr "E-mail"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr "E-mails"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:194
msgid "emphasised text"
@@ -1547,11 +1547,11 @@ msgstr ""
msgid "Errors only"
msgstr "Kun fejl"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr "Evernote eksport fil (i HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr "Evernote eksport fil (i Markdown)"
@@ -1720,7 +1720,7 @@ msgid "Full changelog"
msgstr "Komplet ændringslog"
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "Generelt"
@@ -1753,7 +1753,7 @@ msgstr ""
"aktuel konfiguration."
# Kilde-URL er en dårlig oversættelse
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Gå til kilde-URL"
@@ -1770,7 +1770,7 @@ msgstr "Giv tilladelse"
msgid "Heading"
msgstr "Overskrift"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr "Hjælp"
@@ -1790,8 +1790,8 @@ msgstr "Skjul Joplin"
msgid "Highlight"
msgstr "Fremhæv"
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr "Hjem"
@@ -1799,11 +1799,11 @@ msgstr "Hjem"
msgid "Horizontal Rule"
msgstr "Vandret linje"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr "HTML Indeks"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr "HTML fil"
@@ -1837,7 +1837,7 @@ msgstr "Ignorer TLS certifikat-fejl"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:102
msgid "Images"
msgstr "Billeder"
msgstr ""
#: packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.tsx:170
#: packages/app-desktop/gui/MenuBar.tsx:484
@@ -1878,7 +1878,7 @@ msgstr ""
"eller ved at bruge links `$n` eller `$b` for valgte noter eller notesbøger. `"
"$c` kan bruges som reference til aktuel/valgt emne."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2019,8 +2019,8 @@ msgstr "Kursiv"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "Emnet \"%s\" kunne ikke downloades: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr "Emner"
@@ -2052,13 +2052,13 @@ msgstr "Joplin Cloud e-mail"
msgid "Joplin Cloud password"
msgstr "Joplin Cloud-adgangskode"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "Joplin eksport mappe"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "Joplin eksport fil"
@@ -2153,7 +2153,7 @@ msgstr "Sidste fejl: %s"
msgid "Later"
msgstr "Senere"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Layout"
@@ -2187,7 +2187,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] "Link er kopieret til udklipsholder!"
msgstr[1] "Links er kopieret til udklipsholder!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "Links med \"%s\" protokollen er ikke understøttede"
@@ -2216,7 +2216,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Log"
@@ -2236,11 +2236,11 @@ msgstr "Log på med Dropbox"
msgid "Login with OneDrive"
msgstr "Log på med OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr "Log ud"
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr "Logfiler"
@@ -2276,13 +2276,13 @@ msgid "Manual"
msgstr "Manuel"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr "Markdown + Front Matter"
@@ -2431,7 +2431,7 @@ msgid "no"
msgstr "nej"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Nej"
@@ -2440,7 +2440,7 @@ msgstr "Nej"
msgid "No active notebook."
msgstr "Ingen aktiv notesbog."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "Intet emne med ID'en %s"
@@ -2703,8 +2703,9 @@ msgid "Or create an account."
msgstr "Eller opret en konto."
#: packages/app-desktop/gui/MenuBar.tsx:352
#, fuzzy
msgid "Other applications..."
msgstr "Andre applikationer..."
msgstr "Lukker programmet."
#: packages/app-cli/app/command-import.js:27
msgid "Output format: %s"
@@ -2738,7 +2739,7 @@ msgid "Passwords do not match!"
msgstr "Adgangskoder stemmer ikke overens!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Indsæt"
@@ -2752,7 +2753,7 @@ msgstr "Sti:"
msgid "PDF File"
msgstr "PDF-fil"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr "Tilladelse nødvendig"
@@ -2810,7 +2811,7 @@ msgstr "Vælg først noten eller notesbogen der skal slettes."
msgid "Please select where the sync status should be exported to"
msgstr "Vælg hvor synk-status skal eksporteres til"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "Specificer import format for %s"
@@ -2906,15 +2907,16 @@ msgstr "Privatlivspolitik"
#: packages/server/src/services/TaskService.ts:35
msgid "Process failed payment subscriptions"
msgstr "Behandl mislykkede betalingsabonnementer"
msgstr ""
#: packages/server/src/services/TaskService.ts:33
msgid "Process oversized accounts"
msgstr "Behandl for store konti"
msgstr ""
#: packages/server/src/services/TaskService.ts:38
#, fuzzy
msgid "Process user deletions"
msgstr "Behandl brugersletninger"
msgstr "Brugersletninger"
#: packages/server/src/routes/admin/users.ts:168
msgid "Profile"
@@ -2924,7 +2926,7 @@ msgstr "Profil"
msgid "Profile Version: %s"
msgstr "Profil-version: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "Egenskaber"
@@ -3146,7 +3148,7 @@ msgstr "Gem alarm"
msgid "Save as..."
msgstr "Gem som..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Gem ændringer"
@@ -3197,12 +3199,14 @@ msgid "Select all"
msgstr "Vælg alt"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:140
#, fuzzy
msgid "Select emoji..."
msgstr "Vælg emoji..."
msgstr "Vælg dato"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:144
#, fuzzy
msgid "Select file..."
msgstr "Vælg fil..."
msgstr "Vælg alt"
#: packages/app-cli/app/command-server.js:38
msgid "Server is already running on port %d"
@@ -3218,7 +3222,7 @@ msgid "Server is running on port %d"
msgstr "Serveren kører på port %d"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Indstil alarm"
@@ -3253,7 +3257,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Del"
@@ -3608,18 +3612,18 @@ msgstr "Etiketterede: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Etiketter"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Tag et foto"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr "Opgaver"
@@ -3724,7 +3728,7 @@ msgstr ""
"opgradere dem. Den opgraderet nøgler vil stadig kunne dekryptere og kryptere "
"dine data som normalt."
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
"Joplin mobil-app'en understøtter på nuværende tidspunkt ikke denne type "
@@ -3906,7 +3910,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "Denne vedhæftning er ikke downloadet eller ikke dekrypteret endnu"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr ""
"Denne vedhæftning er ikke downloadet eller er ikke blevet dekrypteret endnu."
@@ -3934,11 +3938,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Denne note har ingen geolokationsoplysninger."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Denne note er blevet ændret:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4189,7 +4193,7 @@ msgstr ""
"Del ikke længere denne notesbog? Modtagerne vil ikke længere have adgang til "
"dens indhold."
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Ikke-understøttet billedtype: %s"
@@ -4214,8 +4218,9 @@ msgid "Update profile"
msgstr "Opdater profil"
#: packages/server/src/services/TaskService.ts:32
#, fuzzy
msgid "Update total sizes"
msgstr "Opdater samlede størrelser"
msgstr "Opdaterede lokale emner: %d."
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.tsx:208
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.tsx:209
@@ -4244,7 +4249,7 @@ msgstr "Opdateret: "
msgid "Updated: %d."
msgstr "Opdateret %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "Opdateret: %s"
@@ -4321,13 +4326,13 @@ msgstr ""
"eks. tabeller, afkrydsningsfelter, kode). Hvis ikke fundet, bruges en "
"generisk monospatieret (fast bredde) font."
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr "Brugersletninger"
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr "Brugere"
@@ -4339,7 +4344,7 @@ msgstr "Gyldig"
msgid "View"
msgstr "Vis"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Vis på kort"
@@ -4437,12 +4442,12 @@ msgid "yes"
msgstr "ja"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Ja"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "
@@ -4567,9 +4572,11 @@ msgstr "Zoom ud"
#~ msgid "Delete these notes?"
#~ msgstr "Slet disse noter?"
#, javascript-format
#~ msgid "Encryption will be enabled using the master key created on %s"
#~ msgstr "Kryptering vil aktiveres med hovednøglen oprettet den %s"
#, javascript-format
#~ msgid "%s %s (%s)"
#~ msgstr "%s %s (%s)"

View File

@@ -244,7 +244,7 @@ msgstr "Aktiv"
msgid "Actual Size"
msgstr "Aktuelle Größe"
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "Text hinzufügen"
@@ -256,7 +256,7 @@ msgstr "Schlagwörter hinzufügen oder entfernen:"
msgid "Add recipient:"
msgstr "Füge Empfänger hinzu:"
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "Titel hinzufügen"
@@ -264,8 +264,8 @@ msgstr "Titel hinzufügen"
msgid "Add to dictionary"
msgstr "Zum Wörterbuch hinzufügen"
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr "Admin"
@@ -336,15 +336,15 @@ msgstr "Aritim dunkel"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Datei anhängen"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Foto anhängen"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "Anhängen ..."
@@ -464,8 +464,8 @@ msgstr "Aufzählung"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -521,8 +521,8 @@ msgstr "Kann Notiz nicht in das Notizbuch „%s“ kopieren"
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Kann „%s“ nicht finden."
@@ -530,13 +530,13 @@ msgstr "Kann „%s“ nicht finden."
msgid "Cannot initialise synchroniser."
msgstr "Kann Synchronisierer nicht initialisieren."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr ""
"Das Modul „%s“ für das Format „%s“ und die Ausgabe „%s“ kann nicht geladen "
"werden"
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr ""
"Das Modul „%s“ für das Format „%s“ und die Ausgabe „%s“ kann nicht geladen "
@@ -619,7 +619,7 @@ msgstr "Liste mit Kontrollkästchen"
msgid "Checking... Please wait."
msgstr "Wird überprüft … Bitte warten."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "Wähle eine Option"
@@ -765,17 +765,17 @@ msgstr "Konflikte (Anhänge)"
msgid "Content provided by %s"
msgstr "Von %s bereitgestellte Inhalte"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "In eine Notiz umwandeln"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "In eine Aufgabe umwandeln"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Kopieren"
@@ -799,7 +799,7 @@ msgid "Copy Link Address"
msgstr "Link-Adresse kopieren"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "Markdown-Link kopieren"
@@ -924,7 +924,7 @@ msgid "Created: %d."
msgstr "Erstellt: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Erstellt: %s"
@@ -974,7 +974,7 @@ msgid "Custom TLS certificates"
msgstr "Benutzerdefinierte TLS-Zertifikate"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Ausschneiden"
@@ -983,7 +983,7 @@ msgstr "Ausschneiden"
msgid "Dark"
msgstr "Dunkel"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr "Übersichtsseite"
@@ -1032,7 +1032,7 @@ msgstr "Standard: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Löschen"
@@ -1062,7 +1062,7 @@ msgid "Delete note \"%s\"?"
msgstr "Notiz „%s“ löschen?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Notiz löschen?"
@@ -1176,7 +1176,7 @@ msgstr ""
"Anhänge neu synchronisiert und unverschlüsselt an das Synchronisationsziel "
"gesendet. Möchtest du fortfahren?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Änderungen verwerfen"
@@ -1318,7 +1318,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Bearbeiten"
@@ -1375,7 +1375,7 @@ msgid "Email"
msgstr "E-Mail"
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr "E-Mails"
@@ -1574,11 +1574,11 @@ msgstr ""
msgid "Errors only"
msgstr "Nur Fehler"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr "Evernote Export-Datei (als HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr "Evernote Export-Datei (als Markdown)"
@@ -1751,7 +1751,7 @@ msgid "Full changelog"
msgstr "Komplettes Änderungsprotokoll"
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "Allgemeines"
@@ -1783,7 +1783,7 @@ msgstr ""
"ist, wird der Wert von [name] angezeigt. Wenn weder [name] noch [value] "
"angegeben sind, wird die aktuelle Konfiguration aufgelistet."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Zur Quell-URL gehen"
@@ -1800,7 +1800,7 @@ msgstr "Genehmigung erteilen"
msgid "Heading"
msgstr "Überschrift"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr "Hilfe"
@@ -1820,8 +1820,8 @@ msgstr "Joplin ausblenden"
msgid "Highlight"
msgstr "Hervorheben"
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr "Startseite"
@@ -1829,11 +1829,11 @@ msgstr "Startseite"
msgid "Horizontal Rule"
msgstr "Horizontale Linie"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr "HTML-Verzeichnis"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr "HTML-Datei"
@@ -1910,7 +1910,7 @@ msgstr ""
"aktuelle Notiz bzw. das aktuelle Notizbuch. `$c` kann benutzt werden, um auf "
"die momentane Auswahl zu verweisen."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2051,8 +2051,8 @@ msgstr "Kursiv"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "Element „%s“ konnte nicht heruntergeladen werden: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr "Elemente"
@@ -2084,13 +2084,13 @@ msgstr "Joplin Cloud E-Mail"
msgid "Joplin Cloud password"
msgstr "Joplin Server Passwort"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "Joplin Export-Verzeichnis"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "Joplin Export-Datei"
@@ -2187,7 +2187,7 @@ msgstr "Letzte Fehlermeldung: %s"
msgid "Later"
msgstr "Später"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Layout"
@@ -2221,7 +2221,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] "Der Link wurde in die Zwischenablage kopiert!"
msgstr[1] "Die Links wurden in die Zwischenablage kopiert!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "Links mit dem Protokoll „%s“ werden nicht unterstützt"
@@ -2252,7 +2252,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Protokoll"
@@ -2272,11 +2272,11 @@ msgstr "Mit Dropbox anmelden"
msgid "Login with OneDrive"
msgstr "Mit OneDrive anmelden"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr "Abmelden"
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr "Protokolle"
@@ -2311,13 +2311,13 @@ msgid "Manual"
msgstr "Manuell"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr "Markdown + Front Matter"
@@ -2469,7 +2469,7 @@ msgid "no"
msgstr "Nein"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Nein"
@@ -2478,7 +2478,7 @@ msgstr "Nein"
msgid "No active notebook."
msgstr "Kein aktives Notizbuch."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "Kein Element mit ID %s"
@@ -2781,7 +2781,7 @@ msgid "Passwords do not match!"
msgstr "Passwörter sind nicht identisch!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Einfügen"
@@ -2795,7 +2795,7 @@ msgstr "Pfad:"
msgid "PDF File"
msgstr "PDF-Datei"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr "Berechtigung benötigt"
@@ -2858,7 +2858,7 @@ msgid "Please select where the sync status should be exported to"
msgstr ""
"Bitte wähle aus, wohin der Synchronisations-Status exportiert werden soll"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "Bitte das Importformat für %s angeben"
@@ -2980,7 +2980,7 @@ msgstr "Profil"
msgid "Profile Version: %s"
msgstr "Profil-Version: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "Eigenschaften"
@@ -3203,7 +3203,7 @@ msgstr "Alarm speichern"
msgid "Save as..."
msgstr "Speichern unter ..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Änderungen speichern"
@@ -3277,7 +3277,7 @@ msgid "Server is running on port %d"
msgstr "Server läuft auf Port %d"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Alarm erstellen"
@@ -3312,7 +3312,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Teilen"
@@ -3679,18 +3679,18 @@ msgstr "Verschlagwortet: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Schlagwörter"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Foto aufnehmen"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr "Aufgaben"
@@ -3804,7 +3804,7 @@ msgstr ""
"aktualisierte Schlüssel wird deine Daten weiterhin wie gewohnt entschlüsseln "
"und verschlüsseln können."
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "Die Joplin Handy-App unterstützt derzeit diese Art von Link nicht: %s"
@@ -3997,7 +3997,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "Dieser Anhang wurde noch nicht heruntergeladen oder entschlüsselt"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr ""
"Dieser Anhang wurde nicht heruntergeladen oder noch nicht entschlüsselt."
@@ -4025,11 +4025,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Diese Notiz hat keine Standort-Informationen."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Diese Notiz wurde verändert:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4286,7 +4286,7 @@ msgstr ""
"Teilen des Notizbuch beenden? Der Empfänger wird keinen Zugriff mehr auf den "
"Inhalt haben."
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Nicht unterstütztes Fotoformat: %s"
@@ -4341,7 +4341,7 @@ msgstr "Aktualisiert: "
msgid "Updated: %d."
msgstr "Aktualisiert: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "Aktualisiert: %s"
@@ -4419,13 +4419,13 @@ msgstr ""
"Tabellen, Kontrollkästchen, Code). Falls nicht vorhanden wird eine Monotype-"
"Scrhiftart (mit fester Breite) verwendet."
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr "Benutzer-Löschungen"
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr "Benutzer"
@@ -4437,7 +4437,7 @@ msgstr "Gültig"
msgid "View"
msgstr "Ansicht"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Auf der Karte anzeigen"
@@ -4535,12 +4535,12 @@ msgid "yes"
msgstr "Ja"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Ja"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

File diff suppressed because it is too large Load Diff

View File

@@ -208,7 +208,7 @@ msgstr ""
msgid "Actual Size"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr ""
@@ -220,7 +220,7 @@ msgstr ""
msgid "Add recipient:"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr ""
@@ -228,8 +228,8 @@ msgstr ""
msgid "Add to dictionary"
msgstr ""
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -295,15 +295,15 @@ msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr ""
@@ -408,8 +408,8 @@ msgstr ""
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -467,8 +467,8 @@ msgstr ""
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr ""
@@ -476,11 +476,11 @@ msgstr ""
msgid "Cannot initialise synchroniser."
msgstr ""
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr ""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr ""
@@ -546,7 +546,7 @@ msgstr ""
msgid "Checking... Please wait."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr ""
@@ -678,17 +678,17 @@ msgstr ""
msgid "Content provided by %s"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr ""
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr ""
@@ -712,7 +712,7 @@ msgid "Copy Link Address"
msgstr ""
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr ""
@@ -816,7 +816,7 @@ msgid "Created: %d."
msgstr ""
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr ""
@@ -865,7 +865,7 @@ msgid "Custom TLS certificates"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr ""
@@ -874,7 +874,7 @@ msgstr ""
msgid "Dark"
msgstr ""
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -924,7 +924,7 @@ msgstr ""
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr ""
@@ -954,7 +954,7 @@ msgid "Delete note \"%s\"?"
msgstr ""
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr ""
@@ -1050,7 +1050,7 @@ msgstr ""
msgid "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?"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr ""
@@ -1167,7 +1167,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr ""
@@ -1225,7 +1225,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1416,11 +1416,11 @@ msgstr ""
msgid "Errors only"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr ""
@@ -1576,7 +1576,7 @@ msgid "Full changelog"
msgstr ""
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr ""
@@ -1602,7 +1602,7 @@ msgstr ""
msgid "Gets or sets a config value. If [value] is not provided, it will show the value of [name]. If neither [name] nor [value] is provided, it will list the current configuration."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr ""
@@ -1619,7 +1619,7 @@ msgstr ""
msgid "Heading"
msgstr ""
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr ""
@@ -1639,8 +1639,8 @@ msgstr ""
msgid "Highlight"
msgstr ""
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1648,11 +1648,11 @@ msgstr ""
msgid "Horizontal Rule"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr ""
@@ -1715,7 +1715,7 @@ msgstr ""
msgid "In any command, a note or notebook can be referred to by title or ID, or using the shortcuts `$n` or `$b` for, respectively, the currently selected note or notebook. `$c` can be used to refer to the currently selected item."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your permission to access your location.\n"
"\n"
@@ -1831,8 +1831,8 @@ msgstr ""
msgid "Item \"%s\" could not be downloaded: %s"
msgstr ""
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -1860,13 +1860,13 @@ msgstr ""
msgid "Joplin Cloud password"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr ""
@@ -1947,7 +1947,7 @@ msgstr ""
msgid "Later"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr ""
@@ -1981,7 +1981,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] ""
msgstr[1] ""
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
@@ -2005,7 +2005,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr ""
@@ -2025,11 +2025,11 @@ msgstr ""
msgid "Login with OneDrive"
msgstr ""
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2060,13 +2060,13 @@ msgid "Manual"
msgstr ""
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2215,7 +2215,7 @@ msgid "no"
msgstr ""
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172
#: packages/lib/versionInfo.ts:27
msgid "No"
@@ -2225,7 +2225,7 @@ msgstr ""
msgid "No active notebook."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr ""
@@ -2509,7 +2509,7 @@ msgid "Passwords do not match!"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr ""
@@ -2523,7 +2523,7 @@ msgstr ""
msgid "PDF File"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr ""
@@ -2563,7 +2563,7 @@ msgstr ""
msgid "Please select where the sync status should be exported to"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr ""
@@ -2669,7 +2669,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr ""
@@ -2885,7 +2885,7 @@ msgstr ""
msgid "Save as..."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr ""
@@ -2957,7 +2957,7 @@ msgid "Server is running on port %d"
msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr ""
@@ -2983,7 +2983,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr ""
@@ -3320,18 +3320,18 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr ""
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3401,7 +3401,7 @@ msgstr ""
msgid "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."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
@@ -3522,7 +3522,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr ""
@@ -3539,11 +3539,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "This note has no content. Click on \"%s\" to toggle the editor and edit the note."
msgstr ""
@@ -3741,7 +3741,7 @@ msgstr ""
msgid "Unshare this notebook? The recipients will no longer have access to its content."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr ""
@@ -3798,7 +3798,7 @@ msgstr ""
msgid "Updated: %d."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr ""
@@ -3853,13 +3853,13 @@ msgstr ""
msgid "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."
msgstr ""
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -3871,7 +3871,7 @@ msgstr ""
msgid "View"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr ""
@@ -3960,13 +3960,13 @@ msgid "yes"
msgstr ""
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172
#: packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid "You are about to attach a large image (%dx%d pixels). Would you like to resize it down to %d pixels before attaching it?"
msgstr ""

View File

@@ -231,7 +231,7 @@ msgstr ""
msgid "Actual Size"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr ""
@@ -243,7 +243,7 @@ msgstr ""
msgid "Add recipient:"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr ""
@@ -251,8 +251,8 @@ msgstr ""
msgid "Add to dictionary"
msgstr ""
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -318,15 +318,15 @@ msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr ""
@@ -434,8 +434,8 @@ msgstr ""
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -491,8 +491,8 @@ msgstr ""
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr ""
@@ -500,11 +500,11 @@ msgstr ""
msgid "Cannot initialise synchroniser."
msgstr "Cannot initialize synchronizer."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr ""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr ""
@@ -579,7 +579,7 @@ msgstr ""
msgid "Checking... Please wait."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr ""
@@ -721,17 +721,17 @@ msgstr ""
msgid "Content provided by %s"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr ""
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr ""
@@ -755,7 +755,7 @@ msgid "Copy Link Address"
msgstr ""
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr ""
@@ -872,7 +872,7 @@ msgid "Created: %d."
msgstr ""
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr ""
@@ -921,7 +921,7 @@ msgid "Custom TLS certificates"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr ""
@@ -930,7 +930,7 @@ msgstr ""
msgid "Dark"
msgstr ""
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -979,7 +979,7 @@ msgstr ""
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr ""
@@ -1009,7 +1009,7 @@ msgid "Delete note \"%s\"?"
msgstr ""
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr ""
@@ -1115,7 +1115,7 @@ msgstr ""
"re-synchronized and sent unencrypted to the sync target. Do you wish to "
"continue?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr ""
@@ -1245,7 +1245,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr ""
@@ -1302,7 +1302,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1499,11 +1499,11 @@ msgstr ""
msgid "Errors only"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr ""
@@ -1664,7 +1664,7 @@ msgid "Full changelog"
msgstr ""
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr ""
@@ -1693,7 +1693,7 @@ msgid ""
"current configuration."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr ""
@@ -1710,7 +1710,7 @@ msgstr "Grant authorization"
msgid "Heading"
msgstr ""
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr ""
@@ -1730,8 +1730,8 @@ msgstr ""
msgid "Highlight"
msgstr ""
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1739,11 +1739,11 @@ msgstr ""
msgid "Horizontal Rule"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr ""
@@ -1812,7 +1812,7 @@ msgid ""
"note or notebook. `$c` can be used to refer to the currently selected item."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -1949,8 +1949,8 @@ msgstr ""
msgid "Item \"%s\" could not be downloaded: %s"
msgstr ""
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -1982,13 +1982,13 @@ msgstr ""
msgid "Joplin Cloud password"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr ""
@@ -2076,7 +2076,7 @@ msgstr ""
msgid "Later"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr ""
@@ -2110,7 +2110,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] ""
msgstr[1] ""
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
@@ -2140,7 +2140,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr ""
@@ -2160,11 +2160,11 @@ msgstr ""
msgid "Login with OneDrive"
msgstr ""
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2197,13 +2197,13 @@ msgid "Manual"
msgstr ""
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2352,7 +2352,7 @@ msgid "no"
msgstr ""
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr ""
@@ -2361,7 +2361,7 @@ msgstr ""
msgid "No active notebook."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr ""
@@ -2649,7 +2649,7 @@ msgid "Passwords do not match!"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr ""
@@ -2663,7 +2663,7 @@ msgstr ""
msgid "PDF File"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr ""
@@ -2713,7 +2713,7 @@ msgstr ""
msgid "Please select where the sync status should be exported to"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr ""
@@ -2823,7 +2823,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr ""
@@ -3042,7 +3042,7 @@ msgstr ""
msgid "Save as..."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr ""
@@ -3114,7 +3114,7 @@ msgid "Server is running on port %d"
msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr ""
@@ -3143,7 +3143,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr ""
@@ -3487,18 +3487,18 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr ""
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3587,7 +3587,7 @@ msgid ""
"and encrypt your data as usual."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
@@ -3741,7 +3741,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr ""
@@ -3765,11 +3765,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -3996,7 +3996,7 @@ msgid ""
"content."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr ""
@@ -4051,7 +4051,7 @@ msgstr ""
msgid "Updated: %d."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr ""
@@ -4115,13 +4115,13 @@ msgid ""
"font is used."
msgstr ""
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4133,7 +4133,7 @@ msgstr ""
msgid "View"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr ""
@@ -4221,12 +4221,12 @@ msgid "yes"
msgstr ""
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -236,7 +236,7 @@ msgstr "Aktiva"
msgid "Actual Size"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "Aldoni korpon"
@@ -248,7 +248,7 @@ msgstr "Aldoni aŭ forigi etikedojn:"
msgid "Add recipient:"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "Aldoni titolon"
@@ -256,8 +256,8 @@ msgstr "Aldoni titolon"
msgid "Add to dictionary"
msgstr ""
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -324,15 +324,15 @@ msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Aldoni dosieron"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Aldoni foton"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "Aldoni..."
@@ -444,8 +444,8 @@ msgstr ""
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -502,8 +502,8 @@ msgstr ""
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Ne eblas trovi \"%s\"."
@@ -511,11 +511,11 @@ msgstr "Ne eblas trovi \"%s\"."
msgid "Cannot initialise synchroniser."
msgstr ""
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr ""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr ""
@@ -591,7 +591,7 @@ msgstr "Markobutono"
msgid "Checking... Please wait."
msgstr "Kontrolante... Atendu."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "Elekti opcion"
@@ -738,17 +738,17 @@ msgstr "Aldoni dosieron"
msgid "Content provided by %s"
msgstr "Notaj atributoj"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Konverti al noto"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Konverti al tasko"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Kopii"
@@ -774,7 +774,7 @@ msgid "Copy Link Address"
msgstr ""
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr ""
@@ -887,7 +887,7 @@ msgid "Created: %d."
msgstr "Kreita: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Kreita: %s"
@@ -936,7 +936,7 @@ msgid "Custom TLS certificates"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Eltondi"
@@ -945,7 +945,7 @@ msgstr "Eltondi"
msgid "Dark"
msgstr "Malhela"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -995,7 +995,7 @@ msgstr "Defaŭlto: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Forigi"
@@ -1028,7 +1028,7 @@ msgid "Delete note \"%s\"?"
msgstr "Forigi noton \"%s\"?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Ĉu forigi noton?"
@@ -1137,7 +1137,7 @@ msgid ""
"continue?"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr ""
@@ -1268,7 +1268,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Redakti"
@@ -1326,7 +1326,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1527,11 +1527,11 @@ msgstr ""
msgid "Errors only"
msgstr "Nur eraroj"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr ""
@@ -1696,7 +1696,7 @@ msgid "Full changelog"
msgstr ""
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "Ĝenerala"
@@ -1727,7 +1727,7 @@ msgid ""
"current configuration."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Iri al URL-fonto"
@@ -1744,7 +1744,7 @@ msgstr ""
msgid "Heading"
msgstr ""
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
#, fuzzy
msgid "Help"
msgstr "&Helpo"
@@ -1766,8 +1766,8 @@ msgstr "Pri Joplin"
msgid "Highlight"
msgstr ""
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1775,12 +1775,12 @@ msgstr ""
msgid "Horizontal Rule"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
#, fuzzy
msgid "HTML Directory"
msgstr "Dosierujo"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
#, fuzzy
msgid "HTML File"
msgstr "Dosiero"
@@ -1850,7 +1850,7 @@ msgid ""
"note or notebook. `$c` can be used to refer to the currently selected item."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -1978,8 +1978,8 @@ msgstr "Kursiva"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr ""
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -2012,13 +2012,13 @@ msgstr "Joplin-retejo"
msgid "Joplin Cloud password"
msgstr "Entajpu ĉefan pasvorton:"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr ""
@@ -2109,7 +2109,7 @@ msgstr "Lasta eraro: %s"
msgid "Later"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Aspektigo"
@@ -2144,7 +2144,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] ""
msgstr[1] ""
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
@@ -2171,7 +2171,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Protokolo"
@@ -2191,11 +2191,11 @@ msgstr "Ensaluti per Dropbox"
msgid "Login with OneDrive"
msgstr "Ensaluti per OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2230,13 +2230,13 @@ msgid "Manual"
msgstr ""
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2392,7 +2392,7 @@ msgid "no"
msgstr "n"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Ne"
@@ -2401,7 +2401,7 @@ msgstr "Ne"
msgid "No active notebook."
msgstr "Ne estas aktiva notlibro."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr ""
@@ -2705,7 +2705,7 @@ msgid "Passwords do not match!"
msgstr "Pasvorto ne kongruas!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Alglui"
@@ -2719,7 +2719,7 @@ msgstr ""
msgid "PDF File"
msgstr "PDF-dosiero"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
#, fuzzy
msgid "Permission needed"
msgstr "Permeso por uzi kameraon"
@@ -2771,7 +2771,7 @@ msgstr "Bonvolu elekti noton unue."
msgid "Please select where the sync status should be exported to"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr ""
@@ -2885,7 +2885,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "Nova versio: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "Atributoj"
@@ -3111,7 +3111,7 @@ msgstr "Konservi alarmon"
msgid "Save as..."
msgstr "Konservi kiel..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Konservi la ŝanĝojn"
@@ -3187,7 +3187,7 @@ msgid "Server is running on port %d"
msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
#, fuzzy
msgid "Set alarm"
@@ -3217,7 +3217,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Konigi"
@@ -3573,18 +3573,18 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Etikedoj"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Foti"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3672,7 +3672,7 @@ msgid ""
"and encrypt your data as usual."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
@@ -3819,7 +3819,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr ""
@@ -3841,11 +3841,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Tiu noto estis ŝanĝita:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4081,7 +4081,7 @@ msgid ""
"content."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Nesubtenata bilda tipo: %s"
@@ -4141,7 +4141,7 @@ msgstr "Ĝisdatigita: %s"
msgid "Updated: %d."
msgstr "Ĝisdatigita: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "Ĝisdatigita: %s"
@@ -4206,13 +4206,13 @@ msgid ""
"font is used."
msgstr ""
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4226,7 +4226,7 @@ msgstr "Malvalida respondo: %s"
msgid "View"
msgstr "&Monti"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Vidi en mapo"
@@ -4316,12 +4316,12 @@ msgid "yes"
msgstr "Jes"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Jes"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -252,7 +252,7 @@ msgstr "Activa"
msgid "Actual Size"
msgstr "Tamaño Original"
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "Añadir cuerpo"
@@ -264,7 +264,7 @@ msgstr "Agregar o eliminar etiquetas:"
msgid "Add recipient:"
msgstr "Agregar destinatario:"
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "Añadir título"
@@ -272,8 +272,8 @@ msgstr "Añadir título"
msgid "Add to dictionary"
msgstr "Agregar al diccionario"
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -341,15 +341,15 @@ msgstr "Aritim Oscuro"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Adjuntar archivo"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Adjuntar foto"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "Adjuntar..."
@@ -462,8 +462,8 @@ msgstr "Lista con Viñetas"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -519,8 +519,8 @@ msgstr "No se ha podido copiar la nota a la libreta «%s»"
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "No se puede encontrar «%s»."
@@ -528,12 +528,12 @@ msgstr "No se puede encontrar «%s»."
msgid "Cannot initialise synchroniser."
msgstr "No se puede inicializar el sincronizador."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr ""
"No se puede cargar el módulo «%s» para el formato «%s» y el destino «%s»"
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr ""
"No se puede cargar el módulo «%s» para el formato «%s» y el objetivo «%s»"
@@ -616,7 +616,7 @@ msgstr "Casillas"
msgid "Checking... Please wait."
msgstr "Comprobando... Por favor espere."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "Seleccione una opción"
@@ -761,17 +761,17 @@ msgstr "Conflictos (adjuntos)"
msgid "Content provided by %s"
msgstr "Contenido provisto por %s"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Convertir en nota"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Convertir a tarea"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Copiar"
@@ -796,7 +796,7 @@ msgid "Copy Link Address"
msgstr "Copiar Enlace"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "Copiar el enlace de Markdown"
@@ -921,7 +921,7 @@ msgid "Created: %d."
msgstr "Creado: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Creado: %s"
@@ -970,7 +970,7 @@ msgid "Custom TLS certificates"
msgstr "Certificados TLS personalizados"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Cortar"
@@ -979,7 +979,7 @@ msgstr "Cortar"
msgid "Dark"
msgstr "Oscuro"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -1028,7 +1028,7 @@ msgstr "Por defecto: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Borrar"
@@ -1062,7 +1062,7 @@ msgid "Delete note \"%s\"?"
msgstr "¿Borrar nota «%s»?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "¿Borrar nota?"
@@ -1175,7 +1175,7 @@ msgstr ""
"resincronizados y enviados descifrados al objetivo de sincronización. ¿Desea "
"continuar?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Descartar cambios"
@@ -1312,7 +1312,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Editar"
@@ -1369,7 +1369,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1569,11 +1569,11 @@ msgstr ""
msgid "Errors only"
msgstr "Solo errores"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr "Exportar como Archivo de Ever(como HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr "Exportar como Archivo de Ever(como Markdown)"
@@ -1743,7 +1743,7 @@ msgid "Full changelog"
msgstr "Registro de cambios completo"
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "General"
@@ -1775,7 +1775,7 @@ msgstr ""
"valor de [nombre]. Si no se provee [nombre] ni [valor], se listará la "
"configuración actual."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Ir a URL de origen"
@@ -1792,7 +1792,7 @@ msgstr "Conceder la autorización"
msgid "Heading"
msgstr "Título"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr "Ayuda"
@@ -1812,8 +1812,8 @@ msgstr "Ocultar Joplin"
msgid "Highlight"
msgstr "Resaltado"
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr "Inicio"
@@ -1821,11 +1821,11 @@ msgstr "Inicio"
msgid "Horizontal Rule"
msgstr "Regla Horizontal"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr "Directorio HTML"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr "Archivo HTML"
@@ -1902,7 +1902,7 @@ msgstr ""
"libreta seleccionada. Se puede utilizar `$c` para hacer referencia al "
"elemento seleccionado."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2045,8 +2045,8 @@ msgstr "Cursiva"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "El elemento «%s» no se pudo descargar: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr "Elementos"
@@ -2078,13 +2078,13 @@ msgstr "Email de Joplin Cloud"
msgid "Joplin Cloud password"
msgstr "Contraseña de Joplin Cloud"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "Directorio de Exportación de Joplin"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "Archivo de Exportación de Joplin"
@@ -2180,7 +2180,7 @@ msgstr "Último error: %s"
msgid "Later"
msgstr "Luego"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Diseño"
@@ -2214,7 +2214,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] "¡El enlace ha sido copiado al portapapeles!"
msgstr[1] "¡Los enlaces han sido copiados al portapapeles!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "Enlaces con el protocolo «%s» no están soportados"
@@ -2244,7 +2244,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Registro"
@@ -2264,11 +2264,11 @@ msgstr "Acceder con Dropbox"
msgid "Login with OneDrive"
msgstr "Acceder con OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr "Cerrar sesión"
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2303,13 +2303,13 @@ msgid "Manual"
msgstr "Manual"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr "Markdown + Front Matter"
@@ -2459,7 +2459,7 @@ msgid "no"
msgstr "no"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "No"
@@ -2468,7 +2468,7 @@ msgstr "No"
msgid "No active notebook."
msgstr "No hay libreta activa."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "No hay elementos con el ID %s"
@@ -2765,7 +2765,7 @@ msgid "Passwords do not match!"
msgstr "¡Las contraseñas no coinciden!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Pegar"
@@ -2779,7 +2779,7 @@ msgstr "Ruta:"
msgid "PDF File"
msgstr "Archivo PDF"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr "Se necesita permiso"
@@ -2840,7 +2840,7 @@ msgstr "Primero seleccione la nota o libreta que desea eliminar."
msgid "Please select where the sync status should be exported to"
msgstr "Seleccione a dónde se debería exportar el estado de sincronización"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "Por favor especifique el formato de importación para %s"
@@ -2953,7 +2953,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "Versión del Perfil: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "Propiedades"
@@ -3181,7 +3181,7 @@ msgstr "Establecer alarma"
msgid "Save as..."
msgstr "Guardar como..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Guardar cambios"
@@ -3255,7 +3255,7 @@ msgid "Server is running on port %d"
msgstr "El servidor se está ejecutando en el puerto %d"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Establecer alarma"
@@ -3290,7 +3290,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Compartir"
@@ -3656,18 +3656,18 @@ msgstr "Etiquetado: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Etiquetas"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Tomar una foto"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr "Tareas"
@@ -3779,7 +3779,7 @@ msgstr ""
"recomienda actualizarlas. La clave actualizada todavía será capaz de "
"descifrar y cifrar sus datos como de costumbre."
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
"La aplicación móvil de Joplin no soporta actualmente este tipo de enlace: %s"
@@ -3965,7 +3965,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "Este adjunto todavía no ha sido descargado o descifrado"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr "El adjunto no ha sido descargado o descifrado todavía."
@@ -3992,11 +3992,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Esta nota no tiene informacion de geolocalización."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Esta nota ha sido modificada:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4251,7 +4251,7 @@ msgstr ""
"¿Dejar de compartir esta libreta? Los destinatarios ya no tendrán acceso a "
"su contenido."
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Tipo de imagen no soportado: %s"
@@ -4308,7 +4308,7 @@ msgstr "Actualizado: "
msgid "Updated: %d."
msgstr "Actualizado: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "Actualizado: %s"
@@ -4386,13 +4386,13 @@ msgstr ""
"código). Si no se encuentra, se utiliza una fuente genérica monoespaciada "
"(ancho fijo)."
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr "Usuarios"
@@ -4404,7 +4404,7 @@ msgstr "Válido"
msgid "View"
msgstr "Ver"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Ver en mapa"
@@ -4501,12 +4501,12 @@ msgid "yes"
msgstr "sí"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Sí"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -247,7 +247,7 @@ msgstr "Aktiivne"
msgid "Actual Size"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "Lisa keha"
@@ -259,7 +259,7 @@ msgstr "Siltide lisamine või eemaldamine:"
msgid "Add recipient:"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "Pealkirja lisamine"
@@ -267,8 +267,8 @@ msgstr "Pealkirja lisamine"
msgid "Add to dictionary"
msgstr ""
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -335,15 +335,15 @@ msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Manusta fail"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Manusta foto"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "Lisada..."
@@ -459,8 +459,8 @@ msgstr "Täpp-loend"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -518,8 +518,8 @@ msgstr "Märget \"%s\" märkmikku ei saa kopeerida"
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Ei leia \" %s\"."
@@ -528,12 +528,12 @@ msgstr "Ei leia \" %s\"."
msgid "Cannot initialise synchroniser."
msgstr "Sünkroonijat ei saa lähtestada."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
#, fuzzy
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "\"%s\" moodulit ei saa laadida vormingus \"%s\""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
#, fuzzy
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "\"%s\" moodulit ei saa laadida vormingus \"%s\""
@@ -613,7 +613,7 @@ msgstr "Märkekast"
msgid "Checking... Please wait."
msgstr "Kontroll... Oota."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "Valida suvand"
@@ -768,18 +768,18 @@ msgstr "Manused"
msgid "Content provided by %s"
msgstr "Märkme atribuudid"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Teisenda märkeks"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
#, fuzzy
msgid "Convert to todo"
msgstr "Teisenda Todo"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Kopeeri"
@@ -806,7 +806,7 @@ msgid "Copy Link Address"
msgstr "Kopeeri lingi aadress"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "Kopeeri Markdown link"
@@ -928,7 +928,7 @@ msgid "Created: %d."
msgstr "Loodud: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Loodud: %s"
@@ -979,7 +979,7 @@ msgid "Custom TLS certificates"
msgstr "Kohandatud TLS-i serdid"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Lõika"
@@ -988,7 +988,7 @@ msgstr "Lõika"
msgid "Dark"
msgstr "Tume"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -1038,7 +1038,7 @@ msgstr "Default: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Kustuta"
@@ -1072,7 +1072,7 @@ msgid "Delete note \"%s\"?"
msgstr "Kas kustutada märge \"%s\"?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Kas soovite märkme kustutada?"
@@ -1189,7 +1189,7 @@ msgstr ""
"sünkrooniseeritakse uuesti ja saadetakse krüptimata sünkroonimisobjektile. "
"Kas soovite jätkata?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Hülga muutused"
@@ -1332,7 +1332,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Muuda"
@@ -1390,7 +1390,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1616,12 +1616,12 @@ msgstr ""
msgid "Errors only"
msgstr "Ainult tõrked"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Evernote Export faili (HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
#, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "Evernote Export faili (nagu Markdown)"
@@ -1802,7 +1802,7 @@ msgid "Full changelog"
msgstr ""
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "Üldine"
@@ -1836,7 +1836,7 @@ msgstr ""
"näitab see [name] väärtust. Kui ei ole esitatud [name] ega [value], "
"loetatakse praegune konfiguratsioon."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Mine Allika URL-ile"
@@ -1855,7 +1855,7 @@ msgstr "Autoriseerimis token:"
msgid "Heading"
msgstr "Pealkiri"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr "Abi"
@@ -1876,8 +1876,8 @@ msgstr "Teave kasutaja Joplin kohta"
msgid "Highlight"
msgstr ""
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1886,11 +1886,11 @@ msgstr ""
msgid "Horizontal Rule"
msgstr "Horisontaalne reegel"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr "HTML-kataloog"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr "HTML-fail"
@@ -1966,7 +1966,7 @@ msgstr ""
"kasutades otseteed `$n` või `$b` vastavalt praegu valitud Märkus või "
"märkmiku. `$c` saab kasutada praegu valitud üksusele viitamiseks."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2094,8 +2094,8 @@ msgstr "Kald"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "Üksust %s ei saanud alla laadida: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -2128,14 +2128,14 @@ msgstr "Joplini veebisait"
msgid "Joplin Cloud password"
msgstr "Sisestage põhiparool:"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
#, fuzzy
msgid "Joplin Export Directory"
msgstr "Joplin Export kataloog"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
#, fuzzy
msgid "Joplin Export File"
msgstr "Joplin Export faili"
@@ -2235,7 +2235,7 @@ msgstr "Viimane tõrge: %s"
msgid "Later"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Paigutus"
@@ -2271,7 +2271,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] "Link on kopeeritud lõikelauale!"
msgstr[1] "Lingid on kopeeritud lõikelauale!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "Linke protokolliga \"%s\" ei toetata"
@@ -2303,7 +2303,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Logi"
@@ -2323,11 +2323,11 @@ msgstr "Logi sisse Dropbox"
msgid "Login with OneDrive"
msgstr "Logi sisse OneDrive ' iga"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2365,13 +2365,13 @@ msgid "Manual"
msgstr "Manuaal"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2533,7 +2533,7 @@ msgid "no"
msgstr "n"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Ei"
@@ -2542,7 +2542,7 @@ msgstr "Ei"
msgid "No active notebook."
msgstr "Aktiivset märkmikku pole."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "Üksust ID-ga %s ei ole"
@@ -2856,7 +2856,7 @@ msgid "Passwords do not match!"
msgstr "Paroolid ei kattu!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Kleebi"
@@ -2870,7 +2870,7 @@ msgstr ""
msgid "PDF File"
msgstr "PDF-fail"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
#, fuzzy
msgid "Permission needed"
msgstr "Kaamera kasutamise õigus"
@@ -2926,7 +2926,7 @@ msgstr "Valige esmalt kustutatav märkus või märkmik."
msgid "Please select where the sync status should be exported to"
msgstr "Palun valige, kus sünkroonimise olekut tuleks eksportida"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
#, fuzzy
msgid "Please specify import format for %s"
msgstr "Määrake %s importimise vorming"
@@ -3042,7 +3042,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "Uus versioon: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "Objektid"
@@ -3269,7 +3269,7 @@ msgstr "Häire salvestamine"
msgid "Save as..."
msgstr "Salvesta kui..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Salvesta muudatused"
@@ -3346,7 +3346,7 @@ msgid "Server is running on port %d"
msgstr "Serveris töötab port %d"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Alarmi seadmine"
@@ -3380,7 +3380,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Jaga"
@@ -3757,18 +3757,18 @@ msgstr "Sildistatud: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Sildid"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Pildista"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3863,7 +3863,7 @@ msgid ""
"and encrypt your data as usual."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "Joplin mobiilirakendus ei toeta praegu seda tüüpi linki: %s"
@@ -4026,7 +4026,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "Seda manust ei laadita alla või pole veel dekrüpteeritud"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr "Seda manust ei ole laetud ega dekrüpteeritud veel."
@@ -4051,11 +4051,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Sellel märkil pole geoasukohateavet."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Seda märkust on muudetud:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4304,7 +4304,7 @@ msgid ""
"content."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Toetuseta pilditüüp: %s"
@@ -4364,7 +4364,7 @@ msgstr "Värskendatud: %s"
msgid "Updated: %d."
msgstr "Värskendatud: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "Värskendatud: %s"
@@ -4436,13 +4436,13 @@ msgid ""
"font is used."
msgstr ""
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4456,7 +4456,7 @@ msgstr "Sobimatu vastus: %s"
msgid "View"
msgstr "&Vaade"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Vaata kaardilt"
@@ -4554,12 +4554,12 @@ msgid "yes"
msgstr "Jah"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Jah"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -249,7 +249,7 @@ msgstr "Aktibo"
msgid "Actual Size"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr ""
@@ -261,7 +261,7 @@ msgstr "Gehitu edo ezabatu etiketak:"
msgid "Add recipient:"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
#, fuzzy
msgid "Add title"
msgstr "Titulu gabekoa"
@@ -270,8 +270,8 @@ msgstr "Titulu gabekoa"
msgid "Add to dictionary"
msgstr ""
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -341,15 +341,15 @@ msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Erantsi fitxategia"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Argazkia erantsi"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
#, fuzzy
msgid "Attach..."
msgstr "Bilatu"
@@ -462,8 +462,8 @@ msgstr ""
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -519,8 +519,8 @@ msgstr "Ezin kopia daiteke oharra \"%s\" koadernora"
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Ezin aurkitu \"%s\""
@@ -529,11 +529,11 @@ msgstr "Ezin aurkitu \"%s\""
msgid "Cannot initialise synchroniser."
msgstr "Ezin has daiteke sinkronizazio prozesua."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr ""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr ""
@@ -612,7 +612,7 @@ msgstr ""
msgid "Checking... Please wait."
msgstr "Bertan behera uzten... itxaron, mesedez."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
#, fuzzy
msgid "Choose an option"
msgstr "Erakutsi aukera aurreratuak"
@@ -761,17 +761,17 @@ msgstr "Erantsi fitxategia"
msgid "Content provided by %s"
msgstr "Koadernoaren izenburua: "
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Oharra bihurtu"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Zeregina bihurtu"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Kopiatu"
@@ -796,7 +796,7 @@ msgid "Copy Link Address"
msgstr ""
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr ""
@@ -910,7 +910,7 @@ msgid "Created: %d."
msgstr "Sortuta: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Sortuta: %s"
@@ -961,7 +961,7 @@ msgid "Custom TLS certificates"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Moztu"
@@ -970,7 +970,7 @@ msgstr "Moztu"
msgid "Dark"
msgstr "Iluna"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -1023,7 +1023,7 @@ msgstr "Lehenetsia: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Ezabatu"
@@ -1058,7 +1058,7 @@ msgid "Delete note \"%s\"?"
msgstr "Oharrak ezabatu?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Oharra ezabatu?"
@@ -1170,7 +1170,7 @@ msgstr ""
"deszifratuta sinkronizatuko eta bidaliko direla sinkronizazio helburura. "
"Segitu nahi duzu?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Bertan behera utzi aldaketak"
@@ -1311,7 +1311,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Editatu"
@@ -1372,7 +1372,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1583,12 +1583,12 @@ msgstr ""
msgid "Errors only"
msgstr "Aio! Agur! :_( "
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Evernotetik esportatutako fitxategiak"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
#, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "Evernotetik esportatutako fitxategiak"
@@ -1759,7 +1759,7 @@ msgid "Full changelog"
msgstr ""
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
#, fuzzy
msgid "General"
msgstr "Ezarpenak"
@@ -1794,7 +1794,7 @@ msgstr ""
"ematen, [izena]ren balioa erakutsiko du. Ez bada ematen [izena] ez [balioa], "
"oraingo konfigurazioaren zerrenda erakutsiko da."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr ""
@@ -1811,7 +1811,7 @@ msgstr ""
msgid "Heading"
msgstr ""
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
#, fuzzy
msgid "Help"
msgstr "Laguntza"
@@ -1833,8 +1833,8 @@ msgstr "Joplin-i buruz"
msgid "Highlight"
msgstr ""
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1842,11 +1842,11 @@ msgstr ""
msgid "Horizontal Rule"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
#, fuzzy
msgid "HTML File"
msgstr "Fitxategia"
@@ -1920,7 +1920,7 @@ msgstr ""
"aukeratuta dagoen oharra edo koadernoa erabiltzeko. `$c` ere erabil daiteke "
"aukeratutako elementua erabiltzeko."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2049,8 +2049,8 @@ msgstr ""
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "Koadernoa ezin gorde daiteke: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -2084,13 +2084,13 @@ msgstr "Evernotetik esportatutako fitxategiak"
msgid "Joplin Cloud password"
msgstr "Sartu pasahitz nagusia:"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
#, fuzzy
msgid "Joplin Export File"
msgstr "Evernotetik esportatutako fitxategiak"
@@ -2184,7 +2184,7 @@ msgstr "Aio! Agur! :_( "
msgid "Later"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Diseinua"
@@ -2219,7 +2219,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] ""
msgstr[1] ""
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
@@ -2249,7 +2249,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Egunkaria"
@@ -2270,11 +2270,11 @@ msgstr "Login with OneDrive"
msgid "Login with OneDrive"
msgstr "Login with OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2313,13 +2313,13 @@ msgid "Manual"
msgstr ""
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2485,7 +2485,7 @@ msgid "no"
msgstr "e"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
#, fuzzy
msgid "No"
@@ -2495,7 +2495,7 @@ msgstr "E"
msgid "No active notebook."
msgstr "Ez dago koadernorik aukeratuta."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr ""
@@ -2814,7 +2814,7 @@ msgid "Passwords do not match!"
msgstr "Pasahitza ezin utz daiteke hutsik"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Itsatsi"
@@ -2829,7 +2829,7 @@ msgstr ""
msgid "PDF File"
msgstr "Fitxategia"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr ""
@@ -2886,7 +2886,7 @@ msgstr "Aurretik aukeratu ezabatzeko oharra edo koadernoa, mesedez."
msgid "Please select where the sync status should be exported to"
msgstr "Aukeratu nora esportatu sinkronizazioaren egoera, mesedez"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr ""
@@ -2999,7 +2999,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "Litezkeen balioak: %s."
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr ""
@@ -3230,7 +3230,7 @@ msgstr "Ezarri alarma"
msgid "Save as..."
msgstr "Gorde aldaketak"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Gorde aldaketak"
@@ -3309,7 +3309,7 @@ msgid "Server is running on port %d"
msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Ezarri alarma"
@@ -3342,7 +3342,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr ""
@@ -3715,19 +3715,19 @@ msgstr "Etiketatuta: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Etiketak"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
#, fuzzy
msgid "Take photo"
msgstr "Argazkia erantsi"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3820,7 +3820,7 @@ msgid ""
"and encrypt your data as usual."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
@@ -3971,7 +3971,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr ""
@@ -3993,11 +3993,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Ohar honek ez du geokokapen informaziorik."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Ohar hau mugitua izan da:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4241,7 +4241,7 @@ msgid ""
"content."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Irudi formatua ez onartua: %s"
@@ -4301,7 +4301,7 @@ msgstr "Eguneratuta: %d."
msgid "Updated: %d."
msgstr "Eguneratuta: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
#, fuzzy
msgid "Updated: %s"
msgstr "Eguneratuta: %d."
@@ -4371,13 +4371,13 @@ msgid ""
"font is used."
msgstr ""
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4390,7 +4390,7 @@ msgstr "Erantzun baliogabea: %s"
msgid "View"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Ikusi mapan"
@@ -4490,12 +4490,12 @@ msgid "yes"
msgstr ""
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -232,7 +232,7 @@ msgstr "فعال"
msgid "Actual Size"
msgstr "اندازه واقعی"
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "افزودن بدنه"
@@ -244,7 +244,7 @@ msgstr "اضافه یا حذف کردن برچسب‌ها:"
msgid "Add recipient:"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "افزودن عنوان"
@@ -252,8 +252,8 @@ msgstr "افزودن عنوان"
msgid "Add to dictionary"
msgstr ""
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -320,15 +320,15 @@ msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "پیوست فایل"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "ضمیمه‌ی تصویر"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "پیوست..."
@@ -438,8 +438,8 @@ msgstr "لیست گلوله ای بدون ترتیب"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -495,8 +495,8 @@ msgstr "نمیتوان یادداشت را به دفترچه ی «%s» کپی ک
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "«%s» یافت نشد."
@@ -504,11 +504,11 @@ msgstr "«%s» یافت نشد."
msgid "Cannot initialise synchroniser."
msgstr "نمی‌توان همگام‌ساز را شروع کرد."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "ماژول «%s» برای فرمت «%s» و خروجی «%s» بارگزاری نشد."
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
#, fuzzy
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "ماژول «%s» برای فرمت «%s» و خروجی «%s» بارگزاری نشد."
@@ -585,7 +585,7 @@ msgstr "لیست چک‌باکس"
msgid "Checking... Please wait."
msgstr "در حال بررسی... لطفا صبر کنید."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "یک گزینه را انتخاب کنید"
@@ -734,17 +734,17 @@ msgstr "پیوست‌های یادداشت"
msgid "Content provided by %s"
msgstr "جزییات یادداشت"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "تبدیل به یادداشت"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "تبدیل به فهرست کارها"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "کپی"
@@ -771,7 +771,7 @@ msgid "Copy Link Address"
msgstr "کپی کردن آدرس پیوند"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "کپی کردن پیوند Markdown"
@@ -890,7 +890,7 @@ msgid "Created: %d."
msgstr "ایجاد شده: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "ایجاد شده: %s"
@@ -939,7 +939,7 @@ msgid "Custom TLS certificates"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "بریدن"
@@ -948,7 +948,7 @@ msgstr "بریدن"
msgid "Dark"
msgstr "تیره"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -997,7 +997,7 @@ msgstr "پیشفرض: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "حذف"
@@ -1030,7 +1030,7 @@ msgid "Delete note \"%s\"?"
msgstr "یادداشت «%s» حذف شود؟"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "یادداشت حذف شود؟"
@@ -1140,7 +1140,7 @@ msgid ""
"continue?"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "لغو تغییرات"
@@ -1277,7 +1277,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "ویرایش"
@@ -1335,7 +1335,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1538,11 +1538,11 @@ msgstr ""
msgid "Errors only"
msgstr "فقط خطا ها"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr "فایل استخراجی Evernote (به صورت HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr "فایل استخراجی Evernote (به صورت Markdown)"
@@ -1709,7 +1709,7 @@ msgid "Full changelog"
msgstr ""
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "کلی"
@@ -1742,7 +1742,7 @@ msgstr ""
"مقدار [name] (اسم) نمایش داده خواهد شد. اگر نه [name] (اسم) و نه [value] "
"(مقدار) داده نشده باشند، تنظیمات فعلی لیست می‌شود."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "رفتن به آدرس منبع"
@@ -1760,7 +1760,7 @@ msgstr "توکن مجوز:"
msgid "Heading"
msgstr "عنوان"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr "کمک"
@@ -1780,8 +1780,8 @@ msgstr "Joplin را مخفی کنید"
msgid "Highlight"
msgstr ""
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1789,11 +1789,11 @@ msgstr ""
msgid "Horizontal Rule"
msgstr "خط افقی"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr "پوشه HTML"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr "فایل HTML"
@@ -1862,7 +1862,7 @@ msgid ""
"note or notebook. `$c` can be used to refer to the currently selected item."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -1989,8 +1989,8 @@ msgstr "مورب"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "مورد «%s» بارگیری نشد: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -2023,13 +2023,13 @@ msgstr "سایت Joplin"
msgid "Joplin Cloud password"
msgstr "گذرواژه اصلی را وارد کنید:"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "پوشه استخراجی Joplin"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "فایل استخراجی Joplin"
@@ -2124,7 +2124,7 @@ msgstr "آخرین خطا: %s"
msgid "Later"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "قالب"
@@ -2159,7 +2159,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] "پیوند‌ها در کلیپ بورد کپی شدند!"
msgstr[1] "پیوند در کلیپ بورد کپی شد!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "پیوند‌های دارای پروتکل «%s» پشتیبانی نمی‌شوند"
@@ -2187,7 +2187,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "لاگ"
@@ -2207,11 +2207,11 @@ msgstr "ورود با Dropbox"
msgid "Login with OneDrive"
msgstr "ورود با OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2249,13 +2249,13 @@ msgid "Manual"
msgstr "دستی"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2407,7 +2407,7 @@ msgid "no"
msgstr "خیر"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "خیر"
@@ -2416,7 +2416,7 @@ msgstr "خیر"
msgid "No active notebook."
msgstr "دفترچه‌ی فعالی وجود ندارد."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "هیچ موردی با شناسه %s وجود ندارد"
@@ -2718,7 +2718,7 @@ msgid "Passwords do not match!"
msgstr "گذرواژه‌ها با یکدیگر مطابق نیستند!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "چسباندن"
@@ -2732,7 +2732,7 @@ msgstr ""
msgid "PDF File"
msgstr "فایل PDF"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
#, fuzzy
msgid "Permission needed"
msgstr "اجازه برای استفاده از دوربین"
@@ -2786,7 +2786,7 @@ msgstr "لطفا ابتدا یادداشت یا دفترچه‌ای که قرا
msgid "Please select where the sync status should be exported to"
msgstr "لطفا محلی که وضعیت همگام‌سازی باید استخراج شود را مشخص کنید"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "لطفا فرمت وارد کردن را برای «%s» مشخص کنید"
@@ -2902,7 +2902,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "نسخه نمایه: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "جزییات"
@@ -3129,7 +3129,7 @@ msgstr "ذخیره هشدار"
msgid "Save as..."
msgstr "ذخیره به عنوان..."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "ذخیره ی تغییرات"
@@ -3205,7 +3205,7 @@ msgid "Server is running on port %d"
msgstr "سرور بر روی پورت %d در حال اجراست"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "تنظیم هشدار"
@@ -3238,7 +3238,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "اشتراک گذاری"
@@ -3599,18 +3599,18 @@ msgstr "برچسب گذاری شده: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "برچسب‌ها"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "گرفتن عکس"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3710,7 +3710,7 @@ msgstr ""
"پیشنهاد می‌شود که آن‌ها رو ارتقا دهید. کلید اصلی ارتقا یافته همچنان طبق معمول "
"قادر به رمزگشایی و رمزنگاری داده شما خواهد بود."
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr "برنامه موبایل Joplin در حال حاضر از این پیوند پشتیبانی نمی‌کند: %s"
@@ -3875,7 +3875,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "این پیوست هنوز بارگیری یا رمزگشایی نشده"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr "این پیوست هنوز بارگیری یا رمزگشایی نشده."
@@ -3899,11 +3899,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "این یادداشت اطلاعات ژئولوکیشن ندارد."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "این یادداشت تغییر یافته است:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4149,7 +4149,7 @@ msgid ""
"content."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "نوع تصویر پشتیبانی نشده: %s"
@@ -4208,7 +4208,7 @@ msgstr "به‌روز شده: %s"
msgid "Updated: %d."
msgstr "به‌روز شده: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "به‌روز شده: %s"
@@ -4280,13 +4280,13 @@ msgid ""
"font is used."
msgstr ""
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4299,7 +4299,7 @@ msgstr "پاسخ نامعتبر: %s"
msgid "View"
msgstr "نما"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "نمایش بر روی نقشه"
@@ -4395,12 +4395,12 @@ msgid "yes"
msgstr "بله"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "بله"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

File diff suppressed because it is too large Load Diff

View File

@@ -243,7 +243,7 @@ msgstr "Actif"
msgid "Actual Size"
msgstr "Taille actuelle"
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "Ajoutez le contenu"
@@ -255,7 +255,7 @@ msgstr "Modifier les étiquettes :"
msgid "Add recipient:"
msgstr "Ajouter destinataire :"
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "Ajoutez le titre"
@@ -263,8 +263,8 @@ msgstr "Ajoutez le titre"
msgid "Add to dictionary"
msgstr "Ajouter au dictionnaire"
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr "Admin"
@@ -333,15 +333,15 @@ msgstr "Aritim Sombre"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Attacher un fichier"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Attacher une photo"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "Joindre…"
@@ -406,7 +406,7 @@ msgstr "Auto‑compléter les paires de parenthèses, guillemets, etc."
#: packages/lib/models/Setting.ts:1195
msgid "Automatically check for updates"
msgstr "Vérifier automatiquement les mises à jour"
msgstr "Vérifier automatiquement les mises à jour"
#: packages/lib/models/Setting.ts:772
msgid "Automatically switch theme to match system theme"
@@ -452,8 +452,8 @@ msgstr "Liste à puces"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -509,8 +509,8 @@ msgstr "Impossible de copier la note vers le carnet \"%s\""
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Impossible de trouver \"%s\"."
@@ -518,13 +518,13 @@ msgstr "Impossible de trouver \"%s\"."
msgid "Cannot initialise synchroniser."
msgstr "Impossible d'initialiser la synchronisation."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr ""
"Impossible de charger module \"%s\" pour le format d'entrée \"%s\" et de "
"sortie \"%s\""
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr ""
"Impossible de charger module \"%s\" pour le format d'entrée \"%s\" et de "
@@ -608,7 +608,7 @@ msgstr "Liste de cases à cocher"
msgid "Checking... Please wait."
msgstr "Vérification… Veuillez patienter."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "Choisissez une option"
@@ -754,17 +754,17 @@ msgstr "Conflits (fichiers joints)"
msgid "Content provided by %s"
msgstr "Contenu fourni par %s"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Convertir en note"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Convertir en tâche"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Copier"
@@ -788,7 +788,7 @@ msgid "Copy Link Address"
msgstr "Copier l'adresse du lien"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "Copier lien Markdown"
@@ -911,7 +911,7 @@ msgid "Created: %d."
msgstr "Créés : %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Créé : %s"
@@ -960,7 +960,7 @@ msgid "Custom TLS certificates"
msgstr "Certificats TLS personnalisés"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Couper"
@@ -969,7 +969,7 @@ msgstr "Couper"
msgid "Dark"
msgstr "Sombre"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr "Tableau de bord"
@@ -1018,7 +1018,7 @@ msgstr "Défaut : %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Supprimer"
@@ -1050,7 +1050,7 @@ msgid "Delete note \"%s\"?"
msgstr "Supprimer note \"%s\" ?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Supprimer la note ?"
@@ -1163,7 +1163,7 @@ msgstr ""
"être re‑synchronisés et envoyés déchiffrés sur la cible de la "
"synchronisation. Souhaitez vous continuer ?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Ignorer les changements"
@@ -1302,7 +1302,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Édition"
@@ -1359,7 +1359,7 @@ msgid "Email"
msgstr "Email"
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr "Emails"
@@ -1558,11 +1558,11 @@ msgstr ""
msgid "Errors only"
msgstr "Erreurs seulement"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr "Fichiers d'export Evernote (vers HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr "Fichiers d'export Evernote (vers Markdown)"
@@ -1733,7 +1733,7 @@ msgid "Full changelog"
msgstr "Changements complets"
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "Général"
@@ -1765,7 +1765,7 @@ msgstr ""
"fournie, la valeur de [nom] sera affichée. Si ni le [nom] ni la [valeur] ne "
"sont fournis, la configuration complète sera affichée."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Aller à l'URL source"
@@ -1782,7 +1782,7 @@ msgstr "Autoriser"
msgid "Heading"
msgstr "Titre"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
msgid "Help"
msgstr "Aide"
@@ -1802,8 +1802,8 @@ msgstr "Cacher Joplin"
msgid "Highlight"
msgstr "Surligner"
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr "Accueil"
@@ -1811,11 +1811,11 @@ msgstr "Accueil"
msgid "Horizontal Rule"
msgstr "Règle horizontale"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr "Dossier de fichiers HTML"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr "Fichier HTML"
@@ -1892,7 +1892,7 @@ msgstr ""
"respectivement, la note sélectionnée et le carnet sélectionné. `$c` peut "
"être utilisé pour faire référence à l'objet sélectionné en cours."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2035,8 +2035,8 @@ msgstr "Italique"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "L'objet \"%s\" n'a pas pu être téléchargé : %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr "Objets"
@@ -2068,13 +2068,13 @@ msgstr "Joplin Cloud : Email"
msgid "Joplin Cloud password"
msgstr "Joplin Cloud : Mot de passe"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "Dossier d'export Joplin"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "Fichier d'export Joplin"
@@ -2170,7 +2170,7 @@ msgstr "Dernière erreur : %s"
msgid "Later"
msgstr "Plus tard"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Disposition"
@@ -2204,7 +2204,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] "Le lien a été copié dans le presse‑papiers !"
msgstr[1] "Le code d'authentification a été copié dans le presse‑papiers !"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "Le schéma d'URI \"%s\" n'est pas supporté"
@@ -2234,7 +2234,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Journal"
@@ -2254,11 +2254,11 @@ msgstr "Se connecter à Dropbox"
msgid "Login with OneDrive"
msgstr "Se connecter à OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr "Se déconnecter"
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr "Journal"
@@ -2294,13 +2294,13 @@ msgid "Manual"
msgstr "Manuel"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr "Markdown + Front Matter"
@@ -2451,7 +2451,7 @@ msgid "no"
msgstr "non"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Non"
@@ -2460,7 +2460,7 @@ msgstr "Non"
msgid "No active notebook."
msgstr "Aucun carnet actif."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "Aucun objet avec identifiant %s"
@@ -2759,7 +2759,7 @@ msgid "Passwords do not match!"
msgstr "Les mots de passe ne correspondent pas !"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Coller"
@@ -2773,7 +2773,7 @@ msgstr "Chemin :"
msgid "PDF File"
msgstr "Fichier PDF"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr "Permission requise"
@@ -2836,7 +2836,7 @@ msgid "Please select where the sync status should be exported to"
msgstr ""
"Veuillez sélectionner un répertoire ou exporter l'état de la synchronisation"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "Veuillez spécifier le format d'import pour %s"
@@ -2951,7 +2951,7 @@ msgstr "Profil"
msgid "Profile Version: %s"
msgstr "Version du profil : %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "Propriétés"
@@ -3174,7 +3174,7 @@ msgstr "Enregistrer alarme"
msgid "Save as..."
msgstr "Enregistrer sous…"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Enregistrer les changements"
@@ -3230,7 +3230,7 @@ msgstr "Sélectionner émoji..."
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:144
msgid "Select file..."
msgstr "Sélectionner fichier..."
msgstr "Sélectionner fichier"
#: packages/app-cli/app/command-server.js:38
msgid "Server is already running on port %d"
@@ -3246,7 +3246,7 @@ msgid "Server is running on port %d"
msgstr "Le serveur tourne sur le port %d"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Régler alarme"
@@ -3281,7 +3281,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Partager"
@@ -3644,18 +3644,18 @@ msgstr "Étiquettes : %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Étiquettes"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Prendre une photo"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr "Tâches"
@@ -3766,7 +3766,7 @@ msgstr ""
"est recommandé de les mettre à niveau. Les clefs mise à niveau pourront "
"continuer à chiffrer et à déchiffrer vos données comme d'habitude."
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
"L'application mobile Joplin ne gère pas pour l'instant ce type de lien : %s"
@@ -3954,7 +3954,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "Cet fichier n'est pas téléchargé ou pas encore déchiffré"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr "Cette pièce jointe n'est pas téléchargée ou pas encore déchiffrée."
@@ -3981,11 +3981,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Cette note n'a pas d'information de géolocalisation."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Cette note a été modifiée :"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4233,7 +4233,7 @@ msgid ""
"content."
msgstr "Annuler le partage ? Les destinataires n'auront plus accès au carnet."
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Type d'image non géré : %s"
@@ -4288,7 +4288,7 @@ msgstr "Mis à jour : "
msgid "Updated: %d."
msgstr "Mis à jour : %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "Mis à jour : %s"
@@ -4364,13 +4364,13 @@ msgstr ""
"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.)."
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr "Suppressions d'utilisateurs"
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr "Utilisateurs"
@@ -4382,7 +4382,7 @@ msgstr "Valide"
msgid "View"
msgstr "Affichage"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Voir sur carte"
@@ -4479,12 +4479,12 @@ msgid "yes"
msgstr "oui"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Oui"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -248,7 +248,7 @@ msgstr "Activa"
msgid "Actual Size"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr ""
@@ -260,7 +260,7 @@ msgstr "Engadir ou eliminar etiquetas:"
msgid "Add recipient:"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
#, fuzzy
msgid "Add title"
msgstr "Sen título"
@@ -269,8 +269,8 @@ msgstr "Sen título"
msgid "Add to dictionary"
msgstr ""
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr ""
@@ -340,15 +340,15 @@ msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Anexar un ficheiro"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Anexar foto"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
#, fuzzy
msgid "Attach..."
msgstr "Buscar…"
@@ -463,8 +463,8 @@ msgstr ""
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -520,8 +520,8 @@ msgstr "Non é posíbel copiar a nota ao caderno «%s»"
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Non é posíbel atopar «%s»."
@@ -530,12 +530,12 @@ msgstr "Non é posíbel atopar «%s»."
msgid "Cannot initialise synchroniser."
msgstr "Non é posíbel iniciar o sincronizador."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
#, fuzzy
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "Non foi posíbel cargar o módulo «%s» para o formato «%s»"
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
#, fuzzy
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "Non foi posíbel cargar o módulo «%s» para o formato «%s»"
@@ -614,7 +614,7 @@ msgstr ""
msgid "Checking... Please wait."
msgstr "Cancelando... Agarde."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
#, fuzzy
msgid "Choose an option"
msgstr "Mostrar opcións avanzadas"
@@ -765,17 +765,17 @@ msgstr "Anexar un ficheiro"
msgid "Content provided by %s"
msgstr "Título do caderno:"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Converter para nota"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Converter para tarefa"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Copiar"
@@ -800,7 +800,7 @@ msgid "Copy Link Address"
msgstr ""
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
#, fuzzy
msgid "Copy Markdown link"
msgstr "Markdown"
@@ -915,7 +915,7 @@ msgid "Created: %d."
msgstr "Creado: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Creado: %s"
@@ -965,7 +965,7 @@ msgid "Custom TLS certificates"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Cortar"
@@ -974,7 +974,7 @@ msgstr "Cortar"
msgid "Dark"
msgstr "Escuro"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr ""
@@ -1027,7 +1027,7 @@ msgstr "Predeterminado: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Eliminar"
@@ -1062,7 +1062,7 @@ msgid "Delete note \"%s\"?"
msgstr "Desexa eliminar as notas?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Eliminar nota?"
@@ -1174,7 +1174,7 @@ msgstr ""
"Desactivar o cifrado significa que *todas* as súas notas e anexos serán "
"sincronizados de novo e enviados sen cifrar ao destino. Desexa continuar?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Desbotar os cambios"
@@ -1315,7 +1315,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Edtar"
@@ -1376,7 +1376,7 @@ msgid "Email"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr ""
@@ -1585,12 +1585,12 @@ msgstr ""
msgid "Errors only"
msgstr "Somente erros"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
#, fuzzy
msgid "Evernote Export File (as HTML)"
msgstr "Ficheiro de exportación de Evernote"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
#, fuzzy
msgid "Evernote Export File (as Markdown)"
msgstr "Ficheiro de exportación de Evernote"
@@ -1764,7 +1764,7 @@ msgid "Full changelog"
msgstr ""
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
#, fuzzy
msgid "General"
msgstr "Opcións xerais"
@@ -1799,7 +1799,7 @@ msgstr ""
"mostrará o valor de [name]. Se non se indica [name] nin [value] listará a "
"configuración actual."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr ""
@@ -1816,7 +1816,7 @@ msgstr ""
msgid "Heading"
msgstr ""
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
#, fuzzy
msgid "Help"
msgstr "Axuda"
@@ -1838,8 +1838,8 @@ msgstr "Sobre o Joplin"
msgid "Highlight"
msgstr ""
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr ""
@@ -1847,12 +1847,12 @@ msgstr ""
msgid "Horizontal Rule"
msgstr ""
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
#, fuzzy
msgid "HTML Directory"
msgstr "Cartafol"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
#, fuzzy
msgid "HTML File"
msgstr "Ficheiro"
@@ -1926,7 +1926,7 @@ msgstr ""
"cadernos seleccionados actualmente. «$c» pode usarse para referirse ao "
"elemento seleccionado actualmente."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2055,8 +2055,8 @@ msgstr ""
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "Non foi posíbel gardar o caderno: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr ""
@@ -2090,13 +2090,13 @@ msgstr "Sitio web de Joplin"
msgid "Joplin Cloud password"
msgstr "Introducir contrasinal mestre:"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "Cartafol de exportación do Joplin"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "Ficheiro de exportación do Joplin"
@@ -2188,7 +2188,7 @@ msgstr "Último erro: %s"
msgid "Later"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Disposición"
@@ -2223,7 +2223,7 @@ msgid_plural "Links have been copied to clipboard!"
msgstr[0] ""
msgstr[1] ""
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr ""
@@ -2253,7 +2253,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Rexistro"
@@ -2274,11 +2274,11 @@ msgstr "Acceder con OneDrive"
msgid "Login with OneDrive"
msgstr "Acceder con OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr ""
@@ -2316,13 +2316,13 @@ msgid "Manual"
msgstr ""
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr ""
@@ -2482,7 +2482,7 @@ msgid "no"
msgstr "n"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Non"
@@ -2491,7 +2491,7 @@ msgstr "Non"
msgid "No active notebook."
msgstr "Ningún caderno activo."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr ""
@@ -2806,7 +2806,7 @@ msgid "Passwords do not match!"
msgstr "O contrasinal non pode estar baleiro"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Pegar"
@@ -2820,7 +2820,7 @@ msgstr ""
msgid "PDF File"
msgstr "Ficheiro PDF"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr ""
@@ -2874,7 +2874,7 @@ msgstr "Selecciona a nota ou caderno para eliminar primeiro."
msgid "Please select where the sync status should be exported to"
msgstr "Seleccione onde exportar o estado da sincronización"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "Indique o formato de importación de %s"
@@ -2986,7 +2986,7 @@ msgstr ""
msgid "Profile Version: %s"
msgstr "Valores posíbeis: %s."
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr ""
@@ -3212,7 +3212,7 @@ msgstr "Estabelecer alarma"
msgid "Save as..."
msgstr "Gardar como…"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Gardar cambios"
@@ -3290,7 +3290,7 @@ msgid "Server is running on port %d"
msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Estabelecer alarma"
@@ -3323,7 +3323,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr ""
@@ -3695,19 +3695,19 @@ msgstr "Etiquetado: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Etiquetas"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
#, fuzzy
msgid "Take photo"
msgstr "Anexar foto"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr ""
@@ -3800,7 +3800,7 @@ msgid ""
"and encrypt your data as usual."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
@@ -3958,7 +3958,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr ""
@@ -3980,11 +3980,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Esta nota non ten información de xeolocalización."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Esta nota foi modificada:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4226,7 +4226,7 @@ msgid ""
"content."
msgstr ""
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Tipo de imaxe incompatíbel: %s"
@@ -4286,7 +4286,7 @@ msgstr "Actualizado: %d."
msgid "Updated: %d."
msgstr "Actualizado: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
#, fuzzy
msgid "Updated: %s"
msgstr "Actualizado: %d."
@@ -4356,13 +4356,13 @@ msgid ""
"font is used."
msgstr ""
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr ""
@@ -4376,7 +4376,7 @@ msgstr "Resposta non válida: %s"
msgid "View"
msgstr "Vista"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Ver no mapa"
@@ -4473,12 +4473,12 @@ msgid "yes"
msgstr "Si"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Si"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "

View File

@@ -2,14 +2,12 @@
# Copyright (C) 2001 Laurent Cozic
# This file is distributed under the same license as the Joplin-CLI package.
# Hrvoje Mandić <trbuhom@net.hr>
# Milo Ivir <mail@milotype.de>, 2021., 2022.
# Milo Ivir <mail@milotype.de>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: Joplin\n"
"Project-Id-Version: Joplin 1.7.11\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Milo Ivir <mail@milotype.de>\n"
"Language-Team: \n"
"Language: hr\n"
@@ -246,7 +244,7 @@ msgstr "Aktivno"
msgid "Actual Size"
msgstr "Stvarna veličina"
#: packages/app-mobile/components/screens/Note.tsx:1116
#: packages/app-mobile/components/screens/Note.tsx:1128
msgid "Add body"
msgstr "Dodaj sadržaj"
@@ -258,7 +256,7 @@ msgstr "Dodaj ili ukloni oznake:"
msgid "Add recipient:"
msgstr "Dodaj primaoca:"
#: packages/app-mobile/components/screens/Note.tsx:1177
#: packages/app-mobile/components/screens/Note.tsx:1191
msgid "Add title"
msgstr "Dodaj naslov"
@@ -266,14 +264,14 @@ msgstr "Dodaj naslov"
msgid "Add to dictionary"
msgstr "Dodaj u rječnik"
#: packages/server/src/services/MustacheService.ts:183
#: packages/server/src/services/MustacheService.ts:307
#: packages/server/src/services/MustacheService.ts:186
#: packages/server/src/services/MustacheService.ts:310
msgid "Admin"
msgstr "Administrator"
msgstr ""
#: packages/server/src/routes/admin/dashboard.ts:10
msgid "Admin dashboard"
msgstr "Pregledna ploča administratora"
msgstr ""
#: packages/app-desktop/gui/ClipperConfigScreen.min.js:189
#: packages/app-desktop/gui/ClipperConfigScreen.tsx:147
@@ -333,15 +331,15 @@ msgstr "Aritim tamna"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:53
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:589
#: packages/app-mobile/components/screens/Note.tsx:893
#: packages/app-mobile/components/screens/Note.tsx:898
msgid "Attach file"
msgstr "Priloži datoteku"
#: packages/app-mobile/components/screens/Note.tsx:897
#: packages/app-mobile/components/screens/Note.tsx:902
msgid "Attach photo"
msgstr "Priloži sliku"
#: packages/app-mobile/components/screens/Note.tsx:880
#: packages/app-mobile/components/screens/Note.tsx:885
msgid "Attach..."
msgstr "Priloži …"
@@ -398,15 +396,16 @@ msgstr "Automatski"
#: packages/server/src/services/TaskService.ts:39
msgid "Auto-add disabled accounts for deletion"
msgstr "Automatski dodaj deaktivirane račune za brisanje"
msgstr ""
#: packages/lib/models/Setting.ts:855
msgid "Auto-pair braces, parenthesis, quotations, etc."
msgstr "Automatski uskladi zagrade, navodnike itd."
#: packages/lib/models/Setting.ts:1195
#, fuzzy
msgid "Automatically check for updates"
msgstr "Automatski traži nove verzije"
msgstr "Traži nove verzije"
#: packages/lib/models/Setting.ts:772
msgid "Automatically switch theme to match system theme"
@@ -452,8 +451,8 @@ msgstr "Popis s predznakom"
#: packages/app-mobile/components/CameraView.tsx:191
#: packages/app-mobile/components/ModalDialog.js:70
#: packages/app-mobile/components/screens/encryption-config.tsx:190
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:588
#: packages/app-mobile/components/screens/Note.tsx:107
#: packages/app-mobile/components/screens/Note.tsx:593
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:152
#: packages/app-mobile/components/side-menu-content.js:156
#: packages/app-mobile/components/side-menu-content.js:165
@@ -509,8 +508,8 @@ msgstr "Nije moguće kopirati bilješku u bilježnicu „%s”"
#: packages/app-cli/app/command-tag.js:87
#: packages/app-cli/app/command-todo.js:21
#: packages/app-cli/app/command-use.js:21
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
#: packages/lib/services/interop/InteropService.ts:290
#: packages/lib/services/interop/InteropService.ts:308
msgid "Cannot find \"%s\"."
msgstr "Nije moguće pronaći „%s”."
@@ -518,11 +517,11 @@ msgstr "Nije moguće pronaći „%s”."
msgid "Cannot initialise synchroniser."
msgstr "Nije moguće pokrenuti sinkronizaciju."
#: packages/lib/services/interop/InteropService.ts:208
#: packages/lib/services/interop/InteropService.ts:209
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "Nije moguće učitati modul „%s” za format „%s” i rezultat „%s”"
#: packages/lib/services/interop/InteropService.ts:234
#: packages/lib/services/interop/InteropService.ts:235
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "Nije moguće učitati modul „%s” za format „%s” i cilj „%s”"
@@ -602,7 +601,7 @@ msgstr "Označiv popis"
msgid "Checking... Please wait."
msgstr "Provjeravanje … Pričekaj."
#: packages/app-mobile/components/screens/Note.tsx:900
#: packages/app-mobile/components/screens/Note.tsx:905
msgid "Choose an option"
msgstr "Odaberi jednu opciju"
@@ -710,7 +709,7 @@ msgstr "Završeno: %s (%s)"
#: packages/server/src/services/TaskService.ts:37
msgid "Compress old changes"
msgstr "Komprimiraj stare promjene"
msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:637
#: packages/app-mobile/components/side-menu-content.js:332
@@ -746,17 +745,17 @@ msgstr "Konflikti (privici)"
msgid "Content provided by %s"
msgstr "Sadržaj pruža %s"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to note"
msgstr "Pretvori u bilješku"
#: packages/app-mobile/components/screens/Note.tsx:933
#: packages/app-mobile/components/screens/Note.tsx:938
msgid "Convert to todo"
msgstr "Pretvori u zadatak"
#: packages/app-desktop/gui/MenuBar.tsx:433
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:13
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:761
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:760
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:151
msgid "Copy"
msgstr "Kopiraj"
@@ -772,15 +771,16 @@ msgid "Copy external link"
msgstr "Kopiraj vanjsku poveznicu"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:134
#, fuzzy
msgid "Copy image"
msgstr "Kopiraj sliku"
msgstr "Kopiraj ključ"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:172
msgid "Copy Link Address"
msgstr "Kopiraj adresu poveznice"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:124
#: packages/app-mobile/components/screens/Note.tsx:940
#: packages/app-mobile/components/screens/Note.tsx:945
msgid "Copy Markdown link"
msgstr "Kopiraj Markdown poveznicu"
@@ -860,20 +860,20 @@ msgid ""
"Could not verify the share status of this notebook - aborting. Please try "
"again when you are connected to the internet."
msgstr ""
"Nije moguće provjeriti stanje dijeljenja ove bilježnice – prekid. Pokušaj "
"ponovo kad si povezan/a s internetom."
#: packages/app-mobile/components/note-list.js:101
msgid "Create a notebook"
msgstr "Stvori bilježnicu"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:161
#, fuzzy
msgid "Create notebook"
msgstr "Stvori bilježnicu"
#: packages/server/src/routes/admin/users.ts:171
#, fuzzy
msgid "Create user"
msgstr "Stvori korisnika"
msgstr "Stvoreno: %s"
#: packages/app-desktop/gui/NotePropertiesDialog.min.js:29
msgid "Created"
@@ -905,7 +905,7 @@ msgid "Created: %d."
msgstr "Stvoreno: %d."
#: packages/app-mobile/components/screens/encryption-config.tsx:118
#: packages/app-mobile/components/screens/Note.tsx:835
#: packages/app-mobile/components/screens/Note.tsx:840
msgid "Created: %s"
msgstr "Stvoreno: %s"
@@ -954,7 +954,7 @@ msgid "Custom TLS certificates"
msgstr "Prilagođeni TLS certifikati"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:18
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:751
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:750
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:143
msgid "Cut"
msgstr "Izreži"
@@ -963,9 +963,9 @@ msgstr "Izreži"
msgid "Dark"
msgstr "Tamna"
#: packages/server/src/services/MustacheService.ts:136
#: packages/server/src/services/MustacheService.ts:139
msgid "Dashboard"
msgstr "Pregledna ploča"
msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:625
msgid "Database v%s"
@@ -1012,7 +1012,7 @@ msgstr "Standardno: %s"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:192
#: packages/app-desktop/gui/utils/NoteListUtils.ts:222
#: packages/app-mobile/components/screen-header.js:362
#: packages/app-mobile/components/screens/Note.tsx:953
#: packages/app-mobile/components/screens/Note.tsx:958
#: packages/app-mobile/components/side-menu-content.js:146
msgid "Delete"
msgstr "Izbriši"
@@ -1022,12 +1022,14 @@ msgid "Delete attachment \"%s\"?"
msgstr "Izbrisati privitak „%s”?"
#: packages/server/src/services/TaskService.ts:36
#, fuzzy
msgid "Delete expired sessions"
msgstr "Izbriši istekle sesije"
msgstr "Aktiviraj matematičke izraze"
#: packages/server/src/services/TaskService.ts:31
#, fuzzy
msgid "Delete expired tokens"
msgstr "Izbriši istekle tokene"
msgstr "Izbrisati ove %d bilješke?"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:88
msgid "Delete line"
@@ -1042,7 +1044,7 @@ msgid "Delete note \"%s\"?"
msgstr "Izbrisati bilješku „%s”?"
#: packages/app-cli/app/command-rmnote.js:27
#: packages/app-mobile/components/screens/Note.tsx:525
#: packages/app-mobile/components/screens/Note.tsx:530
msgid "Delete note?"
msgstr "Izbrisati bilješku?"
@@ -1155,7 +1157,7 @@ msgstr ""
"ponovo sinkronizirati i poslati nešifrirano u cilj sinkronizacije. Želiš li "
"nastaviti?"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Discard changes"
msgstr "Odbaci promjene"
@@ -1293,7 +1295,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/openFolderDialog.ts:12
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/openEditDialog.ts:83
#: packages/app-mobile/components/screens/Note.tsx:1139
#: packages/app-mobile/components/screens/Note.tsx:1151
msgid "Edit"
msgstr "Uredi"
@@ -1347,12 +1349,12 @@ msgstr "Emacs"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:236
#: packages/server/src/routes/admin/emails.ts:128
msgid "Email"
msgstr "E-mail"
msgstr ""
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:152
#: packages/server/src/services/MustacheService.ts:155
msgid "Emails"
msgstr "E-mailovi"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:194
msgid "emphasised text"
@@ -1549,11 +1551,11 @@ msgstr ""
msgid "Errors only"
msgstr "Samo greške"
#: packages/lib/services/interop/InteropService.ts:88
#: packages/lib/services/interop/InteropService.ts:89
msgid "Evernote Export File (as HTML)"
msgstr "Evernote datoteka izvoza (kao HTML)"
#: packages/lib/services/interop/InteropService.ts:79
#: packages/lib/services/interop/InteropService.ts:80
msgid "Evernote Export File (as Markdown)"
msgstr "Evernote datoteka izvoza (kao Markdown)"
@@ -1700,7 +1702,7 @@ msgstr "Za popis tipkovnih prečaca i opcija konfiguracije, upiši `help keymap`
#: packages/lib/models/Setting.ts:569
msgid "Force path style"
msgstr "Prisili stil putanje"
msgstr ""
#: packages/lib/commands/historyForward.ts:6
msgid "Forward"
@@ -1720,7 +1722,7 @@ msgid "Full changelog"
msgstr "Potpuni dnevnik promjena"
#: packages/lib/models/Setting.ts:2141
#: packages/server/src/services/MustacheService.ts:133
#: packages/server/src/services/MustacheService.ts:136
msgid "General"
msgstr "Opće"
@@ -1753,7 +1755,7 @@ msgstr ""
"zadana, prikazat će vrijednost imena [name]. Ako [name] niti [value] nisu "
"zadani, ispisat će trenutačnu konfiguraciju."
#: packages/app-mobile/components/screens/Note.tsx:847
#: packages/app-mobile/components/screens/Note.tsx:852
msgid "Go to source URL"
msgstr "Idi na URL izvora"
@@ -1770,7 +1772,8 @@ msgstr "Odobri autorizaciju"
msgid "Heading"
msgstr "Naslov"
#: packages/server/src/services/MustacheService.ts:305
#: packages/server/src/services/MustacheService.ts:308
#, fuzzy
msgid "Help"
msgstr "Pomoć"
@@ -1790,20 +1793,20 @@ msgstr "Sakrij Joplin"
msgid "Highlight"
msgstr "Istaknuto"
#: packages/server/src/services/MustacheService.ts:167
#: packages/server/src/services/MustacheService.ts:300
#: packages/server/src/services/MustacheService.ts:170
#: packages/server/src/services/MustacheService.ts:303
msgid "Home"
msgstr "Početak"
msgstr ""
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:78
msgid "Horizontal Rule"
msgstr "Vodoravna crta"
#: packages/lib/services/interop/InteropService.ts:133
#: packages/lib/services/interop/InteropService.ts:134
msgid "HTML Directory"
msgstr "HTML mapa"
#: packages/lib/services/interop/InteropService.ts:127
#: packages/lib/services/interop/InteropService.ts:128
msgid "HTML File"
msgstr "HTML datoteka"
@@ -1813,7 +1816,7 @@ msgstr "Poveznica"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:136
msgid "Icon"
msgstr "Ikona"
msgstr ""
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:179
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:329
@@ -1837,7 +1840,7 @@ msgstr "Zanemari greške TLS certifikata"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:102
msgid "Images"
msgstr "Slike"
msgstr ""
#: packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.tsx:170
#: packages/app-desktop/gui/MenuBar.tsx:484
@@ -1879,7 +1882,7 @@ msgstr ""
"odabranu bilješku ili bilježnicu. `$c` se može koristiti za upućivanje na "
"trenutačno odabrani element."
#: packages/app-mobile/components/screens/Note.tsx:402
#: packages/app-mobile/components/screens/Note.tsx:407
msgid ""
"In order to associate a geo-location with the note, the app needs your "
"permission to access your location.\n"
@@ -2009,8 +2012,9 @@ msgid "Invalid option value: \"%s\". Possible values are: %s."
msgstr "Neispravna vrijednost opcije: „%s”. Moguće vrijednosti su: %s."
#: packages/app-cli/app/command-e2ee.ts:46
#, fuzzy
msgid "Invalid password"
msgstr "Neispravna lozinka"
msgstr "Neispravan odgovor: %s"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:38
msgid "Italic"
@@ -2020,10 +2024,10 @@ msgstr "Kurziv"
msgid "Item \"%s\" could not be downloaded: %s"
msgstr "Nije bilo moguće preuzeti element „%s”: %s"
#: packages/server/src/services/MustacheService.ts:175
#: packages/server/src/services/MustacheService.ts:302
#: packages/server/src/services/MustacheService.ts:178
#: packages/server/src/services/MustacheService.ts:305
msgid "Items"
msgstr "Elementi"
msgstr ""
#: packages/lib/services/ReportService.ts:208
msgid "Items that cannot be decrypted"
@@ -2053,13 +2057,13 @@ msgstr "Joplin Cloud email"
msgid "Joplin Cloud password"
msgstr "Joplin Cloud lozinka"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
#: packages/lib/services/interop/InteropService.ts:108
#: packages/lib/services/interop/InteropService.ts:73
msgid "Joplin Export Directory"
msgstr "Joplin mapa izvoza"
#: packages/lib/services/interop/InteropService.ts:101
#: packages/lib/services/interop/InteropService.ts:50
#: packages/lib/services/interop/InteropService.ts:102
#: packages/lib/services/interop/InteropService.ts:51
msgid "Joplin Export File"
msgstr "Joplin datoteka izvoza"
@@ -2155,7 +2159,7 @@ msgstr "Zadnja greška: %s"
msgid "Later"
msgstr "Kasnije"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid "Layout"
msgstr "Raspored"
@@ -2190,7 +2194,7 @@ msgstr[0] "Poveznica je kopirana u međuspremnik!"
msgstr[1] "Poveznice su kopirane u međuspremnik!"
msgstr[2] "Poveznice su kopirane u međuspremnik!"
#: packages/app-mobile/components/screens/Note.tsx:197
#: packages/app-mobile/components/screens/Note.tsx:200
msgid "Links with protocol \"%s\" are not supported"
msgstr "Poveznice s protokolom „%s” se ne podržavaju"
@@ -2220,7 +2224,7 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:521
#: packages/app-mobile/components/screens/log.js:100
#: packages/server/src/services/MustacheService.ts:303
#: packages/server/src/services/MustacheService.ts:306
msgid "Log"
msgstr "Dnevnik"
@@ -2240,13 +2244,13 @@ msgstr "Prijavi se s Dropbox"
msgid "Login with OneDrive"
msgstr "Prijavi se s OneDrive"
#: packages/server/src/services/MustacheService.ts:306
#: packages/server/src/services/MustacheService.ts:309
msgid "Logout"
msgstr "Odjava"
msgstr ""
#: packages/server/src/services/MustacheService.ts:179
#: packages/server/src/services/MustacheService.ts:182
msgid "Logs"
msgstr "Dnevnici"
msgstr ""
#: packages/app-desktop/gui/MenuBar.tsx:716
#: packages/app-mobile/components/screens/ConfigScreen.tsx:583
@@ -2280,13 +2284,13 @@ msgid "Manual"
msgstr "Ručno"
#: packages/lib/models/Setting.ts:2146
#: packages/lib/services/interop/InteropService.ts:113
#: packages/lib/services/interop/InteropService.ts:58
#: packages/lib/services/interop/InteropService.ts:114
#: packages/lib/services/interop/InteropService.ts:59
msgid "Markdown"
msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
#: packages/lib/services/interop/InteropService.ts:120
#: packages/lib/services/interop/InteropService.ts:67
msgid "Markdown + Front Matter"
msgstr "Markdown + Front Matter"
@@ -2437,7 +2441,7 @@ msgid "no"
msgstr "ne"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:29
#: packages/app-mobile/components/screens/Note.tsx:587
#: packages/app-mobile/components/screens/Note.tsx:592
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "No"
msgstr "Ne"
@@ -2446,7 +2450,7 @@ msgstr "Ne"
msgid "No active notebook."
msgstr "Nema aktivne bilježnice."
#: packages/app-mobile/components/screens/Note.tsx:168
#: packages/app-mobile/components/screens/Note.tsx:171
msgid "No item with ID %s"
msgstr "Nema elementa s ID oznakom %s"
@@ -2576,8 +2580,9 @@ msgid "Note&book"
msgstr "Biljež&nica"
#: packages/lib/models/Setting.ts:2145
#, fuzzy
msgid "Notebook"
msgstr "Bilježnica"
msgstr "Bilježnice"
#: packages/lib/models/Setting.ts:1380
msgid "Notebook list growth factor"
@@ -2598,8 +2603,9 @@ msgstr "Naslov „%s” je rezerviran i ne može se koristiti za bilježnice."
#: packages/app-desktop/gui/MainScreen/commands/toggleNotesSortOrderField.ts:8
#: packages/app-desktop/gui/MainScreen/commands/toggleNotesSortOrderReverse.ts:9
#, fuzzy
msgid "Notes"
msgstr "Bilješke"
msgstr "Bilješka"
#: packages/lib/models/Setting.ts:2161
msgid "Notes and settings are stored in: %s"
@@ -2706,8 +2712,9 @@ msgid "Or create an account."
msgstr "Ili stvori novi račun."
#: packages/app-desktop/gui/MenuBar.tsx:352
#, fuzzy
msgid "Other applications..."
msgstr "Drugi programi …"
msgstr "Zatvara program."
#: packages/app-cli/app/command-import.js:27
msgid "Output format: %s"
@@ -2741,7 +2748,7 @@ msgid "Passwords do not match!"
msgstr "Lozinke se ne poklapaju!"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:23
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:771
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:770
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:158
msgid "Paste"
msgstr "Umetni"
@@ -2755,7 +2762,7 @@ msgstr "Putanja:"
msgid "PDF File"
msgstr "PDF datoteka"
#: packages/app-mobile/components/screens/Note.tsx:403
#: packages/app-mobile/components/screens/Note.tsx:408
msgid "Permission needed"
msgstr "Potrebna je dozvola"
@@ -2812,7 +2819,7 @@ msgstr "Najprije odaberi bilješku ili bilježnicu za brisanje."
msgid "Please select where the sync status should be exported to"
msgstr "Odaberi mjesto za izvoz stanja sinkronizacije"
#: packages/lib/services/interop/InteropService.ts:277
#: packages/lib/services/interop/InteropService.ts:301
msgid "Please specify import format for %s"
msgstr "Odredi format uvoza za %s"
@@ -2908,25 +2915,25 @@ msgstr "Politika privatnosti"
#: packages/server/src/services/TaskService.ts:35
msgid "Process failed payment subscriptions"
msgstr "Obradi neuspjela plaćanja pretplata"
msgstr ""
#: packages/server/src/services/TaskService.ts:33
msgid "Process oversized accounts"
msgstr "Obradi prevelike račune"
msgstr ""
#: packages/server/src/services/TaskService.ts:38
msgid "Process user deletions"
msgstr "Obradi brisanja korisnika"
msgstr ""
#: packages/server/src/routes/admin/users.ts:168
msgid "Profile"
msgstr "Profil"
msgstr ""
#: packages/lib/versionInfo.ts:26
msgid "Profile Version: %s"
msgstr "Verzija profila: %s"
#: packages/app-mobile/components/screens/Note.tsx:947
#: packages/app-mobile/components/screens/Note.tsx:952
msgid "Properties"
msgstr "Svojstva"
@@ -3104,27 +3111,31 @@ msgstr ""
#: packages/lib/SyncTargetAmazonS3.js:28
msgid "S3"
msgstr "S3"
msgstr ""
#: packages/lib/models/Setting.ts:547
#, fuzzy
msgid "S3 access key"
msgstr "S3 pristupni ključ"
msgstr "AWS ključ"
#: packages/lib/models/Setting.ts:507
#, fuzzy
msgid "S3 bucket"
msgstr "S3 bucket"
msgstr "AWS S3 bucket"
#: packages/lib/models/Setting.ts:536
msgid "S3 region"
msgstr "S3 područje"
msgstr ""
#: packages/lib/models/Setting.ts:558
#, fuzzy
msgid "S3 secret key"
msgstr "S3 tajni ključ"
msgstr "AWS tajna"
#: packages/lib/models/Setting.ts:522
#, fuzzy
msgid "S3 URL"
msgstr "S3 URL"
msgstr "AWS S3 URL"
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:579
msgid ""
@@ -3150,7 +3161,7 @@ msgstr "Spremi upozorenje"
msgid "Save as..."
msgstr "Spremi kao …"
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "Save changes"
msgstr "Spremi promjene"
@@ -3201,12 +3212,14 @@ msgid "Select all"
msgstr "Označi sve"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:140
#, fuzzy
msgid "Select emoji..."
msgstr "Odaberi emoji …"
msgstr "Odaberi datum"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:144
#, fuzzy
msgid "Select file..."
msgstr "Odaberi datoteku …"
msgstr "Označi sve"
#: packages/app-cli/app/command-server.js:38
msgid "Server is already running on port %d"
@@ -3222,7 +3235,7 @@ msgid "Server is running on port %d"
msgstr "Poslužitelj se pokreće na priključku %d"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:10
#: packages/app-mobile/components/screens/Note.tsx:911
#: packages/app-mobile/components/screens/Note.tsx:916
#: packages/app-mobile/components/SelectDateTimeDialog.tsx:141
msgid "Set alarm"
msgstr "Postavi upozorenje"
@@ -3257,7 +3270,7 @@ msgstr ""
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:248
#: packages/app-mobile/components/NoteBodyViewer/hooks/useOnResourceLongPress.ts:20
#: packages/app-mobile/components/screens/Note.tsx:919
#: packages/app-mobile/components/screens/Note.tsx:924
msgid "Share"
msgstr "Dijeli"
@@ -3298,8 +3311,9 @@ msgid "Show note counts"
msgstr "Prikaži broj bilježaka"
#: packages/lib/models/Setting.ts:868
#, fuzzy
msgid "Show sort order buttons"
msgstr "Prikaži gumbe za mijenjanje redoslijeda"
msgstr "Prikaži broj bilježaka"
#: packages/lib/models/Setting.ts:1044
msgid "Show tray icon"
@@ -3617,20 +3631,20 @@ msgstr "Označeno: %d."
#: packages/app-desktop/gui/MainScreen/commands/setTags.ts:7
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:725
#: packages/app-mobile/components/screens/Note.tsx:926
#: packages/app-mobile/components/screens/Note.tsx:931
#: packages/app-mobile/components/screens/tags.js:101
#: packages/app-mobile/components/side-menu-content.js:330
msgid "Tags"
msgstr "Oznake"
#: packages/app-mobile/components/screens/Note.tsx:898
#: packages/app-mobile/components/screens/Note.tsx:903
msgid "Take photo"
msgstr "Snimi sliku"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:304
#: packages/server/src/services/MustacheService.ts:151
#: packages/server/src/services/MustacheService.ts:307
msgid "Tasks"
msgstr "Zadaci"
msgstr ""
#: packages/lib/models/Setting.ts:1230
msgid "Text editor command"
@@ -3734,7 +3748,7 @@ msgstr ""
"preporučujemo da ih nadogradiš. Nadograđeni ključ će i nadalje moći "
"dešifrirati i šifrirati tvoje podatke."
#: packages/app-mobile/components/screens/Note.tsx:193
#: packages/app-mobile/components/screens/Note.tsx:196
msgid "The Joplin mobile app does not currently support this type of link: %s"
msgstr ""
"Joplin program za mobilne uređaje trenutačno ne podržava ovu vrstu "
@@ -3919,7 +3933,7 @@ msgstr ""
msgid "This attachment is not downloaded or not decrypted yet"
msgstr "Ovaj privitak još nije preuzet ili dešifriran"
#: packages/app-mobile/components/screens/Note.tsx:187
#: packages/app-mobile/components/screens/Note.tsx:190
msgid "This attachment is not downloaded or not decrypted yet."
msgstr "Ovaj privitak još nije preuzet ili dešifriran."
@@ -3945,11 +3959,11 @@ msgstr ""
msgid "This note does not have geolocation information."
msgstr "Ova bilješka nema geografske podatke mjesta."
#: packages/app-mobile/components/screens/Note.tsx:104
#: packages/app-mobile/components/screens/Note.tsx:107
msgid "This note has been modified:"
msgstr "Ova je blješka promijenjena:"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:610
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:609
msgid ""
"This note has no content. Click on \"%s\" to toggle the editor and edit the "
"note."
@@ -4103,8 +4117,9 @@ msgid "Toggle note list"
msgstr "Uključi/Isključi popis bilježaka"
#: packages/app-desktop/gui/MainScreen/commands/togglePerFolderSortOrder.ts:7
#, fuzzy
msgid "Toggle own sort order"
msgstr "Uključi/Isključi vlastiti redoslijed"
msgstr "Uključi/Isključi sigurni modus"
#: packages/app-desktop/commands/toggleSafeMode.ts:8
msgid "Toggle safe mode"
@@ -4115,8 +4130,9 @@ msgid "Toggle sidebar"
msgstr "Uključi/Isključi bočnu traku"
#: packages/app-desktop/gui/MainScreen/commands/toggleNotesSortOrderField.ts:7
#, fuzzy
msgid "Toggle sort order field"
msgstr "Uključi/Isključi redoslijed polja"
msgstr "Uključi/Isključi sigurni modus"
#: packages/app-desktop/gui/ClipperConfigScreen.min.js:40
#: packages/app-desktop/gui/ClipperConfigScreen.tsx:41
@@ -4199,7 +4215,7 @@ msgstr ""
"Prestati dijeliti ovu bilježnicu? Primalac više neće imati pristup sadržaju "
"bilježnice."
#: packages/app-mobile/components/screens/Note.tsx:680
#: packages/app-mobile/components/screens/Note.tsx:685
msgid "Unsupported image type: %s"
msgstr "Nepodržana vrsta slike: %s"
@@ -4220,12 +4236,14 @@ msgstr "Aktualiziraj"
#: packages/server/src/routes/admin/users.ts:171
#: packages/server/src/routes/index/users.ts:89
#, fuzzy
msgid "Update profile"
msgstr "Aktualiziraj profil"
msgstr "Izvezi profil"
#: packages/server/src/services/TaskService.ts:32
#, fuzzy
msgid "Update total sizes"
msgstr "Aktualiziraj ukupne veličine"
msgstr "Aktualizirani lokalni elementi: %d."
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.tsx:208
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.tsx:209
@@ -4254,7 +4272,7 @@ msgstr "Aktualizirano: "
msgid "Updated: %d."
msgstr "Aktualizirano: %d."
#: packages/app-mobile/components/screens/Note.tsx:836
#: packages/app-mobile/components/screens/Note.tsx:841
msgid "Updated: %s"
msgstr "Aktualizirano: %s"
@@ -4329,15 +4347,15 @@ msgstr ""
"Koristi se za tekst fiksne širine (npr. tablice, potvrdni okivi, programski "
"kod). Ako se ne pronađe, koristi se generički font fiksne širine."
#: packages/server/src/services/MustacheService.ts:144
#: packages/server/src/services/MustacheService.ts:147
msgid "User deletions"
msgstr "Brisanja korisnika"
msgstr ""
#: packages/server/src/routes/admin/users.ts:107
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:301
#: packages/server/src/services/MustacheService.ts:143
#: packages/server/src/services/MustacheService.ts:304
msgid "Users"
msgstr "Korisnici"
msgstr ""
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:182
msgid "Valid"
@@ -4347,7 +4365,7 @@ msgstr "Ispravno"
msgid "View"
msgstr "Prikaz"
#: packages/app-mobile/components/screens/Note.tsx:840
#: packages/app-mobile/components/screens/Note.tsx:845
msgid "View on map"
msgstr "Pogledaj na karti"
@@ -4443,12 +4461,12 @@ msgid "yes"
msgstr "da"
#: packages/app-desktop/services/plugins/UserWebviewDialogButtonBar.tsx:28
#: packages/app-mobile/components/screens/Note.tsx:586
#: packages/app-mobile/components/screens/Note.tsx:591
#: packages/lib/shim-init-node.js:172 packages/lib/versionInfo.ts:27
msgid "Yes"
msgstr "Da"
#: packages/app-mobile/components/screens/Note.tsx:585
#: packages/app-mobile/components/screens/Note.tsx:590
#: packages/lib/shim-init-node.js:171
msgid ""
"You are about to attach a large image (%dx%d pixels). Would you like to "
@@ -4492,12 +4510,12 @@ msgstr ""
"Tvoja glavna lozinka je potrebna za dešifriranje nekih tvojih podataka."
#: packages/app-cli/app/command-sync.ts:242
#, fuzzy
msgid ""
"Your password is needed to decrypt some of your data. Type `:e2ee decrypt` "
"to set it."
msgstr ""
"Tvoja lozinka je potrebna za dešifriranje nekih tvojih podataka. Za "
"postavljanje utipkaj `:e2ee decrypt`."
"Tvoja glavna lozinka je potrebna za dešifriranje nekih tvojih podataka."
#: packages/app-mobile/components/CameraView.tsx:189
msgid "Your permission to use your camera is required."
@@ -4510,11 +4528,11 @@ msgstr "Tvoja verzija: %s"
#: packages/app-desktop/gui/MenuBar.tsx:653
#: packages/app-desktop/gui/MenuBar.tsx:659
msgid "Zoom In"
msgstr "Uvećaj prikaz"
msgstr "Uvećaj"
#: packages/app-desktop/gui/MenuBar.tsx:666
msgid "Zoom Out"
msgstr "Umanji prikaz"
msgstr "Umanji"
#~ msgid "Automatically update the application"
#~ msgstr "Automatski aktualiziraj program"

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