You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2026-01-11 00:21:45 +02:00
Compare commits
16 Commits
v1.3.7
...
command_en
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3b708ff64 | ||
|
|
fea85b39a0 | ||
|
|
a53955a03d | ||
|
|
8d61514f64 | ||
|
|
c8f496b733 | ||
|
|
c4414e3bee | ||
|
|
89e7a3a65e | ||
|
|
b3bce34e9a | ||
|
|
d059aeebab | ||
|
|
910a5ad09d | ||
|
|
259dadb650 | ||
|
|
4ce2bf492b | ||
|
|
e635ee967a | ||
|
|
6a43f3be66 | ||
|
|
a4562a0a75 | ||
|
|
410a0f5d14 |
@@ -180,7 +180,6 @@ ElectronClient/gui/SideBar/styles/index.js
|
||||
ElectronClient/gui/StatusScreen/StatusScreen.js
|
||||
ElectronClient/gui/style/StyledInput.js
|
||||
ElectronClient/gui/style/StyledTextInput.js
|
||||
ElectronClient/gui/TagList.js
|
||||
ElectronClient/gui/ToggleEditorsButton/styles/index.js
|
||||
ElectronClient/gui/ToggleEditorsButton/ToggleEditorsButton.js
|
||||
ElectronClient/gui/ToolbarBase.js
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -174,7 +174,6 @@ ElectronClient/gui/SideBar/styles/index.js
|
||||
ElectronClient/gui/StatusScreen/StatusScreen.js
|
||||
ElectronClient/gui/style/StyledInput.js
|
||||
ElectronClient/gui/style/StyledTextInput.js
|
||||
ElectronClient/gui/TagList.js
|
||||
ElectronClient/gui/ToggleEditorsButton/styles/index.js
|
||||
ElectronClient/gui/ToggleEditorsButton/ToggleEditorsButton.js
|
||||
ElectronClient/gui/ToolbarBase.js
|
||||
|
||||
1
.ignore
1
.ignore
@@ -123,7 +123,6 @@ ElectronClient/gui/SideBar/styles/index.js
|
||||
ElectronClient/gui/StatusScreen/StatusScreen.js
|
||||
ElectronClient/gui/style/StyledInput.js
|
||||
ElectronClient/gui/style/StyledTextInput.js
|
||||
ElectronClient/gui/TagList.js
|
||||
ElectronClient/gui/ToggleEditorsButton/styles/index.js
|
||||
ElectronClient/gui/ToggleEditorsButton/ToggleEditorsButton.js
|
||||
ElectronClient/gui/ToolbarBase.js
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,29 +2,25 @@
|
||||
# Copyright (C) 2017 Lucas Vieites
|
||||
# Copyright (C) 2019 Andros Fenollosa
|
||||
# Copyright (C) 2019 Germán Martín
|
||||
# Copyright (C) 2020 Andros Fenollosa
|
||||
# This file is distributed under the same license as the Joplin-CLI package.
|
||||
# Lucas Vieites <lucas.vieites@gmail.com>, 2017.
|
||||
# Andros Fenollosa <andros@fenollosa.email>, 2019.
|
||||
# Germán Martín <gmag11@gmail.com>, 2019.
|
||||
# Fernando Pindado <fpindado@gmail.com>, 2020.
|
||||
# Andros Fenollosa <andros@fenollosa.email>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Joplin-CLI 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: Andros Fenollosa <andros@fenollosa.email>\n"
|
||||
"Last-Translator: Fernando Pindado <fpindado@gmail.com>\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"
|
||||
"X-Generator: Poedit 2.4.1\n"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
|
||||
#: ElectronClient/services/plugins/UserWebviewDialogButtonBar.js:20
|
||||
#: ElectronClient/checkForUpdates.js:139
|
||||
@@ -532,14 +528,12 @@ msgstr "Creando nuevo %s..."
|
||||
#: ElectronClient/gui/NoteEditor/NoteEditor.js:373
|
||||
msgid "The following attachments are being watched for changes:"
|
||||
msgstr ""
|
||||
"Los siguientes adjuntos están siendo vigilados para ver si hay cambios:"
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteEditor.js:376
|
||||
msgid ""
|
||||
"The attachments will no longer be watched when you switch to a different "
|
||||
"note."
|
||||
msgstr ""
|
||||
"Los archivos adjuntos ya no se verán cuándo cambies a una nota diferente."
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteEditor.js:381
|
||||
#, javascript-format
|
||||
@@ -655,15 +649,12 @@ msgid ""
|
||||
"may take a few minutes to complete and the app needs to be restarted. To "
|
||||
"proceed please click on the link."
|
||||
msgstr ""
|
||||
"El objetivo de sincronización necesita ser actualizado antes de que Joplin "
|
||||
"pueda sincronizarse. La operación puede tardar unos minutos en completarse y "
|
||||
"la aplicación necesita ser reiniciada. Para proceder, por favor, haz clic en "
|
||||
"el enlace."
|
||||
|
||||
#: ElectronClient/gui/MainScreen/MainScreen.js:416
|
||||
#: ElectronClient/gui/MainScreen/MainScreen.min.js:306
|
||||
#, fuzzy
|
||||
msgid "Restart and upgrade"
|
||||
msgstr "Reiniciar y actualizar"
|
||||
msgstr "Claves maestras que necesitan actualización"
|
||||
|
||||
#: ElectronClient/gui/MainScreen/MainScreen.js:420
|
||||
#: ElectronClient/gui/MainScreen/MainScreen.min.js:313
|
||||
@@ -823,8 +814,9 @@ msgid "Toggle sidebar"
|
||||
msgstr "Cambia la barra lateral"
|
||||
|
||||
#: ElectronClient/gui/MainScreen/commands/toggleEditors.js:17
|
||||
#, fuzzy
|
||||
msgid "Toggle editors"
|
||||
msgstr "Intercambiar editores"
|
||||
msgstr "Cambia el diseño del editor"
|
||||
|
||||
#: ElectronClient/gui/MainScreen/commands/selectTemplate.js:23
|
||||
msgid "Template file:"
|
||||
@@ -1329,8 +1321,9 @@ msgid "Import"
|
||||
msgstr "Importar"
|
||||
|
||||
#: ElectronClient/gui/MenuBar.js:343
|
||||
#, fuzzy
|
||||
msgid "Export all"
|
||||
msgstr "Exportar todo"
|
||||
msgstr "Exportar"
|
||||
|
||||
#: ElectronClient/gui/MenuBar.js:356
|
||||
#, javascript-format
|
||||
@@ -1411,36 +1404,38 @@ msgstr "Adjuntos"
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/ShortcutRecorder.js:48
|
||||
msgid "Press the shortcut"
|
||||
msgstr "Presiona el atajo"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/ShortcutRecorder.js:48
|
||||
msgid ""
|
||||
"Press the shortcut and then press ENTER. Or, press BACKSPACE to clear the "
|
||||
"shortcut."
|
||||
msgstr ""
|
||||
"Pulse el atajo y luego ENTER. O bien, pulse RETROCESO para borrar el atajo."
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/KeymapConfigScreen.js:62
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:142
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Error: %s"
|
||||
msgstr "Error: %s"
|
||||
msgstr "Error"
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/KeymapConfigScreen.js:125
|
||||
msgid "Command"
|
||||
msgstr "Comando"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/KeymapConfigScreen.js:126
|
||||
#, fuzzy
|
||||
msgid "Keyboard Shortcut"
|
||||
msgstr "Atajo de teclado"
|
||||
msgstr "Modo de teclado"
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/utils/getLabel.js:24
|
||||
#, fuzzy
|
||||
msgid "Hide Joplin"
|
||||
msgstr "Ocultar Joplin"
|
||||
msgstr "Acerca de Joplin"
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/utils/getLabel.js:28
|
||||
#, fuzzy
|
||||
msgid "Preferences"
|
||||
msgstr "Preferencias"
|
||||
msgstr "Preferencias..."
|
||||
|
||||
#: ElectronClient/gui/NoteContentPropertiesDialog.js:77
|
||||
msgid "Words"
|
||||
@@ -1485,8 +1480,6 @@ msgstr "Estadísticas"
|
||||
msgid ""
|
||||
"The app is now going to close. Please relaunch it to complete the process."
|
||||
msgstr ""
|
||||
"La aplicación se va a cerrar. Por favor, vuelva a iniciarla para completar "
|
||||
"el proceso."
|
||||
|
||||
#: ElectronClient/app.js:340
|
||||
#, javascript-format
|
||||
@@ -1498,8 +1491,9 @@ msgid "Exit"
|
||||
msgstr "Salir"
|
||||
|
||||
#: ElectronClient/commands/copyDevCommand.js:17
|
||||
#, fuzzy
|
||||
msgid "Copy dev mode command to clipboard"
|
||||
msgstr "Copiar el comando del modo de desarrollo al portapapeles"
|
||||
msgstr "Copiar la ruta en el portapapeles"
|
||||
|
||||
#: ElectronClient/commands/startExternalEditing.js:18
|
||||
msgid "Edit in external editor"
|
||||
@@ -1511,12 +1505,13 @@ msgid "Error opening note in editor: %s"
|
||||
msgstr "Error abriendo la nota en el editor: %s"
|
||||
|
||||
#: ElectronClient/commands/toggleExternalEditing.js:16
|
||||
#, fuzzy
|
||||
msgid "Toggle external editing"
|
||||
msgstr "Intercambiar la edición externa"
|
||||
msgstr "Detener la edición externa"
|
||||
|
||||
#: ElectronClient/commands/toggleExternalEditing.js:42
|
||||
msgid "Stop"
|
||||
msgstr "Parar"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/commands/stopExternalEditing.js:16
|
||||
msgid "Stop external editing"
|
||||
@@ -1745,7 +1740,7 @@ msgstr ""
|
||||
|
||||
#: CliClient/app/command-sync.js:35
|
||||
msgid "Upgrade the sync target to the latest version."
|
||||
msgstr "Actualiza el objetivo de sincronización a la última versión."
|
||||
msgstr ""
|
||||
|
||||
#: CliClient/app/command-sync.js:105
|
||||
#, javascript-format
|
||||
@@ -2252,10 +2247,10 @@ msgstr ""
|
||||
"No se puede cargar el módulo «%s» para el formato «%s» y destino \"%s\""
|
||||
|
||||
#: ReactNativeClient/lib/services/interop/InteropService.js:152
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
|
||||
msgstr ""
|
||||
"No se puede cargar el módulo “%s” para el formato “%s” y el objetivo “%s”"
|
||||
"No se puede cargar el módulo «%s» para el formato «%s» y destino \"%s\""
|
||||
|
||||
#: ReactNativeClient/lib/services/interop/InteropService.js:187
|
||||
#, javascript-format
|
||||
@@ -2272,23 +2267,23 @@ msgstr "Notas restauradas"
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:236
|
||||
msgid "command"
|
||||
msgstr "comando"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:236
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:241
|
||||
#, javascript-format
|
||||
msgid "\"%s\" is missing the required \"%s\" property."
|
||||
msgstr "A “%s” le falta la propiedad requerida de “%s”."
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:241
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:248
|
||||
msgid "accelerator"
|
||||
msgstr "acelerador"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:248
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Invalid %s: %s."
|
||||
msgstr "Inválido %s: %s."
|
||||
msgstr "Respuesta inválida: %s"
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:266
|
||||
#, javascript-format
|
||||
@@ -2296,13 +2291,11 @@ msgid ""
|
||||
"Accelerator \"%s\" is used for \"%s\" and \"%s\" commands. This may lead to "
|
||||
"unexpected behaviour."
|
||||
msgstr ""
|
||||
"El acelerador “%s” se usa para los comandos “%s” y “%s”. Esto puede llevar a "
|
||||
"un comportamiento inesperado."
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:291
|
||||
#, javascript-format
|
||||
msgid "Accelerator \"%s\" is not valid."
|
||||
msgstr "El acelerador “%s” no es válido."
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/services/report.js:121
|
||||
msgid "Items that cannot be synchronised"
|
||||
@@ -2452,7 +2445,7 @@ msgstr "Versión del perfil: %s"
|
||||
#: ReactNativeClient/lib/versionInfo.js:23
|
||||
#, javascript-format
|
||||
msgid "Keychain Supported: %s"
|
||||
msgstr "Llavero soportado: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/JoplinServerApi.js:71
|
||||
#, javascript-format
|
||||
@@ -2856,7 +2849,7 @@ msgstr "Añadir título"
|
||||
|
||||
#: ReactNativeClient/lib/components/screens/UpgradeSyncTargetScreen.js:42
|
||||
msgid "Sync Target Upgrade"
|
||||
msgstr "Actualización del objetivo de sincronización"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/components/screens/encryption-config.js:119
|
||||
#, javascript-format
|
||||
@@ -2948,8 +2941,6 @@ msgstr ""
|
||||
#: ReactNativeClient/lib/components/screen-header.js:453
|
||||
msgid "The sync target needs to be upgraded. Press this banner to proceed."
|
||||
msgstr ""
|
||||
"El objetivo de sincronización necesita ser mejorado. Presiona este banner "
|
||||
"para proceder."
|
||||
|
||||
#: ReactNativeClient/lib/components/side-menu-content.js:126
|
||||
#, javascript-format
|
||||
@@ -3146,7 +3137,7 @@ msgstr "sí"
|
||||
#: ReactNativeClient/lib/models/Setting.js:66
|
||||
#, javascript-format
|
||||
msgid "(wysiwyg: %s)"
|
||||
msgstr "(wysiwyg: %s)"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:66
|
||||
msgid "no"
|
||||
@@ -3189,7 +3180,7 @@ msgstr "Nord"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:80
|
||||
msgid "Aritim Dark"
|
||||
msgstr "Aritim Oscuro"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:81
|
||||
msgid "OLED Dark"
|
||||
@@ -3238,15 +3229,15 @@ msgstr "Contraseña de WebDAV"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:214
|
||||
msgid "AWS S3 bucket"
|
||||
msgstr "AWS S3 bucket"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:225
|
||||
msgid "AWS key"
|
||||
msgstr "AWS key"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:235
|
||||
msgid "AWS secret"
|
||||
msgstr "AWS secret"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:247
|
||||
msgid "Attachment download behaviour"
|
||||
@@ -3704,8 +3695,9 @@ msgid "Web Clipper"
|
||||
msgstr "Web Clipper"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:1292
|
||||
#, fuzzy
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Atajos de teclado"
|
||||
msgstr "Modo de teclado"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:1299
|
||||
msgid ""
|
||||
@@ -3752,7 +3744,7 @@ msgstr "OneDrive"
|
||||
|
||||
#: ReactNativeClient/lib/SyncTargetAmazonS3.js:28
|
||||
msgid "AWS S3"
|
||||
msgstr "AWS S3"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/commands/historyForward.js:16
|
||||
msgid "Forward"
|
||||
|
||||
@@ -7,16 +7,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Joplin-CLI 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: João Duarte <jduar@protonmail.com>\n"
|
||||
"Last-Translator: Diogo Caveiro \n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_PT\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.4.1\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"X-Generator: Poedit 2.2.4\n"
|
||||
|
||||
#: ElectronClient/services/plugins/UserWebviewDialogButtonBar.js:20
|
||||
#: ElectronClient/checkForUpdates.js:139
|
||||
@@ -114,28 +112,29 @@ msgid "Full Release Notes"
|
||||
msgstr "Notas de Lançamento Completas"
|
||||
|
||||
#: ElectronClient/InteropServiceHelper.js:153
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Exporting to \"%s\" as \"%s\" format. Please wait..."
|
||||
msgstr "A exportar para \"%s\" com o formato \"%s\". Por favor, aguarde..."
|
||||
msgstr "A importar de \"%s\" com o formato \"%s\". Por favor, aguarde..."
|
||||
|
||||
#: ElectronClient/InteropServiceHelper.js:170
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Could not export notes: %s"
|
||||
msgstr "Não foi possível exportar as notas: %s"
|
||||
msgstr "Não foi possível atualizar a chave mestra: %s"
|
||||
|
||||
#: ElectronClient/plugins/GotoAnything.min.js:459
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Type a note title or part of its content to jump to it. Or type # followed "
|
||||
"by a tag name, or @ followed by a notebook name."
|
||||
msgstr ""
|
||||
"Escreva um título de uma nota ou parte do seu conteúdo para saltar para o "
|
||||
"mesmo. Ou digite # seguido de um nome de etiqueta, ou @ seguido de um nome "
|
||||
"de um caderno."
|
||||
"Digite um título de nota para avançar para o mesmo. Ou digite # seguido do "
|
||||
"título de uma etiqueta, ou @ seguido do nome de um bloco de notas, ou / "
|
||||
"seguido do conteúdo da nota."
|
||||
|
||||
#: ElectronClient/plugins/GotoAnything.min.js:499
|
||||
#: ElectronClient/gui/KeymapConfig/utils/getLabel.js:20
|
||||
msgid "Goto Anything..."
|
||||
msgstr "Saltar para..."
|
||||
msgstr "Ir até qualquer coisa..."
|
||||
|
||||
#: ElectronClient/gui/NoteListControls/commands/focusSearch.js:15
|
||||
msgid "Search in all the notes"
|
||||
@@ -179,9 +178,9 @@ msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: ElectronClient/gui/ResourceScreen.js:94
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Delete attachment \"%s\"?"
|
||||
msgstr "Eliminar anexo \"%s\"?"
|
||||
msgstr "Eliminar nota \"%s\"?"
|
||||
|
||||
#: ElectronClient/gui/ResourceScreen.js:140
|
||||
msgid ""
|
||||
@@ -189,9 +188,6 @@ msgid ""
|
||||
"notes. Please be careful when deleting one of them as they cannot be "
|
||||
"restored afterwards."
|
||||
msgstr ""
|
||||
"Esta é uma ferramenta avançada para ver os anexos que estão ligados às suas "
|
||||
"notas. Por favor tenha cuidado ao apagar um deles já que não poderão ser "
|
||||
"repostos de seguida."
|
||||
|
||||
#: ElectronClient/gui/ResourceScreen.js:141
|
||||
msgid "Please wait..."
|
||||
@@ -199,13 +195,13 @@ msgstr "Por favor, aguarde..."
|
||||
|
||||
#: ElectronClient/gui/ResourceScreen.js:143
|
||||
msgid "No resources!"
|
||||
msgstr "Sem recursos!"
|
||||
msgstr "Sem fontes!"
|
||||
|
||||
#: ElectronClient/gui/ResourceScreen.js:145
|
||||
#, javascript-format
|
||||
msgid "Warning: not all resources shown for performance reasons (limit: %s)."
|
||||
msgstr ""
|
||||
"Aviso: nem todos os recursos apresentadas por razões de desempenho (limite: "
|
||||
"Aviso: nem todas as fontes apresentadas por razões de desempenho (limite: "
|
||||
"%s)."
|
||||
|
||||
#: ElectronClient/gui/PromptDialog.min.js:249
|
||||
@@ -431,11 +427,11 @@ msgstr "Anexar ficheiro"
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.js:584
|
||||
msgid "Code Block"
|
||||
msgstr "Bloco de Código"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.js:593
|
||||
msgid "Inline Code"
|
||||
msgstr "Código em Linha"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.js:608
|
||||
#: ElectronClient/gui/NoteEditor/commands/editorCommandDeclarations.js:83
|
||||
@@ -444,12 +440,13 @@ msgstr "Inserir Data e Hora"
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.js:1030
|
||||
msgid "Drop notes or files here"
|
||||
msgstr "Insira notas ou ficheiros aqui"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.js:1030
|
||||
#: ElectronClient/gui/MainScreen/MainScreen.min.js:419
|
||||
#, fuzzy
|
||||
msgid "Code View"
|
||||
msgstr "Vista de Código"
|
||||
msgstr "Código"
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.js:1030
|
||||
#, javascript-format
|
||||
@@ -457,18 +454,18 @@ msgid ""
|
||||
"Please wait for all attachments to be downloaded and decrypted. You may also "
|
||||
"switch to %s to edit the note."
|
||||
msgstr ""
|
||||
"Por favor espere que todos os anexados sejam transferidos e desencriptados. "
|
||||
"Também pode mudar para %s para editar a nota."
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/plugins/lists.js:2151
|
||||
#, fuzzy
|
||||
msgid "Checkbox list"
|
||||
msgstr "Lista de caixas de seleção"
|
||||
msgstr "Campo de seleção"
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.js:165
|
||||
msgid "strong text"
|
||||
msgstr "texto destacado"
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.js:166
|
||||
#, fuzzy
|
||||
msgid "emphasised text"
|
||||
msgstr "texto realçado"
|
||||
|
||||
@@ -529,14 +526,13 @@ msgstr "A criar novo/a %s..."
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteEditor.js:373
|
||||
msgid "The following attachments are being watched for changes:"
|
||||
msgstr "Os anexos seguintes estão a ser monitorizados quanto a alterações:"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteEditor.js:376
|
||||
msgid ""
|
||||
"The attachments will no longer be watched when you switch to a different "
|
||||
"note."
|
||||
msgstr ""
|
||||
"Os anexos deixarão de ser monitorizados quando mudar para uma nota diferente."
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/NoteEditor.js:381
|
||||
#, javascript-format
|
||||
@@ -553,7 +549,7 @@ msgstr "Guardar como..."
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/utils/contextMenu.js:65
|
||||
msgid "Reveal file in folder"
|
||||
msgstr "Revelar arquivo na pasta"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/NoteEditor/utils/contextMenu.js:73
|
||||
msgid "Copy path to clipboard"
|
||||
@@ -653,15 +649,12 @@ msgid ""
|
||||
"may take a few minutes to complete and the app needs to be restarted. To "
|
||||
"proceed please click on the link."
|
||||
msgstr ""
|
||||
"O alvo de sincronização deve ser atualizado antes que o Joplin possa "
|
||||
"sincronizar. A operação pode demorar alguns minutos a ser completa e a "
|
||||
"aplicação precisará de ser reiniciada. Para proceder, por favor clique na "
|
||||
"ligação."
|
||||
|
||||
#: ElectronClient/gui/MainScreen/MainScreen.js:416
|
||||
#: ElectronClient/gui/MainScreen/MainScreen.min.js:306
|
||||
#, fuzzy
|
||||
msgid "Restart and upgrade"
|
||||
msgstr "Reiniciar e atualizar"
|
||||
msgstr "Chaves mestras que necessitam de atualização"
|
||||
|
||||
#: ElectronClient/gui/MainScreen/MainScreen.js:420
|
||||
#: ElectronClient/gui/MainScreen/MainScreen.min.js:313
|
||||
@@ -719,11 +712,11 @@ msgstr "Procurar..."
|
||||
|
||||
#: ElectronClient/gui/MainScreen/commands/moveToFolder.js:17
|
||||
msgid "Move to notebook"
|
||||
msgstr "Mudar para o caderno"
|
||||
msgstr "Mudar para o bloco de notas"
|
||||
|
||||
#: ElectronClient/gui/MainScreen/commands/moveToFolder.js:36
|
||||
msgid "Move to notebook:"
|
||||
msgstr "Mudar para o caderno:"
|
||||
msgstr "Mudar para o bloco de notas:"
|
||||
|
||||
#: ElectronClient/gui/MainScreen/commands/setTags.js:16
|
||||
#: ElectronClient/gui/SideBar/SideBar.js:426
|
||||
@@ -821,8 +814,9 @@ msgid "Toggle sidebar"
|
||||
msgstr "Alternar a barra lateral"
|
||||
|
||||
#: ElectronClient/gui/MainScreen/commands/toggleEditors.js:17
|
||||
#, fuzzy
|
||||
msgid "Toggle editors"
|
||||
msgstr "Alternar editores"
|
||||
msgstr "Alternar a estrutura do editor"
|
||||
|
||||
#: ElectronClient/gui/MainScreen/commands/selectTemplate.js:23
|
||||
msgid "Template file:"
|
||||
@@ -830,7 +824,7 @@ msgstr "Ficheiro do modelo:"
|
||||
|
||||
#: ElectronClient/gui/MainScreen/commands/showNoteContentProperties.js:16
|
||||
msgid "Statistics..."
|
||||
msgstr "Estatísticas..."
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/EncryptionConfigScreen.min.js:96
|
||||
#: ElectronClient/gui/KeymapConfig/ShortcutRecorder.js:49
|
||||
@@ -1154,12 +1148,13 @@ msgstr ""
|
||||
#: ElectronClient/gui/NoteList/NoteList.min.js:151
|
||||
#: ElectronClient/gui/NoteList/NoteList.js:160
|
||||
msgid "Custom order"
|
||||
msgstr "Ordem personalizada"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/NoteList/NoteList.min.js:151
|
||||
#: ElectronClient/gui/NoteList/NoteList.js:160
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Ver"
|
||||
msgstr "&Ver"
|
||||
|
||||
#: ElectronClient/gui/NoteList/NoteList.min.js:151
|
||||
#: ElectronClient/gui/NoteList/NoteList.js:160
|
||||
@@ -1174,13 +1169,12 @@ msgid ""
|
||||
"To manually sort the notes, the sort order must be changed to \"%s\" in the "
|
||||
"menu \"%s\" > \"%s\""
|
||||
msgstr ""
|
||||
"Para ordenar as notas manualmente, a ordem deve ser alterada para \"%s\" no "
|
||||
"menu \"%s\" > \"%s\""
|
||||
|
||||
#: ElectronClient/gui/NoteList/NoteList.min.js:152
|
||||
#: ElectronClient/gui/NoteList/NoteList.js:161
|
||||
#, fuzzy
|
||||
msgid "Do it now"
|
||||
msgstr "Fazer agora"
|
||||
msgstr "Obter agora:"
|
||||
|
||||
#: ElectronClient/gui/NoteList/NoteList.min.js:423
|
||||
#: ElectronClient/gui/NoteList/NoteList.js:412
|
||||
@@ -1293,8 +1287,9 @@ msgid "Options"
|
||||
msgstr "Opções"
|
||||
|
||||
#: ElectronClient/gui/MenuBar.js:266
|
||||
#, fuzzy
|
||||
msgid "Note attachments..."
|
||||
msgstr "Anexos das notas..."
|
||||
msgstr "Anexos"
|
||||
|
||||
#: ElectronClient/gui/MenuBar.js:296 ElectronClient/gui/MenuBar.js:366
|
||||
#: ElectronClient/gui/MenuBar.js:659
|
||||
@@ -1325,8 +1320,9 @@ msgid "Import"
|
||||
msgstr "Importar"
|
||||
|
||||
#: ElectronClient/gui/MenuBar.js:343
|
||||
#, fuzzy
|
||||
msgid "Export all"
|
||||
msgstr "Exportar todos"
|
||||
msgstr "Exportar"
|
||||
|
||||
#: ElectronClient/gui/MenuBar.js:356
|
||||
#, javascript-format
|
||||
@@ -1364,8 +1360,9 @@ msgid "Zoom Out"
|
||||
msgstr "Reduzir"
|
||||
|
||||
#: ElectronClient/gui/MenuBar.js:516
|
||||
#, fuzzy
|
||||
msgid "&Note"
|
||||
msgstr "&Nota"
|
||||
msgstr "Nota"
|
||||
|
||||
#: ElectronClient/gui/MenuBar.js:525
|
||||
msgid "&Tools"
|
||||
@@ -1402,42 +1399,44 @@ msgid "Dropbox Login"
|
||||
msgstr "Acesso Dropbox"
|
||||
|
||||
#: ElectronClient/gui/Root.js:105 ElectronClient/gui/Root.min.js:105
|
||||
#, fuzzy
|
||||
msgid "Note attachments"
|
||||
msgstr "Anexos das notas"
|
||||
msgstr "Anexos"
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/ShortcutRecorder.js:48
|
||||
msgid "Press the shortcut"
|
||||
msgstr "Prima o atalho"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/ShortcutRecorder.js:48
|
||||
msgid ""
|
||||
"Press the shortcut and then press ENTER. Or, press BACKSPACE to clear the "
|
||||
"shortcut."
|
||||
msgstr ""
|
||||
"Prima o atalho e de seguida prima ENTER. Ou então, prima BACKSPACE para "
|
||||
"apagar o atalho."
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/KeymapConfigScreen.js:62
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:142
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Error: %s"
|
||||
msgstr "Erro: %s"
|
||||
msgstr "Erro"
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/KeymapConfigScreen.js:125
|
||||
msgid "Command"
|
||||
msgstr "Comando"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/KeymapConfigScreen.js:126
|
||||
#, fuzzy
|
||||
msgid "Keyboard Shortcut"
|
||||
msgstr "Atalhos de Teclado"
|
||||
msgstr "Modo de Teclado"
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/utils/getLabel.js:24
|
||||
#, fuzzy
|
||||
msgid "Hide Joplin"
|
||||
msgstr "Esconder o Joplin"
|
||||
msgstr "Sobre o Joplin"
|
||||
|
||||
#: ElectronClient/gui/KeymapConfig/utils/getLabel.js:28
|
||||
#, fuzzy
|
||||
msgid "Preferences"
|
||||
msgstr "Preferências"
|
||||
msgstr "Preferências..."
|
||||
|
||||
#: ElectronClient/gui/NoteContentPropertiesDialog.js:77
|
||||
msgid "Words"
|
||||
@@ -1472,18 +1471,17 @@ msgstr "Visualizador"
|
||||
#: ElectronClient/gui/NoteContentPropertiesDialog.js:106
|
||||
#, javascript-format
|
||||
msgid "Read time: %s min"
|
||||
msgstr "Tempo de leitura: %s min"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/gui/NoteContentPropertiesDialog.js:109
|
||||
#, fuzzy
|
||||
msgid "Statistics"
|
||||
msgstr "Estatísticas"
|
||||
msgstr "Estado"
|
||||
|
||||
#: ElectronClient/bridge.js:177
|
||||
msgid ""
|
||||
"The app is now going to close. Please relaunch it to complete the process."
|
||||
msgstr ""
|
||||
"A aplicação vai fechar. Por favor volte a executá-la para completar o "
|
||||
"processo."
|
||||
|
||||
#: ElectronClient/app.js:340
|
||||
#, javascript-format
|
||||
@@ -1495,8 +1493,9 @@ msgid "Exit"
|
||||
msgstr "Sair"
|
||||
|
||||
#: ElectronClient/commands/copyDevCommand.js:17
|
||||
#, fuzzy
|
||||
msgid "Copy dev mode command to clipboard"
|
||||
msgstr "Copiar comando de modo dev para a área de transferências"
|
||||
msgstr "Copiar caminho para a área de transferência"
|
||||
|
||||
#: ElectronClient/commands/startExternalEditing.js:18
|
||||
msgid "Edit in external editor"
|
||||
@@ -1508,12 +1507,13 @@ msgid "Error opening note in editor: %s"
|
||||
msgstr "Erro a abrir a nota no editor: %s"
|
||||
|
||||
#: ElectronClient/commands/toggleExternalEditing.js:16
|
||||
#, fuzzy
|
||||
msgid "Toggle external editing"
|
||||
msgstr "Alternar edição externa"
|
||||
msgstr "Parar a edição externa"
|
||||
|
||||
#: ElectronClient/commands/toggleExternalEditing.js:42
|
||||
msgid "Stop"
|
||||
msgstr "Parar"
|
||||
msgstr ""
|
||||
|
||||
#: ElectronClient/commands/stopExternalEditing.js:16
|
||||
msgid "Stop external editing"
|
||||
@@ -1649,8 +1649,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Em qualquer comando, uma nota ou caderno pode ser indicada pelo título ou "
|
||||
"ID, ou através dos atalhos `$n` ou `$b` para, respetivamente, a nota ou "
|
||||
"caderno atualmente selecionado. O `$c` pode ser usado para indicar o item "
|
||||
"atualmente selecionado."
|
||||
"bloco de notas atualmente selecionado. O `$c` pode ser usado para indicar o "
|
||||
"item atualmente selecionado."
|
||||
|
||||
#: CliClient/app/command-help.js:79
|
||||
msgid "To move from one pane to another, press Tab or Shift+Tab."
|
||||
@@ -1743,7 +1743,7 @@ msgstr ""
|
||||
|
||||
#: CliClient/app/command-sync.js:35
|
||||
msgid "Upgrade the sync target to the latest version."
|
||||
msgstr "Atualize o alvo de sincronização para a última versão."
|
||||
msgstr ""
|
||||
|
||||
#: CliClient/app/command-sync.js:105
|
||||
#, javascript-format
|
||||
@@ -1771,8 +1771,9 @@ msgid "Synchronisation target: %s (%s)"
|
||||
msgstr "Destino de sincronização: %s (%s)"
|
||||
|
||||
#: CliClient/app/command-sync.js:177
|
||||
#, fuzzy
|
||||
msgid "Cannot initialise synchroniser."
|
||||
msgstr "Não é possível inicializar o sincronizador."
|
||||
msgstr "Não é possível alterar item encriptado."
|
||||
|
||||
#: CliClient/app/command-sync.js:207
|
||||
msgid "Starting synchronisation..."
|
||||
@@ -1915,8 +1916,9 @@ msgstr ""
|
||||
"desencriptados em segundo plano e estarão disponíveis brevemente."
|
||||
|
||||
#: CliClient/app/gui/NoteWidget.js:50
|
||||
#, fuzzy
|
||||
msgid "You may also type `status` for more information."
|
||||
msgstr "Pode também escrever `status` para mais informação."
|
||||
msgstr "Não peça confirmação."
|
||||
|
||||
#: CliClient/app/gui/FolderListWidget.js:31
|
||||
msgid "Search:"
|
||||
@@ -1960,16 +1962,14 @@ msgstr ""
|
||||
"vários minutos, dependendo de quanto há para desencriptar."
|
||||
|
||||
#: CliClient/app/command-e2ee.js:53
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Decrypted items: %d"
|
||||
msgstr "Itens desencriptados: %d"
|
||||
msgstr "Itens desencriptados: %s / %s"
|
||||
|
||||
#: CliClient/app/command-e2ee.js:54
|
||||
#, javascript-format
|
||||
msgid "Skipped items: %d (use --retry-failed-items to retry decrypting them)"
|
||||
msgstr ""
|
||||
"Itens ignorados: %d (use --retry-failed-items para tentar desencriptá-los "
|
||||
"novamente)"
|
||||
|
||||
#: CliClient/app/command-e2ee.js:68
|
||||
msgid "Completed decryption."
|
||||
@@ -2018,9 +2018,9 @@ msgid "Do not ask for confirmation."
|
||||
msgstr "Não peça confirmação."
|
||||
|
||||
#: CliClient/app/command-import.js:27
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Output format: %s"
|
||||
msgstr "Formato da saída: %s"
|
||||
msgstr "Formato da origem: %s"
|
||||
|
||||
#: CliClient/app/command-import.js:65
|
||||
msgid "Importing notes..."
|
||||
@@ -2051,8 +2051,6 @@ msgstr "Exibe um resumo sobre as notas e os cadernos."
|
||||
msgid ""
|
||||
"To retry decryption of these items. Run `e2ee decrypt --retry-failed-items`"
|
||||
msgstr ""
|
||||
"Para tentar desencriptar estes itens novamente. Execute `e2ee decrypt --"
|
||||
"retry-failed-items`"
|
||||
|
||||
#: CliClient/app/command-undone.js:12
|
||||
msgid "Marks a to-do as non-completed."
|
||||
@@ -2246,17 +2244,14 @@ msgid "HTML Directory"
|
||||
msgstr "Diretório HTML"
|
||||
|
||||
#: ReactNativeClient/lib/services/interop/InteropService.js:127
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
|
||||
msgstr ""
|
||||
"Não é possível carregar o módulo \"%s\" para o formato \"%s\" e saída \"%s\""
|
||||
msgstr "Não é possível carregar o módulo \"%s\" para o formato \"%s\"."
|
||||
|
||||
#: ReactNativeClient/lib/services/interop/InteropService.js:152
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
|
||||
msgstr ""
|
||||
"Não é possível carregar o módulo \"%s\" para o formato \"%s\" e o alvo \"%s"
|
||||
"\"."
|
||||
msgstr "Não é possível carregar o módulo \"%s\" para o formato \"%s\"."
|
||||
|
||||
#: ReactNativeClient/lib/services/interop/InteropService.js:187
|
||||
#, javascript-format
|
||||
@@ -2274,37 +2269,35 @@ msgstr "Notas Recuperadas"
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:236
|
||||
msgid "command"
|
||||
msgstr "comando"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:236
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:241
|
||||
#, javascript-format
|
||||
msgid "\"%s\" is missing the required \"%s\" property."
|
||||
msgstr "Está em falta a propriedade \"%s\" de \"%s\"."
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:241
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:248
|
||||
msgid "accelerator"
|
||||
msgstr "acelerador"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:248
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Invalid %s: %s."
|
||||
msgstr "\"%s\" inválida: %s"
|
||||
msgstr "Resposta inválida: %s"
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:266
|
||||
#, fuzzy, javascript-format
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Accelerator \"%s\" is used for \"%s\" and \"%s\" commands. This may lead to "
|
||||
"unexpected behaviour."
|
||||
msgstr ""
|
||||
"O acelerador \"%s\" é usado para comandos \"%s\" e \"%s\". Isto pode levar a "
|
||||
"comportamentos inesperados."
|
||||
|
||||
#: ReactNativeClient/lib/services/KeymapService.js:291
|
||||
#, fuzzy, javascript-format
|
||||
#, javascript-format
|
||||
msgid "Accelerator \"%s\" is not valid."
|
||||
msgstr "O acelerador \"%s\" não é válido."
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/services/report.js:121
|
||||
msgid "Items that cannot be synchronised"
|
||||
@@ -2316,9 +2309,9 @@ msgid ""
|
||||
"target. In order to find these items, either search for the title or the ID "
|
||||
"(which is displayed in brackets above)."
|
||||
msgstr ""
|
||||
"Esses itens permanecerão no dispositivo, mas não serão enviados para o alvo "
|
||||
"de sincronização. Para encontrar estes itens, procure o título ou o ID (que "
|
||||
"é apresentado entre parênteses acima)."
|
||||
"Esses itens permanecerão no dispositivo, mas não serão enviados para o "
|
||||
"destino de sincronização. Para encontrar estes itens, procure o título ou o "
|
||||
"ID (que é apresentado entre parênteses acima)."
|
||||
|
||||
#: ReactNativeClient/lib/services/report.js:130
|
||||
#, javascript-format
|
||||
@@ -2454,7 +2447,7 @@ msgstr "Versão do Perfil: %s"
|
||||
#: ReactNativeClient/lib/versionInfo.js:23
|
||||
#, javascript-format
|
||||
msgid "Keychain Supported: %s"
|
||||
msgstr "Porta-Chaves Suportado: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/JoplinServerApi.js:71
|
||||
#, javascript-format
|
||||
@@ -2856,7 +2849,7 @@ msgstr "Adicionar título"
|
||||
|
||||
#: ReactNativeClient/lib/components/screens/UpgradeSyncTargetScreen.js:42
|
||||
msgid "Sync Target Upgrade"
|
||||
msgstr "Atualização do Alvo de Sincronização"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/components/screens/encryption-config.js:119
|
||||
#, javascript-format
|
||||
@@ -2884,7 +2877,7 @@ msgid ""
|
||||
"the data! To enable encryption, please enter your password below."
|
||||
msgstr ""
|
||||
"Ativar a encriptação significa que *todas* as suas notas e anexos serão "
|
||||
"ressincronizados e enviados encriptados para o alvo de sincronização. Não "
|
||||
"ressincronizados e enviados encriptados para o destino de sincronização. Não "
|
||||
"perca a palavra-passe pois, por razões de segurança, esta será a única forma "
|
||||
"de desencriptar os dados! Para ativar a encriptação, introduza a sua palavra-"
|
||||
"passe abaixo."
|
||||
@@ -2946,11 +2939,8 @@ msgstr ""
|
||||
"Alguns itens não puderam ser sincronizados. Prima para mais informações."
|
||||
|
||||
#: ReactNativeClient/lib/components/screen-header.js:453
|
||||
#, fuzzy
|
||||
msgid "The sync target needs to be upgraded. Press this banner to proceed."
|
||||
msgstr ""
|
||||
"O alvo de sincronização precisa de ser atualizado. Clique neste banner para "
|
||||
"proceder."
|
||||
|
||||
#: ReactNativeClient/lib/components/side-menu-content.js:126
|
||||
#, javascript-format
|
||||
@@ -3031,7 +3021,7 @@ msgid ""
|
||||
"the sync target is accessible. The reported error was:"
|
||||
msgstr ""
|
||||
"Erro. Por favor verifique se o endereço, nome de utilizador, palavra-passe, "
|
||||
"etc. estão corretos e se o alvo de sincronização está acessível. O erro "
|
||||
"etc. estão corretos e se o destino de sincronização está acessível. O erro "
|
||||
"reportado foi:"
|
||||
|
||||
#: ReactNativeClient/lib/components/note-list.js:97
|
||||
@@ -3096,20 +3086,17 @@ msgid "Downloaded"
|
||||
msgstr "Transferido"
|
||||
|
||||
#: ReactNativeClient/lib/models/Resource.js:371
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid "Attachment conflict: \"%s\""
|
||||
msgstr "Anexos em conflito: \"%s\""
|
||||
msgstr "Anexos"
|
||||
|
||||
#: ReactNativeClient/lib/models/Resource.js:372
|
||||
#, javascript-format
|
||||
#, fuzzy, javascript-format
|
||||
msgid ""
|
||||
"There was a [conflict](%s) on the attachment below.\n"
|
||||
"\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
"Ocorreu um [conflito](%s) no anexo em baixo.\n"
|
||||
"\n"
|
||||
"%s"
|
||||
msgstr "Ocorreu um erro ao transferir este anexo:"
|
||||
|
||||
#: ReactNativeClient/lib/models/BaseItem.js:721
|
||||
msgid "Encrypted"
|
||||
@@ -3117,7 +3104,7 @@ msgstr "Encriptado"
|
||||
|
||||
#: ReactNativeClient/lib/models/BaseItem.js:781
|
||||
msgid "Encrypted items cannot be modified"
|
||||
msgstr "Não é possível modificar itens encriptados"
|
||||
msgstr "Não é possível modificar tens encriptados"
|
||||
|
||||
#: ReactNativeClient/lib/models/Note.js:27
|
||||
msgid "created date"
|
||||
@@ -3125,7 +3112,7 @@ msgstr "data criada"
|
||||
|
||||
#: ReactNativeClient/lib/models/Note.js:28
|
||||
msgid "custom order"
|
||||
msgstr "ordem personalizada"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Note.js:92
|
||||
msgid "This note does not have geolocation information."
|
||||
@@ -3142,18 +3129,20 @@ msgid "Cannot move note to \"%s\" notebook"
|
||||
msgstr "Não é possível mover a nota para o caderno \"%s\""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:65
|
||||
#, fuzzy
|
||||
msgid "yes"
|
||||
msgstr "sim"
|
||||
msgstr "Sim"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:65
|
||||
#: ReactNativeClient/lib/models/Setting.js:66
|
||||
#, javascript-format
|
||||
msgid "(wysiwyg: %s)"
|
||||
msgstr "(wysiwyg: %s)"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:66
|
||||
#, fuzzy
|
||||
msgid "no"
|
||||
msgstr "não"
|
||||
msgstr "n"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:68
|
||||
#, javascript-format
|
||||
@@ -3192,7 +3181,7 @@ msgstr "Nórdico"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:80
|
||||
msgid "Aritim Dark"
|
||||
msgstr "Escuro Aritim"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:81
|
||||
msgid "OLED Dark"
|
||||
@@ -3207,8 +3196,8 @@ msgid ""
|
||||
"The target to synchonise to. Each sync target may have additional parameters "
|
||||
"which are named as `sync.NUM.NAME` (all documented below)."
|
||||
msgstr ""
|
||||
"O destino para a sincronização. Cada alvo de sincronização pode ter "
|
||||
"parâmetros adicionais que são designados como `sync.NUM.NAME` (todos "
|
||||
"O destino para a sincronização. Cada destino de sincronização pode ter "
|
||||
"parâmetros adicionais que são designados como `sync.NUM.NUM.NAME` (todos "
|
||||
"documentados abaixo)."
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:131
|
||||
@@ -3241,15 +3230,15 @@ msgstr "Palavra-passe WebDAV"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:214
|
||||
msgid "AWS S3 bucket"
|
||||
msgstr "Bucket AWS S3"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:225
|
||||
msgid "AWS key"
|
||||
msgstr "Chave AWS"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:235
|
||||
msgid "AWS secret"
|
||||
msgstr "Segredo AWS"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:247
|
||||
msgid "Attachment download behaviour"
|
||||
@@ -3261,9 +3250,10 @@ msgid ""
|
||||
"In \"Auto\", they are downloaded when you open the note. In \"Always\", all "
|
||||
"the attachments are downloaded whether you open the note or not."
|
||||
msgstr ""
|
||||
"No modo \"Manual\", os anexos são transferidos apenas quando são clicados. "
|
||||
"Em \"Automático\", eles são transferidos quando a nota é aberta. Em \"Sempre"
|
||||
"\", todos os anexos são transferidos, quer a nota seja aberta ou não."
|
||||
"No modo \"Manual\", os anexos são transferidos apenas quando é dado um "
|
||||
"clique neles. Em \"Automático\", eles são transferidos quando a nota é "
|
||||
"aberta. Em \"Sempre\", todos os anexos são transferidos, quer a nota seja "
|
||||
"aberta ou não."
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:251
|
||||
msgid "Always"
|
||||
@@ -3299,15 +3289,15 @@ msgstr "Tema"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:337
|
||||
msgid "Automatically switch theme to match system theme"
|
||||
msgstr "Mudar automaticamente o tema para combinar com o tema do sistema"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:348
|
||||
msgid "Preferred light theme"
|
||||
msgstr "Tema claro preferido"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:361
|
||||
msgid "Preferred dark theme"
|
||||
msgstr "Tema escuro preferido"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:365
|
||||
msgid "Show note counts"
|
||||
@@ -3470,14 +3460,15 @@ msgid "Editor font family"
|
||||
msgstr "Família da letra do editor"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:556
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"This should be a *monospace* font or some elements will render incorrectly. "
|
||||
"If the font is incorrect or empty, it will default to a generic monospace "
|
||||
"font."
|
||||
msgstr ""
|
||||
"Este deverá ser um tipo de letra *mono-espaçado* ou não funcionará "
|
||||
"corretamente. Se o tipo de letra estiver incorreto ou em branco, reverterá "
|
||||
"para um tipo de letra mono-espaçado genérico pré-definido."
|
||||
"corretamente. Se o tipo de letra estiver incorreto ou em branco, será pré-"
|
||||
"definida para um tipo de letra mono-espaçado genérico."
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:595
|
||||
msgid "Custom stylesheet for Joplin-wide app styles"
|
||||
@@ -3491,7 +3482,7 @@ msgstr "Atualizar a aplicação automaticamente"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:601
|
||||
msgid "Get pre-releases when checking for updates"
|
||||
msgstr "Obtenha versões de pré-lançamento ao verificar se há atualizações"
|
||||
msgstr "Obtenha versões de pré-lançamento ao verificar atualizações"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:601
|
||||
#, javascript-format
|
||||
@@ -3500,7 +3491,7 @@ msgstr "Consulte a página de pré-lançamento para obter mais detalhes: %s"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:609
|
||||
msgid "Synchronisation interval"
|
||||
msgstr "Intervalo de sincronização"
|
||||
msgstr "Periodicidade de sincronização"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:613
|
||||
#: ReactNativeClient/lib/models/Setting.js:614
|
||||
@@ -3619,8 +3610,8 @@ msgid ""
|
||||
"Fail-safe: Do not wipe out local data when sync target is empty (often the "
|
||||
"result of a misconfiguration or bug)"
|
||||
msgstr ""
|
||||
"Segurança contra falhas: Não elimine os dados locais quando o alvo de "
|
||||
"sincronização está em branco (muitas vezes o resultado de uma má "
|
||||
"À prova de falhas: Não elimine os dados locais quando o destino de "
|
||||
"sincronização está em brancp (muitas vezes o resultado de uma má "
|
||||
"configuração ou erro)"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:695
|
||||
@@ -3650,7 +3641,7 @@ msgstr "Manter histórico de notas por"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:735
|
||||
msgid "Notebook list growth factor"
|
||||
msgstr "Fator de crescimento do caderno"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:736
|
||||
#: ReactNativeClient/lib/models/Setting.js:748
|
||||
@@ -3661,18 +3652,14 @@ msgid ""
|
||||
"item with a factor of 2 will take twice as much space as an item with a "
|
||||
"factor of 1.Restart app to see changes."
|
||||
msgstr ""
|
||||
"A propriedade fator define como um item aumentará ou diminuirá para ocupar o "
|
||||
"espaço disponível no seu contentor com respeito aos outros itens. Como tal, "
|
||||
"um item com um fator de 2 ocupará o dobro do espaço de um item com um fator "
|
||||
"de 1. Reinicie a aplicação para ver as alterações."
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:747
|
||||
msgid "Note list growth factor"
|
||||
msgstr "Fator de crescimento da lista de notas"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:759
|
||||
msgid "Note area growth factor"
|
||||
msgstr "Fator de crescimento da área de notas"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:1272
|
||||
msgid "General"
|
||||
@@ -3707,8 +3694,9 @@ msgid "Web Clipper"
|
||||
msgstr "Recorte Web"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:1292
|
||||
#, fuzzy
|
||||
msgid "Keyboard Shortcuts"
|
||||
msgstr "Atalhos do Teclado"
|
||||
msgstr "Modo de Teclado"
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:1299
|
||||
msgid ""
|
||||
@@ -3720,12 +3708,6 @@ msgid ""
|
||||
"formatting. It is indicated below which plugins are compatible or not with "
|
||||
"the WYSIWYG editor."
|
||||
msgstr ""
|
||||
"Estes plugins modificam o renderizador de Markdown com recursos adicionais. "
|
||||
"Note que, enquanto estes recursos podem ser úteis, não são Markdown padrão "
|
||||
"e, como tal, a maioria deles só funcionará no Joplin. Adicionalmente, alguns "
|
||||
"deles são *incompatíveis* com o editor WYSIWYG. Se abrir uma nota que use um "
|
||||
"destes plugins nesse editor, perderá a formatação do plugin. Está indicado "
|
||||
"abaixo quais os plugins que são ou não compatíveis com o editor WYSIWYG."
|
||||
|
||||
#: ReactNativeClient/lib/models/Setting.js:1301
|
||||
#, javascript-format
|
||||
@@ -3754,11 +3736,11 @@ msgstr "OneDrive"
|
||||
|
||||
#: ReactNativeClient/lib/SyncTargetAmazonS3.js:28
|
||||
msgid "AWS S3"
|
||||
msgstr "AWS S3"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/commands/historyForward.js:16
|
||||
msgid "Forward"
|
||||
msgstr "Avançar"
|
||||
msgstr ""
|
||||
|
||||
#: ReactNativeClient/lib/shim-init-node.js:158
|
||||
#, javascript-format
|
||||
|
||||
@@ -299,7 +299,7 @@ describe('services_KeymapService', () => {
|
||||
],
|
||||
[
|
||||
{ command: 'showLocalSearch', accelerator: 'Option+Cmd+S' },
|
||||
{ command: 'print', accelerator: 'Cmd+P' /* Default of gotoAnything */ },
|
||||
{ command: 'print', accelerator: 'Cmd+G' /* Default of gotoAnything */ },
|
||||
{ command: 'focusElementNoteTitle', accelerator: 'Option+Shift+Cmd+J' },
|
||||
],
|
||||
];
|
||||
@@ -317,7 +317,7 @@ describe('services_KeymapService', () => {
|
||||
],
|
||||
[
|
||||
{ command: 'showLocalSearch', accelerator: 'Ctrl+Alt+S' },
|
||||
{ command: 'print', accelerator: 'Ctrl+P' /* Default of gotoAnything */ },
|
||||
{ command: 'print', accelerator: 'Ctrl+G' /* Default of gotoAnything */ },
|
||||
{ command: 'focusElementNoteTitle', accelerator: 'Ctrl+Alt+Shift+J' },
|
||||
],
|
||||
];
|
||||
|
||||
@@ -425,7 +425,7 @@ class Application extends BaseApplication {
|
||||
const contextMenu = Menu.buildFromTemplate([
|
||||
{ label: _('Open %s', app.electronApp().name), click: () => { app.window().show(); } },
|
||||
{ type: 'separator' },
|
||||
{ label: _('Quit'), click: () => { app.quit(); } },
|
||||
{ label: _('Exit'), click: () => { app.quit(); } },
|
||||
]);
|
||||
app.createTray(contextMenu);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ import { AppState } from '../../app';
|
||||
import ToolbarButtonUtils from 'lib/services/commands/ToolbarButtonUtils';
|
||||
import { _ } from 'lib/locale';
|
||||
import stateToWhenClauseContext from 'lib/services/commands/stateToWhenClauseContext';
|
||||
import TagList from '../TagList';
|
||||
|
||||
const { themeStyle } = require('lib/theme');
|
||||
const { substrWithEllipsis } = require('lib/string-utils');
|
||||
@@ -40,6 +39,7 @@ const Note = require('lib/models/Note.js');
|
||||
const bridge = require('electron').remote.require('./bridge').default;
|
||||
const ExternalEditWatcher = require('lib/services/ExternalEditWatcher');
|
||||
const NoteRevisionViewer = require('../NoteRevisionViewer.min');
|
||||
const TagList = require('../TagList.min.js');
|
||||
|
||||
const commands = [
|
||||
require('./commands/showRevisions'),
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import * as React from 'react';
|
||||
import app from '../app';
|
||||
import MainScreen from './MainScreen/MainScreen';
|
||||
import ConfigScreen from './ConfigScreen/ConfigScreen';
|
||||
@@ -9,7 +10,6 @@ import { themeStyle } from 'lib/theme';
|
||||
import { Size } from './ResizableLayout/ResizableLayout';
|
||||
import MenuBar from './MenuBar';
|
||||
import { _ } from 'lib/locale';
|
||||
const React = require('react');
|
||||
|
||||
const { render } = require('react-dom');
|
||||
const { connect, Provider } = require('react-redux');
|
||||
|
||||
@@ -569,20 +569,6 @@ class SideBarComponent extends React.Component<Props, State> {
|
||||
CommandService.instance().execute('newFolder');
|
||||
}
|
||||
|
||||
// componentDidUpdate(prevProps:any, prevState:any) {
|
||||
// for (const n in prevProps) {
|
||||
// if (prevProps[n] !== (this.props as any)[n]) {
|
||||
// console.info('CHANGED PROPS', n);
|
||||
// }
|
||||
// }
|
||||
|
||||
// for (const n in prevState) {
|
||||
// if (prevState[n] !== (this.state as any)[n]) {
|
||||
// console.info('CHANGED STATE', n);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
render() {
|
||||
const theme = themeStyle(this.props.themeId);
|
||||
|
||||
|
||||
52
ElectronClient/gui/TagList.jsx
Normal file
52
ElectronClient/gui/TagList.jsx
Normal file
@@ -0,0 +1,52 @@
|
||||
const React = require('react');
|
||||
const { connect } = require('react-redux');
|
||||
const { themeStyle } = require('lib/theme');
|
||||
const TagItem = require('./TagItem.min.js');
|
||||
|
||||
class TagListComponent extends React.Component {
|
||||
render() {
|
||||
const style = Object.assign({}, this.props.style);
|
||||
const theme = themeStyle(this.props.themeId);
|
||||
const tags = this.props.items;
|
||||
|
||||
style.display = 'flex';
|
||||
style.flexDirection = 'row';
|
||||
// style.borderBottom = `1px solid ${theme.dividerColor}`;
|
||||
style.boxSizing = 'border-box';
|
||||
style.fontSize = theme.fontSize;
|
||||
style.whiteSpace = 'nowrap';
|
||||
// style.height = 40;
|
||||
style.paddingTop = 8;
|
||||
style.paddingBottom = 8;
|
||||
|
||||
const tagItems = [];
|
||||
if (tags && tags.length > 0) {
|
||||
|
||||
tags.sort((a, b) => {
|
||||
return a.title < b.title ? -1 : +1;
|
||||
});
|
||||
|
||||
for (let i = 0; i < tags.length; i++) {
|
||||
const props = {
|
||||
title: tags[i].title,
|
||||
key: tags[i].id,
|
||||
};
|
||||
tagItems.push(<TagItem {...props} />);
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="tag-list" style={style}>
|
||||
{tagItems}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = state => {
|
||||
return { themeId: state.settings.theme };
|
||||
};
|
||||
|
||||
const TagList = connect(mapStateToProps)(TagListComponent);
|
||||
|
||||
module.exports = TagList;
|
||||
@@ -1,63 +0,0 @@
|
||||
import * as React from 'react';
|
||||
import { useMemo } from 'react';
|
||||
import { AppState } from '../app';
|
||||
|
||||
const { connect } = require('react-redux');
|
||||
const { themeStyle } = require('lib/theme');
|
||||
const TagItem = require('./TagItem.min.js');
|
||||
|
||||
interface Props {
|
||||
themeId: number,
|
||||
style: any,
|
||||
items: any[],
|
||||
}
|
||||
|
||||
function TagList(props:Props) {
|
||||
const style = useMemo(() => {
|
||||
const theme = themeStyle(props.themeId);
|
||||
|
||||
const output = { ...props.style };
|
||||
output.display = 'flex';
|
||||
output.flexDirection = 'row';
|
||||
output.boxSizing = 'border-box';
|
||||
output.fontSize = theme.fontSize;
|
||||
output.whiteSpace = 'nowrap';
|
||||
output.paddingTop = 8;
|
||||
output.paddingBottom = 8;
|
||||
return output;
|
||||
}, [props.style, props.themeId]);
|
||||
|
||||
const tags = useMemo(() => {
|
||||
const output = props.items.slice();
|
||||
|
||||
output.sort((a:any, b:any) => {
|
||||
return a.title < b.title ? -1 : +1;
|
||||
});
|
||||
|
||||
return output;
|
||||
}, [props.items]);
|
||||
|
||||
const tagItems = useMemo(() => {
|
||||
const output = [];
|
||||
for (let i = 0; i < tags.length; i++) {
|
||||
const props = {
|
||||
title: tags[i].title,
|
||||
key: tags[i].id,
|
||||
};
|
||||
output.push(<TagItem {...props} />);
|
||||
}
|
||||
return output;
|
||||
}, [tags]);
|
||||
|
||||
return (
|
||||
<div className="tag-list" style={style}>
|
||||
{tagItems}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const mapStateToProps = (state:AppState) => {
|
||||
return { themeId: state.settings.theme };
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps)(TagList);
|
||||
2
ElectronClient/package-lock.json
generated
2
ElectronClient/package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Joplin",
|
||||
"version": "1.3.7",
|
||||
"version": "1.3.5",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Joplin",
|
||||
"version": "1.3.7",
|
||||
"version": "1.3.5",
|
||||
"description": "Joplin for Desktop",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -48,7 +48,7 @@ There are other ways to install the terminal application. However, they are not
|
||||
Operating system | Method
|
||||
-----------------|----------------
|
||||
macOS | `brew install joplin`
|
||||
Arch Linux | An Arch Linux package is available [here](https://aur.archlinux.org/packages/joplin/). To install it, use an AUR wrapper such as yay: `yay -S joplin`. Both the CLI tool (type `joplin`) and desktop app (type `joplin-desktop`) are packaged. You can also install a compiled version with the [chaotic-aur](https://wiki.archlinux.org/index.php/Unofficial_user_repositories#chaotic-aur) repository. For support, please go to the [GitHub repo](https://github.com/masterkorp/joplin-pkgbuild). If you are interested in [pre-release](https://joplinapp.org/prereleases/) you have [joplin-beta](https://aur.archlinux.org/packages/joplin-beta).
|
||||
Arch Linux | An Arch Linux package is available [here](https://aur.archlinux.org/packages/joplin/). To install it, use an AUR wrapper such as yay: `yay -S joplin`. Both the CLI tool (type `joplin`) and desktop app (type `joplin-desktop`) are packaged. You can also install a compiled version with the [chaotic-aur](https://wiki.archlinux.org/index.php/Unofficial_user_repositories#chaotic-aur) repository. For support, please go to the [GitHub repo](https://github.com/masterkorp/joplin-pkgbuild).
|
||||
|
||||
## Web Clipper
|
||||
|
||||
|
||||
@@ -546,13 +546,7 @@ export default class BaseApplication {
|
||||
await this.refreshNotes(newState, refreshNotesUseSelectedNoteId, refreshNotesHash);
|
||||
}
|
||||
|
||||
if (action.type === 'NOTE_UPDATE_ONE') {
|
||||
if (!action.changedFields.length || action.changedFields.includes('parent_id') || action.changedFields.includes('encryption_applied')) {
|
||||
refreshFolders = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (action.type === 'NOTE_DELETE') {
|
||||
if (action.type === 'NOTE_UPDATE_ONE' || action.type === 'NOTE_DELETE') {
|
||||
refreshFolders = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,8 +41,6 @@ class SyncTargetAmazonS3 extends BaseSyncTarget {
|
||||
accessKeyId: Setting.value('sync.8.username'),
|
||||
secretAccessKey: Setting.value('sync.8.password'),
|
||||
s3UseArnRegion: true, // override the request region with the region inferred from requested resource's ARN
|
||||
s3ForcePathStyle: true,
|
||||
endpoint: Setting.value('sync.8.url'),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -58,8 +56,6 @@ class SyncTargetAmazonS3 extends BaseSyncTarget {
|
||||
accessKeyId: options.username(),
|
||||
secretAccessKey: options.password(),
|
||||
s3UseArnRegion: true,
|
||||
s3ForcePathStyle: true,
|
||||
endpoint: options.url(),
|
||||
};
|
||||
|
||||
const api = new S3(apiOptions);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import * as React from 'react';
|
||||
import { View, Button, Text } from 'react-native';
|
||||
import { themeStyle } from 'lib/theme';
|
||||
import { _ } from 'lib/locale';
|
||||
const { View, Button, Text } = require('react-native');
|
||||
|
||||
const PopupDialog = require('react-native-popup-dialog').default;
|
||||
const { DialogTitle, DialogButton } = require('react-native-popup-dialog');
|
||||
|
||||
@@ -43,11 +43,8 @@ const reduxSharedMiddleware = async function(store, next, action) {
|
||||
DecryptionWorker.instance().scheduleStart();
|
||||
}
|
||||
|
||||
// 2020-10-19: Removed "NOTE_UPDATE_ONE" because there's no property in a note that
|
||||
// should trigger a refreshing of the tags.
|
||||
// Trying to fix this: https://github.com/laurent22/joplin/issues/3893
|
||||
if (action.type == 'NOTE_DELETE' ||
|
||||
// action.type == 'NOTE_UPDATE_ONE' ||
|
||||
action.type == 'NOTE_UPDATE_ONE' ||
|
||||
action.type == 'NOTE_UPDATE_ALL' ||
|
||||
action.type == 'NOTE_TAG_REMOVE' ||
|
||||
action.type == 'TAG_UPDATE_ONE') {
|
||||
|
||||
@@ -556,7 +556,7 @@ function enexXmlToMdArray(stream, resources) {
|
||||
} else if (isStrongTag(n)) {
|
||||
section.lines.push('**');
|
||||
} else if (isStrikeTag(n)) {
|
||||
section.lines.push('<s>');
|
||||
section.lines.push('(');
|
||||
} else if (isInlineCodeTag(n)) {
|
||||
section.lines.push('`');
|
||||
} else if (n == 'q') {
|
||||
@@ -739,7 +739,7 @@ function enexXmlToMdArray(stream, resources) {
|
||||
} else if (isStrongTag(n)) {
|
||||
section.lines.push('**');
|
||||
} else if (isStrikeTag(n)) {
|
||||
section.lines.push('</s>');
|
||||
section.lines.push(')');
|
||||
} else if (isInlineCodeTag(n)) {
|
||||
section.lines.push('`');
|
||||
} else if (isEmTag(n)) {
|
||||
|
||||
@@ -25,9 +25,9 @@ function installRule(markdownIt, mdOptions, ruleOptions) {
|
||||
const longPressHandler = `${ruleOptions.postMessageSyntax}('longclick:${id}')`;
|
||||
|
||||
const touchStart = `t=setTimeout(()=>{t=null; ${longPressHandler};}, ${longPressDelay});`;
|
||||
const cancel = 'if (!!t) clearTimeout(t); t=null';
|
||||
const touchEnd = 'if (!!t) clearTimeout(t); t=null';
|
||||
|
||||
js = ` ontouchstart="${touchStart}" ontouchend="${cancel}" ontouchcancel="${cancel}" ontouchmove="${cancel}"`;
|
||||
js = ` ontouchstart="${touchStart}" ontouchend="${touchEnd}"`;
|
||||
}
|
||||
|
||||
return `<img data-from-md ${htmlUtils.attributesHtml(Object.assign({}, r, { title: title }))}${js}/>`;
|
||||
|
||||
@@ -71,9 +71,9 @@ function installRule(markdownIt, mdOptions, ruleOptions) {
|
||||
const onLongClick = `${ruleOptions.postMessageSyntax}("longclick:${resourceId}")`;
|
||||
|
||||
const touchStart = `t=setTimeout(()=>{t=null; ${onLongClick};}, ${longPressDelay});`;
|
||||
const cancel = 'if (!!t) {clearTimeout(t); t=null;';
|
||||
const touchEnd = `${cancel} ${onClick};}`;
|
||||
js = `ontouchstart='${touchStart}' ontouchend='${touchEnd}' ontouchcancel='${cancel} ontouchmove="${cancel}'`;
|
||||
const touchEnd = `if (!!t) {clearTimeout(t); t=null; ${onClick};}`;
|
||||
|
||||
js = `ontouchstart='${touchStart}' ontouchend='${touchEnd}'`;
|
||||
} else {
|
||||
js = `onclick='${js}'`;
|
||||
}
|
||||
|
||||
@@ -587,29 +587,10 @@ class Note extends BaseItem {
|
||||
// decide what to keep and what to ignore, but in practice keeping the previous content is a bit
|
||||
// heavy - the note needs to be reloaded here, the JSON blob needs to be saved, etc.
|
||||
// So the check for old note here is basically an optimisation.
|
||||
|
||||
// 2020-10-19: It's not ideal to reload the previous version of the note before saving it again
|
||||
// but it should be relatively fast anyway. This is so that code that listens to the NOTE_UPDATE_ONE
|
||||
// action can decide what to do based on the fields that have been modified.
|
||||
// This is necessary for example so that the folder list is not refreshed every time a note is changed.
|
||||
// Now it can look at the properties and refresh only if the "parent_id" property is changed.
|
||||
// Trying to fix: https://github.com/laurent22/joplin/issues/3893
|
||||
const oldNote = !isNew && o.id ? await Note.load(o.id) : null;
|
||||
|
||||
let beforeNoteJson = null;
|
||||
if (oldNote && this.revisionService().isOldNote(o.id)) {
|
||||
beforeNoteJson = JSON.stringify(oldNote);
|
||||
}
|
||||
|
||||
const changedFields = [];
|
||||
|
||||
if (oldNote) {
|
||||
for (const field in o) {
|
||||
if (!o.hasOwnProperty(field)) continue;
|
||||
if (o[field] !== oldNote[field]) {
|
||||
changedFields.push(field);
|
||||
}
|
||||
}
|
||||
if (!isNew && this.revisionService().isOldNote(o.id)) {
|
||||
beforeNoteJson = await Note.load(o.id);
|
||||
if (beforeNoteJson) beforeNoteJson = JSON.stringify(beforeNoteJson);
|
||||
}
|
||||
|
||||
const note = await super.save(o, options);
|
||||
@@ -622,7 +603,6 @@ class Note extends BaseItem {
|
||||
type: 'NOTE_UPDATE_ONE',
|
||||
note: note,
|
||||
provisional: isProvisional,
|
||||
changedFields: changedFields,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -274,17 +274,6 @@ class Setting extends BaseModel {
|
||||
label: () => _('AWS S3 bucket'),
|
||||
description: () => emptyDirWarning,
|
||||
},
|
||||
'sync.8.url': {
|
||||
value: 'https://s3.amazonaws.com/',
|
||||
type: SettingItemType.String,
|
||||
section: 'sync',
|
||||
show: (settings:any) => {
|
||||
return settings['sync.target'] == SyncTargetRegistry.nameToId('amazon_s3');
|
||||
},
|
||||
public: true,
|
||||
label: () => _('AWS S3 URL'),
|
||||
secure: false,
|
||||
},
|
||||
'sync.8.username': {
|
||||
value: '',
|
||||
type: SettingItemType.String,
|
||||
|
||||
@@ -176,12 +176,7 @@ class Tag extends BaseItem {
|
||||
}
|
||||
|
||||
static async save(o, options = null) {
|
||||
options = Object.assign({}, {
|
||||
dispatchUpdateAction: true,
|
||||
userSideValidation: false,
|
||||
}, options);
|
||||
|
||||
if (options.userSideValidation) {
|
||||
if (options && options.userSideValidation) {
|
||||
if ('title' in o) {
|
||||
o.title = o.title.trim().toLowerCase();
|
||||
|
||||
@@ -191,13 +186,10 @@ class Tag extends BaseItem {
|
||||
}
|
||||
|
||||
return super.save(o, options).then(tag => {
|
||||
if (options.dispatchUpdateAction) {
|
||||
this.dispatch({
|
||||
type: 'TAG_UPDATE_ONE',
|
||||
item: tag,
|
||||
});
|
||||
}
|
||||
|
||||
this.dispatch({
|
||||
type: 'TAG_UPDATE_ONE',
|
||||
item: tag,
|
||||
});
|
||||
return tag;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,42 +1,18 @@
|
||||
const Folder = require('lib/models/Folder');
|
||||
const Note = require('lib/models/Note');
|
||||
const Tag = require('lib/models/Tag');
|
||||
|
||||
function randomIndex(array:any[]):number {
|
||||
return Math.round(Math.random() * (array.length - 1));
|
||||
}
|
||||
|
||||
function randomIndexes(arrayLength:number, count:number):number[] {
|
||||
const arr = [];
|
||||
while (arr.length < count) {
|
||||
const r = Math.floor(Math.random() * arrayLength);
|
||||
if (arr.indexOf(r) === -1) arr.push(r);
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
function randomElements(array:any[], count:number):any[] {
|
||||
const indexes = randomIndexes(array.length, count);
|
||||
const output = [];
|
||||
for (const index of indexes) {
|
||||
output.push(array[index]);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
// Use the constants below to define how many folders, notes and tags
|
||||
// should be created.
|
||||
export default async function populateDatabase(db:any) {
|
||||
await db.clearForTesting();
|
||||
|
||||
const folderCount = 200;
|
||||
const noteCount = 1000;
|
||||
const tagCount = 5000;
|
||||
const tagsPerNote = 10;
|
||||
const folderCount = 2000;
|
||||
const noteCount = 20000;
|
||||
|
||||
const createdFolderIds:string[] = [];
|
||||
const createdNoteIds:string[] = [];
|
||||
const createdTagIds:string[] = [];
|
||||
|
||||
for (let i = 0; i < folderCount; i++) {
|
||||
const folder:any = {
|
||||
@@ -56,24 +32,6 @@ export default async function populateDatabase(db:any) {
|
||||
console.info(`Folders: ${i} / ${folderCount}`);
|
||||
}
|
||||
|
||||
let tagBatch = [];
|
||||
for (let i = 0; i < tagCount; i++) {
|
||||
tagBatch.push(Tag.save({ title: `tag${i}` }, { dispatchUpdateAction: false }).then((savedTag:any) => {
|
||||
createdTagIds.push(savedTag.id);
|
||||
console.info(`Tags: ${i} / ${tagCount}`);
|
||||
}));
|
||||
|
||||
if (tagBatch.length > 1000) {
|
||||
await Promise.all(tagBatch);
|
||||
tagBatch = [];
|
||||
}
|
||||
}
|
||||
|
||||
if (tagBatch.length) {
|
||||
await Promise.all(tagBatch);
|
||||
tagBatch = [];
|
||||
}
|
||||
|
||||
let noteBatch = [];
|
||||
for (let i = 0; i < noteCount; i++) {
|
||||
const note:any = { title: `note${i}`, body: `This is note num. ${i}` };
|
||||
@@ -95,20 +53,4 @@ export default async function populateDatabase(db:any) {
|
||||
await Promise.all(noteBatch);
|
||||
noteBatch = [];
|
||||
}
|
||||
|
||||
let noteTagBatch = [];
|
||||
for (const noteId of createdNoteIds) {
|
||||
const tagIds = randomElements(createdTagIds, tagsPerNote);
|
||||
noteTagBatch.push(Tag.setNoteTagsByIds(noteId, tagIds));
|
||||
|
||||
if (noteTagBatch.length > 1000) {
|
||||
await Promise.all(noteTagBatch);
|
||||
noteTagBatch = [];
|
||||
}
|
||||
}
|
||||
|
||||
if (noteTagBatch.length) {
|
||||
await Promise.all(noteTagBatch);
|
||||
noteTagBatch = [];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -417,15 +417,7 @@ export default function queryBuilder(terms: Term[], fuzzy: boolean) {
|
||||
|
||||
let query;
|
||||
if (withs.length > 0) {
|
||||
if (terms.find(x => x.name === 'notebook') && terms.find(x => x.name === 'any')) {
|
||||
// The notebook filter should be independent of the any filter.
|
||||
// So we're first finding the OR of other filters and then combining them with the notebook filter using AND
|
||||
// in-required-notebook AND (condition #1 OR condition #2 OR ... )
|
||||
const queryString = `${queryParts.slice(0, 2).join(' ')} AND ROWID IN ( SELECT ROWID FROM notes_fts WHERE 1=0 ${queryParts.slice(2).join(' ')})`;
|
||||
query = ['WITH RECURSIVE' , withs.join(',') , queryString].join(' ');
|
||||
} else {
|
||||
query = ['WITH RECURSIVE' , withs.join(',') ,queryParts.join(' ')].join(' ');
|
||||
}
|
||||
query = ['WITH RECURSIVE' , withs.join(',') ,queryParts.join(' ')].join(' ');
|
||||
} else {
|
||||
query = queryParts.join(' ');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user