From 0f95e97d197d2d861224fbd6da11b94c9fd8a3df Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Mon, 24 Jul 2017 18:01:40 +0000 Subject: [PATCH] Refactored handling of multiple sync targets --- CliClient/app/app.js | 97 +----- CliClient/app/command-sync.js | 15 +- CliClient/app/main.js | 5 - CliClient/locales/en_GB.po | 321 +++++++++-------- CliClient/locales/fr_FR.po | 325 ++++++++++-------- CliClient/locales/joplin.pot | 321 +++++++++-------- CliClient/package.json | 1 + CliClient/tests/synchronizer.js | 2 - CliClient/tests/test-utils.js | 6 +- CliClient/yarn.lock | 18 +- .../lib/components/side-menu-content.js | 2 +- .../lib/file-api-driver-onedrive.js | 8 +- ReactNativeClient/lib/models/setting.js | 6 +- ReactNativeClient/lib/onedrive-api.js | 2 + ReactNativeClient/lib/registry.js | 59 +++- ReactNativeClient/lib/shim-init-node.js | 8 +- ReactNativeClient/lib/shim.js | 12 +- joplin.sublime-project | 3 + 18 files changed, 630 insertions(+), 581 deletions(-) diff --git a/CliClient/app/app.js b/CliClient/app/app.js index 2da2b7966..32e1a7b95 100644 --- a/CliClient/app/app.js +++ b/CliClient/app/app.js @@ -11,7 +11,6 @@ import { Folder } from 'lib/models/folder.js'; import { BaseItem } from 'lib/models/base-item.js'; import { Note } from 'lib/models/note.js'; import { Setting } from 'lib/models/setting.js'; -import { Synchronizer } from 'lib/synchronizer.js'; import { Logger } from 'lib/logger.js'; import { sprintf } from 'sprintf-js'; import { vorpalUtils } from 'vorpal-utils.js'; @@ -27,8 +26,6 @@ class Application { this.showPromptString_ = true; this.logger_ = new Logger(); this.dbLogger_ = new Logger(); - this.syncLogger_ = new Logger(); - this.synchronizers_ = {}; } vorpal() { @@ -264,93 +261,6 @@ class Application { if (cmd.hidden()) vorpalCmd.hidden(); }); - - // this.vorpal().catch('[args...]', 'Catches undefined commands').action(function(args, end) { - // args = args.args; - - // function delayExec(command) { - // setTimeout(() => { - // app().vorpal().exec(command); - // }, 100); - // } - - // if (!args.length) { - // end(); - // delayExec('help'); - // return; - // } - - // let commandName = args.splice(0, 1); - - // let aliases = Setting.value('aliases').trim(); - // aliases = aliases.length ? JSON.parse(aliases) : []; - - // for (let i = 0; i < aliases.length; i++) { - // const alias = aliases[i]; - // if (alias.name == commandName) { - // let command = alias.command + ' ' + app().shellArgsToString(args); - // end(); - // delayExec(command); - // return; - // } - // } - - // this.log(_("Invalid command. Showing help:")); - // end(); - // delayExec('help'); - // }); - } - - async synchronizer(syncTarget, options = null) { - if (!options) options = {}; - if (this.synchronizers_[syncTarget]) return this.synchronizers_[syncTarget]; - - let fileApi = null; - - // TODO: create file api based on syncTarget - - if (syncTarget == 'onedrive') { - - const oneDriveApi = reg.oneDriveApi(); - let driver = new FileApiDriverOneDrive(oneDriveApi); - let auth = Setting.value('sync.onedrive.auth'); - - if (!oneDriveApi.auth()) { - const oneDriveApiUtils = new OneDriveApiNodeUtils(oneDriveApi); - auth = await oneDriveApiUtils.oauthDance(this.vorpal()); - Setting.setValue('sync.onedrive.auth', auth ? JSON.stringify(auth) : auth); - if (!auth) return; - } - - let appDir = await oneDriveApi.appDirectory(); - this.logger_.info('App dir: ' + appDir); - fileApi = new FileApi(appDir, driver); - fileApi.setLogger(this.logger_); - - } else if (syncTarget == 'memory') { - - fileApi = new FileApi('joplin', new FileApiDriverMemory()); - fileApi.setLogger(this.logger_); - - } else if (syncTarget == 'filesystem') { - - let syncDir = options['sync.filesystem.path'] ? options['sync.filesystem.path'] : Setting.value('sync.filesystem.path'); - if (!syncDir) syncDir = Setting.value('profileDir') + '/sync'; - this.vorpal().log(_('Synchronizing with directory "%s"', syncDir)); - await fs.mkdirp(syncDir, 0o755); - fileApi = new FileApi(syncDir, new FileApiDriverLocal()); - fileApi.setLogger(this.logger_); - - } else { - - throw new Error('Unknown backend: ' + syncTarget); - - } - - this.synchronizers_[syncTarget] = new Synchronizer(this.database_, fileApi, Setting.value('appType')); - this.synchronizers_[syncTarget].setLogger(this.syncLogger_); - - return this.synchronizers_[syncTarget]; } async start() { @@ -380,13 +290,11 @@ class Application { this.logger_.setLevel(initArgs.logLevel); reg.setLogger(this.logger_); + reg.dispatch = (o) => {} this.dbLogger_.addTarget('file', { path: profileDir + '/log-database.txt' }); this.dbLogger_.setLevel(initArgs.logLevel); - this.syncLogger_.addTarget('file', { path: profileDir + '/log-sync.txt' }); - this.syncLogger_.setLevel(initArgs.logLevel); - const packageJson = require('./package.json'); this.logger_.info(sprintf('Starting %s %s (%s)...', packageJson.name, packageJson.version, Setting.value('env'))); this.logger_.info('Profile directory: ' + profileDir); @@ -394,7 +302,10 @@ class Application { this.database_ = new JoplinDatabase(new DatabaseDriverNode()); this.database_.setLogger(this.dbLogger_); await this.database_.open({ name: profileDir + '/database.sqlite' }); + + reg.setDb(this.database_); BaseModel.db_ = this.database_; + await Setting.load(); setLocale(Setting.value('locale')); diff --git a/CliClient/app/command-sync.js b/CliClient/app/command-sync.js index 7dd7b9f1c..662fccc7b 100644 --- a/CliClient/app/command-sync.js +++ b/CliClient/app/command-sync.js @@ -5,6 +5,8 @@ import { Setting } from 'lib/models/setting.js'; import { BaseItem } from 'lib/models/base-item.js'; import { vorpalUtils } from './vorpal-utils.js'; import { Synchronizer } from 'lib/synchronizer.js'; +import { reg } from 'lib/registry.js'; +import md5 from 'md5'; const locker = require('proper-lockfile'); const fs = require('fs-extra'); const osTmpdir = require('os-tmpdir'); @@ -28,7 +30,6 @@ class Command extends BaseCommand { options() { return [ ['--target ', _('Sync to provided target (defaults to sync.target config value)')], - ['--filesystem-path ', _('For "filesystem" target only: Path to sync to.')], ['--random-failures', 'For debugging purposes. Do not use.'], ]; } @@ -62,7 +63,8 @@ class Command extends BaseCommand { async action(args) { this.releaseLockFn_ = null; - const lockFilePath = osTmpdir() + '/synclock'; + // Lock is unique per profile/database + const lockFilePath = osTmpdir() + '/synclock_' + md5(Setting.value('profileDir')); if (!await fs.pathExists(lockFilePath)) await fs.writeFile(lockFilePath, 'synclock'); if (await Command.isLocked(lockFilePath)) throw new Error(_('Synchronisation is already in progress.')); @@ -73,10 +75,7 @@ class Command extends BaseCommand { this.syncTarget_ = Setting.value('sync.target'); if (args.options.target) this.syncTarget_ = args.options.target; - let syncInitOptions = {}; - if (args.options['filesystem-path']) syncInitOptions['sync.filesystem.path'] = args.options['filesystem-path']; - - let sync = await app().synchronizer(this.syncTarget_, syncInitOptions); + let sync = await reg.synchronizer(this.syncTarget_); let options = { onProgress: (report) => { @@ -122,8 +121,8 @@ class Command extends BaseCommand { vorpalUtils.redrawDone(); this.log(_('Cancelling...')); - let sync = await app().synchronizer(target); - sync.cancel(); + let sync = await reg.synchronizer(target); + if (sync) sync.cancel(); this.syncTarget_ = null; } diff --git a/CliClient/app/main.js b/CliClient/app/main.js index 0e585a005..fb8534536 100644 --- a/CliClient/app/main.js +++ b/CliClient/app/main.js @@ -40,11 +40,6 @@ process.stdin.on('keypress', (_, key) => { if (key && key.name === 'return') { app().updatePrompt(); } - - // if (key.name === 'tab') { - // app().vorpal().ui.imprint(); - // app().vorpal().log(app().vorpal().ui.input()); - // } }); shimInit(); diff --git a/CliClient/locales/en_GB.po b/CliClient/locales/en_GB.po index 2e1b60f22..c8c0e5ba3 100644 --- a/CliClient/locales/en_GB.po +++ b/CliClient/locales/en_GB.po @@ -15,569 +15,602 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:94 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:91 msgid "No notebook selected." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:99 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:96 msgid "No notebook has been specified." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:130 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:127 msgid "Usage: --profile " msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:137 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:134 msgid "Usage: --env " msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:162 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:159 msgid "Usage: --log-level " msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:169 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:166 #, javascript-format msgid "Unknown flag: %s" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:185 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:182 #, javascript-format msgid "" "Command line argument \"%s\" contains both quotes and double-quotes - " "aborting." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:205 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:202 msgid "Provides help for a given command." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:207 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:204 msgid "Exits the application." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:339 -#, javascript-format -msgid "Synchronizing with directory \"%s\"" -msgstr "" - -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:421 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:419 msgid "No notebook is defined. Create one with `mkbook `." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-alias.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-alias.js:13 msgid "" "Creates a new command alias which can then be used as a regular command (eg. " "`alias ll \"ls -l\"`)." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-cat.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:16 msgid "Displays the given note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-cat.js:21 +#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:21 msgid "Displays the complete information about note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-cat.js:33 -#: /mnt/d/Web/www/joplin/CliClient/app/command-cp.js:31 -#: /mnt/d/Web/www/joplin/CliClient/app/command-cp.js:34 -#: /mnt/d/Web/www/joplin/CliClient/app/command-geoloc.js:27 -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:29 -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:36 -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:39 -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:39 -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:46 -#: /mnt/d/Web/www/joplin/CliClient/app/command-search.js:29 -#: /mnt/d/Web/www/joplin/CliClient/app/command-set.js:31 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:25 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:28 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:34 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:35 -#: /mnt/d/Web/www/joplin/CliClient/app/command-use.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:33 +#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:31 +#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:34 +#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:27 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:29 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:36 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:39 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:39 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:46 +#: /media/veracrypt22/src/notes/CliClient/app/command-search.js:29 +#: /media/veracrypt22/src/notes/CliClient/app/command-set.js:31 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:25 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:34 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:35 +#: /media/veracrypt22/src/notes/CliClient/app/command-use.js:28 #, javascript-format msgid "Cannot find \"%s\"." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-config.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-config.js:13 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 "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-cp.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:16 msgid "" "Duplicates the notes matching to [notebook]. If no notebook is " "specified the note is duplicated in the current notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:18 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:18 msgid "Edit note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:33 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:33 msgid "Done editing." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:39 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:39 msgid "" "No text editor is defined. Please set it using `config editor `" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:45 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:45 msgid "No active notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:66 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:66 msgid "Starting to edit note. Close the editor to get back to the prompt." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-geoloc.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:16 msgid "Displays a geolocation URL for the note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:16 msgid "Imports an Evernote notebook file (.enex file)." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:21 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:21 msgid "Do not ask for confirmation." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:35 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:35 #, javascript-format msgid "Folder does not exists: \"%s\". Create it?" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:42 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:42 #, javascript-format msgid "Imported - %s" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:55 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:55 #, javascript-format msgid "File \"%s\" will be imported into notebook \"%s\". Continue?" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:62 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:62 #, javascript-format msgid "Found: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:63 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:63 #, javascript-format msgid "Created: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:64 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:64 #, javascript-format msgid "Updated: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:65 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:65 #, javascript-format msgid "Skipped: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:66 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:66 #, javascript-format msgid "Resources: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:67 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:67 #, javascript-format msgid "Tagged: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:78 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:78 msgid "Importing notes..." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:19 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:19 msgid "" "Displays the notes in [notebook]. Use `ls /` to display the list of " "notebooks." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:24 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:24 msgid "Displays only the first top notes." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:25 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:25 msgid "Sorts the item by (eg. title, updated_time, created_time)." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:26 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:26 msgid "Reverses the sorting order." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:27 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:27 msgid "" "Displays only the items of the specific type(s). Can be `n` for notes, `t` " "for todos, or `nt` for notes and todos (eg. `-tt` would display only the " "todos, while `-ttd` would display notes and todos." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:28 msgid "Either \"text\" or \"json\"" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:29 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:29 msgid "" "Use long list format. Format is ID, NOTE_COUNT (for notebook), DATE, " "TODO_CHECKED (for todos), TITLE" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:65 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:65 msgid "Please select a notebook first." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-mkbook.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-mkbook.js:13 msgid "Creates a new notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-mknote.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-mknote.js:13 msgid "Creates a new note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-mknote.js:17 +#: /media/veracrypt22/src/notes/CliClient/app/command-mknote.js:17 msgid "Notes can only be created within a notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:16 msgid "" "Moves the notes matching to . If is a note, " "it will be moved to the notebook . If is a notebook, " "it will be renamed to ." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:18 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:18 msgid "Deletes the items matching ." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:27 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:27 msgid "Deletes the items without asking for confirmation." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:28 msgid "Deletes a notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:40 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:40 #, javascript-format msgid "Delete notebook \"%s\"?" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:47 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:47 #, javascript-format msgid "%d notes match this pattern. Delete them?" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-search.js:19 +#: /media/veracrypt22/src/notes/CliClient/app/command-search.js:19 msgid "Searches for the given in all the notes." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-set.js:17 +#: /media/veracrypt22/src/notes/CliClient/app/command-set.js:17 msgid "Sets the property of the given to the given [value]." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-status.js:14 +#: /media/veracrypt22/src/notes/CliClient/app/command-status.js:14 msgid "Displays summary about the notes and notebooks." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:25 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:27 msgid "Synchronizes with remote storage." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:30 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:32 msgid "Sync to provided target (defaults to sync.target config value)" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:31 -msgid "For \"filesystem\" target only: Path to sync to." -msgstr "" - -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:68 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:70 msgid "Synchronisation is already in progress." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:93 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:92 #, javascript-format msgid "Synchronization target: %s" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:95 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:94 msgid "Cannot initialize synchronizer." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:97 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:96 msgid "Starting synchronization..." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:109 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:108 msgid "Done." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:124 -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:60 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:123 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:60 msgid "Cancelling..." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:14 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:14 msgid "" " can be \"add\", \"remove\" or \"list\" to assign or remove [tag] " "from [note], or to list the notes associated with [tag]. The command `tag " "list` can be used to list all the tags." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:48 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:48 #, javascript-format msgid "Invalid command: \"%s\"" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-use.js:15 +#: /media/veracrypt22/src/notes/CliClient/app/command-use.js:15 msgid "" "Switches to [notebook] - all further operations will happen within this " "notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-version.js:12 +#: /media/veracrypt22/src/notes/CliClient/app/command-version.js:12 msgid "Displays version information" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-version.js:17 +#: /media/veracrypt22/src/notes/CliClient/app/command-version.js:17 #, javascript-format msgid "%s %s (%s)" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/main.js:53 +#: /media/veracrypt22/src/notes/CliClient/app/main.js:53 msgid "Fatal error:" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:38 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:38 #, javascript-format msgid "All potential ports are in use - please report the issue at %s" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:58 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:58 msgid "" "The application has been authorised - you may now close this browser tab." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:60 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:60 msgid "The application has been successfully authorised." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:82 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:82 msgid "Please open this URL in your browser to authenticate the application:" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:52 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/registry.js:77 +msgid "" +"Please set the \"sync.filesystem.path\" config value to the desired " +"synchronisation destination." +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:52 #, javascript-format msgid "Created local items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:53 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:53 #, javascript-format msgid "Updated local items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:54 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:54 #, javascript-format msgid "Created remote items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:55 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:55 #, javascript-format msgid "Updated remote items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:56 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:56 #, javascript-format msgid "Deleted local items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:57 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:57 #, javascript-format msgid "Deleted remote items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:58 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:58 #, javascript-format msgid "State: %s." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:59 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:59 #, javascript-format msgid "Last error: %s (stacktrace in log)." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:61 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:61 #, javascript-format msgid "Completed: %s" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/folder.js:81 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/folder.js:81 msgid "Conflicts" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/folder.js:136 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/folder.js:136 #, javascript-format msgid "A notebook with this title already exists: \"%s\"" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/folder.js:140 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/folder.js:140 #, javascript-format msgid "Notebooks cannot be named \"%s\", which is a reserved title." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/note.js:46 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:46 msgid "This note does not have geolocation information." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/note.js:201 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:201 #, javascript-format msgid "Cannot copy note to \"%s\" notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/note.js:212 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:212 #, javascript-format msgid "Cannot move note to \"%s\" notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:54 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:169 +msgid "Synchronisation target" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:171 +msgid "File system" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:172 +msgid "OneDrive" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:178 +msgid "Todo filter" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:179 +msgid "Show all" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:180 +msgid "Non-completed and recently completed ones" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:181 +msgid "Non-completed ones only" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:54 msgid "Sync status (synced items / total items)" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:59 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:59 #, javascript-format msgid "%s: %d/%d" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:62 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:62 #, javascript-format msgid "Total: %d/%d" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:64 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:64 #, javascript-format msgid "Conflicted: %d" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:65 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:65 #, javascript-format msgid "To delete: %d" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:70 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:70 msgid "Folders" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:80 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:80 #, javascript-format msgid "%s: %d notes" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/action-button.js:66 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/action-button.js:66 msgid "New todo" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/action-button.js:73 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/action-button.js:73 msgid "New note" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/action-button.js:81 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/action-button.js:81 msgid "New notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screen-header.js:208 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screen-header.js:215 msgid "Log" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screen-header.js:213 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screen-header.js:220 msgid "Status" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/side-menu-content.js:106 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screen-header.js:229 +msgid "Configuration" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/side-menu-content.js:106 msgid "Synchronize" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/side-menu-content.js:106 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/side-menu-content.js:106 msgid "Cancel synchronization" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/folder.js:73 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/config.js:101 +msgid "Save" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/folder.js:73 #, javascript-format msgid "The folder could not be saved: %s" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/folders.js:21 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/folders.js:21 msgid "" "There is currently no notebook. Create one by clicking on the (+) button." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:194 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:173 msgid "Untitled" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:237 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:216 msgid "Delete note?" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:280 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:259 msgid "Attach file" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:281 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:260 msgid "Delete note" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:282 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:261 msgid "Convert to regular note" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:282 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:261 msgid "Convert to todo" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:283 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:262 msgid "Hide metadata" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:283 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:262 msgid "Show metadata" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:284 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:263 msgid "View location on map" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:435 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:414 msgid "Edit" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:23 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:23 msgid "Delete notebook?" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:46 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:46 msgid "Delete notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:47 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:47 msgid "Edit notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:66 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:66 msgid "There are currently no notes. Create one by clicking on the (+) button." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/welcome.js:31 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/welcome.js:31 msgid "" "Click on the (+) button to create a new note or notebook. Click on the side " "menu to access your existing notebooks." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/welcome.js:31 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/welcome.js:31 msgid "You currently have no notebook. Create one by clicking on (+) button." msgstr "" diff --git a/CliClient/locales/fr_FR.po b/CliClient/locales/fr_FR.po index 7a7443f10..ddb8c1033 100644 --- a/CliClient/locales/fr_FR.po +++ b/CliClient/locales/fr_FR.po @@ -15,32 +15,32 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.7.1\n" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:94 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:91 msgid "No notebook selected." msgstr "Aucun carnet n'est sélectionné." -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:99 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:96 msgid "No notebook has been specified." msgstr "Aucun carnet n'est spécifié." -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:130 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:127 msgid "Usage: --profile " msgstr "Utilisation: --profile " -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:137 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:134 msgid "Usage: --env " msgstr "Utilisation : --env " -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:162 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:159 msgid "Usage: --log-level " msgstr "Utilisation: --log-level " -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:169 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:166 #, javascript-format msgid "Unknown flag: %s" msgstr "Paramètre inconnu : %s" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:185 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:182 #, javascript-format msgid "" "Command line argument \"%s\" contains both quotes and double-quotes - " @@ -49,58 +49,53 @@ msgstr "" "Paramètre de ligne de command \"%s\" contient à la fois des guillemets " "simples et doubles - impossible de continuer." -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:205 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:202 msgid "Provides help for a given command." msgstr "Affiche l'aide pour la commande donnée." -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:207 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:204 msgid "Exits the application." msgstr "Quitter le logiciel." -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:339 -#, javascript-format -msgid "Synchronizing with directory \"%s\"" -msgstr "Synchronisation avec dossier \"%s\"" - -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:421 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:419 msgid "No notebook is defined. Create one with `mkbook `." msgstr "Aucun carnet n'est défini. Créez-en un avec `mkbook `." -#: /mnt/d/Web/www/joplin/CliClient/app/command-alias.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-alias.js:13 msgid "" "Creates a new command alias which can then be used as a regular command (eg. " "`alias ll \"ls -l\"`)." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-cat.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:16 msgid "Displays the given note." msgstr "Affiche la note." -#: /mnt/d/Web/www/joplin/CliClient/app/command-cat.js:21 +#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:21 msgid "Displays the complete information about note." msgstr "Affiche tous les détails de la note." -#: /mnt/d/Web/www/joplin/CliClient/app/command-cat.js:33 -#: /mnt/d/Web/www/joplin/CliClient/app/command-cp.js:31 -#: /mnt/d/Web/www/joplin/CliClient/app/command-cp.js:34 -#: /mnt/d/Web/www/joplin/CliClient/app/command-geoloc.js:27 -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:29 -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:36 -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:39 -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:39 -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:46 -#: /mnt/d/Web/www/joplin/CliClient/app/command-search.js:29 -#: /mnt/d/Web/www/joplin/CliClient/app/command-set.js:31 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:25 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:28 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:34 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:35 -#: /mnt/d/Web/www/joplin/CliClient/app/command-use.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:33 +#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:31 +#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:34 +#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:27 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:29 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:36 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:39 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:39 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:46 +#: /media/veracrypt22/src/notes/CliClient/app/command-search.js:29 +#: /media/veracrypt22/src/notes/CliClient/app/command-set.js:31 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:25 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:34 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:35 +#: /media/veracrypt22/src/notes/CliClient/app/command-use.js:28 #, javascript-format msgid "Cannot find \"%s\"." msgstr "Impossible de trouver \"%s\"." -#: /mnt/d/Web/www/joplin/CliClient/app/command-config.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-config.js:13 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 " @@ -110,7 +105,7 @@ msgstr "" "fournie, la valeur de [nom] est affichée. Si ni le [nom] ni la [valeur] ne " "sont fournies, la configuration complète est affichée." -#: /mnt/d/Web/www/joplin/CliClient/app/command-cp.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:16 msgid "" "Duplicates the notes matching to [notebook]. If no notebook is " "specified the note is duplicated in the current notebook." @@ -118,94 +113,94 @@ msgstr "" "Copie les notes correspondant à [nom] vers [carnet]. Si aucun carnet n'est " "spécifié, la note est dupliqué sur place." -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:18 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:18 msgid "Edit note." msgstr "Editer la note." -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:33 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:33 msgid "Done editing." msgstr "Edition terminée." -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:39 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:39 msgid "" "No text editor is defined. Please set it using `config editor `" msgstr "" "Aucun éditeur de texte n'est défini. Veuillez le définir en utilisant la " "commande `config editor `" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:45 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:45 msgid "No active notebook." msgstr "Aucun carnet actif." -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:66 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:66 msgid "Starting to edit note. Close the editor to get back to the prompt." msgstr "" "Edition de la note en cours. Fermez l'éditeur de texte pour retourner à " "l'invite de commande." -#: /mnt/d/Web/www/joplin/CliClient/app/command-geoloc.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:16 #, fuzzy msgid "Displays a geolocation URL for the note." msgstr "Affiche tous les détails de la note." -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:16 msgid "Imports an Evernote notebook file (.enex file)." msgstr "Importer un carnet Evernote (fichier .enex)." -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:21 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:21 msgid "Do not ask for confirmation." msgstr "Ne pas demander de confirmation." -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:35 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:35 #, javascript-format msgid "Folder does not exists: \"%s\". Create it?" msgstr "Ce carnet n'existe pas : \"%s\". Le créer ?" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:42 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:42 #, javascript-format msgid "Imported - %s" msgstr "Importé - %s" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:55 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:55 #, javascript-format msgid "File \"%s\" will be imported into notebook \"%s\". Continue?" msgstr "Le fichier \"%s\" va être importé dans le carnet \"%s\". Continuer ?" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:62 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:62 #, javascript-format msgid "Found: %d." msgstr "Trouvés : %d." -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:63 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:63 #, javascript-format msgid "Created: %d." msgstr "Créés : %d." -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:64 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:64 #, javascript-format msgid "Updated: %d." msgstr "Mise à jour : %d." -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:65 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:65 #, javascript-format msgid "Skipped: %d." msgstr "Ignorés : %d." -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:66 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:66 #, javascript-format msgid "Resources: %d." msgstr "Ressources : %d." -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:67 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:67 #, javascript-format msgid "Tagged: %d." msgstr "Etiquettes : %d." -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:78 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:78 msgid "Importing notes..." msgstr "Importation des notes..." -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:19 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:19 msgid "" "Displays the notes in [notebook]. Use `ls /` to display the list of " "notebooks." @@ -213,20 +208,20 @@ msgstr "" "Affiche les notes dans le carnet. Utilisez `ls /` pour afficher la liste des " "carnets." -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:24 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:24 msgid "Displays only the first top notes." msgstr "Affiche uniquement les premières notes." -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:25 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:25 msgid "Sorts the item by (eg. title, updated_time, created_time)." msgstr "" "Trier les notes par (par exemple, title, updated_time, created_time)." -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:26 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:26 msgid "Reverses the sorting order." msgstr "Inverser l'ordre." -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:27 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:27 msgid "" "Displays only the items of the specific type(s). Can be `n` for notes, `t` " "for todos, or `nt` for notes and todos (eg. `-tt` would display only the " @@ -236,11 +231,11 @@ msgstr "" "`n` pour les notes, `t` pour les tâches (par exemple, `-tt` affiche " "uniquement les tâches, tandis que `-ttd` affiche les notes et les tâches)." -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:28 msgid "Either \"text\" or \"json\"" msgstr "Soit \"text\" soit \"json\"" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:29 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:29 msgid "" "Use long list format. Format is ID, NOTE_COUNT (for notebook), DATE, " "TODO_CHECKED (for todos), TITLE" @@ -248,23 +243,23 @@ msgstr "" "Utilise le format de liste longue. Le format est ID, NOMBRE_DE_NOTES (pour " "les carnets), DATE, TACHE_TERMINE (pour les tâches), TITRE" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:65 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:65 msgid "Please select a notebook first." msgstr "Veuillez sélectionner un carnet d'abord." -#: /mnt/d/Web/www/joplin/CliClient/app/command-mkbook.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-mkbook.js:13 msgid "Creates a new notebook." msgstr "Créer un carnet." -#: /mnt/d/Web/www/joplin/CliClient/app/command-mknote.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-mknote.js:13 msgid "Creates a new note." msgstr "Créer une note." -#: /mnt/d/Web/www/joplin/CliClient/app/command-mknote.js:17 +#: /media/veracrypt22/src/notes/CliClient/app/command-mknote.js:17 msgid "Notes can only be created within a notebook." msgstr "Les notes ne peuvent être créées que dans un carnet." -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:16 msgid "" "Moves the notes matching to . If is a note, " "it will be moved to the notebook . If is a notebook, " @@ -274,81 +269,77 @@ msgstr "" "est une note, elle sera déplacée vers le carnet . Si " "est un carnet, il sera renommé ." -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:18 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:18 msgid "Deletes the items matching ." msgstr "Supprime les objets correspondants à ." -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:27 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:27 msgid "Deletes the items without asking for confirmation." msgstr "Supprime les objets sans demander la confirmation." -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:28 msgid "Deletes a notebook." msgstr "Supprime le carnet." -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:40 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:40 #, javascript-format msgid "Delete notebook \"%s\"?" msgstr "Supprimer le carnet \"%s\" ?" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:47 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:47 #, javascript-format msgid "%d notes match this pattern. Delete them?" msgstr "%d notes correspondent à ce motif. Les supprimer ?" -#: /mnt/d/Web/www/joplin/CliClient/app/command-search.js:19 +#: /media/veracrypt22/src/notes/CliClient/app/command-search.js:19 msgid "Searches for the given in all the notes." msgstr "Chercher le motif dans toutes les notes." -#: /mnt/d/Web/www/joplin/CliClient/app/command-set.js:17 +#: /media/veracrypt22/src/notes/CliClient/app/command-set.js:17 msgid "Sets the property of the given to the given [value]." msgstr "Assigner la valeur [value] à la propriété de la donnée." -#: /mnt/d/Web/www/joplin/CliClient/app/command-status.js:14 +#: /media/veracrypt22/src/notes/CliClient/app/command-status.js:14 msgid "Displays summary about the notes and notebooks." msgstr "Afficher un résumé des notes et carnets." -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:25 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:27 msgid "Synchronizes with remote storage." msgstr "Synchroniser les notes et carnets." -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:30 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:32 msgid "Sync to provided target (defaults to sync.target config value)" msgstr "" "Synchroniser avec la cible donnée (par défaut, la valeur de configuration " "`sync.target`)." -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:31 -msgid "For \"filesystem\" target only: Path to sync to." -msgstr "" - -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:68 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:70 msgid "Synchronisation is already in progress." msgstr "Synchronisation est déjà en cours." -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:93 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:92 #, javascript-format msgid "Synchronization target: %s" msgstr "Cible de la synchronisation : %s" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:95 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:94 msgid "Cannot initialize synchronizer." msgstr "Impossible d'initialiser le synchroniseur." -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:97 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:96 msgid "Starting synchronization..." msgstr "Commencement de la synchronisation..." -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:109 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:108 msgid "Done." msgstr "Terminé." -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:124 -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:60 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:123 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:60 msgid "Cancelling..." msgstr "Annulation..." -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:14 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:14 msgid "" " can be \"add\", \"remove\" or \"list\" to assign or remove [tag] " "from [note], or to list the notes associated with [tag]. The command `tag " @@ -359,272 +350,318 @@ msgstr "" "l'étiquette [tag]. La commande `tag list` peut être utilisée pour lister les " "étiquettes." -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:48 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:48 #, javascript-format msgid "Invalid command: \"%s\"" msgstr "Commande invalie : \"%s\"" -#: /mnt/d/Web/www/joplin/CliClient/app/command-use.js:15 +#: /media/veracrypt22/src/notes/CliClient/app/command-use.js:15 msgid "" "Switches to [notebook] - all further operations will happen within this " "notebook." msgstr "" "Changer de carnet - toutes les opérations à venir se feront dans ce carnet." -#: /mnt/d/Web/www/joplin/CliClient/app/command-version.js:12 +#: /media/veracrypt22/src/notes/CliClient/app/command-version.js:12 msgid "Displays version information" msgstr "Affiche les informations de version." -#: /mnt/d/Web/www/joplin/CliClient/app/command-version.js:17 +#: /media/veracrypt22/src/notes/CliClient/app/command-version.js:17 #, javascript-format msgid "%s %s (%s)" msgstr "%s %s (%s)" -#: /mnt/d/Web/www/joplin/CliClient/app/main.js:53 +#: /media/veracrypt22/src/notes/CliClient/app/main.js:53 msgid "Fatal error:" msgstr "Erreur fatale :" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:38 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:38 #, javascript-format msgid "All potential ports are in use - please report the issue at %s" msgstr "" "Tous les ports sont en cours d'utilisation. Veuillez signaler ce problème " "sur %s" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:58 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:58 msgid "" "The application has been authorised - you may now close this browser tab." msgstr "Le logiciel a été autorisé. Vous pouvez maintenant fermer cet onglet." -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:60 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:60 msgid "The application has been successfully authorised." msgstr "Le logiciel a été autorisé." -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:82 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:82 #, fuzzy msgid "Please open this URL in your browser to authenticate the application:" msgstr "" "Veuillez ouvrir cette URL dans votre navigateur internet pour autentifier le " "logiciel :" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:52 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/registry.js:77 +msgid "" +"Please set the \"sync.filesystem.path\" config value to the desired " +"synchronisation destination." +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:52 #, javascript-format msgid "Created local items: %d." msgstr "Objets créés localement : %d." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:53 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:53 #, javascript-format msgid "Updated local items: %d." msgstr "Objets mis à jour localement : %d." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:54 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:54 #, javascript-format msgid "Created remote items: %d." msgstr "Objets distants créés : %d." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:55 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:55 #, javascript-format msgid "Updated remote items: %d." msgstr "Objets distants mis à jour : %d." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:56 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:56 #, javascript-format msgid "Deleted local items: %d." msgstr "Objets supprimés localement : %d." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:57 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:57 #, javascript-format msgid "Deleted remote items: %d." msgstr "Objets distants supprimés : %d." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:58 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:58 #, javascript-format msgid "State: %s." msgstr "Etat : %s." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:59 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:59 #, javascript-format msgid "Last error: %s (stacktrace in log)." msgstr "Dernière erreur : %s (Plus d'information dans le journal d'erreurs)" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:61 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:61 #, javascript-format msgid "Completed: %s" msgstr "Terminé : %s" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/folder.js:81 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/folder.js:81 msgid "Conflicts" msgstr "Conflits" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/folder.js:136 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/folder.js:136 #, javascript-format msgid "A notebook with this title already exists: \"%s\"" msgstr "Un carnet avec ce titre existe déjà : \"%s\"" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/folder.js:140 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/folder.js:140 #, javascript-format msgid "Notebooks cannot be named \"%s\", which is a reserved title." msgstr "Les carnets ne peuvent être nommés \"%s\" car c'est un nom réservé." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/note.js:46 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:46 msgid "This note does not have geolocation information." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/note.js:201 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:201 #, javascript-format msgid "Cannot copy note to \"%s\" notebook" msgstr "Impossible de copier la note dans le carnet \"%s\"" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/note.js:212 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:212 #, javascript-format msgid "Cannot move note to \"%s\" notebook" msgstr "Impossible de déplacer la note vers le carnet \"%s\"" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:54 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:169 +#, fuzzy +msgid "Synchronisation target" +msgstr "Cible de la synchronisation : %s" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:171 +msgid "File system" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:172 +msgid "OneDrive" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:178 +msgid "Todo filter" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:179 +msgid "Show all" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:180 +msgid "Non-completed and recently completed ones" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:181 +msgid "Non-completed ones only" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:54 msgid "Sync status (synced items / total items)" msgstr "Status de la synchronisation (objets synchro. / total)" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:59 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:59 #, javascript-format msgid "%s: %d/%d" msgstr "%s: %d/%d" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:62 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:62 #, javascript-format msgid "Total: %d/%d" msgstr "Total : %d/%d" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:64 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:64 #, javascript-format msgid "Conflicted: %d" msgstr "Conflits : %d" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:65 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:65 #, javascript-format msgid "To delete: %d" msgstr "A supprimer : %d" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:70 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:70 msgid "Folders" msgstr "Carnets" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:80 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:80 #, javascript-format msgid "%s: %d notes" msgstr "%s : %d notes" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/action-button.js:66 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/action-button.js:66 msgid "New todo" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/action-button.js:73 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/action-button.js:73 msgid "New note" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/action-button.js:81 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/action-button.js:81 #, fuzzy msgid "New notebook" msgstr "Supprime le carnet." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screen-header.js:208 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screen-header.js:215 msgid "Log" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screen-header.js:213 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screen-header.js:220 #, fuzzy msgid "Status" msgstr "Etat : %s." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/side-menu-content.js:106 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screen-header.js:229 +msgid "Configuration" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/side-menu-content.js:106 msgid "Synchronize" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/side-menu-content.js:106 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/side-menu-content.js:106 #, fuzzy msgid "Cancel synchronization" msgstr "Commencement de la synchronisation..." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/folder.js:73 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/config.js:101 +msgid "Save" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/folder.js:73 #, javascript-format msgid "The folder could not be saved: %s" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/folders.js:21 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/folders.js:21 msgid "" "There is currently no notebook. Create one by clicking on the (+) button." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:194 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:173 msgid "Untitled" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:237 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:216 #, fuzzy msgid "Delete note?" msgstr "Supprimer le carnet \"%s\" ?" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:280 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:259 msgid "Attach file" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:281 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:260 #, fuzzy msgid "Delete note" msgstr "Supprime le carnet." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:282 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:261 msgid "Convert to regular note" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:282 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:261 msgid "Convert to todo" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:283 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:262 msgid "Hide metadata" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:283 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:262 msgid "Show metadata" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:284 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:263 msgid "View location on map" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:435 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:414 msgid "Edit" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:23 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:23 #, fuzzy msgid "Delete notebook?" msgstr "Supprimer le carnet \"%s\" ?" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:46 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:46 #, fuzzy msgid "Delete notebook" msgstr "Supprime le carnet." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:47 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:47 #, fuzzy msgid "Edit notebook" msgstr "Editer la note." -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:66 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:66 msgid "There are currently no notes. Create one by clicking on the (+) button." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/welcome.js:31 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/welcome.js:31 msgid "" "Click on the (+) button to create a new note or notebook. Click on the side " "menu to access your existing notebooks." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/welcome.js:31 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/welcome.js:31 msgid "You currently have no notebook. Create one by clicking on (+) button." msgstr "" +#~ msgid "Synchronizing with directory \"%s\"" +#~ msgstr "Synchronisation avec dossier \"%s\"" + #, fuzzy #~ msgid "Invalid command. Showing help:" #~ msgstr "Commande invalie : \"%s\"" diff --git a/CliClient/locales/joplin.pot b/CliClient/locales/joplin.pot index 2e1b60f22..c8c0e5ba3 100644 --- a/CliClient/locales/joplin.pot +++ b/CliClient/locales/joplin.pot @@ -15,569 +15,602 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:94 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:91 msgid "No notebook selected." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:99 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:96 msgid "No notebook has been specified." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:130 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:127 msgid "Usage: --profile " msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:137 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:134 msgid "Usage: --env " msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:162 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:159 msgid "Usage: --log-level " msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:169 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:166 #, javascript-format msgid "Unknown flag: %s" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:185 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:182 #, javascript-format msgid "" "Command line argument \"%s\" contains both quotes and double-quotes - " "aborting." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:205 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:202 msgid "Provides help for a given command." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:207 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:204 msgid "Exits the application." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:339 -#, javascript-format -msgid "Synchronizing with directory \"%s\"" -msgstr "" - -#: /mnt/d/Web/www/joplin/CliClient/app/app.js:421 +#: /media/veracrypt22/src/notes/CliClient/app/app.js:419 msgid "No notebook is defined. Create one with `mkbook `." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-alias.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-alias.js:13 msgid "" "Creates a new command alias which can then be used as a regular command (eg. " "`alias ll \"ls -l\"`)." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-cat.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:16 msgid "Displays the given note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-cat.js:21 +#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:21 msgid "Displays the complete information about note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-cat.js:33 -#: /mnt/d/Web/www/joplin/CliClient/app/command-cp.js:31 -#: /mnt/d/Web/www/joplin/CliClient/app/command-cp.js:34 -#: /mnt/d/Web/www/joplin/CliClient/app/command-geoloc.js:27 -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:29 -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:36 -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:39 -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:39 -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:46 -#: /mnt/d/Web/www/joplin/CliClient/app/command-search.js:29 -#: /mnt/d/Web/www/joplin/CliClient/app/command-set.js:31 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:25 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:28 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:34 -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:35 -#: /mnt/d/Web/www/joplin/CliClient/app/command-use.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:33 +#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:31 +#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:34 +#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:27 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:29 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:36 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:39 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:39 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:46 +#: /media/veracrypt22/src/notes/CliClient/app/command-search.js:29 +#: /media/veracrypt22/src/notes/CliClient/app/command-set.js:31 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:25 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:34 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:35 +#: /media/veracrypt22/src/notes/CliClient/app/command-use.js:28 #, javascript-format msgid "Cannot find \"%s\"." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-config.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-config.js:13 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 "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-cp.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:16 msgid "" "Duplicates the notes matching to [notebook]. If no notebook is " "specified the note is duplicated in the current notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:18 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:18 msgid "Edit note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:33 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:33 msgid "Done editing." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:39 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:39 msgid "" "No text editor is defined. Please set it using `config editor `" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:45 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:45 msgid "No active notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-edit.js:66 +#: /media/veracrypt22/src/notes/CliClient/app/command-edit.js:66 msgid "Starting to edit note. Close the editor to get back to the prompt." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-geoloc.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:16 msgid "Displays a geolocation URL for the note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:16 msgid "Imports an Evernote notebook file (.enex file)." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:21 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:21 msgid "Do not ask for confirmation." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:35 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:35 #, javascript-format msgid "Folder does not exists: \"%s\". Create it?" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:42 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:42 #, javascript-format msgid "Imported - %s" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:55 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:55 #, javascript-format msgid "File \"%s\" will be imported into notebook \"%s\". Continue?" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:62 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:62 #, javascript-format msgid "Found: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:63 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:63 #, javascript-format msgid "Created: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:64 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:64 #, javascript-format msgid "Updated: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:65 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:65 #, javascript-format msgid "Skipped: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:66 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:66 #, javascript-format msgid "Resources: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:67 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:67 #, javascript-format msgid "Tagged: %d." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-import-enex.js:78 +#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:78 msgid "Importing notes..." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:19 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:19 msgid "" "Displays the notes in [notebook]. Use `ls /` to display the list of " "notebooks." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:24 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:24 msgid "Displays only the first top notes." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:25 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:25 msgid "Sorts the item by (eg. title, updated_time, created_time)." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:26 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:26 msgid "Reverses the sorting order." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:27 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:27 msgid "" "Displays only the items of the specific type(s). Can be `n` for notes, `t` " "for todos, or `nt` for notes and todos (eg. `-tt` would display only the " "todos, while `-ttd` would display notes and todos." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:28 msgid "Either \"text\" or \"json\"" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:29 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:29 msgid "" "Use long list format. Format is ID, NOTE_COUNT (for notebook), DATE, " "TODO_CHECKED (for todos), TITLE" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-ls.js:65 +#: /media/veracrypt22/src/notes/CliClient/app/command-ls.js:65 msgid "Please select a notebook first." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-mkbook.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-mkbook.js:13 msgid "Creates a new notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-mknote.js:13 +#: /media/veracrypt22/src/notes/CliClient/app/command-mknote.js:13 msgid "Creates a new note." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-mknote.js:17 +#: /media/veracrypt22/src/notes/CliClient/app/command-mknote.js:17 msgid "Notes can only be created within a notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-mv.js:16 +#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:16 msgid "" "Moves the notes matching to . If is a note, " "it will be moved to the notebook . If is a notebook, " "it will be renamed to ." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:18 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:18 msgid "Deletes the items matching ." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:27 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:27 msgid "Deletes the items without asking for confirmation." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:28 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:28 msgid "Deletes a notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:40 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:40 #, javascript-format msgid "Delete notebook \"%s\"?" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-rm.js:47 +#: /media/veracrypt22/src/notes/CliClient/app/command-rm.js:47 #, javascript-format msgid "%d notes match this pattern. Delete them?" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-search.js:19 +#: /media/veracrypt22/src/notes/CliClient/app/command-search.js:19 msgid "Searches for the given in all the notes." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-set.js:17 +#: /media/veracrypt22/src/notes/CliClient/app/command-set.js:17 msgid "Sets the property of the given to the given [value]." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-status.js:14 +#: /media/veracrypt22/src/notes/CliClient/app/command-status.js:14 msgid "Displays summary about the notes and notebooks." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:25 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:27 msgid "Synchronizes with remote storage." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:30 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:32 msgid "Sync to provided target (defaults to sync.target config value)" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:31 -msgid "For \"filesystem\" target only: Path to sync to." -msgstr "" - -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:68 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:70 msgid "Synchronisation is already in progress." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:93 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:92 #, javascript-format msgid "Synchronization target: %s" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:95 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:94 msgid "Cannot initialize synchronizer." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:97 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:96 msgid "Starting synchronization..." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:109 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:108 msgid "Done." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-sync.js:124 -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:60 +#: /media/veracrypt22/src/notes/CliClient/app/command-sync.js:123 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:60 msgid "Cancelling..." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:14 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:14 msgid "" " can be \"add\", \"remove\" or \"list\" to assign or remove [tag] " "from [note], or to list the notes associated with [tag]. The command `tag " "list` can be used to list all the tags." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-tag.js:48 +#: /media/veracrypt22/src/notes/CliClient/app/command-tag.js:48 #, javascript-format msgid "Invalid command: \"%s\"" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-use.js:15 +#: /media/veracrypt22/src/notes/CliClient/app/command-use.js:15 msgid "" "Switches to [notebook] - all further operations will happen within this " "notebook." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-version.js:12 +#: /media/veracrypt22/src/notes/CliClient/app/command-version.js:12 msgid "Displays version information" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/command-version.js:17 +#: /media/veracrypt22/src/notes/CliClient/app/command-version.js:17 #, javascript-format msgid "%s %s (%s)" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/main.js:53 +#: /media/veracrypt22/src/notes/CliClient/app/main.js:53 msgid "Fatal error:" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:38 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:38 #, javascript-format msgid "All potential ports are in use - please report the issue at %s" msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:58 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:58 msgid "" "The application has been authorised - you may now close this browser tab." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:60 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:60 msgid "The application has been successfully authorised." msgstr "" -#: /mnt/d/Web/www/joplin/CliClient/app/onedrive-api-node-utils.js:82 +#: /media/veracrypt22/src/notes/CliClient/app/onedrive-api-node-utils.js:82 msgid "Please open this URL in your browser to authenticate the application:" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:52 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/registry.js:77 +msgid "" +"Please set the \"sync.filesystem.path\" config value to the desired " +"synchronisation destination." +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:52 #, javascript-format msgid "Created local items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:53 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:53 #, javascript-format msgid "Updated local items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:54 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:54 #, javascript-format msgid "Created remote items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:55 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:55 #, javascript-format msgid "Updated remote items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:56 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:56 #, javascript-format msgid "Deleted local items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:57 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:57 #, javascript-format msgid "Deleted remote items: %d." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:58 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:58 #, javascript-format msgid "State: %s." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:59 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:59 #, javascript-format msgid "Last error: %s (stacktrace in log)." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/synchronizer.js:61 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/synchronizer.js:61 #, javascript-format msgid "Completed: %s" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/folder.js:81 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/folder.js:81 msgid "Conflicts" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/folder.js:136 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/folder.js:136 #, javascript-format msgid "A notebook with this title already exists: \"%s\"" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/folder.js:140 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/folder.js:140 #, javascript-format msgid "Notebooks cannot be named \"%s\", which is a reserved title." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/note.js:46 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:46 msgid "This note does not have geolocation information." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/note.js:201 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:201 #, javascript-format msgid "Cannot copy note to \"%s\" notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/models/note.js:212 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:212 #, javascript-format msgid "Cannot move note to \"%s\" notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:54 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:169 +msgid "Synchronisation target" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:171 +msgid "File system" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:172 +msgid "OneDrive" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:178 +msgid "Todo filter" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:179 +msgid "Show all" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:180 +msgid "Non-completed and recently completed ones" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/setting.js:181 +msgid "Non-completed ones only" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:54 msgid "Sync status (synced items / total items)" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:59 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:59 #, javascript-format msgid "%s: %d/%d" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:62 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:62 #, javascript-format msgid "Total: %d/%d" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:64 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:64 #, javascript-format msgid "Conflicted: %d" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:65 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:65 #, javascript-format msgid "To delete: %d" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:70 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:70 msgid "Folders" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/services/report.js:80 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/services/report.js:80 #, javascript-format msgid "%s: %d notes" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/action-button.js:66 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/action-button.js:66 msgid "New todo" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/action-button.js:73 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/action-button.js:73 msgid "New note" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/action-button.js:81 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/action-button.js:81 msgid "New notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screen-header.js:208 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screen-header.js:215 msgid "Log" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screen-header.js:213 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screen-header.js:220 msgid "Status" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/side-menu-content.js:106 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screen-header.js:229 +msgid "Configuration" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/side-menu-content.js:106 msgid "Synchronize" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/side-menu-content.js:106 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/side-menu-content.js:106 msgid "Cancel synchronization" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/folder.js:73 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/config.js:101 +msgid "Save" +msgstr "" + +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/folder.js:73 #, javascript-format msgid "The folder could not be saved: %s" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/folders.js:21 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/folders.js:21 msgid "" "There is currently no notebook. Create one by clicking on the (+) button." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:194 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:173 msgid "Untitled" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:237 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:216 msgid "Delete note?" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:280 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:259 msgid "Attach file" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:281 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:260 msgid "Delete note" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:282 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:261 msgid "Convert to regular note" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:282 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:261 msgid "Convert to todo" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:283 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:262 msgid "Hide metadata" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:283 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:262 msgid "Show metadata" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:284 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:263 msgid "View location on map" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/note.js:435 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/note.js:414 msgid "Edit" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:23 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:23 msgid "Delete notebook?" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:46 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:46 msgid "Delete notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:47 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:47 msgid "Edit notebook" msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/notes.js:66 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/notes.js:66 msgid "There are currently no notes. Create one by clicking on the (+) button." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/welcome.js:31 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/welcome.js:31 msgid "" "Click on the (+) button to create a new note or notebook. Click on the side " "menu to access your existing notebooks." msgstr "" -#: /mnt/d/Web/www/joplin/ReactNativeClient/lib/components/screens/welcome.js:31 +#: /media/veracrypt22/src/notes/ReactNativeClient/lib/components/screens/welcome.js:31 msgid "You currently have no notebook. Create one by clicking on (+) button." msgstr "" diff --git a/CliClient/package.json b/CliClient/package.json index efc820be9..b6e82245b 100644 --- a/CliClient/package.json +++ b/CliClient/package.json @@ -20,6 +20,7 @@ "jssha": "^2.3.0", "levenshtein": "^1.0.5", "lodash": "^4.17.4", + "md5": "^2.2.1", "mkdirp": "^0.5.1", "moment": "^2.18.1", "moment-timezone": "^0.5.13", diff --git a/CliClient/tests/synchronizer.js b/CliClient/tests/synchronizer.js index 0f5db435b..4c347deb2 100644 --- a/CliClient/tests/synchronizer.js +++ b/CliClient/tests/synchronizer.js @@ -17,8 +17,6 @@ process.on('unhandledRejection', (reason, p) => { jasmine.DEFAULT_TIMEOUT_INTERVAL = 9000; // The first test is slow because the database needs to be built -const syncTargetId = Database.enumId('syncTarget', 'memory'); - async function allItems() { let folders = await Folder.all(); let notes = await Note.all(); diff --git a/CliClient/tests/test-utils.js b/CliClient/tests/test-utils.js index 9eae3eff9..592ed222b 100644 --- a/CliClient/tests/test-utils.js +++ b/CliClient/tests/test-utils.js @@ -29,7 +29,8 @@ Resource.fsDriver_ = fsDriver; const logDir = __dirname + '/../tests/logs'; fs.mkdirpSync(logDir, 0o755); -const syncTarget = 'filesystem'; +//const syncTarget = 'filesystem'; +const syncTarget = 'memory'; const syncDir = __dirname + '/../tests/sync'; const logger = new Logger(); @@ -46,8 +47,7 @@ Setting.setConstant('appId', 'net.cozic.joplin-cli'); Setting.setConstant('appType', 'cli'); function syncTargetId() { - return JoplinDatabase.enumId('syncTarget', 'filesystem'); - //return JoplinDatabase.enumId('syncTarget', 'memory'); + return JoplinDatabase.enumId('syncTarget', syncTarget); } function sleep(n) { diff --git a/CliClient/yarn.lock b/CliClient/yarn.lock index b736b7953..e668cf215 100644 --- a/CliClient/yarn.lock +++ b/CliClient/yarn.lock @@ -776,6 +776,10 @@ chalk@^1.0.0, chalk@^1.1.0: strip-ansi "^3.0.0" supports-color "^2.0.0" +charenc@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + chokidar@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -843,6 +847,10 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +crypt@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -1257,7 +1265,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.5: +is-buffer@^1.1.5, is-buffer@~1.1.1: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" @@ -1483,6 +1491,14 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0" +md5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" + dependencies: + charenc "~0.0.1" + crypt "~0.0.1" + is-buffer "~1.1.1" + micromatch@^2.1.5: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" diff --git a/ReactNativeClient/lib/components/side-menu-content.js b/ReactNativeClient/lib/components/side-menu-content.js index 9cc7155ae..af3ad2f65 100644 --- a/ReactNativeClient/lib/components/side-menu-content.js +++ b/ReactNativeClient/lib/components/side-menu-content.js @@ -70,7 +70,7 @@ class SideMenuContentComponent extends Component { } async synchronize_press() { - const sync = await reg.synchronizer() + const sync = await reg.synchronizer(Setting.value('sync.target')) if (this.props.syncStarted) { sync.cancel(); diff --git a/ReactNativeClient/lib/file-api-driver-onedrive.js b/ReactNativeClient/lib/file-api-driver-onedrive.js index cefceb367..ae588d8b8 100644 --- a/ReactNativeClient/lib/file-api-driver-onedrive.js +++ b/ReactNativeClient/lib/file-api-driver-onedrive.js @@ -185,12 +185,10 @@ class FileApiDriverOneDrive { }; let context = options ? options.context : null; - - let url = null; + let url = context ? context.nextLink : null; let query = null; - if (context) { - url = context.nextLink; - } else { + + if (!url) { url = this.makePath_(path) + ':/delta'; query = this.itemFilter_(); query.select += ',deleted'; diff --git a/ReactNativeClient/lib/models/setting.js b/ReactNativeClient/lib/models/setting.js index 4ee15529a..9de805669 100644 --- a/ReactNativeClient/lib/models/setting.js +++ b/ReactNativeClient/lib/models/setting.js @@ -166,7 +166,11 @@ Setting.defaults_ = { 'activeFolderId': { value: '', type: 'string', public: false }, 'sync.onedrive.auth': { value: '', type: 'string', public: false }, 'sync.filesystem.path': { value: '', type: 'string', public: true, appTypes: ['cli'] }, - 'sync.target': { value: 'onedrive', type: 'string', public: true, label: () => _('Synchronisation target') }, + 'sync.target': { value: 'onedrive', type: 'enum', public: true, label: () => _('Synchronisation target'), options: () => ({ + 1: 'Memory', + 2: _('File system'), + 3: _('OneDrive'), + })}, 'sync.context': { value: '', type: 'string', public: false }, 'editor': { value: '', type: 'string', public: true, appTypes: ['cli'] }, 'locale': { value: 'en_GB', type: 'string', public: true }, diff --git a/ReactNativeClient/lib/onedrive-api.js b/ReactNativeClient/lib/onedrive-api.js index fcee18e49..d1c74b8b1 100644 --- a/ReactNativeClient/lib/onedrive-api.js +++ b/ReactNativeClient/lib/onedrive-api.js @@ -127,6 +127,8 @@ class OneDriveApi { } async exec(method, path, query = null, data = null, options = null) { + if (!path) throw new Error('Path is required'); + method = method.toUpperCase(); if (!options) options = {}; diff --git a/ReactNativeClient/lib/registry.js b/ReactNativeClient/lib/registry.js index 02c7141f6..ed7fcc144 100644 --- a/ReactNativeClient/lib/registry.js +++ b/ReactNativeClient/lib/registry.js @@ -3,8 +3,11 @@ import { Setting } from 'lib/models/setting.js'; import { OneDriveApi } from 'lib/onedrive-api.js'; import { parameters } from 'lib/parameters.js'; import { FileApi } from 'lib/file-api.js'; +import { Database } from 'lib/database.js'; import { Synchronizer } from 'lib/synchronizer.js'; import { FileApiDriverOneDrive } from 'lib/file-api-driver-onedrive.js'; +import { shim } from 'lib/shim.js'; +import { FileApiDriverMemory } from 'lib/file-api-driver-memory.js'; const reg = {}; @@ -50,28 +53,46 @@ reg.oneDriveApi = () => { return reg.oneDriveApi_; } -reg.fileApi = async () => { - if (reg.fileApi_) return reg.fileApi_; - - let driver = new FileApiDriverOneDrive(reg.oneDriveApi()); - let appDir = await reg.oneDriveApi().appDirectory(); - - reg.fileApi_ = new FileApi(appDir, driver); - reg.fileApi_.setLogger(reg.logger()); - - return reg.fileApi_; -} - -reg.synchronizer = async () => { - if (reg.synchronizer_) return reg.synchronizer_; +reg.synchronizer = async (syncTargetId) => { + if (!reg.synchronizers_) reg.synchronizers_ = []; + if (reg.synchronizers_[syncTargetId]) return reg.synchronizers_[syncTargetId]; if (!reg.db()) throw new Error('Cannot initialize synchronizer: db not initialized'); - let fileApi = await reg.fileApi(); - reg.synchronizer_ = new Synchronizer(reg.db(), fileApi, Setting.value('appType')); - reg.synchronizer_.setLogger(reg.logger()); - reg.synchronizer_.dispatch = reg.dispatch; - return reg.synchronizer_; + let fileApi = null; + + if (syncTargetId == 'onedrive') { + + if (!reg.oneDriveApi().auth()) throw new Error('User is not authentified'); + let appDir = await reg.oneDriveApi().appDirectory(); + fileApi = new FileApi(appDir, new FileApiDriverOneDrive(reg.oneDriveApi())); + + } else if (syncTargetId == 'memory') { + + fileApi = new FileApi('joplin', new FileApiDriverMemory()); + + } else if (syncTargetId == 'filesystem') { + + let syncDir = Setting.value('sync.filesystem.path'); + if (!syncDir) throw new Error(_('Please set the "sync.filesystem.path" config value to the desired synchronisation destination.')); + await shim.fs.mkdirp(syncDir, 0o755); + fileApi = new FileApi(syncDir, new shim.FileApiDriverLocal()); + + } else { + + throw new Error('Unknown sync target: ' + syncTargetId); + + } + + fileApi.setLogger(reg.logger()); + + let sync = new Synchronizer(reg.db(), fileApi, Setting.value('appType')); + sync.setLogger(reg.logger()); + sync.dispatch = reg.dispatch; + + reg.synchronizers_[syncTargetId] = sync; + + return sync; } reg.scheduleSync = async (delay = null) => { diff --git a/ReactNativeClient/lib/shim-init-node.js b/ReactNativeClient/lib/shim-init-node.js index abdcc314f..33cdc5ac8 100644 --- a/ReactNativeClient/lib/shim-init-node.js +++ b/ReactNativeClient/lib/shim-init-node.js @@ -1,10 +1,16 @@ import fs from 'fs-extra'; import { shim } from 'lib/shim.js'; import { GeolocationNode } from 'lib/geolocation-node.js'; +import { FileApiDriverLocal } from 'lib/file-api-driver-local.js'; + function shimInit() { + shim.fs = fs; + shim.FileApiDriverLocal = FileApiDriverLocal; shim.Geolocation = GeolocationNode; - + shim.fetch = require('node-fetch'); + shim.FormData = require('form-data'); + shim.fetchBlob = async function(url, options) { if (!options || !options.path) throw new Error('fetchBlob: target file path is missing'); if (!options.method) options.method = 'GET'; diff --git a/ReactNativeClient/lib/shim.js b/ReactNativeClient/lib/shim.js index 6083a72d5..a011ed864 100644 --- a/ReactNativeClient/lib/shim.js +++ b/ReactNativeClient/lib/shim.js @@ -11,15 +11,7 @@ shim.isReactNative = () => { shim.fetch = typeof fetch !== 'undefined' ? fetch : null; shim.FormData = typeof FormData !== 'undefined' ? FormData : null; - -if (!shim.fetch) { - let moduleName = 'node-fetch'; - shim.fetch = require(moduleName); -} - -if (!shim.FormData) { - let moduleName = 'form-data'; - shim.FormData = require(moduleName); -} +shim.fs = null; +shim.FileApiDriverLocal = null; export { shim }; \ No newline at end of file diff --git a/joplin.sublime-project b/joplin.sublime-project index b32f8b7ab..fafe3cde4 100755 --- a/joplin.sublime-project +++ b/joplin.sublime-project @@ -27,6 +27,9 @@ "CliClient/app/src", "CliClient/app/lib", "*.jar", + "*.po", + "*.pot", + "locales/*.json", ] } ]