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

Compare commits

...

39 Commits

Author SHA1 Message Date
Laurent Cozic
70a33f8533 CLI 0.10.84 2017-12-29 11:17:07 +01:00
Laurent Cozic
23722719f0 Merge pull request #82 from gabcoh/autocomplete
Added auto complete
2017-12-29 10:54:38 +01:00
Laurent Cozic
d499251206 Update app-gui.js
Invalidate root after inputting command
2017-12-29 10:39:50 +01:00
Laurent Cozic
ab959623aa CLI: Fixes #117: 'edit' command raising error in shell mode 2017-12-28 19:14:03 +00:00
Gabe Cohen
20632ae1c1 Correctly implement autocomplete menu with prefix 2017-12-24 12:27:25 -06:00
Gabe Cohen
3146273409 Improve autocomplete
All commands and sub commands should now autocomplete. Titles are now wrapped in spaces and quoted titles are now properly parsed.
2017-12-22 19:48:56 -06:00
Laurent Cozic
0926755635 Create README_debugging.md 2017-12-17 18:54:29 +01:00
Laurent Cozic
75f8234db5 All: Added Russian translation. Thanks @rtmkrlv 2017-12-17 12:34:56 +01:00
Laurent Cozic
b8e85e1587 Merge pull request #106 from rtmkrlv/russian-locale
Russian localisation
2017-12-17 11:33:34 +00:00
Laurent Cozic
b6add857f9 Merge branch 'master' of github.com:laurent22/joplin 2017-12-17 12:30:47 +01:00
Laurent Cozic
4e41731c08 All: Updated translations 2017-12-17 12:30:32 +01:00
rtmkrlv
6ac3b8a8f9 Add files via upload
Russian localisation for Joplin. 100% done, but some corrections may be required.
2017-12-16 20:41:04 +02:00
Gabe Cohen
4756238821 Remove unused import 2017-12-15 06:39:50 -06:00
Laurent Cozic
7ab2b11c9d Update README.md
Updated list of supported languages
2017-12-15 10:07:55 +00:00
Laurent Cozic
1eb1c5914c Merge branch 'master' of github.com:laurent22/joplin 2017-12-15 08:46:39 +00:00
Laurent Cozic
5780951f7d Updated translations 2017-12-15 08:46:30 +00:00
Laurent Cozic
67e790e393 Merge pull request #95 from tbroadley/fix-typos
Fix typos
2017-12-15 07:21:26 +00:00
Thomas Broadley
0d472486ca Fix typos 2017-12-14 19:10:47 -05:00
Gabe Cohen
39c73e1649 Improve autocompletion
1. Removed autocomplete menu because it lists the entire line, not just what is
being autocompleted.

2. Autocomplete positional args first unless cursor is at - then autocomplete
long options

3. Don't autocomplete an options that is already present.

4. Other fixes
2017-12-14 07:53:49 -06:00
Gabe Cohen
3bf9d01f0a Remove unused code and retab 2017-12-14 07:01:00 -06:00
Gabe Cohen
89ef33f7ca convert spaces to tabs 2017-12-13 21:25:18 -06:00
Gabe Cohen
f71fe9a1a6 Make autocomplete more intelligent 2017-12-13 21:13:43 -06:00
Gabe Cohen
671e538740 Contain autocomplete in StatusBarWidget.js
StatusBarWidget.js now imports app itself and gets command names.
app-gui.js no longer sets the autocomplete of StatusBarWidget itself.
2017-12-11 19:31:11 -06:00
Laurent Cozic
2d218904d0 Merge branch 'master' of github.com:laurent22/joplin 2017-12-11 21:20:57 +00:00
Laurent Cozic
c3fbcb8feb Update website 2017-12-11 21:20:49 +00:00
Laurent Cozic
64031ac6cf Merge pull request #40 from Cogitri/german-locale
WIP: Add German (Germany) locale
2017-12-11 20:43:07 +00:00
Laurent Cozic
caae7f7cf8 CLI v0.10.83 2017-12-11 20:12:41 +00:00
Laurent Cozic
d56b247adf Electron release v0.10.39 2017-12-11 20:09:38 +00:00
Laurent Cozic
11bdfbde61 Fixed Readme typo 2017-12-10 16:44:43 +00:00
Laurent Cozic
a59bf55c16 Electron: Fixes #3: Paths with '.' would cause JSX compilation to fail 2017-12-10 16:06:43 +00:00
Laurent Cozic
043be1916c CLI: Display welcome message the first time the app is run. 2017-12-10 15:56:12 +00:00
Laurent Cozic
42e34b5c3b All: Fixes #87: Show warningn when deleting notebook that contains notes. 2017-12-10 14:09:12 +00:00
Laurent Cozic
931083b2e2 Electron: Fixes #86: App icon missing on Linux 2017-12-10 14:04:07 +00:00
Gabe Cohen
cda623a95c Added command auto complete
File based autocompletion is not yet implemented. This will require knowledge of
the command, and it's parameters. The autocomplete feture is pretty powerful
however, so this should not be very difficult to add.
2017-12-09 23:08:28 -06:00
Laurent Cozic
0f343bccda Electron: resolve #7: Show storage location in Options screen 2017-12-08 21:51:59 +00:00
Laurent Cozic
a513f6f3f0 Merge branch 'master' of github.com:laurent22/joplin 2017-12-08 21:42:37 +00:00
Laurent Cozic
08d9e9b6aa All: Added support for HTML tags found in ENEX files: colgroup, col, ins, kbd, address, caption, var, area, map 2017-12-08 17:41:32 +00:00
Rasmus Thomsen
09b9df4228 German locale: adjust articulation 2017-12-07 16:02:18 +01:00
Laurent Cozic
b9194e94aa Electron: Fixes #84: Fields losing focus in Config screen 2017-11-08 11:41:23 +00:00
58 changed files with 5755 additions and 606 deletions

View File

@@ -1,6 +1,6 @@
# General information
- All the applications share the same library, which, for historical reasons, is in ReactNativeClient/lib. This library is copied to the relevant directories when builing each app.
- All the applications share the same library, which, for historical reasons, is in ReactNativeClient/lib. This library is copied to the relevant directories when building each app.
- The translations are built by running CliClient/build-translation.sh. You normally don't need to run this if you haven't updated the translation since the compiled files are on the repository.
## macOS dependencies
@@ -34,12 +34,17 @@ From `/ElectronClient` you can also run `run.sh` to run the app for testing.
# Building the Mobile application
From `/ReactNativeClient`, run `npm install`, then `react-native run-ios` or `react-native run-android`.
First you need to setup React Native to build projects with native code. For this, follow the instructions on the [Get Started](https://facebook.github.io/react-native/docs/getting-started.html) tutorial, in the "Building Projects with Native Code" tab.
Then, from `/ReactNativeClient`, run `npm install`, then `react-native run-ios` or `react-native run-android`.
# Building the Terminal application
From `/CliClient`:
- Run `npm install`
- Then `build.sh`
- Copy the translations to the build directory: `rsync -aP ../ReactNativeClient/locales/ build/locales/`
- Run `run.sh` to start the application for testing.
```
cd CliClient
npm install
./build.sh
rsync -aP ../ReactNativeClient/locales/ build/locales/
```
Run `run.sh` to start the application for testing.

View File

@@ -80,6 +80,14 @@ class AppGui {
await this.renderer_.renderRoot();
}
termSaveState() {
return this.term().saveState();
}
termRestoreState(state) {
return this.term().restoreState(state);
}
prompt(initialText = '', promptString = ':') {
return this.widget('statusBar').prompt(initialText, promptString);
}
@@ -548,6 +556,10 @@ class AppGui {
}
this.widget('console').scrollBottom();
// Invalidate so that the screen is redrawn in case inputting a command has moved
// the GUI up (in particular due to autocompletion), it's moved back to the right position.
this.widget('root').invalidate();
}
async updateFolderList() {
@@ -826,4 +838,4 @@ class AppGui {
AppGui.INPUT_MODE_NORMAL = 1;
AppGui.INPUT_MODE_META = 2;
module.exports = AppGui;
module.exports = AppGui;

View File

@@ -283,7 +283,10 @@ class Application extends BaseApplication {
exit: () => {},
showModalOverlay: (text) => {},
hideModalOverlay: () => {},
stdoutMaxWidth: () => { return 78; }
stdoutMaxWidth: () => { return 78; },
forceRender: () => {},
termSaveState: () => {},
termRestoreState: (state) => {},
};
}

View File

@@ -0,0 +1,185 @@
var { app } = require('./app.js');
var { Note } = require('lib/models/note.js');
var { Folder } = require('lib/models/folder.js');
var { Tag } = require('lib/models/tag.js');
var { cliUtils } = require('./cli-utils.js');
var yargParser = require('yargs-parser');
async function handleAutocompletionPromise(line) {
// Auto-complete the command name
const names = await app().commandNames();
let words = getArguments(line);
//If there is only one word and it is not already a command name then you
//should look for commmands it could be
if (words.length == 1) {
if (names.indexOf(words[0]) === -1) {
let x = names.filter((n) => n.indexOf(words[0]) === 0);
if (x.length === 1) {
return x[0] + ' ';
}
return x.length > 0 ? x.map((a) => a + ' ') : line;
} else {
return line;
}
}
//There is more than one word and it is a command
const metadata = (await app().commandMetadata())[words[0]];
//If for some reason this command does not have any associated metadata
//just don't autocomplete. However, this should not happen.
if (metadata === undefined) {
return line;
}
//complete an option
let next = words.length > 1 ? words[words.length - 1] : '';
let l = [];
if (next[0] === '-') {
for (let i = 0; i<metadata.options.length; i++) {
const options = metadata.options[i][0].split(' ');
//if there are multiple options then they will be seperated by comma and
//space. The comma should be removed
if (options[0][options[0].length - 1] === ',') {
options[0] = options[0].slice(0, -1);
}
if (words.includes(options[0]) || words.includes(options[1])) {
continue;
}
//First two elements are the flag and the third is the description
//Only autocomplete long
if (options.length > 1 && options[1].indexOf(next) === 0) {
l.push(options[1]);
} else if (options[0].indexOf(next) === 0) {
l.push(options[2]);
}
}
if (l.length === 0) {
return line;
}
let ret = l.map(a=>toCommandLine(a));
ret.prefix = toCommandLine(words.slice(0, -1)) + ' ';
return ret;
}
//Complete an argument
//Determine the number of positional arguments by counting the number of
//words that don't start with a - less one for the command name
const positionalArgs = words.filter((a)=>a.indexOf('-') !== 0).length - 1;
let cmdUsage = yargParser(metadata.usage)['_'];
cmdUsage.splice(0, 1);
if (cmdUsage.length >= positionalArgs) {
let argName = cmdUsage[positionalArgs - 1];
argName = cliUtils.parseCommandArg(argName).name;
if (argName == 'note' || argName == 'note-pattern' && app().currentFolder()) {
const notes = await Note.previews(app().currentFolder().id, { titlePattern: next + '*' });
l.push(...notes.map((n) => n.title));
}
if (argName == 'notebook') {
const folders = await Folder.search({ titlePattern: next + '*' });
l.push(...folders.map((n) => n.title));
}
if (argName == 'tag') {
let tags = await Tag.search({ titlePattern: next + '*' });
l.push(...tags.map((n) => n.title));
}
if (argName == 'tag-command') {
let c = filterList(['add', 'remove', 'list'], next);
l.push(...c);
}
if (argName == 'todo-command') {
let c = filterList(['toggle', 'clear'], next);
l.push(...c);
}
}
if (l.length === 1) {
return toCommandLine([...words.slice(0, -1), l[0]]);
} else if (l.length > 1) {
let ret = l.map(a=>toCommandLine(a));
ret.prefix = toCommandLine(words.slice(0, -1)) + ' ';
return ret;
}
return line;
}
function handleAutocompletion(str, callback) {
handleAutocompletionPromise(str).then(function(res) {
callback(undefined, res);
});
}
function toCommandLine(args) {
if (Array.isArray(args)) {
return args.map(function(a) {
if(a.indexOf('"') !== -1 || a.indexOf(' ') !== -1) {
return "'" + a + "'";
} else if (a.indexOf("'") !== -1) {
return '"' + a + '"';
} else {
return a;
}
}).join(' ');
} else {
if(args.indexOf('"') !== -1 || args.indexOf(' ') !== -1) {
return "'" + args + "' ";
} else if (args.indexOf("'") !== -1) {
return '"' + args + '" ';
} else {
return args + ' ';
}
}
}
function getArguments(line) {
let inSingleQuotes = false;
let inDoubleQuotes = false;
let currentWord = '';
let parsed = [];
for(let i = 0; i<line.length; i++) {
if(line[i] === '"') {
if(inDoubleQuotes) {
inDoubleQuotes = false;
//maybe push word to parsed?
//currentWord += '"';
} else {
inDoubleQuotes = true;
//currentWord += '"';
}
} else if(line[i] === "'") {
if(inSingleQuotes) {
inSingleQuotes = false;
//maybe push word to parsed?
//currentWord += "'";
} else {
inSingleQuotes = true;
//currentWord += "'";
}
} else if (/\s/.test(line[i]) &&
!(inDoubleQuotes || inSingleQuotes)) {
if (currentWord !== '') {
parsed.push(currentWord);
currentWord = '';
}
} else {
currentWord += line[i];
}
}
if (!(inSingleQuotes || inDoubleQuotes) && /\s/.test(line[line.length - 1])) {
parsed.push('');
} else {
parsed.push(currentWord);
}
return parsed;
}
function filterList(list, next) {
let output = [];
for (let i = 0; i < list.length; i++) {
if (list[i].indexOf(next) !== 0) continue;
output.push(list[i]);
}
return output;
}
module.exports = { handleAutocompletion };

View File

@@ -76,12 +76,12 @@ class Command extends BaseCommand {
app().gui().showModalOverlay(_('Starting to edit note. Close the editor to get back to the prompt.'));
await app().gui().forceRender();
const termState = app().gui().term().saveState();
const termState = app().gui().termSaveState();
const spawnSync = require('child_process').spawnSync;
spawnSync(editorPath, editorArgs, { stdio: 'inherit' });
app().gui().term().restoreState(termState);
app().gui().termRestoreState(termState);
app().gui().hideModalOverlay();
app().gui().forceRender();

View File

@@ -65,12 +65,10 @@ class Command extends BaseCommand {
} else {
const commandNames = this.allCommands().map((a) => a.name());
this.stdout(_('Type `help [command]` for more information about a command.'));
this.stdout(_('Type `help [command]` for more information about a command; or type `help all` for the complete usage information.'));
this.stdout('');
this.stdout(_('The possible commands are:'));
this.stdout('');
this.stdout(_('Type `help all` for the complete help of all the commands.'));
this.stdout('');
this.stdout(commandNames.join(', '));
this.stdout('');
this.stdout(_('In any command, a note or notebook can be refered to by title or ID, or using the shortcuts `$n` or `$b` for, respectively, the currently selected note or notebook. `$c` can be used to refer to the currently selected item.'));

View File

@@ -29,7 +29,7 @@ class Command extends BaseCommand {
const folder = await app().loadItem(BaseModel.TYPE_FOLDER, pattern);
if (!folder) throw new Error(_('Cannot find "%s".', pattern));
const ok = force ? true : await this.prompt(_('Delete notebook "%s"?', folder.title), { booleanAnswerDefault: 'n' });
const ok = force ? true : await this.prompt(_('Delete notebook? All notes within this notebook will also be deleted.'), { booleanAnswerDefault: 'n' });
if (!ok) return;
await Folder.delete(folder.id);

View File

@@ -1,5 +1,6 @@
const Note = require('lib/models/note.js').Note;
const TextWidget = require('tkwidgets/TextWidget.js');
const { _ } = require('lib/locale.js');
class NoteWidget extends TextWidget {
@@ -32,8 +33,15 @@ class NoteWidget extends TextWidget {
this.reloadNote();
}
welcomeText() {
return _('Welcome to Joplin!\n\nType `:help shortcuts` for the list of keyboard shortcuts, or just `:help` for usage information.\n\nFor example, to create a notebook press `mb`; to create a note press `mn`.');
}
reloadNote() {
if (this.noteId_) {
if (!this.noteId_ && !this.notes.length) {
this.text = this.welcomeText();
this.scrollTop = 0;
} else if (this.noteId_) {
this.doAsync('loadNote', async () => {
this.note_ = await Note.load(this.noteId_);
this.text = this.note_ ? this.note_.title + "\n\n" + this.note_.body : '';

View File

@@ -2,6 +2,7 @@ const BaseWidget = require('tkwidgets/BaseWidget.js');
const chalk = require('chalk');
const termutils = require('tkwidgets/framework/termutils.js');
const stripAnsi = require('strip-ansi');
const { handleAutocompletion } = require('../autocompletion.js');
class StatusBarWidget extends BaseWidget {
@@ -108,6 +109,9 @@ class StatusBarWidget extends BaseWidget {
cancelable: true,
history: this.history,
default: this.promptState_.initialText,
autoComplete: handleAutocompletion,
autoCompleteHint : true,
autoCompleteMenu : true,
};
if ('cursorPosition' in this.promptState_) options.cursorPosition = this.promptState_.cursorPosition;
@@ -159,4 +163,4 @@ class StatusBarWidget extends BaseWidget {
}
module.exports = StatusBarWidget;
module.exports = StatusBarWidget;

View File

@@ -17,68 +17,66 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "Give focus to next pane"
msgstr "Fokussiere das nächste Fenster"
msgstr "Das nächste Fenster fokussieren"
msgid "Give focus to previous pane"
msgstr "Fokussiere das vorherige Fenster"
msgstr "Das vorherige Fenster fokussieren"
msgid "Enter command line mode"
msgstr "Wechsle zum Terminal-Modus"
msgstr "Zum Terminal-Modus wechseln"
msgid "Exit command line mode"
msgstr "Verlasse den Terminal-Modus"
msgstr "Den Terminal-Modus verlassen"
msgid "Edit the selected note"
msgstr "Bearbeite die ausgewählte Notiz"
msgstr "Die ausgewählte Notiz bearbeiten"
msgid "Cancel the current command."
msgstr "Breche den momentanen Befehl ab."
msgstr "Den momentanen Befehl abbrechen."
msgid "Exit the application."
msgstr "Verlasse das Programm."
msgstr "Das Programm verlassen."
msgid "Delete the currently selected note or notebook."
msgstr ""
"Lösche die momentan ausgewählte Notiz oder das momentan ausgewählte "
"Notizbuch."
msgstr "Die momentan ausgewählte Notiz(-buch) löschen."
msgid "To delete a tag, untag the associated notes."
msgstr ""
"Um eine Markierung zu löschen, habe die Markierungen zugehöriger Notizen auf."
"Hebe die Markierungen zugehöriger Notizen auf, um eine Markierung zu löschen."
msgid "Please select the note or notebook to be deleted first."
msgstr ""
"Bitte wählen Sie zuert eine Notiz oder ein Notizbuch aus, das gelöscht "
"werden soll."
"Wähle bitte zuerst eine Notiz oder ein Notizbuch aus, das gelöscht werden "
"soll."
msgid "Set a to-do as completed / not completed"
msgstr "Markiere ein ToDo as abgeschlossen / nicht abgeschlossen"
msgstr "Ein To-Do as abgeschlossen / nicht abgeschlossen markieren"
#, fuzzy
msgid "[t]oggle [c]onsole between maximized/minimized/hidden/visible."
msgstr ""
"Schal[t]e das Terminal zwischen maximiert/minimiert/versteckt/sichtbar um."
msgid "Search"
msgstr "Suche"
msgstr "Suchen"
msgid "[t]oggle note [m]etadata."
msgstr "Schal[t]e Notiz-[M]etadata ein."
msgstr "Notiz-[M]etadata einschal[t]en."
msgid "[M]ake a new [n]ote"
msgstr "Erstelle eine neue Notiz"
msgstr "Eine neue [N]otiz [m]achen"
msgid "[M]ake a new [t]odo"
msgstr "Erstelle ein neues To-Do"
msgstr "Ein neues [T]o-Do [m]achen"
msgid "[M]ake a new note[b]ook"
msgstr "Erstelle ein neues Notiz[b]uch"
msgstr "Ein neues Notiz[b]uch [m]achen"
#, fuzzy
msgid "Copy ([Y]ank) the [n]ote to a notebook."
msgstr "Kopiere die Notiz zu einem Notizbuch."
msgstr "Die Notiz zu einem Notizbuch kopieren."
msgid "Move the note to a notebook."
msgstr "Verschiebe die Notiz zu einem Notizbuch."
msgstr "Die Notiz zu einem Notizbuch verschieben."
msgid "Press Ctrl+D or type \"exit\" to exit the application"
msgstr "Drücke Strg+D oder schreibe \"exit\", um das Programm zu verlassen"
@@ -120,7 +118,7 @@ msgstr "Der Befehl \"%s\" ist nur im GUI Modus verfügbar"
#, javascript-format
msgid "Missing required argument: %s"
msgstr "Fehlender benötigtes Argument: %s"
msgstr "Fehlendes benötigtes Argument: %s"
#, javascript-format
msgid "%s: %s"
@@ -176,14 +174,14 @@ msgstr ""
"kopiert."
msgid "Marks a to-do as done."
msgstr "Markiert ein ToDo als abgeschlossen."
msgstr "Markiert ein To-Do als abgeschlossen."
#, javascript-format
msgid "Note is not a to-do: \"%s\""
msgstr "Notiz ist kein Todo: \"%s\""
msgstr "Notiz ist kein To-Do: \"%s\""
msgid "Edit note."
msgstr "Bearbeite Notiz."
msgstr "Notiz bearbeiten."
msgid ""
"No text editor is defined. Please set it using `config editor <editor-path>`"
@@ -200,7 +198,7 @@ msgstr "Notiz \"%s\" existiert nicht. Soll sie erstellt werden?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
"Beginne die Notiz zu bearbeiten. Schließ das Textbearbeitungsprogramm um "
"Beginne die Notiz zu bearbeiten. Schließ das Textbearbeitungsprogramm, um "
"zurück zum Terminal zu kommen."
msgid "Note has been saved."
@@ -232,7 +230,10 @@ msgstr "Zeigt die Benutzungsstatistik an."
msgid "Shortcuts are not available in CLI mode."
msgstr ""
msgid "Type `help [command]` for more information about a command."
#, fuzzy
msgid ""
"Type `help [command]` for more information about a command; or type `help "
"all` for the complete usage information."
msgstr ""
"Tippe `help [Befehl]` ein, um mehr Informationen über einen Befehl zu "
"erhalten."
@@ -389,9 +390,8 @@ msgstr "Löscht das gegebene Notizbuch."
msgid "Deletes the notebook without asking for confirmation."
msgstr "Löscht das Notizbuch, ohne nach einer Bestätigung zu fragen."
#, javascript-format
msgid "Delete notebook \"%s\"?"
msgstr "Notizbuch \"%s\" löschen?"
msgid "Delete notebook? All notes within this notebook will also be deleted."
msgstr ""
msgid "Deletes the notes matching <note-pattern>."
msgstr "Löscht die Notizen, die mit <note-pattern> übereinstimmen."
@@ -405,12 +405,17 @@ msgstr ""
"%d Notizen stimmen mit diesem Muster überein. Sollen sie gelöscht werden?"
msgid "Delete note?"
msgstr "Lösche Notiz?"
msgstr "Notiz löschen?"
msgid "Searches for the given <pattern> in all the notes."
msgstr "Sucht nach dem gegebenen <pattern> in allen Notizen."
msgid "Sets the property <name> of the given <note> to the given [value]."
#, fuzzy, javascript-format
msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible "
"properties are:\n"
"\n"
"%s"
msgstr ""
"Setzt die Eigenschaft <name> der gegebenen <note> zu dem gegebenen [Wert]."
@@ -423,7 +428,7 @@ msgstr "Synchronisiert mit "
msgid "Sync to provided target (defaults to sync.target config value)"
msgstr ""
"Synchronisiere mit dem gegebenen Ziel ( voreingestellt auf den sync.target "
"Mit dem gegebenen Ziel synchronisieren ( voreingestellt auf den sync.target "
"Optionswert)"
msgid "Synchronisation is already in progress."
@@ -496,7 +501,7 @@ msgstr ""
"Notizbuch verrichtet."
msgid "Displays version information"
msgstr ""
msgstr "Zeigt die Versionsnummer an"
#, javascript-format
msgid "%s %s (%s)"
@@ -540,13 +545,22 @@ msgid ""
msgstr ""
"Bitte öffne die folgende URL in deinem Browser, um das Programm zu "
"authentifizieren. Das Programm wird einen Ordner in \"Apps/Joplin\" "
"erstellen und wird nur in diesem Ordner schreiben und lesen. Es wird keinen "
"erstellen und wird nur in diesem Ordner schreiben und lesen. Es wird weder "
"Zugriff auf Dateien außerhalb dieses Ordners haben, noch auf persönliche "
"Daten. Es werden keine Daten mit Dritten geteilt."
msgid "Search:"
msgstr "Suchen:"
msgid ""
"Welcome to Joplin!\n"
"\n"
"Type `:help shortcuts` for the list of keyboard shortcuts, or just `:help` "
"for usage information.\n"
"\n"
"For example, to create a notebook press `mb`; to create a note press `mn`."
msgstr ""
msgid "File"
msgstr "Datei"
@@ -560,7 +574,7 @@ msgid "New notebook"
msgstr "Neues Notizbuch"
msgid "Import Evernote notes"
msgstr "Importiere Evernote Notizen"
msgstr "Evernote Notizen importieren"
msgid "Evernote Export Files"
msgstr ""
@@ -612,6 +626,13 @@ msgstr "OK"
msgid "Cancel"
msgstr "Abbrechen"
#, javascript-format
msgid "Notes and settings are stored in: %s"
msgstr ""
msgid "Save"
msgstr ""
msgid "Back"
msgstr "Zurück"
@@ -626,7 +647,7 @@ msgid "Please create a notebook first."
msgstr "Bitte erstelle zuerst ein Notizbuch."
msgid "Note title:"
msgstr "Notiz titel:"
msgstr "Notiz Titel:"
msgid "Please create a notebook first"
msgstr "Bitte erstelle zuerst ein Notizbuch"
@@ -646,9 +667,8 @@ msgstr "Trenne jede Markierung mit einem Komma."
msgid "Rename notebook:"
msgstr "Benne Notizbuch um:"
#, fuzzy
msgid "Set alarm:"
msgstr "Erstelle Alarm"
msgstr "Alarm erstellen:"
msgid "Layout"
msgstr "Layout"
@@ -660,11 +680,40 @@ msgstr "Kann Synchronisierer nicht initialisieren."
msgid "View them now"
msgstr ""
msgid "Active"
msgstr ""
msgid "ID"
msgstr ""
msgid "Source"
msgstr ""
#, fuzzy
msgid "Created"
msgstr "Erstellt: %d."
#, fuzzy
msgid "Updated"
msgstr "Aktualisiert: %d."
msgid "Password"
msgstr ""
msgid "Password OK"
msgstr ""
msgid ""
"Note: Only one master key is going to be used for encryption (the one marked "
"as \"active\"). Any of the keys might be used for decryption, depending on "
"how the notes or notebooks were originally encrypted."
msgstr ""
msgid "Add or remove tags"
msgstr "ge hinzu oder entferne Markierungen"
msgstr "Markierungen hinzufügen oder entfernen"
msgid "Switch between note and to-do type"
msgstr "Wechsel zwischen Notiz und To-Do Typ"
msgstr "Zwischen Notiz und To-Do Typ wechseln"
msgid "Delete"
msgstr "Löschen"
@@ -674,17 +723,25 @@ msgstr "Notizen löschen?"
msgid "No notes in here. Create one by clicking on \"New note\"."
msgstr ""
"Hier sind keine Notizen. Erstelle eine indem zu auf \"Neue Notiz\" drückst."
"Hier sind noch keine Notizen. Erstelle eine, indem du auf \"Neue Notiz\" "
"drückst."
#, fuzzy
msgid ""
"There is currently no notebook. Create one by clicking on \"New notebook\"."
msgstr ""
"Momentan existieren noch keine Notizen. Erstelle eine, indem du auf den (+) "
"Knopf drückst."
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Nicht unterstützter Link oder Nachricht: %s"
msgid "Attach file"
msgstr "Hänge Datei an"
msgstr "Datei anhängen"
msgid "Set alarm"
msgstr "Erstelle Alarm"
msgstr "Alarm erstellen"
msgid "Refresh"
msgstr "Aktualisieren"
@@ -702,9 +759,6 @@ msgstr "Importieren"
msgid "Synchronisation Status"
msgstr "Synchronisationsziel"
msgid "Delete notebook?"
msgstr "Notizbuch löschen?"
msgid "Remove this tag from all the notes?"
msgstr "Diese Markierung von allen Notizen löschen?"
@@ -724,15 +778,21 @@ msgid "Tags"
msgstr "Markierungen"
msgid "Searches"
msgstr "Sucht"
msgstr "Suchen"
#, javascript-format
msgid "Usage: %s"
#, fuzzy
msgid "Please select where the sync status should be exported to"
msgstr ""
"Wähle bitte zuerst eine Notiz oder ein Notizbuch aus, das gelöscht werden "
"soll."
#, fuzzy, javascript-format
msgid "Usage: %s"
msgstr "Benutzung: %s"
#, javascript-format
msgid "Unknown flag: %s"
msgstr ""
msgstr "Unbekanntes Argument: %s"
msgid "File system"
msgstr "Dateisystem"
@@ -766,6 +826,12 @@ msgid ""
"\n"
"Please consider using a regular OneDrive account."
msgstr ""
"Konnte nicht mit OneDrive synchronisieren.\n"
"\n"
"Dieser Fehler kommt oft vor, wenn OneDrive Business benutzt wird, das leider "
"nicht unterstützt wird.\n"
"\n"
"Bitte benutze stattdessen einen normalen OneDrive account."
#, javascript-format
msgid "Cannot access %s"
@@ -836,16 +902,6 @@ msgstr "Kann Notiz nicht zu Notizbuch \"%s\" kopieren"
msgid "Cannot move note to \"%s\" notebook"
msgstr "Kann Notiz nicht zu Notizbuch \"%s\" verschieben"
msgid "File system synchronisation target directory"
msgstr "Dateisystem-Synchronisation Zielpfad"
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
"Der Pfad, mit dem synchronisiert wird, wenn Dateisystem-Synchronisation "
"aktiviert ist. Siehe `sync.target`."
msgid "Text editor"
msgstr "Textbearbeitungsprogramm"
@@ -876,10 +932,10 @@ msgid "Dark"
msgstr "Dunkel"
msgid "Show uncompleted todos on top of the lists"
msgstr "Zeige unvollständige ToDos oben in der Liste an"
msgstr "Unvollständige To-Dos oben in der Liste anzeigen"
msgid "Save geo-location with notes"
msgstr "Speicher momentanen Standort zusammen mit Notizen"
msgstr "Momentanen Standort zusammen mit Notizen speichern"
msgid "Synchronisation interval"
msgstr "Synchronisationsinterval"
@@ -900,10 +956,10 @@ msgid "%d hours"
msgstr "%d Stunden"
msgid "Automatically update the application"
msgstr "Halte die Applikation automatisch auf den neusten Stand"
msgstr "Die Applikation automatisch aktualisieren"
msgid "Show advanced options"
msgstr "Zeige erweiterte Optionen an"
msgstr "Erweiterte Optionen anzeigen"
msgid "Synchronisation target"
msgstr "Synchronisationsziel"
@@ -913,8 +969,18 @@ msgid ""
"`sync.2.path` to specify the target directory."
msgstr ""
"Das Synchronisationsziel, mit dem synchronisiert werden soll. Wenn mit dem "
"Dateisystem synchronisiert werden soll, setzen Sie den Wert zu `sync.2."
"path`, um den Zielpfad zu spezifizieren."
"Dateisystem synchronisiert werden soll, setz den Wert zu `sync.2.path`, um "
"den Zielpfad zu spezifizieren."
msgid "Directory to synchronise with (absolute path)"
msgstr ""
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
"Der Pfad, mit dem synchronisiert wird, wenn Dateisystem-Synchronisation "
"aktiviert ist. Siehe `sync.target`."
#, javascript-format
msgid "Invalid option value: \"%s\". Possible values are: %s."
@@ -925,10 +991,11 @@ msgstr ""
#, javascript-format
msgid "\"%s\": \"%s\""
msgstr ""
msgstr "\"%s\": \"%s\""
msgid "Sync status (synced items / total items)"
msgstr "Synchronisations status (synchronisierte Notizen / insgesamt )"
msgstr ""
"Synchronisationsstatus (synchronisierte Notizen / vorhandenen Notizen )"
#, javascript-format
msgid "%s: %d/%d"
@@ -954,7 +1021,7 @@ msgid "%s: %d notes"
msgstr "%s: %d Notizen"
msgid "Coming alarms"
msgstr "Anstehender Alarm"
msgstr "Anstehende Alarme"
#, javascript-format
msgid "On %s: %s"
@@ -962,8 +1029,8 @@ msgstr "Auf %s: %s"
msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr ""
"Momentan existieren noch keine Notizen. Erstelle eine indem Sie auf den (+) "
"Knopf drücken."
"Momentan existieren noch keine Notizen. Erstelle eine, indem du auf den (+) "
"Knopf drückst."
msgid "Delete these notes?"
msgstr "Sollen diese Notizen gelöscht werden?"
@@ -981,11 +1048,11 @@ msgid "Configuration"
msgstr "Konfiguration"
msgid "Move to notebook..."
msgstr "Verschiebe zu Notizbuch..."
msgstr "Zu Notizbuch verschieben..."
#, javascript-format
msgid "Move %d notes to notebook \"%s\"?"
msgstr "Verschiebe %d Notizen zu dem Notizbuch \"%s\"?"
msgstr "%d Notizen zu dem Notizbuch \"%s\" verschieben?"
msgid "Select date"
msgstr "Datum ausswählen"
@@ -1026,7 +1093,7 @@ msgid "Convert to note"
msgstr "Zu einer Notiz umwandeln"
msgid "Convert to todo"
msgstr "Zu einem ToDo umwandeln"
msgstr "Zu einem To-Do umwandeln"
msgid "Hide metadata"
msgstr "Metadaten verstecken"
@@ -1047,16 +1114,29 @@ msgid ""
"Click on the (+) button to create a new note or notebook. Click on the side "
"menu to access your existing notebooks."
msgstr ""
"Drücken Sie auf den (+) Knopf, um eine neue Notiz oder ein neues Notizbuch "
"zu erstellen."
"Drücke auf den (+) Knopf, um eine neue Notiz oder ein neues Notizbuch zu "
"erstellen."
msgid "You currently have no notebook. Create one by clicking on (+) button."
msgstr ""
"Du habst noch kein Notizbuch. Sie können eines erstellen, indem Sie auf den "
"(+) Knopf drücken."
"Du hast noch kein Notizbuch. Du kannst eines erstellen, indem du auf den (+) "
"Knopf drückst."
msgid "Welcome"
msgstr "Wilkommen"
#, fuzzy
#~ msgid "Some items cannot be decrypted."
#~ msgstr "Kann Synchronisierer nicht initialisieren."
#~ msgid "Delete notebook?"
#~ msgstr "Notizbuch löschen?"
#~ msgid "Delete notebook \"%s\"?"
#~ msgstr "Notizbuch \"%s\" löschen?"
#~ msgid "File system synchronisation target directory"
#~ msgstr "Dateisystem-Synchronisation Zielpfad"
#~ msgid "Set or clear alarm:"
#~ msgstr "Erstelle oder entferne Alarm:"

View File

@@ -208,7 +208,9 @@ msgstr ""
msgid "Shortcuts are not available in CLI mode."
msgstr ""
msgid "Type `help [command]` for more information about a command."
msgid ""
"Type `help [command]` for more information about a command; or type `help "
"all` for the complete usage information."
msgstr ""
msgid "The possible commands are:"
@@ -343,8 +345,7 @@ msgstr ""
msgid "Deletes the notebook without asking for confirmation."
msgstr ""
#, javascript-format
msgid "Delete notebook \"%s\"?"
msgid "Delete notebook? All notes within this notebook will also be deleted."
msgstr ""
msgid "Deletes the notes matching <note-pattern>."
@@ -363,7 +364,12 @@ msgstr ""
msgid "Searches for the given <pattern> in all the notes."
msgstr ""
msgid "Sets the property <name> of the given <note> to the given [value]."
#, javascript-format
msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible "
"properties are:\n"
"\n"
"%s"
msgstr ""
msgid "Displays summary about the notes and notebooks."
@@ -473,6 +479,15 @@ msgstr ""
msgid "Search:"
msgstr ""
msgid ""
"Welcome to Joplin!\n"
"\n"
"Type `:help shortcuts` for the list of keyboard shortcuts, or just `:help` "
"for usage information.\n"
"\n"
"For example, to create a notebook press `mb`; to create a note press `mn`."
msgstr ""
msgid "File"
msgstr ""
@@ -537,6 +552,13 @@ msgstr ""
msgid "Cancel"
msgstr ""
#, javascript-format
msgid "Notes and settings are stored in: %s"
msgstr ""
msgid "Save"
msgstr ""
msgid "Back"
msgstr ""
@@ -581,6 +603,33 @@ msgstr ""
msgid "View them now"
msgstr ""
msgid "Active"
msgstr ""
msgid "ID"
msgstr ""
msgid "Source"
msgstr ""
msgid "Created"
msgstr ""
msgid "Updated"
msgstr ""
msgid "Password"
msgstr ""
msgid "Password OK"
msgstr ""
msgid ""
"Note: Only one master key is going to be used for encryption (the one marked "
"as \"active\"). Any of the keys might be used for decryption, depending on "
"how the notes or notebooks were originally encrypted."
msgstr ""
msgid "Add or remove tags"
msgstr ""
@@ -596,6 +645,10 @@ msgstr ""
msgid "No notes in here. Create one by clicking on \"New note\"."
msgstr ""
msgid ""
"There is currently no notebook. Create one by clicking on \"New notebook\"."
msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
@@ -621,9 +674,6 @@ msgstr ""
msgid "Synchronisation Status"
msgstr ""
msgid "Delete notebook?"
msgstr ""
msgid "Remove this tag from all the notes?"
msgstr ""
@@ -645,6 +695,9 @@ msgstr ""
msgid "Searches"
msgstr ""
msgid "Please select where the sync status should be exported to"
msgstr ""
#, javascript-format
msgid "Usage: %s"
msgstr ""
@@ -752,14 +805,6 @@ msgstr ""
msgid "Cannot move note to \"%s\" notebook"
msgstr ""
msgid "File system synchronisation target directory"
msgstr ""
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
msgid "Text editor"
msgstr ""
@@ -824,6 +869,14 @@ msgid ""
"`sync.2.path` to specify the target directory."
msgstr ""
msgid "Directory to synchronise with (absolute path)"
msgstr ""
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
#, javascript-format
msgid "Invalid option value: \"%s\". Possible values are: %s."
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +1,33 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Laurent Cozic
# Joplin translation to Spanish (Spain)
# Copyright (C) 2017 Lucas Vieites
# This file is distributed under the same license as the Joplin-CLI package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# Lucas Vieites <lucas.vieites@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Joplin-CLI 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"Language-Team: \n"
"Last-Translator: Lucas Vieites\n"
"Language-Team: Spanish <lucas.vieites@gmail.com>\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"X-Generator: Poedit 2.0.4\n"
"Last-Translator: \n"
"X-Generator: Poedit 1.8.11\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: es_419\n"
"X-Poedit-SourceCharset: UTF-8\n"
msgid "Give focus to next pane"
msgstr "Dar enfoque al siguiente panel"
msgstr "Enfocar el siguiente panel"
msgid "Give focus to previous pane"
msgstr "Dar enfoque al panel anterior"
msgstr "Enfocar el panel anterior"
msgid "Enter command line mode"
msgstr "Entrar modo linea de comandos"
msgstr "Entrar en modo línea de comandos"
msgid "Exit command line mode"
msgstr "Salir modo linea de comandos"
msgstr "Salir del modo línea de comandos"
msgid "Edit the selected note"
msgstr "Editar la nota seleccionada"
@@ -43,32 +42,31 @@ msgid "Delete the currently selected note or notebook."
msgstr "Eliminar la nota o libreta seleccionada."
msgid "To delete a tag, untag the associated notes."
msgstr "Para eliminar una etiqueta, desmarca las notas asociadas."
msgstr "Desmarque las notas asociadas para eliminar una etiqueta."
msgid "Please select the note or notebook to be deleted first."
msgstr "Por favor selecciona la nota o libreta a elliminar."
msgstr "Seleccione primero la nota o libreta que desea eliminar."
#, fuzzy
msgid "Set a to-do as completed / not completed"
msgstr "Marca una tarea como completado / no completado"
msgstr "Marca una tarea como completada/no completada"
msgid "[t]oggle [c]onsole between maximized/minimized/hidden/visible."
msgstr "[c]ambia la [c]onsola entre maximizado/minimizado/oculto/visible."
msgstr "in[t]ercambia la [c]onsola entre maximizada/minimizada/oculta/visible."
msgid "Search"
msgstr "Buscar"
msgid "[t]oggle note [m]etadata."
msgstr "[c]ambia los [m]etadatos de una nota."
msgstr "in[t]ercambia los [m]etadatos de una nota."
msgid "[M]ake a new [n]ote"
msgstr "[H]acer una [n]ota nueva"
msgstr "[C]rear una [n]ota nueva"
msgid "[M]ake a new [t]odo"
msgstr "[H]acer una nueva [t]area"
msgstr "[C]rear una [t]area nueva"
msgid "[M]ake a new note[b]ook"
msgstr "[H]acer una nueva [l]ibreta"
msgstr "[C]rear una li[b]reta nueva"
msgid "Copy ([Y]ank) the [n]ote to a notebook."
msgstr "Copiar ([Y]ank) la [n]ota a una libreta."
@@ -77,14 +75,15 @@ msgid "Move the note to a notebook."
msgstr "Mover la nota a una libreta."
msgid "Press Ctrl+D or type \"exit\" to exit the application"
msgstr "Presiona Ctrl+D o escribe \"salir\" para salir de la aplicación"
msgstr "Pulse Ctrl+D o escriba «salir» para salir de la aplicación"
#, javascript-format
msgid "More than one item match \"%s\". Please narrow down your query."
msgstr "Más de un artículo coincide con \"%s\". Por favor acortar tu consulta."
msgstr ""
"Hay más de un elemento que coincide con «%s», intente mejorar su consulta."
msgid "No notebook selected."
msgstr "Ninguna libreta seleccionada"
msgstr "No se ha seleccionado ninguna libreta."
msgid "No notebook has been specified."
msgstr "Ninguna libre fue especificada"
@@ -104,9 +103,13 @@ msgstr "y"
msgid "Cancelling background synchronisation... Please wait."
msgstr "Cancelando sincronización de segundo plano... Por favor espere."
#, fuzzy, javascript-format
#, javascript-format
msgid "No such command: %s"
msgstr "El comando no existe: %s"
#, javascript-format
msgid "The command \"%s\" is only available in GUI mode"
msgstr "El comando \"%s\" unicamente disponible en modo GUI"
msgstr "El comando «%s» solamente está disponible en modo GUI"
#, javascript-format
msgid "Missing required argument: %s"
@@ -217,8 +220,13 @@ msgstr "Muestra información de uso."
msgid "Shortcuts are not available in CLI mode."
msgstr "Atajos no disponibles en modo CLI."
msgid "Type `help [command]` for more information about a command."
msgstr "Escribe `help [command]` para más información acerca del comando."
msgid ""
"Type `help [command]` for more information about a command; or type `help "
"all` for the complete usage information."
msgstr ""
"Escriba `help [command]` para obtener más información sobre el comando, o "
"escriba `help all` para obtener toda la información acerca del uso del "
"programa."
msgid "The possible commands are:"
msgstr "Los posibles comandos son:"
@@ -373,9 +381,10 @@ msgstr "Elimina la libreta dada."
msgid "Deletes the notebook without asking for confirmation."
msgstr "Elimina una libreta sin pedir confirmación."
#, javascript-format
msgid "Delete notebook \"%s\"?"
msgstr "Elimina una libreta \"%s\"?"
msgid "Delete notebook? All notes within this notebook will also be deleted."
msgstr ""
"¿Desea eliminar la libreta? Todas las notas dentro de esta libreta también "
"serán eliminadas."
msgid "Deletes the notes matching <note-pattern>."
msgstr "Elimina las notas que coinciden con <note-pattern>."
@@ -393,8 +402,17 @@ msgstr "Eliminar nota?"
msgid "Searches for the given <pattern> in all the notes."
msgstr "Buscar el patron <pattern> en todas las notas."
msgid "Sets the property <name> of the given <note> to the given [value]."
msgstr "Configura la propiedad <name> en la nota dada <note> al valor [value]."
#, javascript-format
msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible "
"properties are:\n"
"\n"
"%s"
msgstr ""
"Asigna el valor [value] a la propiedad <name> de la nota indicada <note>. "
"Propiedades disponibles:\n"
"\n"
"%s"
msgid "Displays summary about the notes and notebooks."
msgstr "Muestra un resumen acerca de las notas y las libretas."
@@ -410,15 +428,15 @@ msgstr ""
msgid "Synchronisation is already in progress."
msgstr "Sincronzación en progreso."
#, fuzzy, javascript-format
#, javascript-format
msgid ""
"Lock file is already being hold. If you know that no synchronisation is "
"taking place, you may delete the lock file at \"%s\" and resume the "
"operation."
msgstr ""
"Archivo de bloqueo encontrado. Si tu sabes que no hay una sincronización en "
"curso, puedes eliminar el archivo de bloqueo en \"%s\" y reanudar la "
"operación."
"Ya hay un archivo de bloqueo. Si está seguro de que no hay una "
"sincronización en curso puede eliminar el archivo de bloqueo «%s» y reanudar "
"la operación."
msgid ""
"Authentication was not completed (did not receive an authentication token)."
@@ -508,7 +526,6 @@ msgstr ""
msgid "The application has been successfully authorised."
msgstr "La aplicacion ha sido autorizada exitosamente."
#, fuzzy
msgid ""
"Please open the following URL in your browser to authenticate the "
"application. The application will create a directory in \"Apps/Joplin\" and "
@@ -516,32 +533,48 @@ msgid ""
"any files outside this directory nor to any other personal data. No data "
"will be shared with any third party."
msgstr ""
"Por favor abre la siguiente URL en tu navegador para autenticar la "
"aplicacion. La aplicacion creara un directorio en \"Apps/Joplin\" y solo "
"leerá y escribirá archivos en este directorio. No tendra acceso a ningun "
"archivo fuera de este directorio ni a ningun otro archivo personal. Ninguna "
"informacion sera compartido con terceros."
"Abra la siguiente URL en su navegador para autenticar la aplicación. La "
"aplicación creará un directorio en «Apps/Joplin» y solo leerá y escribirá "
"archivos en este directorio. No tendrá acceso a ningún archivo fuera de este "
"directorio ni a ningún otro archivo personal. No se compartirá información "
"con terceros."
msgid "Search:"
msgstr "Bucar:"
msgstr "Buscar:"
msgid ""
"Welcome to Joplin!\n"
"\n"
"Type `:help shortcuts` for the list of keyboard shortcuts, or just `:help` "
"for usage information.\n"
"\n"
"For example, to create a notebook press `mb`; to create a note press `mn`."
msgstr ""
"Bienvenido a Joplin.\n"
"\n"
"Escriba «:help shortcuts» para obtener una lista con los atajos de teclado, "
"o simplemente «:help» para información general.\n"
"\n"
"Por ejemplo, para crear una libreta escriba «mb», para crear una nota "
"escriba «mn»."
msgid "File"
msgstr "Archivo"
msgid "New note"
msgstr "Nueva nota"
msgstr "Nota nueva"
msgid "New to-do"
msgstr "Nueva lista de tareas"
msgstr "Lista de tareas nueva"
msgid "New notebook"
msgstr "Nueva libreta"
msgstr "Libreta nueva"
msgid "Import Evernote notes"
msgstr "Importar notas de Evernote"
msgid "Evernote Export Files"
msgstr "Exportar archivos de Evernote"
msgstr "Archivos exportados de Evernote"
msgid "Quit"
msgstr "Salir"
@@ -564,6 +597,9 @@ msgstr "Buscar en todas las notas"
msgid "Tools"
msgstr "Herramientas"
msgid "Synchronisation status"
msgstr "Estado de la sincronización"
msgid "Options"
msgstr "Opciones"
@@ -571,7 +607,7 @@ msgid "Help"
msgstr "Ayuda"
msgid "Website and documentation"
msgstr "Sitio web y documentacion"
msgstr "Sitio web y documentación"
msgid "About Joplin"
msgstr "Acerca de Joplin"
@@ -581,26 +617,31 @@ msgid "%s %s (%s, %s)"
msgstr "%s %s (%s, %s)"
msgid "OK"
msgstr "Ok"
msgstr "OK"
msgid "Cancel"
msgstr "Cancelar"
#, fuzzy
msgid "Back"
msgstr "Retroceder"
#, javascript-format
msgid "Notes and settings are stored in: %s"
msgstr "Las notas y los ajustes se guardan en: %s"
#, fuzzy, javascript-format
msgid "Save"
msgstr "Guardar"
msgid "Back"
msgstr "Atrás"
#, javascript-format
msgid ""
"New notebook \"%s\" will be created and file \"%s\" will be imported into it"
msgstr ""
"Nueva libreta \"%s\" sera creada y archivo \"%s\" sera importado dentro de"
msgstr "Se creará la nueva libreta «%s» y se importará en ella el archivo «%s»"
msgid "Please create a notebook first."
msgstr "Por favor crea una libreta primero."
msgstr "Cree primero una libreta."
msgid "Note title:"
msgstr "Título de nota:"
msgstr "Título de la nota:"
msgid "Please create a notebook first"
msgstr "Por favor crea una libreta primero"
@@ -626,31 +667,67 @@ msgstr "Ajustar alarma:"
msgid "Layout"
msgstr "Diseño"
msgid "Add or remove tags"
msgstr "Agregar o borrar etiquetas"
msgid "Some items cannot be synchronised."
msgstr "No se han podido sincronizar algunos de los elementos."
msgid "View them now"
msgstr "Verlos ahora"
msgid "Active"
msgstr ""
msgid "ID"
msgstr "ID"
msgid "Source"
msgstr "Origen"
msgid "Created"
msgstr "Creado"
msgid "Updated"
msgstr "Actualizado"
msgid "Password"
msgstr ""
msgid "Password OK"
msgstr ""
msgid ""
"Note: Only one master key is going to be used for encryption (the one marked "
"as \"active\"). Any of the keys might be used for decryption, depending on "
"how the notes or notebooks were originally encrypted."
msgstr ""
msgid "Add or remove tags"
msgstr "Añadir o borrar etiquetas"
#, fuzzy
msgid "Switch between note and to-do type"
msgstr "Cambiar entre nota y tipo de lista de tareas"
msgstr "Cambiar entre nota y lista de tareas"
msgid "Delete"
msgstr "Eliminar"
msgid "Delete notes?"
msgstr "Eliminar notas?"
msgstr "¿Desea eliminar notas?"
msgid "No notes in here. Create one by clicking on \"New note\"."
msgstr "No hay notas aqui. Crea una dando click en \"Nueva nota\"."
msgstr "No hay ninguna nota. Cree una pulsando «Nota nueva»."
msgid ""
"There is currently no notebook. Create one by clicking on \"New notebook\"."
msgstr "No hay ninguna libreta. Cree una pulsando en «Libreta nueva»."
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Enlace o mensaje sin soporte: %s"
msgstr "Enlace o mensaje no soportado: %s"
msgid "Attach file"
msgstr "Adjuntar archivo"
msgid "Set alarm"
msgstr "Ajustar alarma"
msgstr "Fijar alarma"
msgid "Refresh"
msgstr "Refrescar"
@@ -664,14 +741,14 @@ msgstr "Inicio de sesión de OneDrive"
msgid "Import"
msgstr "Importar"
msgid "Delete notebook?"
msgstr "Eliminar libreta?"
msgid "Synchronisation Status"
msgstr "Estado de la sincronización"
msgid "Remove this tag from all the notes?"
msgstr "Remover esta etiqueta de todas las notas?"
msgstr "¿Desea eliminar esta etiqueta de todas las notas?"
msgid "Remove this search from the sidebar?"
msgstr "Remover esta busqueda de la barra lateral?"
msgstr "¿Desea eliminar esta búsqueda de la barra lateral?"
msgid "Rename"
msgstr "Renombrar"
@@ -686,7 +763,10 @@ msgid "Tags"
msgstr "Etiquetas"
msgid "Searches"
msgstr "Busquedas"
msgstr "Búsquedas"
msgid "Please select where the sync status should be exported to"
msgstr "Seleccione a dónde se debería exportar el estado de sincronización"
#, javascript-format
msgid "Usage: %s"
@@ -702,9 +782,8 @@ msgstr "Sistema de archivos"
msgid "OneDrive"
msgstr "OneDrive"
#, fuzzy
msgid "OneDrive Dev (For testing only)"
msgstr "OneDrive Dev(Solo para pruebas)"
msgstr "OneDrive Dev (Solo para pruebas)"
#, javascript-format
msgid "Unknown log level: %s"
@@ -712,17 +791,15 @@ msgstr "Nivel de log desconocido: %s"
#, javascript-format
msgid "Unknown level ID: %s"
msgstr "Nivel de ID desconocido: %s"
msgstr "ID de nivel desconocido: %s"
#, fuzzy
msgid ""
"Cannot refresh token: authentication data is missing. Starting the "
"synchronisation again may fix the problem."
msgstr ""
"No se ha podido actualizar token: los datos de autenticacion estan perdidos. "
"Iniciar la sincronización nuevamente puede solucionar el problema."
"No se ha podido actualizar token: faltan datos de autenticación. Reiniciar "
"la sincronización podría solucionar el problema."
#, fuzzy
msgid ""
"Could not synchronize with OneDrive.\n"
"\n"
@@ -733,45 +810,45 @@ msgid ""
msgstr ""
"No se ha podido sincronizar con OneDrive.\n"
"\n"
"Este error muchas veces es causado cuando se esta utilizando OneDrive for "
"Business, el cual desafortunadamente no se encuentra soportado.\n"
"Este error suele ocurrir al utilizar OneDrive for Business. Este producto no "
"está soportado.\n"
"\n"
"Por favor considere utilizar una cuenta regular de OneDrive."
"Podría considerar utilizar una cuenta Personal de OneDrive."
#, fuzzy, javascript-format
#, javascript-format
msgid "Cannot access %s"
msgstr "No se ha podido acceder a %s"
#, javascript-format
msgid "Created local items: %d."
msgstr "Artículos locales creados: %d."
msgstr "Elementos locales creados: %d."
#, javascript-format
msgid "Updated local items: %d."
msgstr "Artículos locales actualizados: %d."
msgstr "Elementos locales actualizados: %d."
#, javascript-format
msgid "Created remote items: %d."
msgstr "Artículos remotos creados: %d."
msgstr "Elementos remotos creados: %d."
#, javascript-format
msgid "Updated remote items: %d."
msgstr "Artículos remotos actualizados: %d."
msgstr "Elementos remotos actualizados: %d."
#, javascript-format
msgid "Deleted local items: %d."
msgstr "Artículos locales borrados: %d."
msgstr "Elementos locales borrados: %d."
#, javascript-format
msgid "Deleted remote items: %d."
msgstr "Artículos remotos borrados: %d."
msgstr "Elementos remotos borrados: %d."
#, javascript-format
msgid "State: \"%s\"."
msgstr "Estado: \"%s\"."
msgstr "Estado: «%s»."
msgid "Cancelling..."
msgstr "Cancelando...."
msgstr "Cancelando..."
#, javascript-format
msgid "Completed: %s"
@@ -779,58 +856,46 @@ msgstr "Completado: %s"
#, javascript-format
msgid "Synchronisation is already in progress. State: %s"
msgstr "La sincronizacion ya esta en progreso. Estod: %s"
msgstr "La sincronización ya está en progreso. Estado: %s"
msgid "Conflicts"
msgstr "Conflictos"
#, javascript-format
msgid "A notebook with this title already exists: \"%s\""
msgstr "Ya existe una libreta con este nombre: \"%s\""
msgstr "Ya existe una libreta con este nombre: «%s»"
#, fuzzy, javascript-format
#, javascript-format
msgid "Notebooks cannot be named \"%s\", which is a reserved title."
msgstr ""
"Las libretas no pueden ser nombradas \"%s\", el cual es un título reservado"
"No se puede usar el nombre «%s» para una libreta; es un título reservado."
msgid "Untitled"
msgstr "Intitulado"
msgstr "Sin título"
msgid "This note does not have geolocation information."
msgstr "Esta nota no tiene informacion de geolocalización."
#, fuzzy, javascript-format
#, javascript-format
msgid "Cannot copy note to \"%s\" notebook"
msgstr "No se ha podido copiar la nota a la libreta \"%s\""
msgstr "No se ha podido copiar la nota a la libreta «%s»"
#, fuzzy, javascript-format
#, javascript-format
msgid "Cannot move note to \"%s\" notebook"
msgstr "No se ha podido mover la nota a la libreta \"%s\""
#, fuzzy
msgid "File system synchronisation target directory"
msgstr "Sincronización de sistema de archivos en directorio objetivo"
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
"La ubicacion para sincronizar cuando el sistema de archivo tenga habilitada "
"la sincronización. Ver `sync.target`."
msgstr "No se ha podido mover la nota a la libreta «%s»"
msgid "Text editor"
msgstr "Editor de texto"
#, fuzzy
msgid ""
"The editor that will be used to open a note. If none is provided it will try "
"to auto-detect the default editor."
msgstr ""
"El editor sera cápaz de abrir una nota. Si ninguna es prevista, intentara "
"auto-detectar el editor por defecto."
"El editor que se usará para abrir una nota. Se intentará auto-detectar el "
"editor predeterminado si no se proporciona ninguno."
msgid "Language"
msgstr "Lenguaje"
msgstr "Idioma"
msgid "Date format"
msgstr "Formato de fecha"
@@ -847,12 +912,11 @@ msgstr "Claro"
msgid "Dark"
msgstr "Oscuro"
#, fuzzy
msgid "Show uncompleted todos on top of the lists"
msgstr "Mostrar lista de tareas incompletas al inio de las listas"
msgstr "Mostrar tareas incompletas al inicio de las listas"
msgid "Save geo-location with notes"
msgstr "Guardar notas con geo-licalización"
msgstr "Guardar geolocalización en las notas"
msgid "Synchronisation interval"
msgstr "Intervalo de sincronización"
@@ -873,29 +937,44 @@ msgid "%d hours"
msgstr "%d horas"
msgid "Automatically update the application"
msgstr "Actualizacion automatica de la aplicación"
msgstr "Actualizar la aplicación automáticamente"
msgid "Show advanced options"
msgstr "Mostrar opciones "
msgstr "Mostrar opciones avanzadas"
msgid "Synchronisation target"
msgstr "Sincronización de objetivo"
msgstr "Destino de sincronización"
#, fuzzy
msgid ""
"The target to synchonise to. If synchronising with the file system, set "
"`sync.2.path` to specify the target directory."
msgstr ""
"El objetivo para sincronizarse a. Si sincronizando con el sistema de "
"archivos, establecer `sync.2.path` especifique el directorio destino."
"El destino de la sincronización. Si se sincroniza con el sistema de "
"archivos, indique el directorio destino en «sync.2.path»."
msgid "Directory to synchronise with (absolute path)"
msgstr "Directorio con el que sincronizarse (ruta completa)"
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
"La ruta a la que sincronizar cuando se activa la sincronización con sistema "
"de archivos. Vea «sync.target»."
#, javascript-format
msgid "Invalid option value: \"%s\". Possible values are: %s."
msgstr "Valor inválido de opción: \"%s\". Los válores inválidos son: %s."
msgstr "Opción inválida: «%s». Los valores posibles son: %s."
msgid "Items that cannot be synchronised"
msgstr "Elementos que no se pueden sincronizar"
#, javascript-format
msgid "\"%s\": \"%s\""
msgstr "«%s»: «%s»"
msgid "Sync status (synced items / total items)"
msgstr ""
"Estatus de sincronización (artículos sincronizados / total de artículos)"
msgstr "Estado de sincronización (elementos sincronizados/elementos totales)"
#, javascript-format
msgid "%s: %d/%d"
@@ -907,7 +986,7 @@ msgstr "Total: %d/%d"
#, javascript-format
msgid "Conflicted: %d"
msgstr "Conflictivo: %d"
msgstr "Conflictos: %d"
#, javascript-format
msgid "To delete: %d"
@@ -920,54 +999,50 @@ msgstr "Directorios"
msgid "%s: %d notes"
msgstr "%s: %d notas"
#, fuzzy
msgid "Coming alarms"
msgstr "Próximas alarmas"
msgstr "Alarmas inminentes"
#, javascript-format
msgid "On %s: %s"
msgstr "En %s: %s"
#, fuzzy
msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr ""
"Actualmente no hay notas. Crea una nueva nota dando client en el boton (+)."
msgstr "No hay notas. Cree una pulsando en el botón (+)."
msgid "Delete these notes?"
msgstr "Borrar estas notas?"
msgstr "¿Desea borrar estas notas?"
msgid "Log"
msgstr "Log"
msgid "Status"
msgstr "Estatus"
msgstr "Estado"
#, fuzzy
msgid "Export Debug Report"
msgstr "Exportar reporte depuracion"
msgstr "Exportar informe de depuración"
msgid "Configuration"
msgstr "Configuracion"
msgstr "Configuración"
msgid "Move to notebook..."
msgstr "Mover a libreta...."
msgstr "Mover a la libreta..."
#, javascript-format
msgid "Move %d notes to notebook \"%s\"?"
msgstr "Mover %d notas a libreta \"%s\"?"
msgstr "¿Desea mover %d notas a libreta «%s»?"
msgid "Select date"
msgstr "Seleccionar fecha"
msgstr "Seleccione fecha"
msgid "Confirm"
msgstr "Confirmar"
msgid "Cancel synchronisation"
msgstr "Sincronizacion cancelada"
msgstr "Cancelar sincronización"
#, javascript-format
msgid "The notebook could not be saved: %s"
msgstr "Esta libreta no pudo ser guardada: %s"
msgstr "No se ha podido guardar esta libreta: %s"
msgid "Edit notebook"
msgstr "Editar libreta"
@@ -998,33 +1073,44 @@ msgid "Convert to todo"
msgstr "Convertir a lista de tareas"
msgid "Hide metadata"
msgstr "Ocultar metadata"
msgstr "Ocultar metadatos"
msgid "Show metadata"
msgstr "Mostrar metadata"
msgstr "Mostrar metadatos"
msgid "View on map"
msgstr "Ver un mapa"
msgstr "Ver en un mapa"
msgid "Delete notebook"
msgstr "Borrar libreta"
msgid "Login with OneDrive"
msgstr "Loguear con OneDrive"
msgstr "Acceder con OneDrive"
#, fuzzy
msgid ""
"Click on the (+) button to create a new note or notebook. Click on the side "
"menu to access your existing notebooks."
msgstr ""
"Click en el boton (+) para crear una nueva nota o libreta. Click en el lado "
"del menu para acceder a tus libretas existentes."
"Pulse en el botón (+) para crear una nueva nota o libreta. Pulse en el menú "
"lateral para acceder a las libretas existentes."
#, fuzzy
msgid "You currently have no notebook. Create one by clicking on (+) button."
msgstr ""
"Tu actualmente no tienes una libreta. Crea una nueva libreta dando click en "
"el boton (+)."
"No hay ninguna libreta. Cree una nueva libreta pulsando en el botón (+)."
msgid "Welcome"
msgstr "Bienvenido"
#, fuzzy
#~ msgid "Some items cannot be decrypted."
#~ msgstr "No se han podido sincronizar algunos de los elementos."
#~ msgid "Delete notebook?"
#~ msgstr "Eliminar libreta?"
#~ msgid "Delete notebook \"%s\"?"
#~ msgstr "Elimina una libreta \"%s\"?"
#, fuzzy
#~ msgid "File system synchronisation target directory"
#~ msgstr "Sincronización de sistema de archivos en directorio objetivo"

View File

@@ -221,7 +221,10 @@ msgstr "Affiche les informations d'utilisation."
msgid "Shortcuts are not available in CLI mode."
msgstr "Les raccourcis ne sont pas disponible en mode de ligne de commande."
msgid "Type `help [command]` for more information about a command."
#, fuzzy
msgid ""
"Type `help [command]` for more information about a command; or type `help "
"all` for the complete usage information."
msgstr "Tapez `help [command]` pour plus d'information sur une commande."
msgid "The possible commands are:"
@@ -374,9 +377,8 @@ msgstr "Supprimer le carnet."
msgid "Deletes the notebook without asking for confirmation."
msgstr "Supprimer le carnet sans demander la confirmation."
#, javascript-format
msgid "Delete notebook \"%s\"?"
msgstr "Supprimer le carnet \"%s\" ?"
msgid "Delete notebook? All notes within this notebook will also be deleted."
msgstr ""
msgid "Deletes the notes matching <note-pattern>."
msgstr "Supprimer les notes correspondants à <note-pattern>."
@@ -394,7 +396,12 @@ msgstr "Supprimer la note ?"
msgid "Searches for the given <pattern> in all the notes."
msgstr "Chercher le motif <pattern> dans toutes les notes."
msgid "Sets the property <name> of the given <note> to the given [value]."
#, fuzzy, javascript-format
msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible "
"properties are:\n"
"\n"
"%s"
msgstr "Assigner la valeur [value] à la propriété <name> de la <note> donnée."
msgid "Displays summary about the notes and notebooks."
@@ -523,6 +530,15 @@ msgstr ""
msgid "Search:"
msgstr "Recherche :"
msgid ""
"Welcome to Joplin!\n"
"\n"
"Type `:help shortcuts` for the list of keyboard shortcuts, or just `:help` "
"for usage information.\n"
"\n"
"For example, to create a notebook press `mb`; to create a note press `mn`."
msgstr ""
msgid "File"
msgstr "Fichier"
@@ -588,6 +604,13 @@ msgstr "OK"
msgid "Cancel"
msgstr "Annulation"
#, javascript-format
msgid "Notes and settings are stored in: %s"
msgstr ""
msgid "Save"
msgstr ""
msgid "Back"
msgstr "Retour"
@@ -636,6 +659,35 @@ msgstr "Impossible d'initialiser la synchronisation."
msgid "View them now"
msgstr ""
msgid "Active"
msgstr ""
msgid "ID"
msgstr ""
msgid "Source"
msgstr ""
#, fuzzy
msgid "Created"
msgstr "Créés : %d."
#, fuzzy
msgid "Updated"
msgstr "Mis à jour : %d."
msgid "Password"
msgstr ""
msgid "Password OK"
msgstr ""
msgid ""
"Note: Only one master key is going to be used for encryption (the one marked "
"as \"active\"). Any of the keys might be used for decryption, depending on "
"how the notes or notebooks were originally encrypted."
msgstr ""
msgid "Add or remove tags"
msgstr "Gérer les étiquettes"
@@ -652,6 +704,13 @@ msgid "No notes in here. Create one by clicking on \"New note\"."
msgstr ""
"Pas de notes ici. Créez-en une en pressant le bouton \"Nouvelle note\"."
#, fuzzy
msgid ""
"There is currently no notebook. Create one by clicking on \"New notebook\"."
msgstr ""
"Il n'y a pour l'instant aucun carnet. Créez-en un en cliquant sur le bouton "
"(+)"
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Lien ou message non géré : %s"
@@ -679,9 +738,6 @@ msgstr "Importer"
msgid "Synchronisation Status"
msgstr "Cible de la synchronisation"
msgid "Delete notebook?"
msgstr "Supprimer le carnet ?"
msgid "Remove this tag from all the notes?"
msgstr "Enlever cette étiquette de toutes les notes ?"
@@ -703,6 +759,10 @@ msgstr "Étiquettes"
msgid "Searches"
msgstr "Recherches"
#, fuzzy
msgid "Please select where the sync status should be exported to"
msgstr "Veuillez d'abord sélectionner un carnet."
#, javascript-format
msgid "Usage: %s"
msgstr "Utilisation : %s"
@@ -812,16 +872,6 @@ msgstr "Impossible de copier la note vers le carnet \"%s\""
msgid "Cannot move note to \"%s\" notebook"
msgstr "Impossible de déplacer la note vers le carnet \"%s\""
msgid "File system synchronisation target directory"
msgstr "Cible de la synchronisation sur le disque dur"
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
"Le chemin du répertoire avec lequel synchroniser lorsque la synchronisation "
"par système de fichier est activée. Voir `sync.target`."
msgid "Text editor"
msgstr "Éditeur de texte"
@@ -890,6 +940,16 @@ msgstr ""
"La cible avec laquelle synchroniser. Pour synchroniser avec le système de "
"fichier, veuillez spécifier le répertoire avec `sync.2.path`."
msgid "Directory to synchronise with (absolute path)"
msgstr ""
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
"Le chemin du répertoire avec lequel synchroniser lorsque la synchronisation "
"par système de fichier est activée. Voir `sync.target`."
#, javascript-format
msgid "Invalid option value: \"%s\". Possible values are: %s."
msgstr "Option invalide: \"%s\". Les valeurs possibles sont : %s."
@@ -1032,6 +1092,19 @@ msgstr ""
msgid "Welcome"
msgstr "Bienvenue"
#, fuzzy
#~ msgid "Some items cannot be decrypted."
#~ msgstr "Impossible d'initialiser la synchronisation."
#~ msgid "Delete notebook?"
#~ msgstr "Supprimer le carnet ?"
#~ msgid "Delete notebook \"%s\"?"
#~ msgstr "Supprimer le carnet \"%s\" ?"
#~ msgid "File system synchronisation target directory"
#~ msgstr "Cible de la synchronisation sur le disque dur"
#~ msgid "Set or clear alarm:"
#~ msgstr "Définir ou modifier alarme :"
@@ -1205,12 +1278,6 @@ msgstr "Bienvenue"
#~ "Tous les ports sont en cours d'utilisation. Veuillez signaler ce problème "
#~ "sur %s"
#~ msgid ""
#~ "There is currently no notebook. Create one by clicking on the (+) button."
#~ msgstr ""
#~ "Il n'y a pour l'instant aucun carnet. Créez-en un en cliquant sur le "
#~ "bouton (+)"
#~ msgid "Synchronizing with directory \"%s\""
#~ msgstr "Synchronisation avec dossier \"%s\""

1112
CliClient/locales/hr_HR.po Normal file

File diff suppressed because it is too large Load Diff

1106
CliClient/locales/it_IT.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -208,7 +208,9 @@ msgstr ""
msgid "Shortcuts are not available in CLI mode."
msgstr ""
msgid "Type `help [command]` for more information about a command."
msgid ""
"Type `help [command]` for more information about a command; or type `help "
"all` for the complete usage information."
msgstr ""
msgid "The possible commands are:"
@@ -343,8 +345,7 @@ msgstr ""
msgid "Deletes the notebook without asking for confirmation."
msgstr ""
#, javascript-format
msgid "Delete notebook \"%s\"?"
msgid "Delete notebook? All notes within this notebook will also be deleted."
msgstr ""
msgid "Deletes the notes matching <note-pattern>."
@@ -363,7 +364,12 @@ msgstr ""
msgid "Searches for the given <pattern> in all the notes."
msgstr ""
msgid "Sets the property <name> of the given <note> to the given [value]."
#, javascript-format
msgid ""
"Sets the property <name> of the given <note> to the given [value]. Possible "
"properties are:\n"
"\n"
"%s"
msgstr ""
msgid "Displays summary about the notes and notebooks."
@@ -473,6 +479,15 @@ msgstr ""
msgid "Search:"
msgstr ""
msgid ""
"Welcome to Joplin!\n"
"\n"
"Type `:help shortcuts` for the list of keyboard shortcuts, or just `:help` "
"for usage information.\n"
"\n"
"For example, to create a notebook press `mb`; to create a note press `mn`."
msgstr ""
msgid "File"
msgstr ""
@@ -537,6 +552,13 @@ msgstr ""
msgid "Cancel"
msgstr ""
#, javascript-format
msgid "Notes and settings are stored in: %s"
msgstr ""
msgid "Save"
msgstr ""
msgid "Back"
msgstr ""
@@ -581,6 +603,33 @@ msgstr ""
msgid "View them now"
msgstr ""
msgid "Active"
msgstr ""
msgid "ID"
msgstr ""
msgid "Source"
msgstr ""
msgid "Created"
msgstr ""
msgid "Updated"
msgstr ""
msgid "Password"
msgstr ""
msgid "Password OK"
msgstr ""
msgid ""
"Note: Only one master key is going to be used for encryption (the one marked "
"as \"active\"). Any of the keys might be used for decryption, depending on "
"how the notes or notebooks were originally encrypted."
msgstr ""
msgid "Add or remove tags"
msgstr ""
@@ -596,6 +645,10 @@ msgstr ""
msgid "No notes in here. Create one by clicking on \"New note\"."
msgstr ""
msgid ""
"There is currently no notebook. Create one by clicking on \"New notebook\"."
msgstr ""
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr ""
@@ -621,9 +674,6 @@ msgstr ""
msgid "Synchronisation Status"
msgstr ""
msgid "Delete notebook?"
msgstr ""
msgid "Remove this tag from all the notes?"
msgstr ""
@@ -645,6 +695,9 @@ msgstr ""
msgid "Searches"
msgstr ""
msgid "Please select where the sync status should be exported to"
msgstr ""
#, javascript-format
msgid "Usage: %s"
msgstr ""
@@ -752,14 +805,6 @@ msgstr ""
msgid "Cannot move note to \"%s\" notebook"
msgstr ""
msgid "File system synchronisation target directory"
msgstr ""
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
msgid "Text editor"
msgstr ""
@@ -824,6 +869,14 @@ msgid ""
"`sync.2.path` to specify the target directory."
msgstr ""
msgid "Directory to synchronise with (absolute path)"
msgstr ""
msgid ""
"The path to synchronise with when file system synchronisation is enabled. "
"See `sync.target`."
msgstr ""
#, javascript-format
msgid "Invalid option value: \"%s\". Possible values are: %s."
msgstr ""

1102
CliClient/locales/pt_BR.po Normal file

File diff suppressed because it is too large Load Diff

1095
CliClient/locales/ru_RU.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "joplin",
"version": "0.10.82",
"version": "0.10.84",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -18,7 +18,7 @@
],
"owner": "Laurent Cozic"
},
"version": "0.10.82",
"version": "0.10.84",
"bin": {
"joplin": "./main.js"
},

View File

@@ -1,5 +1,6 @@
const { _ } = require('lib/locale.js');
const { BrowserWindow } = require('electron');
const { shim } = require('lib/shim');
const url = require('url')
const path = require('path')
const urlUtils = require('lib/urlUtils.js');
@@ -38,12 +39,18 @@ class ElectronAppWrapper {
defaultHeight: 600,
});
this.win_ = new BrowserWindow({
const windowOptions = {
'x': windowState.x,
'y': windowState.y,
'width': windowState.width,
'height': windowState.height
})
'height': windowState.height,
};
// Linux icon workaround for bug https://github.com/electron-userland/electron-builder/issues/2098
// Fix: https://github.com/electron-userland/electron-builder/issues/2269
if (shim.isLinux()) windowOptions.icon = __dirname + '/build/icons/128x128.png';
this.win_ = new BrowserWindow(windowOptions)
this.win_.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),

View File

@@ -21,7 +21,7 @@ fs.readdirSync(guiPath).forEach((filename) => {
if (ext !== 'jsx') return;
p.pop();
const basePath = p.join('/');
const basePath = p.join('.');
const jsPath = basePath + '.min.js';

View File

@@ -5,6 +5,7 @@ const { Setting } = require('lib/models/setting.js');
const { bridge } = require('electron').remote.require('./bridge');
const { Header } = require('./Header.min.js');
const { themeStyle } = require('../theme.js');
const pathUtils = require('lib/path-utils.js');
const { _ } = require('lib/locale.js');
class ConfigScreenComponent extends React.Component {
@@ -21,6 +22,23 @@ class ConfigScreenComponent extends React.Component {
this.setState({ settings: this.props.settings });
}
keyValueToArray(kv) {
let output = [];
for (let k in kv) {
if (!kv.hasOwnProperty(k)) continue;
output.push({
key: k,
label: kv[k],
});
}
output.sort((a, b) => {
return a.label.toLowerCase() < b.label.toLowerCase() ? -1 : +1;
});
return output;
}
settingToComponent(key, value) {
const theme = themeStyle(this.props.theme);
@@ -52,13 +70,14 @@ class ConfigScreenComponent extends React.Component {
if (md.isEnum) {
let items = [];
const settingOptions = md.options();
for (let k in settingOptions) {
if (!settingOptions.hasOwnProperty(k)) continue;
items.push(<option value={k.toString()} key={k}>{settingOptions[k]}</option>);
let array = this.keyValueToArray(settingOptions);
for (let i = 0; i < array.length; i++) {
const e = array[i];
items.push(<option value={e.key.toString()} key={e.key}>{settingOptions[e.key]}</option>);
}
return (
<div key={key+value} style={rowStyle}>
<div key={key} style={rowStyle}>
<div style={labelStyle}><label>{md.label()}</label></div>
<select value={value} style={controlStyle} onChange={(event) => { updateSettingValue(key, event.target.value) }}>
{items}
@@ -71,9 +90,9 @@ class ConfigScreenComponent extends React.Component {
}
return (
<div key={key+value} style={rowStyle}>
<div key={key} style={rowStyle}>
<div style={controlStyle}>
<input id={'setting_checkbox_' + key} type="checkbox" defaultChecked={!!value} onChange={(event) => { onCheckboxClick(event) }}/><label onClick={(event) => { onCheckboxClick(event) }} style={labelStyle} htmlFor={'setting_checkbox_' + key}>{md.label()}</label>
<input id={'setting_checkbox_' + key} type="checkbox" checked={!!value} onChange={(event) => { onCheckboxClick(event) }}/><label onClick={(event) => { onCheckboxClick(event) }} style={labelStyle} htmlFor={'setting_checkbox_' + key}>{md.label()}</label>
</div>
</div>
);
@@ -85,7 +104,7 @@ class ConfigScreenComponent extends React.Component {
}
return (
<div key={key+value} style={rowStyle}>
<div key={key} style={rowStyle}>
<div style={labelStyle}><label>{md.label()}</label></div>
<input type="text" style={controlStyle} value={this.state.settings[key]} onChange={(event) => {onTextChange(event)}} />
</div>
@@ -146,6 +165,9 @@ class ConfigScreenComponent extends React.Component {
<div style={style}>
<Header style={headerStyle} />
<div style={containerStyle}>
<div style={Object.assign({}, theme.textStyle, {marginBottom: 20})}>
{_('Notes and settings are stored in: %s', pathUtils.toSystemSlashes(Setting.value('profileDir'), process.platform))}
</div>
{ settingComps }
<button onClick={() => {this.onSaveClick()}} style={buttonStyle}>{_('Save')}</button>
<button onClick={() => {this.onCancelClick()}} style={buttonStyle}>{_('Cancel')}</button>

View File

@@ -98,7 +98,7 @@ class SideBarComponent extends React.Component {
let deleteMessage = '';
if (itemType === BaseModel.TYPE_FOLDER) {
deleteMessage = _('Delete notebook?');
deleteMessage = _('Delete notebook? All notes within this notebook will also be deleted.');
} else if (itemType === BaseModel.TYPE_TAG) {
deleteMessage = _('Remove this tag from all the notes?');
} else if (itemType === BaseModel.TYPE_SEARCH) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -2,5 +2,10 @@ var locales = {};
locales['en_GB'] = require('./en_GB.json');
locales['de_DE'] = require('./de_DE.json');
locales['es_CR'] = require('./es_CR.json');
locales['es_ES'] = require('./es_ES.json');
locales['fr_FR'] = require('./fr_FR.json');
locales['hr_HR'] = require('./hr_HR.json');
locales['it_IT'] = require('./it_IT.json');
locales['pt_BR'] = require('./pt_BR.json');
locales['ru_RU'] = require('./ru_RU.json');
module.exports = { locales: locales };

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
{
"name": "Joplin",
"version": "0.10.38",
"version": "0.10.39",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -1,6 +1,6 @@
{
"name": "Joplin",
"version": "0.10.38",
"version": "0.10.39",
"description": "Joplin for Desktop",
"main": "main.js",
"scripts": {

View File

@@ -14,4 +14,4 @@ echo "Create a draft release at: https://github.com/laurent22/joplin/releases/ta
echo ""
echo "Then run:"
echo ""
echo "node $APP_DIR/update-readme-download.js"
echo "node $APP_DIR/update-readme-download.js && git add -A && git commit -m 'Update website' && git push"

View File

@@ -18,9 +18,9 @@ Three types of applications are available: for the **desktop** (Windows, macOS a
Operating System | Download
-----------------|--------
Windows | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-Setup-0.10.38.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a>
Windows | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-Setup-0.10.39.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a>
## Mobile applications
@@ -108,7 +108,7 @@ If for any reason the notifications do not work, please [open an issue](https://
# Localisation
Joplin is currently available in English, French and Spanish. If you would like to contribute a translation, it is quite straightforward, please follow these steps:
Joplin is currently available in English, French, Spanish, German, Portuguese and Italian. If you would like to contribute a translation, it is quite straightforward, please follow these steps:
- [Download Poedit](https://poedit.net/), the translation editor, and install it.
- [Download the file to be translated](https://raw.githubusercontent.com/laurent22/joplin/master/CliClient/locales/joplin.pot).

20
README_debugging.md Normal file
View File

@@ -0,0 +1,20 @@
# How to enable debugging
It is possible to get the apps to display or log more information that might help debug various issues.
## Desktop application
- Add a file named "flags.txt" in the config directory (should be `~/.config/joplin` or `c:\Users\YOUR_NAME\.config\joplin`) with the following content: `--open-dev-tools --log-level debug`
- Restart the application
- The development tools should now be opened. Click the "Console" tab
- Now repeat the action that was causing problem. The console might output warnings or errors - please add them to the GitHub issue. Also open log.txt in the config folder and if there is any error or warning, please also add them to the issue.
## CLI application
- Start the app with `joplin --log-level debug`
- Check the log.txt as specified above for the desktop application and attach the log to the GitHub issue (or just the warnings/errors if any)
## Mobile application
- In the options, enable Advanced Option
- Open the log in the top right hand corner menu and post a screenshot of any error/warning.

View File

@@ -79,7 +79,7 @@ Rename the currently selected notebook ($b) to "Something":
Attach a local file to the currently selected note ($n):
ren $n /home/laurent/pictures/Vacation12.jpg
attach $n /home/laurent/pictures/Vacation12.jpg
The configuration can also be changed from command-line mode. For example, to change the current editor to Sublime Text:

View File

@@ -69,7 +69,7 @@ class NotesScreenComponent extends BaseScreenComponent {
}
deleteFolder_onPress(folderId) {
dialogs.confirm(this, _('Delete notebook?')).then((ok) => {
dialogs.confirm(this, _('Delete notebook? All notes within this notebook will also be deleted.')).then((ok) => {
if (!ok) return;
Folder.delete(folderId).then(() => {

View File

@@ -194,7 +194,7 @@ function addResourceTag(lines, resource, alt = "") {
function isBlockTag(n) {
return n=="div" || n=="p" || n=="dl" || n=="dd" || n == 'dt' || n=="center";
return ["div", "p", "dl", "dd", 'dt', "center", 'address'].indexOf(n) >= 0;
}
function isStrongTag(n) {
@@ -214,7 +214,7 @@ function isAnchor(n) {
}
function isIgnoredEndTag(n) {
return n=="en-note" || n=="en-todo" || n=="span" || n=="body" || n=="html" || n=="font" || n=="br" || n=='hr' || n == 'tbody' || n == 'sup' || n == 'img' || n == 'abbr' || n == 'cite' || n == 'thead' || n == 'small' || n == 'tt' || n == 'sub';
return ["en-note", "en-todo", "span", "body", "html", "font", "br", 'hr', 'tbody', 'sup', 'img', 'abbr', 'cite', 'thead', 'small', 'tt', 'sub', 'colgroup', 'col', 'ins', 'caption', 'var', 'map', 'area'].indexOf(n) >= 0;
}
function isListTag(n) {
@@ -223,7 +223,7 @@ function isListTag(n) {
// Elements that don't require any special treatment beside adding a newline character
function isNewLineOnlyEndTag(n) {
return n=="div" || n=="p" || n=="li" || n=="h1" || n=="h2" || n=="h3" || n=="h4" || n=="h5" || n=='h6' || n=="dl" || n=="dd" || n == 'dt' || n=="center";
return ["div", "p", "li", "h1", "h2", "h3", "h4", "h5", 'h6', "dl", "dd", 'dt', "center", 'address'].indexOf(n) >= 0;
}
function isCodeTag(n) {
@@ -248,6 +248,10 @@ function isCodeTag(n) {
return n == "pre" || n == "code";
}
function isInlineCodeTag(n) {
return ['samp', 'kbd'].indexOf(n) >= 0;
}
function isNewLineBlock(s) {
return s == BLOCK_OPEN || s == BLOCK_CLOSE;
}
@@ -377,7 +381,7 @@ function enexXmlToMdArray(stream, resources) {
section.lines.push("**");
} else if (isStrikeTag(n)) {
section.lines.push('(');
} else if (n == 'samp') {
} else if (isInlineCodeTag(n)) {
section.lines.push('`');
} else if (n == 'q') {
section.lines.push('"');
@@ -494,7 +498,7 @@ function enexXmlToMdArray(stream, resources) {
section.lines = addResourceTag(section.lines, resource, nodeAttributes.alt);
}
}
} else if (n == "span" || n == "font" || n == 'sup' || n == 'cite' || n == 'abbr' || n == 'small' || n == 'tt' || n == 'sub') {
} else if (["span", "font", 'sup', 'cite', 'abbr', 'small', 'tt', 'sub', 'colgroup', 'col', 'ins', 'caption', 'var', 'map', 'area'].indexOf(n) >= 0) {
// Inline tags that can be ignored in Markdown
} else {
console.warn("Unsupported start tag: " + n);
@@ -523,7 +527,7 @@ function enexXmlToMdArray(stream, resources) {
section.lines.push("**");
} else if (isStrikeTag(n)) {
section.lines.push(')');
} else if (n == 'samp') {
} else if (isInlineCodeTag(n)) {
section.lines.push('`');
} else if (isEmTag(n)) {
section.lines.push("*");

View File

@@ -205,10 +205,13 @@ class JoplinDatabase extends Database {
const existingDatabaseVersions = [0, 1, 2, 3, 4, 5, 6, 7, 8];
let currentVersionIndex = existingDatabaseVersions.indexOf(fromVersion);
if (currentVersionIndex < 0) throw new Error('Unknown profile version. Most likely this is an old version of Joplin, while the profile was created by a newer version. Please upgrade Joplin at http://joplin.cozic.net and try again.');
// currentVersionIndex < 0 if for the case where an old version of Joplin used with a newer
// version of the database, so that migration is not run in this case.
if (currentVersionIndex == existingDatabaseVersions.length - 1 || currentVersionIndex < 0) return false;
if (currentVersionIndex == existingDatabaseVersions.length - 1) return false;
while (currentVersionIndex < existingDatabaseVersions.length - 1) {
const targetVersion = existingDatabaseVersions[currentVersionIndex + 1];
this.logger().info("Converting database to version " + targetVersion);

View File

@@ -172,6 +172,7 @@ codeToLanguage_["hu"] = "Magyar";
let codeToCountry_ = {};
codeToCountry_["BR"] = "Brasil";
codeToCountry_["CR"] = "Costa Rica";
codeToCountry_["CN"] = "中国";
let supportedLocales_ = null;

View File

@@ -40,4 +40,9 @@ function safeFileExtension(e) {
return e.replace(/[^a-zA-Z0-9]/g, '')
}
module.exports = { basename, dirname, filename, isHidden, fileExtension, safeFileExtension };
function toSystemSlashes(path, os) {
if (os === 'win32') return path.replace(/\//g, "\\");
return path.replace(/\\/g, "/");
}
module.exports = { basename, dirname, filename, isHidden, fileExtension, safeFileExtension, toSystemSlashes };

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -2,5 +2,10 @@ var locales = {};
locales['en_GB'] = require('./en_GB.json');
locales['de_DE'] = require('./de_DE.json');
locales['es_CR'] = require('./es_CR.json');
locales['es_ES'] = require('./es_ES.json');
locales['fr_FR'] = require('./fr_FR.json');
locales['hr_HR'] = require('./hr_HR.json');
locales['it_IT'] = require('./it_IT.json');
locales['pt_BR'] = require('./pt_BR.json');
locales['ru_RU'] = require('./ru_RU.json');
module.exports = { locales: locales };

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -218,15 +218,15 @@
<tbody>
<tr>
<td>Windows</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-Setup-0.10.38.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-Setup-0.10.39.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a></td>
</tr>
<tr>
<td>macOS</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a></td>
</tr>
<tr>
<td>Linux</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a></td>
</tr>
</tbody>
</table>

View File

@@ -258,7 +258,7 @@ sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin
</code></pre><p>Rename the currently selected notebook ($b) to &quot;Something&quot;:</p>
<pre><code>ren $b &quot;Something&quot;
</code></pre><p>Attach a local file to the currently selected note ($n):</p>
<pre><code>ren $n /home/laurent/pictures/Vacation12.jpg
<pre><code>attach $n /home/laurent/pictures/Vacation12.jpg
</code></pre><p>The configuration can also be changed from command-line mode. For example, to change the current editor to Sublime Text:</p>
<pre><code>config editor &quot;subl -w&quot;
</code></pre><h2 id="editing-a-note">Editing a note</h2>