From 63f719a8062114e191a93efe099284d22936b110 Mon Sep 17 00:00:00 2001 From: Gerben Jan Dijkman Date: Mon, 1 Mar 2021 15:30:25 +0100 Subject: [PATCH] Added files --- ...-Update-access-to-DatabaseConnection.patch | 235 + ...editor-Wrap-the-welcome-panel-labels.patch | 35 + ...il-row-use-is-expanded-to-add-remove.patch | 66 + ...ve-shadow-from-folder-conversation-l.patch | 34 + ...Log-large-elapsed-query-times-as-a-w.patch | 46 + ...tor-add-pane-Drop-the-useless-shadow.patch | 24 + ...t-box-remove-shadow-and-make-the-row.patch | 235 + ...wer-move-actions-to-the-bottom-when-.patch | 258 + ...eConnection-Check-elapsed-time-for-e.patch | 102 + ...add-pane-Reduce-the-minimum-entry-wi.patch | 26 + ...tion-viewer-allow-one-email-per-line.patch | 64 + ...eary.Db.Statement-Minor-code-cleanup.patch | 66 + ...eit-pane-Ellipsize-the-account-row-l.patch | 28 + ...ar-use-custom-infobar-so-that-the-bu.patch | 558 ++ ...-Remove-separate-logging_parent-prop.patch | 150 + ...-editor-make-window-usable-on-phones.patch | 38 + ...wer-don-t-show-action-bar-when-in-co.patch | 37 + ....GenericAccount-Set-database-logging.patch | 28 + ...itor-use-HdyClamp-and-remove-padding.patch | 1281 ++++ ...ion-wrap-text-and-add-start-end-marg.patch | 49 + .../0007-Geary.Db-Update-SQL-logging.patch | 157 + ...eplace-remove-confirm-view-with-dial.patch | 354 + ...ount-Slice-up-search-table-populatio.patch | 262 + ...on-t-show-close-button-for-edit-serv.patch | 41 + ...der-Drop-create-merge-batch-size-dow.patch | 34 + .../0010-Update-Friulian-translation.patch | 405 ++ .../0011-Update-Friulian-translation.patch | 180 + .../0012-Update-Friulian-translation.patch | 34 + .../0013-Update-Friulian-translation.patch | 34 + .../0014-Update-Croatian-translation.patch | 3505 ++++++++++ .../0015-Update-Croatian-translation.patch | 2893 ++++++++ .../0016-Update-Slovak-translation.patch | 3209 +++++++++ .../0017-Update-Slovak-translation.patch | 276 + .../0018-Updated-Spanish-translation.patch | 75 + ...ificateManager-Fix-critical-when-no-.patch | 31 + ...ificateManager-Warn-when-GCR-not-abl.patch | 46 + ...on-Avoid-critical-when-client-sessio.patch | 35 + ...onObject-Ensure-the-session-is-conne.patch | 47 + ...rSession-Ensure-client-session-is-se.patch | 101 + ...onObject-Rename-claim_session-to-get.patch | 134 + ...ine-Support-GObject-notify-signal-fo.patch | 154 + ...ntSession-Treat-logout-as-disconnect.patch | 561 ++ ...Fix-criticals-when-mailto-has-empty-.patch | 79 + ...Fix-critical-when-immediately-detach.patch | 58 + ...sage-Fix-plain-text-file-attachment-.patch | 126 + ...ld-failure-due-to-missing-client-API.patch | 31 + ...ationData-Fix-font-settings-being-ig.patch | 62 + ...ll-folders-being-displayed-in-additi.patch | 64 + .../0034-Update-Hebrew-translation.patch | 6014 +++++++++++++++++ ...t-Update-to-use-meson-best-practices.patch | 251 + ...pdate-how-build-profiles-are-handled.patch | 143 + ...nt-Sort-external-const-alphabeticall.patch | 43 + ...038-Rename-INSTALLING-to-BUILDING.md.patch | 317 + .../0039-README.md-Minor-improvements.patch | 43 + .../0041-Update-Indonesian-translation.patch | 582 ++ ...43-Fix-accute-in-Catalan-translation.patch | 23 + .../files/0044-Update-Greek-translation.patch | 3431 ++++++++++ .../0045-Drop-saving-the-paned-width.patch | 172 + .../files/0046-Drop-the-2-panes-mode.patch | 150 + ...-window-Move-the-conversations-searc.patch | 186 + ...main-toolbar-Split-the-folder-header.patch | 206 + ...-main-toolbar-Add-add_to_size_groups.patch | 55 + ...in-window-Sync-the-pane-size-request.patch | 82 + .../files/0051-Use-leaflets-in-the-UI.patch | 338 + ...main-toolbar-Add-add_to_swipe_groups.patch | 40 + ...-window-Sync-the-leaflets-swipe-stat.patch | 58 + ...leaflet-navigation-with-Alt-Arrow-ke.patch | 66 + ...-back-buttons-for-leaflet-navigation.patch | 103 + ...-window-add-navigation-via-signle-cl.patch | 132 + .../files/0057-toolbar-header-group.patch | 35 + ...itch-leaflet-to-composer-when-folded.patch | 72 + ...t-use-shift-activate-to-open-convers.patch | 163 + ...se-the-composer-when-navigating-back.patch | 65 + ...k-forward-navigation-when-viewer-is-.patch | 34 + .../0062-Update-Swedish-translation.patch | 2102 ++++++ ...-single-unambiguous-date-format-for-.patch | 139 + ...Util.Date-Remove-now-unused-function.patch | 49 + ...ate-object-containing-conversation-a.patch | 1037 +++ ...n-action-bar-to-the-conversations-li.patch | 187 + ...nt-Work-around-libhandy-bug-when-ope.patch | 34 + ...rge-branch-mjog-558-webkit-shared-pr.patch | 1574 +++++ ...converting-between-JSC.Value-and-GLi.patch | 330 + ...ew-Convert-to-using-messages-for-JS-.patch | 644 ++ ...ew-Check-for-pass-up-exceptions-when.patch | 266 + ...n-Add-factory-method-for-error-user-.patch | 88 + ...n-Add-support-for-sending-messages-f.patch | 223 + ...JSC-Value-to-GLib.Variant-conversion.patch | 275 + ...ew-Convert-to-using-messages-for-JS-.patch | 234 + ...-Convert-to-using-messages-for-JS-cl.patch | 185 + ...View-Convert-to-using-messages-for-J.patch | 142 + ...n-Untangle-extension-and-JS-interact.patch | 138 + ...ryWebExtension-Trivial-code-clean-up.patch | 43 + ...ew-Remove-now-unused-message-handler.patch | 82 + ...er.ConversationMessage-Fix-valadoc-w.patch | 26 + .../0082-Util.JS-Remove-now-unused-code.patch | 103 + ...e-Use-CSS-for-managing-focus-with-co.patch | 130 + ...tGTK-min-version-to-include-UserMess.patch | 26 + .../0085-Update-Ukrainian-translation.patch | 1546 +++++ ...rf-relnote-it-s-not-really-that-note.patch | 32 + .../0087-Update-Turkish-translation.patch | 973 +++ ...e-Migrate-namespace-to-be-under-Util.patch | 57 + ...roller-Clean-up-config-data-vars-in-.patch | 58 + ...roller-Clean-up-invoking-XDG-config-.patch | 69 + ...nt-Rename-app-user-dirs-to-home-dirs.patch | 72 + ...ler-Migrate-release-config-if-needed.patch | 246 + ...yaml-Enable-copying-release-config-f.patch | 42 + ...nt-Support-determining-if-running-un.patch | 40 + ...nt-Introduce-and-use-consts-for-buil.patch | 43 + ...nt-Ensure-non-release-builds-don-t-c.patch | 73 + ...nt-about-system-libs-with-custom-VAP.patch | 35 + .../0101-Updated-Czech-translation.patch | 5085 ++++++++++++++ .../0102-Updated-Czech-translation.patch | 1420 ++++ ...b-view.js-Use-ResizeObserver-for-wat.patch | 89 + ...b-view.js-Use-arrow-functions-for-be.patch | 60 + ...web-view.css-Clean-up-HTML-BODY-elem.patch | 55 + ...web-view.css-Work-around-oversized-e.patch | 45 + ...iew-Fix-plain-text-emails-sometimes-.patch | 104 + .../0108-Update-Polish-translation.patch | 956 +++ .../0109-Update-Croatian-translation.patch | 973 +++ .../0110-Update-Catalan-translation.patch | 61 + ...rSession-Fix-null-param-critical-wit.patch | 32 + ...Suppress-unsupported-draft-folder-me.patch | 56 + ...anager-Wait-for-remote-to-be-open-in.patch | 47 + ...dget-Rework-draft-manager-management.patch | 140 + ...Clean-up-set_save_to_override-method.patch | 57 + ...r.Widget-Hide-save-button-by-default.patch | 27 + ...yaml-Remove-libhandy-module-it-is-no.patch | 64 + .../0118-Update-German-translation.patch | 3241 +++++++++ .../0119-Update-Ukrainian-translation.patch | 756 +++ .../0120-Update-Polish-translation.patch | 741 ++ .../0121-Update-Catalan-translation.patch | 137 + .../0122-Update-Indonesian-translation.patch | 1973 ++++++ .../0123-Add-Indonesian-translation.patch | 1678 +++++ .../0124-Update-Swedish-translation.patch | 1156 ++++ .../Bump-client-test-timeout-to-300s.patch | 18 + mail-client/geary/metadata.xml | 12 + 136 files changed, 59478 insertions(+) create mode 100644 mail-client/geary/files/0001-Geary.Db.Context-Update-access-to-DatabaseConnection.patch create mode 100644 mail-client/geary/files/0001-accounts-editor-Wrap-the-welcome-panel-labels.patch create mode 100644 mail-client/geary/files/0001-conversation-email-row-use-is-expanded-to-add-remove.patch create mode 100644 mail-client/geary/files/0001-main-window-remove-shadow-from-folder-conversation-l.patch create mode 100644 mail-client/geary/files/0002-Geary.Db.Result-Log-large-elapsed-query-times-as-a-w.patch create mode 100644 mail-client/geary/files/0002-accounts-editor-add-pane-Drop-the-useless-shadow.patch create mode 100644 mail-client/geary/files/0002-conversation-list-box-remove-shadow-and-make-the-row.patch create mode 100644 mail-client/geary/files/0002-conversation-viewer-move-actions-to-the-bottom-when-.patch create mode 100644 mail-client/geary/files/0003-Geary.Db.DatabaseConnection-Check-elapsed-time-for-e.patch create mode 100644 mail-client/geary/files/0003-accounts-editor-add-pane-Reduce-the-minimum-entry-wi.patch create mode 100644 mail-client/geary/files/0003-conversation-viewer-allow-one-email-per-line.patch create mode 100644 mail-client/geary/files/0004-Geary.Db.Statement-Minor-code-cleanup.patch create mode 100644 mail-client/geary/files/0004-accounts-editor-eit-pane-Ellipsize-the-account-row-l.patch create mode 100644 mail-client/geary/files/0004-compnents-info-bar-use-custom-infobar-so-that-the-bu.patch create mode 100644 mail-client/geary/files/0005-Geary.Db.Context-Remove-separate-logging_parent-prop.patch create mode 100644 mail-client/geary/files/0005-accounts-editor-make-window-usable-on-phones.patch create mode 100644 mail-client/geary/files/0005-conversation-viewer-don-t-show-action-bar-when-in-co.patch create mode 100644 mail-client/geary/files/0006-Geary.ImapEngine.GenericAccount-Set-database-logging.patch create mode 100644 mail-client/geary/files/0006-account-editor-use-HdyClamp-and-remove-padding.patch create mode 100644 mail-client/geary/files/0006-in-app-notification-wrap-text-and-add-start-end-marg.patch create mode 100644 mail-client/geary/files/0007-Geary.Db-Update-SQL-logging.patch create mode 100644 mail-client/geary/files/0007-account-editor-replace-remove-confirm-view-with-dial.patch create mode 100644 mail-client/geary/files/0008-Geary.ImapDb.Account-Slice-up-search-table-populatio.patch create mode 100644 mail-client/geary/files/0008-account-editor-don-t-show-close-button-for-edit-serv.patch create mode 100644 mail-client/geary/files/0009-Geary.ImapDB.Folder-Drop-create-merge-batch-size-dow.patch create mode 100644 mail-client/geary/files/0010-Update-Friulian-translation.patch create mode 100644 mail-client/geary/files/0011-Update-Friulian-translation.patch create mode 100644 mail-client/geary/files/0012-Update-Friulian-translation.patch create mode 100644 mail-client/geary/files/0013-Update-Friulian-translation.patch create mode 100644 mail-client/geary/files/0014-Update-Croatian-translation.patch create mode 100644 mail-client/geary/files/0015-Update-Croatian-translation.patch create mode 100644 mail-client/geary/files/0016-Update-Slovak-translation.patch create mode 100644 mail-client/geary/files/0017-Update-Slovak-translation.patch create mode 100644 mail-client/geary/files/0018-Updated-Spanish-translation.patch create mode 100644 mail-client/geary/files/0020-Application.CertificateManager-Fix-critical-when-no-.patch create mode 100644 mail-client/geary/files/0021-Application.CertificateManager-Warn-when-GCR-not-abl.patch create mode 100644 mail-client/geary/files/0022-Geary.Imap.Session-Avoid-critical-when-client-sessio.patch create mode 100644 mail-client/geary/files/0023-Geary.Imap.SessionObject-Ensure-the-session-is-conne.patch create mode 100644 mail-client/geary/files/0024-Geary.Imap.FolderSession-Ensure-client-session-is-se.patch create mode 100644 mail-client/geary/files/0025-Geary.Imap.SessionObject-Rename-claim_session-to-get.patch create mode 100644 mail-client/geary/files/0026-Geary.State.Machine-Support-GObject-notify-signal-fo.patch create mode 100644 mail-client/geary/files/0027-Geary.Imap.ClientSession-Treat-logout-as-disconnect.patch create mode 100644 mail-client/geary/files/0028-Composer.Widget-Fix-criticals-when-mailto-has-empty-.patch create mode 100644 mail-client/geary/files/0029-Composer.Widget-Fix-critical-when-immediately-detach.patch create mode 100644 mail-client/geary/files/0030-Geary.RFC822.Message-Fix-plain-text-file-attachment-.patch create mode 100644 mail-client/geary/files/0031-build-Fix-build-failure-due-to-missing-client-API.patch create mode 100644 mail-client/geary/files/0032-FormattedConversationData-Fix-font-settings-being-ig.patch create mode 100644 mail-client/geary/files/0033-client-Fix-not-all-folders-being-displayed-in-additi.patch create mode 100644 mail-client/geary/files/0034-Update-Hebrew-translation.patch create mode 100644 mail-client/geary/files/0035-meson_options.txt-Update-to-use-meson-best-practices.patch create mode 100644 mail-client/geary/files/0036-build-Update-how-build-profiles-are-handled.patch create mode 100644 mail-client/geary/files/0037-Application.Client-Sort-external-const-alphabeticall.patch create mode 100644 mail-client/geary/files/0038-Rename-INSTALLING-to-BUILDING.md.patch create mode 100644 mail-client/geary/files/0039-README.md-Minor-improvements.patch create mode 100644 mail-client/geary/files/0041-Update-Indonesian-translation.patch create mode 100644 mail-client/geary/files/0043-Fix-accute-in-Catalan-translation.patch create mode 100644 mail-client/geary/files/0044-Update-Greek-translation.patch create mode 100644 mail-client/geary/files/0045-Drop-saving-the-paned-width.patch create mode 100644 mail-client/geary/files/0046-Drop-the-2-panes-mode.patch create mode 100644 mail-client/geary/files/0047-application-main-window-Move-the-conversations-searc.patch create mode 100644 mail-client/geary/files/0048-main-toolbar-Split-the-folder-header.patch create mode 100644 mail-client/geary/files/0049-main-toolbar-Add-add_to_size_groups.patch create mode 100644 mail-client/geary/files/0050-application-main-window-Sync-the-pane-size-request.patch create mode 100644 mail-client/geary/files/0051-Use-leaflets-in-the-UI.patch create mode 100644 mail-client/geary/files/0052-main-toolbar-Add-add_to_swipe_groups.patch create mode 100644 mail-client/geary/files/0053-application-main-window-Sync-the-leaflets-swipe-stat.patch create mode 100644 mail-client/geary/files/0054-main-window-Add-leaflet-navigation-with-Alt-Arrow-ke.patch create mode 100644 mail-client/geary/files/0055-main-toolbar-Add-back-buttons-for-leaflet-navigation.patch create mode 100644 mail-client/geary/files/0056-application-main-window-add-navigation-via-signle-cl.patch create mode 100644 mail-client/geary/files/0057-toolbar-header-group.patch create mode 100644 mail-client/geary/files/0058-composer-Switch-leaflet-to-composer-when-folded.patch create mode 100644 mail-client/geary/files/0059-conversation-list-use-shift-activate-to-open-convers.patch create mode 100644 mail-client/geary/files/0060-composer-close-the-composer-when-navigating-back.patch create mode 100644 mail-client/geary/files/0061-main-window-Block-forward-navigation-when-viewer-is-.patch create mode 100644 mail-client/geary/files/0062-Update-Swedish-translation.patch create mode 100644 mail-client/geary/files/0063-Util.Email-Use-a-single-unambiguous-date-format-for-.patch create mode 100644 mail-client/geary/files/0064-Util.Date-Remove-now-unused-function.patch create mode 100644 mail-client/geary/files/0065-main-toolbar-Create-object-containing-conversation-a.patch create mode 100644 mail-client/geary/files/0066-action-bar-Add-an-action-bar-to-the-conversations-li.patch create mode 100644 mail-client/geary/files/0067-Application.Client-Work-around-libhandy-bug-when-ope.patch create mode 100644 mail-client/geary/files/0068-Revert-Revert-Merge-branch-mjog-558-webkit-shared-pr.patch create mode 100644 mail-client/geary/files/0069-Util.JS-Support-converting-between-JSC.Value-and-GLi.patch create mode 100644 mail-client/geary/files/0070-Components.WebView-Convert-to-using-messages-for-JS-.patch create mode 100644 mail-client/geary/files/0071-Components.WebView-Check-for-pass-up-exceptions-when.patch create mode 100644 mail-client/geary/files/0072-GearyWebExtension-Add-factory-method-for-error-user-.patch create mode 100644 mail-client/geary/files/0073-GearyWebExtension-Add-support-for-sending-messages-f.patch create mode 100644 mail-client/geary/files/0074-Util.Js-Improve-JSC-Value-to-GLib.Variant-conversion.patch create mode 100644 mail-client/geary/files/0075-Components.WebView-Convert-to-using-messages-for-JS-.patch create mode 100644 mail-client/geary/files/0076-Composer.WebView-Convert-to-using-messages-for-JS-cl.patch create mode 100644 mail-client/geary/files/0077-Conversation.WebView-Convert-to-using-messages-for-J.patch create mode 100644 mail-client/geary/files/0078-GearyWebExtension-Untangle-extension-and-JS-interact.patch create mode 100644 mail-client/geary/files/0079-GearyWebExtension-Trivial-code-clean-up.patch create mode 100644 mail-client/geary/files/0080-Components.WebView-Remove-now-unused-message-handler.patch create mode 100644 mail-client/geary/files/0081-ConversationViewer.ConversationMessage-Fix-valadoc-w.patch create mode 100644 mail-client/geary/files/0082-Util.JS-Remove-now-unused-code.patch create mode 100644 mail-client/geary/files/0083-ComposerPageState-Use-CSS-for-managing-focus-with-co.patch create mode 100644 mail-client/geary/files/0084-build-Bump-WebKitGTK-min-version-to-include-UserMess.patch create mode 100644 mail-client/geary/files/0085-Update-Ukrainian-translation.patch create mode 100644 mail-client/geary/files/0086-client-Remove-perf-relnote-it-s-not-really-that-note.patch create mode 100644 mail-client/geary/files/0087-Update-Turkish-translation.patch create mode 100644 mail-client/geary/files/0088-client-Move-Migrate-namespace-to-be-under-Util.patch create mode 100644 mail-client/geary/files/0089-Application.Controller-Clean-up-config-data-vars-in-.patch create mode 100644 mail-client/geary/files/0090-Application.Controller-Clean-up-invoking-XDG-config-.patch create mode 100644 mail-client/geary/files/0091-Application.Client-Rename-app-user-dirs-to-home-dirs.patch create mode 100644 mail-client/geary/files/0092-Geary.Controller-Migrate-release-config-if-needed.patch create mode 100644 mail-client/geary/files/0093-org.gnome.Geary.yaml-Enable-copying-release-config-f.patch create mode 100644 mail-client/geary/files/0094-Application.Client-Support-determining-if-running-un.patch create mode 100644 mail-client/geary/files/0095-Application.Client-Introduce-and-use-consts-for-buil.patch create mode 100644 mail-client/geary/files/0096-Application.Client-Ensure-non-release-builds-don-t-c.patch create mode 100644 mail-client/geary/files/0097-build-Make-comment-about-system-libs-with-custom-VAP.patch create mode 100644 mail-client/geary/files/0101-Updated-Czech-translation.patch create mode 100644 mail-client/geary/files/0102-Updated-Czech-translation.patch create mode 100644 mail-client/geary/files/0103-ui-components-web-view.js-Use-ResizeObserver-for-wat.patch create mode 100644 mail-client/geary/files/0104-ui-components-web-view.js-Use-arrow-functions-for-be.patch create mode 100644 mail-client/geary/files/0105-ui-conversation-web-view.css-Clean-up-HTML-BODY-elem.patch create mode 100644 mail-client/geary/files/0106-ui-conversation-web-view.css-Work-around-oversized-e.patch create mode 100644 mail-client/geary/files/0107-ConversationWebView-Fix-plain-text-emails-sometimes-.patch create mode 100644 mail-client/geary/files/0108-Update-Polish-translation.patch create mode 100644 mail-client/geary/files/0109-Update-Croatian-translation.patch create mode 100644 mail-client/geary/files/0110-Update-Catalan-translation.patch create mode 100644 mail-client/geary/files/0111-Geary.Imap.FolderSession-Fix-null-param-critical-wit.patch create mode 100644 mail-client/geary/files/0112-Composer.Widget-Suppress-unsupported-draft-folder-me.patch create mode 100644 mail-client/geary/files/0113-Geary.App.DraftManager-Wait-for-remote-to-be-open-in.patch create mode 100644 mail-client/geary/files/0114-Composer.Widget-Rework-draft-manager-management.patch create mode 100644 mail-client/geary/files/0115-Composer.Widget-Clean-up-set_save_to_override-method.patch create mode 100644 mail-client/geary/files/0116-Composer.Widget-Hide-save-button-by-default.patch create mode 100644 mail-client/geary/files/0117-org.gnome.Geary.yaml-Remove-libhandy-module-it-is-no.patch create mode 100644 mail-client/geary/files/0118-Update-German-translation.patch create mode 100644 mail-client/geary/files/0119-Update-Ukrainian-translation.patch create mode 100644 mail-client/geary/files/0120-Update-Polish-translation.patch create mode 100644 mail-client/geary/files/0121-Update-Catalan-translation.patch create mode 100644 mail-client/geary/files/0122-Update-Indonesian-translation.patch create mode 100644 mail-client/geary/files/0123-Add-Indonesian-translation.patch create mode 100644 mail-client/geary/files/0124-Update-Swedish-translation.patch create mode 100644 mail-client/geary/files/Bump-client-test-timeout-to-300s.patch create mode 100644 mail-client/geary/metadata.xml diff --git a/mail-client/geary/files/0001-Geary.Db.Context-Update-access-to-DatabaseConnection.patch b/mail-client/geary/files/0001-Geary.Db.Context-Update-access-to-DatabaseConnection.patch new file mode 100644 index 0000000..c6f4bab --- /dev/null +++ b/mail-client/geary/files/0001-Geary.Db.Context-Update-access-to-DatabaseConnection.patch @@ -0,0 +1,235 @@ +From 3b6dd303323cfc5b7bebe5b1d88170f1030f2de2 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 5 Sep 2020 14:13:01 +1000 +Subject: [PATCH 001/124] Geary.Db.Context: Update access to + DatabaseConnections + +Ensure internal code can access a DatabaseConnection from context +objects to get access to connection-specific code, but make the +polymorphic context accessors internal so transactions can't access +them. +--- + src/engine/db/db-connection.vala | 5 +++-- + src/engine/db/db-context.vala | 8 ++++---- + src/engine/db/db-database-connection.vala | 8 ++++---- + src/engine/db/db-database.vala | 8 ++++---- + src/engine/db/db-result.vala | 8 ++++---- + src/engine/db/db-statement.vala | 19 ++++++++++++------- + src/engine/db/db-transaction-connection.vala | 11 +---------- + src/engine/imap-db/imap-db-attachment.vala | 2 +- + 8 files changed, 33 insertions(+), 36 deletions(-) + +diff --git a/src/engine/db/db-connection.vala b/src/engine/db/db-connection.vala +index 4f0859e1..ebce27dc 100644 +--- a/src/engine/db/db-connection.vala ++++ b/src/engine/db/db-connection.vala +@@ -18,7 +18,7 @@ + * A connection will be automatically closed when its last reference + * is dropped. + */ +-public interface Geary.Db.Connection : Context { ++public interface Geary.Db.Connection : BaseObject { + + private const string PRAGMA_FOREIGN_KEYS = "foreign_keys"; + private const string PRAGMA_RECURSIVE_TRIGGERS = "recursive_triggers"; +@@ -278,7 +278,8 @@ public interface Geary.Db.Connection : Context { + * + * @see exec + */ +- public abstract Result query(string sql, GLib.Cancellable? cancellable = null) ++ public abstract Result query(string sql, ++ GLib.Cancellable? cancellable = null) + throws GLib.Error; + + /** +diff --git a/src/engine/db/db-context.vala b/src/engine/db/db-context.vala +index 9bbb8503..a59f6c4c 100644 +--- a/src/engine/db/db-context.vala ++++ b/src/engine/db/db-context.vala +@@ -37,19 +37,19 @@ public abstract class Geary.Db.Context : BaseObject, Logging.Source { + private weak Logging.Source? _logging_parent = null; + + +- public virtual Database? get_database() { ++ internal virtual Database? get_database() { + return get_connection() != null ? get_connection().database : null; + } + +- public virtual Connection? get_connection() { ++ internal virtual DatabaseConnection? get_connection() { + return get_statement() != null ? get_statement().connection : null; + } + +- public virtual Statement? get_statement() { ++ internal virtual Statement? get_statement() { + return get_result() != null ? get_result().statement : null; + } + +- public virtual Result? get_result() { ++ internal virtual Result? get_result() { + return null; + } + +diff --git a/src/engine/db/db-database-connection.vala b/src/engine/db/db-database-connection.vala +index 4e7ceb78..dd311bea 100644 +--- a/src/engine/db/db-database-connection.vala ++++ b/src/engine/db/db-database-connection.vala +@@ -255,13 +255,13 @@ public class Geary.Db.DatabaseConnection : Context, Connection { + return yield job.wait_for_completion_async(); + } + +- public override Connection? get_connection() { +- return this; +- } +- + /** {@inheritDoc} */ + public override Logging.State to_logging_state() { + return new Logging.State(this, "%u", this.cx_number); + } + ++ internal override DatabaseConnection? get_connection() { ++ return this; ++ } ++ + } +diff --git a/src/engine/db/db-database.vala b/src/engine/db/db-database.vala +index 592bd306..a807e7ba 100644 +--- a/src/engine/db/db-database.vala ++++ b/src/engine/db/db-database.vala +@@ -358,10 +358,6 @@ public class Geary.Db.Database : Context { + } + + +- public override Database? get_database() { +- return this; +- } +- + /** {@inheritDoc} */ + public override Logging.State to_logging_state() { + return new Logging.State( +@@ -386,6 +382,10 @@ public class Geary.Db.Database : Context { + this.thread_pool.add(new_job); + } + ++ internal override Database? get_database() { ++ return this; ++ } ++ + /** + * Hook for subclasses to modify a new SQLite connection before use. + * +diff --git a/src/engine/db/db-result.vala b/src/engine/db/db-result.vala +index 1ec3ed55..64c78756 100644 +--- a/src/engine/db/db-result.vala ++++ b/src/engine/db/db-result.vala +@@ -294,15 +294,15 @@ public class Geary.Db.Result : Geary.Db.Context { + return column; + } + +- public override Result? get_result() { +- return this; +- } +- + /** {@inheritDoc} */ + public override Logging.State to_logging_state() { + return new Logging.State(this, this.finished ? "finished" : "not finished"); + } + ++ internal override Result? get_result() { ++ return this; ++ } ++ + [PrintfFormat] + private void log_result(string fmt, ...) { + if (Db.Context.enable_sql_logging) { +diff --git a/src/engine/db/db-statement.vala b/src/engine/db/db-statement.vala +index 0a36dfb1..088b882b 100644 +--- a/src/engine/db/db-statement.vala ++++ b/src/engine/db/db-statement.vala +@@ -13,7 +13,7 @@ public class Geary.Db.Statement : Context { + get { return this.stmt.sql(); } + } + +- public Connection connection { get; private set; } ++ internal DatabaseConnection connection { get; private set; } + + internal Sqlite.Statement stmt; + +@@ -36,9 +36,14 @@ public class Geary.Db.Statement : Context { + + private Gee.HashSet held_buffers = new Gee.HashSet(); + +- internal Statement(Connection connection, string sql) throws DatabaseError { ++ internal Statement(DatabaseConnection connection, string sql) ++ throws DatabaseError { + this.connection = connection; +- throw_on_error("Statement.ctor", connection.db.prepare_v2(sql, -1, out stmt, null), sql); ++ throw_on_error( ++ "Statement.ctor", ++ connection.db.prepare_v2(sql, -1, out stmt, null), ++ sql ++ ); + } + + /** Returns SQL for the statement with bound parameters expanded. */ +@@ -271,13 +276,13 @@ public class Geary.Db.Statement : Context { + return this; + } + +- public override Statement? get_statement() { +- return this; +- } +- + /** {@inheritDoc} */ + public override Logging.State to_logging_state() { + return new Logging.State(this, this.sql); + } + ++ internal override Statement? get_statement() { ++ return this; ++ } ++ + } +diff --git a/src/engine/db/db-transaction-connection.vala b/src/engine/db/db-transaction-connection.vala +index 48244dbc..ebdd18b4 100644 +--- a/src/engine/db/db-transaction-connection.vala ++++ b/src/engine/db/db-transaction-connection.vala +@@ -9,7 +9,7 @@ + /** + * A connection to the database for transactions. + */ +-internal class Geary.Db.TransactionConnection : Context, Connection { ++internal class Geary.Db.TransactionConnection : BaseObject, Connection { + + + /** {@inheritDoc} */ +@@ -54,13 +54,4 @@ internal class Geary.Db.TransactionConnection : Context, Connection { + this.db_cx.exec_file(file, cancellable); + } + +- public override Connection? get_connection() { +- return this; +- } +- +- /** {@inheritDoc} */ +- public override Logging.State to_logging_state() { +- return new Logging.State(this, ""); +- } +- + } +diff --git a/src/engine/imap-db/imap-db-attachment.vala b/src/engine/imap-db/imap-db-attachment.vala +index d8e8f9db..fa94b630 100644 +--- a/src/engine/imap-db/imap-db-attachment.vala ++++ b/src/engine/imap-db/imap-db-attachment.vala +@@ -245,7 +245,7 @@ private class Geary.ImapDB.Attachment : Geary.Attachment { + } + + // Ensure they're dead, Jim. +- Db.Statement stmt = new Db.Statement(cx, """ ++ Db.Statement stmt = cx.prepare(""" + DELETE FROM MessageAttachmentTable WHERE message_id = ? + """); + stmt.bind_rowid(0, message_id); +-- +2.29.2 + diff --git a/mail-client/geary/files/0001-accounts-editor-Wrap-the-welcome-panel-labels.patch b/mail-client/geary/files/0001-accounts-editor-Wrap-the-welcome-panel-labels.patch new file mode 100644 index 0000000..237a8cd --- /dev/null +++ b/mail-client/geary/files/0001-accounts-editor-Wrap-the-welcome-panel-labels.patch @@ -0,0 +1,35 @@ +From e6fd0fe1742bd2143c1fa16fa30e82a5ea7996ed Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Thu, 23 Apr 2020 10:11:06 +0200 +Subject: [PATCH 1/8] accounts-editor: Wrap the welcome panel labels + +This helps the accounts editor fit in narrow screens. +--- + ui/accounts_editor_list_pane.ui | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ui/accounts_editor_list_pane.ui b/ui/accounts_editor_list_pane.ui +index 59f8c632..a40604e3 100644 +--- a/ui/accounts_editor_list_pane.ui ++++ b/ui/accounts_editor_list_pane.ui +@@ -60,6 +60,8 @@ + start + start + To get started, select an email provider below. ++ 0 ++ True + + + 1 +@@ -73,6 +75,8 @@ + start + end + Welcome to Geary ++ 0 ++ True + + + +-- +2.29.2 + diff --git a/mail-client/geary/files/0001-conversation-email-row-use-is-expanded-to-add-remove.patch b/mail-client/geary/files/0001-conversation-email-row-use-is-expanded-to-add-remove.patch new file mode 100644 index 0000000..8168c90 --- /dev/null +++ b/mail-client/geary/files/0001-conversation-email-row-use-is-expanded-to-add-remove.patch @@ -0,0 +1,66 @@ +From c0a89a86e48667b17dcae934e5f3b15a2475abf3 Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Thu, 22 Oct 2020 15:47:09 +0200 +Subject: [PATCH 1/2] conversation-email-row: use is-expanded to add/remove css + class + +--- + .../conversation-viewer/conversation-list-box.vala | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/src/client/conversation-viewer/conversation-list-box.vala b/src/client/conversation-viewer/conversation-list-box.vala +index 3eb8240b..f860a2df 100644 +--- a/src/client/conversation-viewer/conversation-list-box.vala ++++ b/src/client/conversation-viewer/conversation-list-box.vala +@@ -284,6 +284,7 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + } + protected set { + this._is_expanded = value; ++ notify_property("is-expanded"); + } + } + private bool _is_expanded = false; +@@ -301,6 +302,7 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + protected ConversationRow(Geary.Email? email) { + base_ref(); + this.email = email; ++ notify["is-expanded"].connect(update_css_class); + show(); + } + +@@ -325,6 +327,13 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + this.size_allocate.connect(on_size_allocate); + } + ++ private void update_css_class() { ++ if (this.is_expanded) ++ get_style_context().add_class(EXPANDED_CLASS); ++ else ++ get_style_context().remove_class(EXPANDED_CLASS); ++ } ++ + protected inline void set_style_context_class(string class_name, bool value) { + if (value) { + get_style_context().add_class(class_name); +@@ -392,10 +401,8 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + + private inline void update_row_expansion() { + if (this.is_expanded || this.is_pinned) { +- get_style_context().add_class(EXPANDED_CLASS); + this.view.expand_email(); + } else { +- get_style_context().remove_class(EXPANDED_CLASS); + this.view.collapse_email(); + } + } +@@ -436,7 +443,6 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + base(view.referred); + this.view = view; + this.is_expanded = true; +- get_style_context().add_class(EXPANDED_CLASS); + add(this.view); + } + +-- +2.29.2 + diff --git a/mail-client/geary/files/0001-main-window-remove-shadow-from-folder-conversation-l.patch b/mail-client/geary/files/0001-main-window-remove-shadow-from-folder-conversation-l.patch new file mode 100644 index 0000000..d4f2de4 --- /dev/null +++ b/mail-client/geary/files/0001-main-window-remove-shadow-from-folder-conversation-l.patch @@ -0,0 +1,34 @@ +From 0923de098f2e9ae6a94c5bb82e26b7d80c5181dc Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Fri, 9 Oct 2020 15:55:57 +0200 +Subject: [PATCH 1/6] main-window: remove shadow from folder/conversation list + +--- + ui/application-main-window.ui | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ui/application-main-window.ui b/ui/application-main-window.ui +index 547b063f..c55e42ab 100644 +--- a/ui/application-main-window.ui ++++ b/ui/application-main-window.ui +@@ -49,7 +49,7 @@ + False + True + 0 +- in ++ none + + + 100 +@@ -95,7 +95,7 @@ + True + False + 0 +- in ++ none + + + 250 +-- +2.29.2 + diff --git a/mail-client/geary/files/0002-Geary.Db.Result-Log-large-elapsed-query-times-as-a-w.patch b/mail-client/geary/files/0002-Geary.Db.Result-Log-large-elapsed-query-times-as-a-w.patch new file mode 100644 index 0000000..6778c17 --- /dev/null +++ b/mail-client/geary/files/0002-Geary.Db.Result-Log-large-elapsed-query-times-as-a-w.patch @@ -0,0 +1,46 @@ +From a1d31847b115e8ac81520226ff121fabc1f2e2ef Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 5 Sep 2020 14:15:28 +1000 +Subject: [PATCH 002/124] Geary.Db.Result: Log large elapsed query times as a + warning + +Help ensure that long-running queries get some visibility during +development. +--- + src/engine/db/db-result.vala | 19 ++++++++++++++++--- + 1 file changed, 16 insertions(+), 3 deletions(-) + +diff --git a/src/engine/db/db-result.vala b/src/engine/db/db-result.vala +index 64c78756..300d3afa 100644 +--- a/src/engine/db/db-result.vala ++++ b/src/engine/db/db-result.vala +@@ -38,10 +38,23 @@ public class Geary.Db.Result : Geary.Db.Context { + check_cancelled("Result.next", cancellable); + + if (!finished) { +- Timer timer = new Timer(); ++ var timer = new GLib.Timer(); + finished = throw_on_error("Result.next", statement.stmt.step(), statement.sql) != Sqlite.ROW; +- if (timer.elapsed() > 1.0) +- debug("\n\nDB QUERY STEP \"%s\"\nelapsed=%lf\n\n", statement.sql, timer.elapsed()); ++ var elapsed = timer.elapsed(); ++ var threshold = (get_connection().busy_timeout * 1000.0) / 2.0; ++ if (threshold > 0 && elapsed > threshold) { ++ warning( ++ "Step for \"%s\" took elapsed time: %lfs (>50%)", ++ statement.sql, ++ elapsed ++ ); ++ } else if (elapsed > 1.0) { ++ debug( ++ "Step for \"%s\" took elapsed time: %lfs (>1s)", ++ statement.sql, ++ elapsed ++ ); ++ } + + log_result(finished ? "NO ROW" : "ROW"); + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0002-accounts-editor-add-pane-Drop-the-useless-shadow.patch b/mail-client/geary/files/0002-accounts-editor-add-pane-Drop-the-useless-shadow.patch new file mode 100644 index 0000000..8190c43 --- /dev/null +++ b/mail-client/geary/files/0002-accounts-editor-add-pane-Drop-the-useless-shadow.patch @@ -0,0 +1,24 @@ +From c128b1be5f571315ae8a0f34cd9d00fd20c30cdc Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Mon, 27 Apr 2020 10:42:16 +0200 +Subject: [PATCH 2/8] accounts-editor-add-pane: Drop the useless shadow + +--- + ui/accounts_editor_add_pane.ui | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/ui/accounts_editor_add_pane.ui b/ui/accounts_editor_add_pane.ui +index 0c01a4c1..336b73ea 100644 +--- a/ui/accounts_editor_add_pane.ui ++++ b/ui/accounts_editor_add_pane.ui +@@ -89,7 +89,6 @@ + True + pane_adjustment + never +- in + + + True +-- +2.29.2 + diff --git a/mail-client/geary/files/0002-conversation-list-box-remove-shadow-and-make-the-row.patch b/mail-client/geary/files/0002-conversation-list-box-remove-shadow-and-make-the-row.patch new file mode 100644 index 0000000..655ce2d --- /dev/null +++ b/mail-client/geary/files/0002-conversation-list-box-remove-shadow-and-make-the-row.patch @@ -0,0 +1,235 @@ +From 51da28b7c0ec32883b923f82b3d85ba4285dc623 Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Fri, 23 Oct 2020 13:05:19 +0200 +Subject: [PATCH 2/2] conversation-list-box: remove shadow and make the rows + rounded + +This also makes the expander row look like in HdyExpander row. +--- + .../conversation-list-box.vala | 56 +++++++++++++++++ + .../conversation-web-view.vala | 26 ++++++++ + ui/geary.css | 61 ++++++++++++------- + 3 files changed, 120 insertions(+), 23 deletions(-) + +diff --git a/src/client/conversation-viewer/conversation-list-box.vala b/src/client/conversation-viewer/conversation-list-box.vala +index f860a2df..f94ddea9 100644 +--- a/src/client/conversation-viewer/conversation-list-box.vala ++++ b/src/client/conversation-viewer/conversation-list-box.vala +@@ -332,6 +332,33 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + get_style_context().add_class(EXPANDED_CLASS); + else + get_style_context().remove_class(EXPANDED_CLASS); ++ ++ update_previous_sibling_css_class(); ++ } ++ ++ // This is mostly taken form libhandy HdyExpanderRow ++ private Gtk.Widget? get_previous_sibling() { ++ if (this.parent is Gtk.Container) { ++ var siblings = this.parent.get_children(); ++ unowned List l; ++ for (l = siblings; l != null && l.next != null && l.next.data != this; l = l.next); ++ ++ if (l != null && l.next != null && l.next.data == this) { ++ return l.data; ++ } ++ } ++ ++ return null; ++ } ++ ++ private void update_previous_sibling_css_class() { ++ var previous_sibling = get_previous_sibling(); ++ if (previous_sibling != null) { ++ if (this.is_expanded) ++ previous_sibling.get_style_context().add_class("geary-expanded-previous-sibling"); ++ else ++ previous_sibling.get_style_context().remove_class("geary-expanded-previous-sibling"); ++ } + } + + protected inline void set_style_context_class(string class_name, bool value) { +@@ -675,9 +702,14 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + + this.selection_mode = NONE; + ++ get_style_context().add_class("content"); + get_style_context().add_class("background"); + get_style_context().add_class("conversation-listbox"); + ++ /* we need to update the previous sibling style class when rows are added or removed */ ++ add.connect(update_previous_sibling_css_class); ++ remove.connect(update_previous_sibling_css_class); ++ + set_adjustment(adjustment); + set_sort_func(ConversationListBox.on_sort); + +@@ -703,6 +735,30 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + base.destroy(); + } + ++ // For some reason insert doesn't emit the add event ++ public new void insert(Gtk.Widget child, int position) { ++ base.insert(child, position); ++ update_previous_sibling_css_class(); ++ } ++ ++ // This is mostly taken form libhandy HdyExpanderRow ++ private void update_previous_sibling_css_class() { ++ var siblings = this.get_children(); ++ unowned List l; ++ for (l = siblings; l != null && l.next != null && l.next.data != this; l = l.next) { ++ if (l != null && l.next != null) { ++ var row = l.next.data as ConversationRow; ++ if (row != null) { ++ if (row.is_expanded) { ++ l.data.get_style_context().add_class("geary-expanded-previous-sibling"); ++ } else { ++ l.data.get_style_context().remove_class("geary-expanded-previous-sibling"); ++ } ++ } ++ } ++ } ++ } ++ + public async void load_conversation(Gee.Collection scroll_to, + Geary.SearchQuery? query) + throws GLib.Error { +diff --git a/src/client/conversation-viewer/conversation-web-view.vala b/src/client/conversation-viewer/conversation-web-view.vala +index a1ba21a6..ad11415e 100644 +--- a/src/client/conversation-viewer/conversation-web-view.vala ++++ b/src/client/conversation-viewer/conversation-web-view.vala +@@ -197,6 +197,32 @@ public class ConversationWebView : Components.WebView { + } + + ++ // Clip round bottom corner ++ // This is based on ++ // https://gitlab.gnome.org/GNOME/gnome-weather/-/commit/9b6336454cc90669d1ee8387bdfc6627e3659e83 ++ public override bool draw(Cairo.Context cr) { ++ var frameWidth = this.get_allocated_width(); ++ var frameHeight = this.get_allocated_height(); ++ var borderRadius = 8; ++ ++ var arc0 = 0.0; ++ var arc1 = Math.PI * 0.5; ++ var arc2 = Math.PI; ++ ++ cr.new_sub_path(); ++ cr.line_to(frameWidth, 0); ++ cr.arc(frameWidth - borderRadius, frameHeight - borderRadius, borderRadius, arc0, arc1); ++ cr.arc(borderRadius, frameHeight - borderRadius, borderRadius, arc1, arc2); ++ cr.line_to(0, 0); ++ cr.close_path(); ++ ++ cr.clip(); ++ cr.fill(); ++ base.draw(cr); ++ ++ return Gdk.EVENT_PROPAGATE; ++ } ++ + public override void get_preferred_height(out int minimum_height, + out int natural_height) { + // XXX clamp height to something not too outrageous so we +diff --git a/ui/geary.css b/ui/geary.css +index 2d1d48c3..78ade7c0 100644 +--- a/ui/geary.css ++++ b/ui/geary.css +@@ -77,39 +77,44 @@ row.geary-folder-popover-list-row > label { + /* ConversationListBox */ + + .conversation-listbox { +- padding: 0 12px; ++ padding: 12px; + } ++ + .conversation-listbox > row { +- margin: 0; +- border: 1px solid @borders; +- border-bottom-width: 0; + padding: 0; +- box-shadow: 0 4px 8px 1px rgba(0,0,0,0.4); +-} +-.conversation-listbox > row > box { +- background: @theme_base_color; +- transition: background 0.25s; +-} +-.conversation-listbox > row:hover > box { +- background: shade(@theme_base_color, 0.96); +-} +-.conversation-listbox > row.geary-expanded { +- margin-bottom: 6px; +- border-bottom-width: 1px; + } ++ + .conversation-listbox *.geary-matched *.geary-match { + color: @theme_selected_fg_color; + background: @theme_selected_bg_color; +-;} ++} ++ + .conversation-listbox > row.geary-loading { + border-top-width: 0px; + padding: 6px; + } +-.conversation-listbox > row:first-child:not(.geary-loading) { +- margin-top: 12px; ++ ++.conversation-listbox.content > row:last-child, ++.conversation-listbox.content > row.geary-expanded-previous-sibling, ++.conversation-listbox.content > row.geary-expanded { ++ border-width: 1px; + } +-.conversation-listbox > row:last-child { +- margin-bottom: 12px; ++ ++.geary-expanded, .geary-expanded + row { ++ border-top-left-radius: 8px; ++ -gtk-outline-top-left-radius: 7px; ++ border-top-right-radius: 8px; ++ -gtk-outline-top-right-radius: 7px; ++ margin-top: 6px; ++} ++ ++.geary-expanded, ++.geary-expanded-previous-sibling { ++ border-bottom-left-radius: 8px; ++ -gtk-outline-bottom-left-radius: 7px; ++ border-bottom-right-radius: 8px; ++ -gtk-outline-bottom-right-radius: 7px; ++ margin-bottom: 6px + } + + /* ConversationEmail */ +@@ -119,6 +124,14 @@ row.geary-folder-popover-list-row > label { + transition: border 0.25s; + } + ++.geary-expanded > .geary_email grid.geary-message-summary, ++.geary-expanded + row > .geary_email grid.geary-message-summary { ++ border-top-left-radius: 8px; ++ -gtk-outline-top-left-radius: 7px; ++ border-top-right-radius: 8px; ++ -gtk-outline-top-right-radius: 7px; ++} ++ + /* ConversationMessage */ + + .geary-message infobar box { +@@ -198,8 +211,10 @@ grid.geary-message-summary { + /* Composer */ + + .geary-composer-embed headerbar { +- border-top: 1px solid @borders; +- border-radius: 0px; ++ border-top-left-radius: 8px; ++ -gtk-outline-top-left-radius: 7px; ++ border-top-right-radius: 8px; ++ -gtk-outline-top-right-radius: 7px; + } + + .geary-attachments-box > box > box { +-- +2.29.2 + diff --git a/mail-client/geary/files/0002-conversation-viewer-move-actions-to-the-bottom-when-.patch b/mail-client/geary/files/0002-conversation-viewer-move-actions-to-the-bottom-when-.patch new file mode 100644 index 0000000..201fa56 --- /dev/null +++ b/mail-client/geary/files/0002-conversation-viewer-move-actions-to-the-bottom-when-.patch @@ -0,0 +1,258 @@ +From 40824723c63d869535f89e628289fdb46cbf9c49 Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Fri, 9 Oct 2020 17:20:31 +0200 +Subject: [PATCH 2/6] conversation-viewer: move actions to the bottom when they + don't fit + +--- + .../application/application-main-window.vala | 8 ++- + .../components-conversation-action-bar.vala | 12 ++-- + src/client/components/main-toolbar.vala | 63 +++++++++++++++---- + .../conversation-viewer.vala | 1 - + ui/application-main-window.ui | 18 ++++++ + ui/components-conversation-action-bar.ui | 21 ++++++- + 6 files changed, 100 insertions(+), 23 deletions(-) + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 90d5b249..19f04492 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -334,6 +334,10 @@ public class Application.MainWindow : + [GtkChild] + private Gtk.ScrolledWindow conversation_list_scrolled; + [GtkChild] ++ private Gtk.Box conversation_viewer_box; ++ [GtkChild] ++ private Components.ConversationActionBar conversation_viewer_action_bar; ++ [GtkChild] + private Gtk.SizeGroup folder_size_group; + [GtkChild] + private Gtk.SizeGroup folder_separator_size_group; +@@ -1266,7 +1270,7 @@ public class Application.MainWindow : + + this.conversation_viewer.hexpand = true; + this.conversation_size_group.add_widget(this.conversation_viewer); +- this.main_leaflet.add_with_properties(this.conversation_viewer, "name", "conversation", null); ++ this.conversation_viewer_box.add(this.conversation_viewer); + + + // Setup conversation actions +@@ -1279,7 +1283,7 @@ public class Application.MainWindow : + BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); + + // Main toolbar +- this.main_toolbar = new MainToolbar(config); ++ this.main_toolbar = new MainToolbar(config, conversation_viewer_action_bar); + this.main_toolbar.add_to_size_groups(this.folder_size_group, + this.folder_separator_size_group, + this.conversations_size_group, +diff --git a/src/client/components/components-conversation-action-bar.vala b/src/client/components/components-conversation-action-bar.vala +index cb574521..cd868b21 100644 +--- a/src/client/components/components-conversation-action-bar.vala ++++ b/src/client/components/components-conversation-action-bar.vala +@@ -12,7 +12,7 @@ public class Components.ConversationActionBar : Gtk.Revealer { + private ulong owner_notify; + + [GtkChild] +- private Gtk.Box action_box; ++ public Gtk.Box action_box; + + public ConversationActionBar() { + } +@@ -23,17 +23,17 @@ public class Components.ConversationActionBar : Gtk.Revealer { + */ + public void add_conversation_actions(Components.ConversationActions actions) { + if (actions.owner == this) +- return; ++ return; + + actions.take_ownership(this); + action_box.pack_start(actions.mark_copy_move_buttons, false, false); + action_box.pack_end(actions.archive_trash_delete_buttons, false, false); + reveal_child = true; + this.owner_notify = actions.notify["owner"].connect(() => { +- if (actions.owner != this) { +- reveal_child = false; +- actions.disconnect (this.owner_notify); +- } ++ if (actions.owner != this) { ++ reveal_child = false; ++ actions.disconnect (this.owner_notify); ++ } + }); + } + } +diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala +index 6458b7fb..f216238a 100644 +--- a/src/client/components/main-toolbar.vala ++++ b/src/client/components/main-toolbar.vala +@@ -17,6 +17,11 @@ public class MainToolbar : Hdy.Leaflet { + // Search bar + public bool search_open { get; set; default = false; } + ++ private ulong owner_notify; ++ private Gtk.Widget? reply_forward_buttons; ++ private Gtk.Widget? archive_trash_delete_buttons; ++ private Components.ConversationActionBar conversation_viewer_action_bar; ++ + [GtkChild] + private Hdy.Leaflet conversations_leaflet; + +@@ -47,11 +52,14 @@ public class MainToolbar : Hdy.Leaflet { + + Gtk.SizeGroup conversation_group; + +- public MainToolbar(Application.Configuration config) { ++ public MainToolbar(Application.Configuration config, ++ Components.ConversationActionBar action_bar) { + if (config.desktop_environment != UNITY) { + this.bind_property("account", this.conversations_header, "title", BindingFlags.SYNC_CREATE); + this.bind_property("folder", this.conversations_header, "subtitle", BindingFlags.SYNC_CREATE); + } ++ this.conversation_viewer_action_bar = action_bar; ++ conversation_header.size_allocate.connect(on_size_allocate); + + // Assemble the main/mark menus + Gtk.Builder builder = new Gtk.Builder.from_resource("/org/gnome/Geary/main-toolbar-menus.ui"); +@@ -63,17 +71,6 @@ public class MainToolbar : Hdy.Leaflet { + BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); + } + +- public void add_conversation_actions(Components.ConversationActions actions) { +- if (actions.owner == this) +- return; +- +- actions.take_ownership(this); +- conversation_header.pack_start(actions.mark_copy_move_buttons); +- conversation_header.pack_start(actions.reply_forward_buttons); +- conversation_header.pack_end(actions.find_button); +- conversation_header.pack_end(actions.archive_trash_delete_buttons); +- } +- + public void set_conversation_header(Gtk.HeaderBar header) { + remove(conversation_header); + this.header_group.add_gtk_header_bar(header); +@@ -111,4 +108,46 @@ public class MainToolbar : Hdy.Leaflet { + conversations_group.add_swipeable(this.conversations_leaflet); + conversation_group.add_swipeable(this); + } ++ ++ private void on_size_allocate() { ++ if (reply_forward_buttons != null && archive_trash_delete_buttons != null) ++ if (conversation_viewer_action_bar.reveal_child && get_allocated_width() > 600) { ++ conversation_viewer_action_bar.reveal_child = false; ++ remove_action_parent(); ++ conversation_header.pack_start(reply_forward_buttons); ++ conversation_header.pack_end(archive_trash_delete_buttons); ++ } else if (!conversation_viewer_action_bar.reveal_child && get_allocated_width() < 600) { ++ remove_action_parent(); ++ conversation_viewer_action_bar.action_box.pack_start(reply_forward_buttons, false, false); ++ conversation_viewer_action_bar.action_box.pack_end(archive_trash_delete_buttons, false, false); ++ conversation_viewer_action_bar.reveal_child = true; ++ } ++ } ++ ++ private void remove_action_parent() { ++ if (reply_forward_buttons != null && reply_forward_buttons.parent != null) ++ reply_forward_buttons.parent.remove(reply_forward_buttons); ++ if (archive_trash_delete_buttons != null && archive_trash_delete_buttons.parent != null) ++ archive_trash_delete_buttons.parent.remove(archive_trash_delete_buttons); ++ } ++ ++ public void add_conversation_actions(Components.ConversationActions actions) { ++ if (actions.owner != this) { ++ actions.take_ownership(this); ++ conversation_header.pack_start(actions.mark_copy_move_buttons); ++ conversation_header.pack_end(actions.find_button); ++ ++ reply_forward_buttons = actions.reply_forward_buttons; ++ archive_trash_delete_buttons = actions.archive_trash_delete_buttons; ++ on_size_allocate(); ++ this.owner_notify = actions.notify["owner"].connect(() => { ++ if (actions.owner != this) { ++ conversation_viewer_action_bar.reveal_child = false; ++ reply_forward_buttons = null; ++ archive_trash_delete_buttons = null; ++ actions.disconnect (this.owner_notify); ++ } ++ }); ++ } ++ } + } +diff --git a/src/client/conversation-viewer/conversation-viewer.vala b/src/client/conversation-viewer/conversation-viewer.vala +index a5098764..74706f8c 100644 +--- a/src/client/conversation-viewer/conversation-viewer.vala ++++ b/src/client/conversation-viewer/conversation-viewer.vala +@@ -532,5 +532,4 @@ public class ConversationViewer : Gtk.Stack, Geary.BaseInterface { + } + } + } +- + } +diff --git a/ui/application-main-window.ui b/ui/application-main-window.ui +index c55e42ab..1b41310d 100644 +--- a/ui/application-main-window.ui ++++ b/ui/application-main-window.ui +@@ -137,6 +137,24 @@ + False + + ++ ++ ++ True ++ False ++ vertical ++ ++ ++ True ++ ++ ++ end ++ ++ ++ ++ ++ conversation ++ ++ + + + True +diff --git a/ui/components-conversation-action-bar.ui b/ui/components-conversation-action-bar.ui +index ae49683f..6fc03f44 100644 +--- a/ui/components-conversation-action-bar.ui ++++ b/ui/components-conversation-action-bar.ui +@@ -11,11 +11,28 @@ + False + slide-up + +- ++ + True + False + True +- 6 ++ vertical ++ ++ ++ True ++ False ++ ++ ++ ++ ++ True ++ False ++ True ++ 6 ++ 6 ++ 6 ++ 6 ++ ++ + + + +-- +2.29.2 + diff --git a/mail-client/geary/files/0003-Geary.Db.DatabaseConnection-Check-elapsed-time-for-e.patch b/mail-client/geary/files/0003-Geary.Db.DatabaseConnection-Check-elapsed-time-for-e.patch new file mode 100644 index 0000000..34f950b --- /dev/null +++ b/mail-client/geary/files/0003-Geary.Db.DatabaseConnection-Check-elapsed-time-for-e.patch @@ -0,0 +1,102 @@ +From 485868d570ef95283c541a1a180fca88fec7a9ef Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Tue, 8 Sep 2020 08:34:23 +1000 +Subject: [PATCH 003/124] Geary.Db.DatabaseConnection: Check elapsed time for + exec statements + +Re-work elapsed timer to be usable in other context objects, use it +for timing exec query execution. +--- + src/engine/db/db-context.vala | 13 +++++++++++++ + src/engine/db/db-database-connection.vala | 9 ++++++--- + src/engine/db/db-result.vala | 23 +++++------------------ + 3 files changed, 24 insertions(+), 21 deletions(-) + +diff --git a/src/engine/db/db-context.vala b/src/engine/db/db-context.vala +index a59f6c4c..6713f6c8 100644 +--- a/src/engine/db/db-context.vala ++++ b/src/engine/db/db-context.vala +@@ -61,6 +61,19 @@ public abstract class Geary.Db.Context : BaseObject, Logging.Source { + /** {@inheritDoc} */ + public abstract Logging.State to_logging_state(); + ++ ++ protected inline void check_elapsed(string message, ++ GLib.Timer timer) ++ throws DatabaseError { ++ var elapsed = timer.elapsed(); ++ var threshold = (get_connection().busy_timeout * 1000.0) / 2.0; ++ if (threshold > 0 && elapsed > threshold) { ++ warning("%s: elapsed time: %lfs (>50%)", message, elapsed); ++ } else if (elapsed > 1.0) { ++ debug("%s: elapsed time: %lfs (>1s)", message, elapsed); ++ } ++ } ++ + protected inline int throw_on_error(string? method, int result, string? raw = null) throws DatabaseError { + return Db.throw_on_error(this, method, result, raw); + } +diff --git a/src/engine/db/db-database-connection.vala b/src/engine/db/db-database-connection.vala +index dd311bea..d58911e4 100644 +--- a/src/engine/db/db-database-connection.vala ++++ b/src/engine/db/db-database-connection.vala +@@ -137,7 +137,9 @@ public class Geary.Db.DatabaseConnection : Context, Connection { + } + + check_cancelled("Connection.exec", cancellable); +- throw_on_error("Connection.exec", db.exec(sql), sql); ++ var timer = new GLib.Timer(); ++ throw_on_error("Connection.exec_file", this.db.exec(sql), sql); ++ check_elapsed("Query \"%s\"".printf(sql), timer); + } + + /** {@inheritDoc} */ +@@ -147,8 +149,9 @@ public class Geary.Db.DatabaseConnection : Context, Connection { + + string sql; + FileUtils.get_contents(file.get_path(), out sql); +- +- exec(sql, cancellable); ++ var timer = new GLib.Timer(); ++ throw_on_error("Connection.exec_file", this.db.exec(sql), sql); ++ check_elapsed(file.get_path(), timer); + } + + /** +diff --git a/src/engine/db/db-result.vala b/src/engine/db/db-result.vala +index 300d3afa..b5382179 100644 +--- a/src/engine/db/db-result.vala ++++ b/src/engine/db/db-result.vala +@@ -39,24 +39,11 @@ public class Geary.Db.Result : Geary.Db.Context { + + if (!finished) { + var timer = new GLib.Timer(); +- finished = throw_on_error("Result.next", statement.stmt.step(), statement.sql) != Sqlite.ROW; +- var elapsed = timer.elapsed(); +- var threshold = (get_connection().busy_timeout * 1000.0) / 2.0; +- if (threshold > 0 && elapsed > threshold) { +- warning( +- "Step for \"%s\" took elapsed time: %lfs (>50%)", +- statement.sql, +- elapsed +- ); +- } else if (elapsed > 1.0) { +- debug( +- "Step for \"%s\" took elapsed time: %lfs (>1s)", +- statement.sql, +- elapsed +- ); +- } +- +- log_result(finished ? "NO ROW" : "ROW"); ++ this.finished = throw_on_error( ++ "Result.next", statement.stmt.step(), statement.sql ++ ) != Sqlite.ROW; ++ check_elapsed("Result.next", timer); ++ log_result(this.finished ? "NO ROW" : "ROW"); + } + + return !finished; +-- +2.29.2 + diff --git a/mail-client/geary/files/0003-accounts-editor-add-pane-Reduce-the-minimum-entry-wi.patch b/mail-client/geary/files/0003-accounts-editor-add-pane-Reduce-the-minimum-entry-wi.patch new file mode 100644 index 0000000..19da985 --- /dev/null +++ b/mail-client/geary/files/0003-accounts-editor-add-pane-Reduce-the-minimum-entry-wi.patch @@ -0,0 +1,26 @@ +From bab1759af038ecf08658b3664bf74428f47559e9 Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Mon, 27 Apr 2020 10:43:07 +0200 +Subject: [PATCH 3/8] accounts-editor-add-pane: Reduce the minimum entry width + +This will help the pane fit in narrower widths. +--- + src/client/accounts/accounts-editor-add-pane.vala | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/client/accounts/accounts-editor-add-pane.vala b/src/client/accounts/accounts-editor-add-pane.vala +index a4a333cd..468e348f 100644 +--- a/src/client/accounts/accounts-editor-add-pane.vala ++++ b/src/client/accounts/accounts-editor-add-pane.vala +@@ -526,7 +526,7 @@ private abstract class Accounts.EntryRow : AddPaneRow { + + this.value.text = initial_value ?? ""; + this.value.placeholder_text = placeholder ?? ""; +- this.value.width_chars = 32; ++ this.value.width_chars = 16; + + this.undo = new Components.EntryUndo(this.value); + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0003-conversation-viewer-allow-one-email-per-line.patch b/mail-client/geary/files/0003-conversation-viewer-allow-one-email-per-line.patch new file mode 100644 index 0000000..9d5d831 --- /dev/null +++ b/mail-client/geary/files/0003-conversation-viewer-allow-one-email-per-line.patch @@ -0,0 +1,64 @@ +From ee3e56aa1f3a71457b43a79b233ba3200e4e78d2 Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Mon, 12 Oct 2020 16:35:22 +0200 +Subject: [PATCH 3/6] conversation-viewer: allow one email per line + +--- + ui/conversation-message.ui | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/ui/conversation-message.ui b/ui/conversation-message.ui +index 95560939..d68817b2 100644 +--- a/ui/conversation-message.ui ++++ b/ui/conversation-message.ui +@@ -157,7 +157,6 @@ + baseline + True + 2 +- 1 + 4 + none + +@@ -218,7 +217,6 @@ + start + True + 2 +- 2 + 4 + none + +@@ -263,7 +261,6 @@ + start + True + 2 +- 2 + 4 + none + +@@ -328,7 +325,6 @@ + start + True + 2 +- 2 + 4 + none + +@@ -373,7 +369,6 @@ + start + True + 2 +- 2 + 4 + none + +@@ -418,7 +413,6 @@ + start + True + 2 +- 2 + 4 + none + +-- +2.29.2 + diff --git a/mail-client/geary/files/0004-Geary.Db.Statement-Minor-code-cleanup.patch b/mail-client/geary/files/0004-Geary.Db.Statement-Minor-code-cleanup.patch new file mode 100644 index 0000000..08312d3 --- /dev/null +++ b/mail-client/geary/files/0004-Geary.Db.Statement-Minor-code-cleanup.patch @@ -0,0 +1,66 @@ +From 0fa0d0ea4d8db54166c131dee7b509d3984c2e2f Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 9 Sep 2020 18:30:22 +1000 +Subject: [PATCH 004/124] Geary.Db.Statement: Minor code cleanup + +Make `sql` a proper auto property. Remove expanded sql workaround. +Minor code style cleanup. +--- + src/engine/db/db-statement.vala | 17 ++++++----------- + 1 file changed, 6 insertions(+), 11 deletions(-) + +diff --git a/src/engine/db/db-statement.vala b/src/engine/db/db-statement.vala +index 088b882b..4d792b42 100644 +--- a/src/engine/db/db-statement.vala ++++ b/src/engine/db/db-statement.vala +@@ -9,15 +9,16 @@ private extern string? sqlite3_expanded_sql(Sqlite.Statement stmt); + + public class Geary.Db.Statement : Context { + +- public string sql { +- get { return this.stmt.sql(); } +- } ++ ++ public string sql { get; private set; } + + internal DatabaseConnection connection { get; private set; } + + internal Sqlite.Statement stmt; + + private Gee.HashMap? column_map = null; ++ private Gee.HashSet held_buffers = new Gee.HashSet(); ++ + + /** + * Fired when the Statement is executed the first time (after creation or after a reset). +@@ -34,11 +35,11 @@ public class Geary.Db.Statement : Context { + */ + public signal void bindings_cleared(); + +- private Gee.HashSet held_buffers = new Gee.HashSet(); + + internal Statement(DatabaseConnection connection, string sql) + throws DatabaseError { + this.connection = connection; ++ this.sql = sql; + throw_on_error( + "Statement.ctor", + connection.db.prepare_v2(sql, -1, out stmt, null), +@@ -48,13 +49,7 @@ public class Geary.Db.Statement : Context { + + /** Returns SQL for the statement with bound parameters expanded. */ + public string? get_expanded_sql() { +- // Replace all this with `Sqlite.Statement.expanded_sql` is +- // readily available. See: +- // https://gitlab.gnome.org/GNOME/vala/merge_requests/74 +- string* sqlite = sqlite3_expanded_sql(this.stmt); +- string? sql = sqlite; +- Sqlite.Memory.free((void*) sqlite); +- return sql; ++ return this.stmt.expanded_sql(); + } + + /** +-- +2.29.2 + diff --git a/mail-client/geary/files/0004-accounts-editor-eit-pane-Ellipsize-the-account-row-l.patch b/mail-client/geary/files/0004-accounts-editor-eit-pane-Ellipsize-the-account-row-l.patch new file mode 100644 index 0000000..3e76480 --- /dev/null +++ b/mail-client/geary/files/0004-accounts-editor-eit-pane-Ellipsize-the-account-row-l.patch @@ -0,0 +1,28 @@ +From 84c94463cd806ac5dbb1692ef3c04107b5a5f12f Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Mon, 27 Apr 2020 10:43:45 +0200 +Subject: [PATCH 4/8] accounts-editor-eit-pane: Ellipsize the account row label + +This will help the pane fit in narrower widths. +--- + src/client/accounts/accounts-editor-edit-pane.vala | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/client/accounts/accounts-editor-edit-pane.vala b/src/client/accounts/accounts-editor-edit-pane.vala +index 2722db6e..5b944333 100644 +--- a/src/client/accounts/accounts-editor-edit-pane.vala ++++ b/src/client/accounts/accounts-editor-edit-pane.vala +@@ -376,7 +376,9 @@ private class Accounts.MailboxRow : AccountRow { + + public MailboxRow(Geary.AccountInformation account, + Geary.RFC822.MailboxAddress mailbox) { +- base(account, "", new Gtk.Label("")); ++ var label = new Gtk.Label(""); ++ label.ellipsize = Pango.EllipsizeMode.END; ++ base(account, "", label); + this.mailbox = mailbox; + enable_drag(); + +-- +2.29.2 + diff --git a/mail-client/geary/files/0004-compnents-info-bar-use-custom-infobar-so-that-the-bu.patch b/mail-client/geary/files/0004-compnents-info-bar-use-custom-infobar-so-that-the-bu.patch new file mode 100644 index 0000000..c00bc39 --- /dev/null +++ b/mail-client/geary/files/0004-compnents-info-bar-use-custom-infobar-so-that-the-bu.patch @@ -0,0 +1,558 @@ +From 7d164ce964aa4118d019a741f9abf821f1897985 Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Tue, 13 Oct 2020 15:46:39 +0200 +Subject: [PATCH 4/6] compnents-info-bar: use custom infobar so that the + buttons reflow + +--- + po/POTFILES.in | 1 + + .../application/application-main-window.vala | 2 +- + .../components/components-info-bar-stack.vala | 34 ++-- + .../components/components-info-bar.vala | 153 ++++++++++++++++-- + .../conversation-list-box.vala | 4 +- + .../conversation-message.vala | 4 +- + ui/components-info-bar.ui | 83 ++++++++++ + ui/geary.css | 4 + + ui/org.gnome.Geary.gresource.xml | 1 + + 9 files changed, 248 insertions(+), 38 deletions(-) + create mode 100644 ui/components-info-bar.ui + +diff --git a/po/POTFILES.in b/po/POTFILES.in +index cd8b339d..6ab344dc 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -460,6 +460,7 @@ ui/components-attachment-view.ui + ui/components-conversation-actions.ui + ui/components-conversation-action-bar.ui + ui/components-in-app-notification.ui ++ui/components-info-bar.ui + ui/components-inspector-error-view.ui + ui/components-inspector-log-view.ui + ui/components-inspector.ui +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 19f04492..27526e0e 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -889,7 +889,7 @@ public class Application.MainWindow : + } + + /** Displays an infobar in the window. */ +- public void show_info_bar(Gtk.InfoBar info_bar) { ++ public void show_info_bar(Components.InfoBar info_bar) { + if (!this.info_bars.has_current) { + this.info_bars.add(info_bar); + } +diff --git a/src/client/components/components-info-bar-stack.vala b/src/client/components/components-info-bar-stack.vala +index cbe63e05..83339210 100644 +--- a/src/client/components/components-info-bar-stack.vala ++++ b/src/client/components/components-info-bar-stack.vala +@@ -6,7 +6,7 @@ + */ + + /** +- * A stack-like widget for displaying Gtk InfoBar widgets. ++ * A stack-like widget for displaying Components.InfoBar widgets. + * + * The stack ensures only one info bar is shown at once, shows a frame + * around the info bar, and manages revealing and hiding itself and +@@ -40,7 +40,7 @@ public class Components.InfoBarStack : Gtk.Frame, Geary.BaseInterface { + } + + +- private class SingletonQueue : Gee.AbstractQueue { ++ private class SingletonQueue : Gee.AbstractQueue { + + public override bool read_only { + get { return false; } +@@ -62,10 +62,10 @@ public class Components.InfoBarStack : Gtk.Frame, Geary.BaseInterface { + get { return (this.element != null) ? 0 : 1; } + } + +- private Gtk.InfoBar? element = null; ++ private Components.InfoBar? element = null; + + +- public override bool add(Gtk.InfoBar to_add) { ++ public override bool add(Components.InfoBar to_add) { + var added = false; + if (this.element != to_add) { + this.element = to_add; +@@ -78,20 +78,20 @@ public class Components.InfoBarStack : Gtk.Frame, Geary.BaseInterface { + this.element = null; + } + +- public override bool contains(Gtk.InfoBar other) { ++ public override bool contains(Components.InfoBar other) { + return (this.element == other); + } + +- public override Gee.Iterator iterator() { ++ public override Gee.Iterator iterator() { + // This sucks but it won't ever be used so oh well + return ( + this.element == null +- ? Gee.Collection.empty().iterator() ++ ? Gee.Collection.empty().iterator() + : Geary.Collection.single(this.element).iterator() + ); + } + +- public override bool remove(Gtk.InfoBar to_remove) { ++ public override bool remove(Components.InfoBar to_remove) { + var removed = false; + if (this.element == to_remove) { + this.element = null; +@@ -100,11 +100,11 @@ public class Components.InfoBarStack : Gtk.Frame, Geary.BaseInterface { + return removed; + } + +- public override Gtk.InfoBar peek() { ++ public override Components.InfoBar peek() { + return this.element; + } + +- public override Gtk.InfoBar poll() { ++ public override Components.InfoBar poll() { + var element = this.element; + this.element = null; + return element; +@@ -126,7 +126,7 @@ public class Components.InfoBarStack : Gtk.Frame, Geary.BaseInterface { + * @see algorithm + * @see StackType.PRIORITY_QUEUE + */ +- public static int priority_queue_comparator(Gtk.InfoBar a, Gtk.InfoBar b) { ++ public static int priority_queue_comparator(Components.InfoBar a, Components.InfoBar b) { + return ( + b.get_data(PRIORITY_QUEUE_KEY) - + a.get_data(PRIORITY_QUEUE_KEY) +@@ -150,11 +150,11 @@ public class Components.InfoBarStack : Gtk.Frame, Geary.BaseInterface { + } + + /** Returns the currently displayed info bar, if any. */ +- public Gtk.InfoBar? current_info_bar { +- get { return get_child() as Gtk.InfoBar; } ++ public Components.InfoBar? current_info_bar { ++ get { return get_child() as Components.InfoBar; } + } + +- private Gee.Queue available; ++ private Gee.Queue available; + private int last_allocated_height = 0; + + +@@ -175,7 +175,7 @@ public class Components.InfoBarStack : Gtk.Frame, Geary.BaseInterface { + * stack constructed, the info bar may or may not be revealed + * immediately. + */ +- public new void add(Gtk.InfoBar to_add) { ++ public new void add(Components.InfoBar to_add) { + if (this.available.offer(to_add)) { + update(); + } +@@ -188,7 +188,7 @@ public class Components.InfoBarStack : Gtk.Frame, Geary.BaseInterface { + * replaced with the next info bar added. If the only info bar + * present is removed, the stack also hides itself. + */ +- public new void remove(Gtk.InfoBar to_remove) { ++ public new void remove(Components.InfoBar to_remove) { + if (this.available.remove(to_remove)) { + update(); + } +@@ -234,7 +234,7 @@ public class Components.InfoBarStack : Gtk.Frame, Geary.BaseInterface { + this.available = new SingletonQueue(); + break; + case PRIORITY_QUEUE: +- this.available = new Gee.PriorityQueue( ++ this.available = new Gee.PriorityQueue( + InfoBarStack.priority_queue_comparator + ); + break; +diff --git a/src/client/components/components-info-bar.vala b/src/client/components/components-info-bar.vala +index 05124c00..4ab6b56d 100644 +--- a/src/client/components/components-info-bar.vala ++++ b/src/client/components/components-info-bar.vala +@@ -8,9 +8,11 @@ + /** + * A standard info bar widget with status message and description. + */ +-public class Components.InfoBar : Gtk.InfoBar { ++[GtkTemplate (ui = "/org/gnome/Geary/components-info-bar.ui")] ++public class Components.InfoBar : Gtk.Box { + + ++ public signal void response(int response_id); + /** + * A short, human-readable status message. + * +@@ -26,11 +28,38 @@ public class Components.InfoBar : Gtk.InfoBar { + */ + public Gtk.Label? description { get; private set; default = null; } + ++ public bool show_close_button { get; set; default = false;} ++ public bool revealed { get; set; } ++ private Gtk.MessageType _message_type; ++ public Gtk.MessageType message_type { ++ get { ++ return _message_type; ++ } ++ set { ++ _set_message_type(value); ++ } ++ } ++ + + private Plugin.InfoBar? plugin = null; + private string? plugin_action_group_name = null; + private Gtk.Button? plugin_primary_button = null; + ++ [GtkChild] ++ private Gtk.Revealer revealer; ++ ++ [GtkChild] ++ private Gtk.Box action_area; ++ ++ [GtkChild] ++ private Gtk.Box content_area; ++ ++ [GtkChild] ++ private Gtk.Button close_button; ++ ++ static construct { ++ set_css_name("infobar"); ++ } + + /** + * Constructs a new info bar. +@@ -43,6 +72,20 @@ public class Components.InfoBar : Gtk.InfoBar { + public InfoBar(string status, string? description = null) { + this.status = new Gtk.Label(status); + this.status.halign = START; ++ this.status.xalign = 0; ++ ++ _message_type = Gtk.MessageType.OTHER; ++ _set_message_type(Gtk.MessageType.INFO); ++ ++ this.bind_property("revealed", ++ this.revealer, ++ "reveal-child", ++ BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); ++ ++ this.bind_property("show-close-button", ++ this.close_button, ++ "visible", ++ BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); + + var attrs = new Pango.AttrList(); + attrs.change(Pango.attr_weight_new(BOLD)); +@@ -57,11 +100,8 @@ public class Components.InfoBar : Gtk.InfoBar { + this.description = new Gtk.Label(description); + this.description.halign = START; + this.description.valign = START; +- +- // Set the description to be ellipsised and set and the +- // tool-tip to be the same, in case it is too long for the +- // info bar's width +- this.description.ellipsize = END; ++ this.description.xalign = 0; ++ this.description.wrap = true; + this.description.tooltip_text = description; + } + +@@ -85,15 +125,28 @@ public class Components.InfoBar : Gtk.InfoBar { + this.plugin_action_group_name = action_group_name; + this.show_close_button = plugin.show_close_button; + ++ _message_type = Gtk.MessageType.OTHER; ++ _set_message_type(Gtk.MessageType.INFO); ++ ++ this.bind_property("revealed", ++ this.revealer, ++ "reveal-child", ++ BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); ++ ++ this.bind_property("show-close-button", ++ this.close_button, ++ "visible", ++ BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); ++ + plugin.notify["status"].connect( + () => { this.status.label = plugin.status; } +- ); ++ ); + plugin.notify["description"].connect( + () => { this.description.label = plugin.description; } +- ); ++ ); + plugin.notify["primary-button"].connect( + () => { this.update_plugin_primary_button(); } +- ); ++ ); + + var secondaries = plugin.secondary_buttons.bidir_list_iterator(); + bool has_prev = secondaries.last(); +@@ -108,11 +161,12 @@ public class Components.InfoBar : Gtk.InfoBar { + show_all(); + } + +- /* {@inheritDoc} */ +- public override void response(int response) { +- if (response == Gtk.ResponseType.CLOSE && this.plugin != null) { ++ [GtkCallback] ++ public void on_close_button_clicked() { ++ if (this.plugin != null) { + this.plugin.close_activated(); + } ++ response(Gtk.ResponseType.CLOSE); + } + + /* {@inheritDoc} */ +@@ -120,10 +174,22 @@ public class Components.InfoBar : Gtk.InfoBar { + this.plugin = null; + } + +- // GTK 3.24.16 fixed the binding for this, but that and the VAPI +- // change has yet to trickle down to common distros like F31 +- public new Gtk.Box get_action_area() { +- return (Gtk.Box) base.get_action_area(); ++ public Gtk.Box get_action_area() { ++ return this.action_area; ++ } ++ ++ public Gtk.Box get_content_area() { ++ return this.content_area; ++ } ++ ++ public Gtk.Button add_button(string button_text, int response_id) { ++ var button = new Gtk.Button.with_mnemonic(button_text); ++ button.clicked.connect(() => { ++ response(response_id); ++ }); ++ get_action_area().add(button); ++ button.visible = true; ++ return button; + } + + private void update_plugin_primary_button() { +@@ -162,4 +228,59 @@ public class Components.InfoBar : Gtk.InfoBar { + return button; + } + ++ private void _set_message_type(Gtk.MessageType message_type) { ++ if (this._message_type != message_type) { ++ Gtk.StyleContext context = this.get_style_context(); ++ const string[] type_class = { ++ Gtk.STYLE_CLASS_INFO, ++ Gtk.STYLE_CLASS_WARNING, ++ Gtk.STYLE_CLASS_QUESTION, ++ Gtk.STYLE_CLASS_ERROR, ++ null ++ }; ++ ++ if (type_class[this._message_type] != null) ++ context.remove_class(type_class[this._message_type]); ++ ++ this._message_type = message_type; ++ ++ var atk_obj = this.get_accessible(); ++ if (atk_obj is Atk.Object) { ++ string name = null; ++ ++ atk_obj.set_role(Atk.Role.INFO_BAR); ++ ++ switch (message_type) { ++ case Gtk.MessageType.INFO: ++ name = _("Information"); ++ break; ++ ++ case Gtk.MessageType.QUESTION: ++ name = _("Question"); ++ break; ++ ++ case Gtk.MessageType.WARNING: ++ name = _("Warning"); ++ break; ++ ++ case Gtk.MessageType.ERROR: ++ name = _("Error"); ++ break; ++ ++ case Gtk.MessageType.OTHER: ++ break; ++ ++ default: ++ warning("Unknown GtkMessageType %u", message_type); ++ break; ++ } ++ ++ if (name != null) ++ atk_obj.set_name(name); ++ } ++ ++ if (type_class[this._message_type] != null) ++ context.add_class(type_class[this._message_type]); ++ } ++ } + } +diff --git a/src/client/conversation-viewer/conversation-list-box.vala b/src/client/conversation-viewer/conversation-list-box.vala +index 3eb8240b..7d0c94af 100644 +--- a/src/client/conversation-viewer/conversation-list-box.vala ++++ b/src/client/conversation-viewer/conversation-list-box.vala +@@ -936,7 +936,7 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + + /** Adds an info bar to the given email, if any. */ + public void add_email_info_bar(Geary.EmailIdentifier id, +- Gtk.InfoBar info_bar) { ++ Components.InfoBar info_bar) { + var row = this.email_rows.get(id); + if (row != null) { + row.view.primary_message.info_bars.add(info_bar); +@@ -945,7 +945,7 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + + /** Adds an info bar to the given email, if any. */ + public void remove_email_info_bar(Geary.EmailIdentifier id, +- Gtk.InfoBar info_bar) { ++ Components.InfoBar info_bar) { + var row = this.email_rows.get(id); + if (row != null) { + row.view.primary_message.info_bars.remove(info_bar); +diff --git a/src/client/conversation-viewer/conversation-message.vala b/src/client/conversation-viewer/conversation-message.vala +index 109c4a1c..868fea7e 100644 +--- a/src/client/conversation-viewer/conversation-message.vala ++++ b/src/client/conversation-viewer/conversation-message.vala +@@ -380,7 +380,7 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + [GtkChild] + private Gtk.ProgressBar body_progress; + +- private Gtk.InfoBar? remote_images_info_bar = null; ++ private Components.InfoBar? remote_images_info_bar = null; + + private Gtk.Widget? body_placeholder = null; + +@@ -1460,7 +1460,7 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + } + } + +- private void on_remote_images_response(Gtk.InfoBar info_bar, int response_id) { ++ private void on_remote_images_response(Components.InfoBar info_bar, int response_id) { + switch (response_id) { + case 1: + // Show images for the message +diff --git a/ui/components-info-bar.ui b/ui/components-info-bar.ui +new file mode 100644 +index 00000000..11dcfe37 +--- /dev/null ++++ b/ui/components-info-bar.ui +@@ -0,0 +1,83 @@ ++ ++ ++ ++ ++ +diff --git a/ui/geary.css b/ui/geary.css +index 2d1d48c3..e38d135a 100644 +--- a/ui/geary.css ++++ b/ui/geary.css +@@ -62,6 +62,10 @@ geary-conversation-viewer { + border-right-width: 0; + } + ++infobar flowboxchild { ++ padding: 0px; ++} ++ + /* FolderPopover */ + + row.geary-folder-popover-list-row { +diff --git a/ui/org.gnome.Geary.gresource.xml b/ui/org.gnome.Geary.gresource.xml +index 0b9e900f..fbd7899d 100644 +--- a/ui/org.gnome.Geary.gresource.xml ++++ b/ui/org.gnome.Geary.gresource.xml +@@ -16,6 +16,7 @@ + components-conversation-action-bar.ui + components-conversation-actions.ui + components-in-app-notification.ui ++ components-info-bar.ui + components-inspector.ui + components-inspector-error-view.ui + components-inspector-log-view.ui +-- +2.29.2 + diff --git a/mail-client/geary/files/0005-Geary.Db.Context-Remove-separate-logging_parent-prop.patch b/mail-client/geary/files/0005-Geary.Db.Context-Remove-separate-logging_parent-prop.patch new file mode 100644 index 0000000..ac668eb --- /dev/null +++ b/mail-client/geary/files/0005-Geary.Db.Context-Remove-separate-logging_parent-prop.patch @@ -0,0 +1,150 @@ +From 940ca83195ba1f145a70b9dd0246f4d5aa2a069d Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 9 Sep 2020 18:33:44 +1000 +Subject: [PATCH 005/124] Geary.Db.Context: Remove separate `logging_parent` + property + +Since each context type already has access to the object that is its +context parent, don't bother with a stand-alone `logging_parent` +property, just have context types implement it and return the +appropriate object. +--- + src/engine/db/db-context.vala | 8 +------- + src/engine/db/db-database-connection.vala | 6 +++++- + src/engine/db/db-database.vala | 10 ++++++++-- + src/engine/db/db-result.vala | 6 ++++-- + src/engine/db/db-statement.vala | 5 +++++ + 5 files changed, 23 insertions(+), 12 deletions(-) + +diff --git a/src/engine/db/db-context.vala b/src/engine/db/db-context.vala +index 6713f6c8..2ba8b305 100644 +--- a/src/engine/db/db-context.vala ++++ b/src/engine/db/db-context.vala +@@ -33,8 +33,7 @@ public abstract class Geary.Db.Context : BaseObject, Logging.Source { + } + + /** {@inheritDoc} */ +- public Logging.Source? logging_parent { get { return _logging_parent; } } +- private weak Logging.Source? _logging_parent = null; ++ public abstract Logging.Source? logging_parent { get; } + + + internal virtual Database? get_database() { +@@ -53,11 +52,6 @@ public abstract class Geary.Db.Context : BaseObject, Logging.Source { + return null; + } + +- /** {@inheritDoc} */ +- public void set_logging_parent(Logging.Source parent) { +- this._logging_parent = parent; +- } +- + /** {@inheritDoc} */ + public abstract Logging.State to_logging_state(); + +diff --git a/src/engine/db/db-database-connection.vala b/src/engine/db/db-database-connection.vala +index d58911e4..54d36160 100644 +--- a/src/engine/db/db-database-connection.vala ++++ b/src/engine/db/db-database-connection.vala +@@ -66,6 +66,11 @@ public class Geary.Db.DatabaseConnection : Context, Connection { + public Database database { get { return this._database; } } + private weak Database _database; + ++ /** {@inheritDoc} */ ++ public override Logging.Source? logging_parent { ++ get { return this._database; } ++ } ++ + /** {@inheritDoc} */ + internal Sqlite.Database db { get { return this._db; } } + private Sqlite.Database _db; +@@ -119,7 +124,6 @@ public class Geary.Db.DatabaseConnection : Context, Connection { + /** {@inheritDoc} */ + public Statement prepare(string sql) throws DatabaseError { + var prepared = new Statement(this, sql); +- prepared.set_logging_parent(this); + return prepared; + } + +diff --git a/src/engine/db/db-database.vala b/src/engine/db/db-database.vala +index a807e7ba..df5bed21 100644 +--- a/src/engine/db/db-database.vala ++++ b/src/engine/db/db-database.vala +@@ -57,6 +57,10 @@ public class Geary.Db.Database : Context { + } + } + ++ /** {@inheritDoc} */ ++ public override Logging.Source? logging_parent { get { return _logging_parent; } } ++ private weak Logging.Source? _logging_parent = null; ++ + private DatabaseConnection? primary = null; + private int outstanding_async_jobs = 0; + private ThreadPool? thread_pool = null; +@@ -143,7 +147,6 @@ public class Geary.Db.Database : Context { + var cx = new DatabaseConnection( + this, Sqlite.OPEN_READWRITE, cancellable + ); +- cx.set_logging_parent(this); + + try { + // drop existing test table (in case created in prior failed open) +@@ -233,7 +236,6 @@ public class Geary.Db.Database : Context { + DatabaseConnection cx = new DatabaseConnection( + this, sqlite_flags, cancellable + ); +- cx.set_logging_parent(this); + prepare_connection(cx); + return cx; + } +@@ -357,6 +359,10 @@ public class Geary.Db.Database : Context { + return yield job.wait_for_completion_async(); + } + ++ /** Sets the logging parent context object for this database. */ ++ public void set_logging_parent(Logging.Source parent) { ++ this._logging_parent = parent; ++ } + + /** {@inheritDoc} */ + public override Logging.State to_logging_state() { +diff --git a/src/engine/db/db-result.vala b/src/engine/db/db-result.vala +index b5382179..8c40c475 100644 +--- a/src/engine/db/db-result.vala ++++ b/src/engine/db/db-result.vala +@@ -10,12 +10,14 @@ public class Geary.Db.Result : Geary.Db.Context { + + public Statement statement { get; private set; } + ++ /** {@inheritDoc} */ ++ public override Logging.Source? logging_parent { ++ get { return this.statement; } ++ } + + // This results in an automatic first next(). + internal Result(Statement statement, Cancellable? cancellable) throws Error { + this.statement = statement; +- set_logging_parent(statement); +- + statement.was_reset.connect(on_query_finished); + statement.bindings_cleared.connect(on_query_finished); + +diff --git a/src/engine/db/db-statement.vala b/src/engine/db/db-statement.vala +index 4d792b42..072692ff 100644 +--- a/src/engine/db/db-statement.vala ++++ b/src/engine/db/db-statement.vala +@@ -12,6 +12,11 @@ public class Geary.Db.Statement : Context { + + public string sql { get; private set; } + ++ /** {@inheritDoc} */ ++ public override Logging.Source? logging_parent { ++ get { return this.connection; } ++ } ++ + internal DatabaseConnection connection { get; private set; } + + internal Sqlite.Statement stmt; +-- +2.29.2 + diff --git a/mail-client/geary/files/0005-accounts-editor-make-window-usable-on-phones.patch b/mail-client/geary/files/0005-accounts-editor-make-window-usable-on-phones.patch new file mode 100644 index 0000000..767ae21 --- /dev/null +++ b/mail-client/geary/files/0005-accounts-editor-make-window-usable-on-phones.patch @@ -0,0 +1,38 @@ +From 7c9d1258c6a952c7b7f79f34feb3225dea3fcc15 Mon Sep 17 00:00:00 2001 +From: Arnaud Ferraris +Date: Wed, 25 Mar 2020 14:40:11 +0100 +Subject: [PATCH 5/8] accounts-editor: make window usable on phones + +--- + ui/accounts_editor.ui | 2 +- + ui/accounts_editor_list_pane.ui | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/ui/accounts_editor.ui b/ui/accounts_editor.ui +index 4e23cdd5..04581e8d 100644 +--- a/ui/accounts_editor.ui ++++ b/ui/accounts_editor.ui +@@ -5,7 +5,7 @@ + +- +- True +- False +- Remove account +- Account name +- True +- +- +- True +- False +- +- +- True +- True +- True +- +- +- +- True +- False +- True +- go-previous-symbolic +- +- +- +- +- 0 +- 0 +- +- +- +- +- +- +diff --git a/ui/geary.css b/ui/geary.css +index ca3cf640..3877038f 100644 +--- a/ui/geary.css ++++ b/ui/geary.css +@@ -334,6 +334,14 @@ popover.geary-editor > grid > button.geary-setting-remove { + margin-top: 12px; + } + ++dialog.geary-remove-confirm .dialog-vbox { ++ margin: 12px; ++} ++ ++dialog.geary-remove-confirm .dialog-action-box { ++ margin: 6px; ++} ++ + /* FolderList.Tree */ + + treeview.sidebar:drop(active).after, +diff --git a/ui/org.gnome.Geary.gresource.xml b/ui/org.gnome.Geary.gresource.xml +index 0b9e900f..efdc87d6 100644 +--- a/ui/org.gnome.Geary.gresource.xml ++++ b/ui/org.gnome.Geary.gresource.xml +@@ -5,7 +5,6 @@ + accounts_editor_add_pane.ui + accounts_editor_edit_pane.ui + accounts_editor_list_pane.ui +- accounts_editor_remove_pane.ui + accounts_editor_servers_pane.ui + application-main-window.ui + certificate_warning_dialog.glade +-- +2.29.2 + diff --git a/mail-client/geary/files/0008-Geary.ImapDb.Account-Slice-up-search-table-populatio.patch b/mail-client/geary/files/0008-Geary.ImapDb.Account-Slice-up-search-table-populatio.patch new file mode 100644 index 0000000..8431dce --- /dev/null +++ b/mail-client/geary/files/0008-Geary.ImapDb.Account-Slice-up-search-table-populatio.patch @@ -0,0 +1,262 @@ +From 915a38faca33caf04cab2398a52d743dea554359 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 11 Sep 2020 00:00:02 +1000 +Subject: [PATCH 008/124] Geary.ImapDb.Account: Slice up search table + population work better + +Although populating the search table had been broken up into batches +of 50 email, it was still search for and loading every single message +id in both the MessageTable and MessageSearchTable, doing a manual +join, and then updating the batch, for *each* batch, and in a RW +transaction. + +Break this up so that the ids are loaded and joined only once, the +queries happens in a RO transaction, the manual join happens in a side +thread, leaving each RW transaction only having to load the messages +and update the search index for up to 50 messages. +--- + src/engine/imap-db/imap-db-account.vala | 205 ++++++++++++++---------- + 1 file changed, 120 insertions(+), 85 deletions(-) + +diff --git a/src/engine/imap-db/imap-db-account.vala b/src/engine/imap-db/imap-db-account.vala +index 99244dc2..54522b90 100644 +--- a/src/engine/imap-db/imap-db-account.vala ++++ b/src/engine/imap-db/imap-db-account.vala +@@ -955,8 +955,78 @@ private class Geary.ImapDB.Account : BaseObject { + + public async void populate_search_table(Cancellable? cancellable) { + debug("%s: Populating search table", account_information.id); ++ // Since all queries involved can be quite extensive and this ++ // is not a time-critical operation, split them up ++ ++ var search_ids = new Gee.HashSet( ++ Collection.int64_hash_func, ++ Collection.int64_equal_func ++ ); ++ var message_ids = new Gee.HashSet( ++ Collection.int64_hash_func, ++ Collection.int64_equal_func ++ ); ++ var unindexed_message_ids = new Gee.HashSet( ++ Collection.int64_hash_func, ++ Collection.int64_equal_func ++ ); ++ + try { +- while (!yield populate_search_table_batch_async(50, cancellable)) { ++ yield this.db.exec_transaction_async( ++ RO, ++ (cx, cancellable) => { ++ // Embedding a SELECT within a SELECT is painfully slow ++ // with SQLite, and a LEFT OUTER JOIN will still take in ++ // the order of seconds, so manually perform the operation ++ ++ var result = cx.prepare( ++ "SELECT docid FROM MessageSearchTable" ++ ).exec(cancellable); ++ while (!result.finished) { ++ search_ids.add(result.rowid_at(0)); ++ result.next(cancellable); ++ } ++ ++ var stmt = cx.prepare( ++ "SELECT id FROM MessageTable WHERE (fields & ?) = ?" ++ ); ++ stmt.bind_uint(0, Geary.ImapDB.Folder.REQUIRED_FTS_FIELDS); ++ stmt.bind_uint(1, Geary.ImapDB.Folder.REQUIRED_FTS_FIELDS); ++ result = stmt.exec(cancellable); ++ while (!result.finished) { ++ message_ids.add(result.rowid_at(0)); ++ result.next(cancellable); ++ } ++ ++ return DONE; ++ }, ++ cancellable ++ ); ++ ++ // Run this in a separate thread since it could be quite a ++ // substantial process for large accounts ++ yield Nonblocking.Concurrent.global.schedule_async( ++ () => { ++ foreach (int64 message_id in message_ids) { ++ if (!search_ids.contains(message_id)) { ++ unindexed_message_ids.add(message_id); ++ } ++ } ++ }, ++ cancellable ++ ); ++ ++ debug("%s: Found %d missing messages to populate", ++ this.account_information.id, ++ unindexed_message_ids.size ++ ); ++ ++ // Do the actual updating in batches since these require ++ // RW transactions ++ while (!unindexed_message_ids.is_empty) { ++ yield populate_search_table_batch_async( ++ 50, unindexed_message_ids, cancellable ++ ); + // With multiple accounts, meaning multiple background threads + // doing such CPU- and disk-heavy work, this process can cause + // the main thread to slow to a crawl. This delay means the +@@ -965,105 +1035,70 @@ private class Geary.ImapDB.Account : BaseObject { + yield Geary.Scheduler.sleep_ms_async(50); + } + } catch (Error e) { +- debug("Error populating %s search table: %s", account_information.id, e.message); ++ debug("%s: Error populating search table: %s", account_information.id, e.message); + } + + debug("%s: Done populating search table", account_information.id); + } + +- private static Gee.HashSet do_build_rowid_set(Db.Result result, Cancellable? cancellable) +- throws Error { +- Gee.HashSet rowid_set = new Gee.HashSet(Collection.int64_hash_func, +- Collection.int64_equal_func); +- while (!result.finished) { +- rowid_set.add(result.rowid_at(0)); +- result.next(cancellable); +- } +- +- return rowid_set; +- } +- +- private async bool populate_search_table_batch_async(int limit, Cancellable? cancellable) +- throws Error { ++ private async void populate_search_table_batch_async( ++ int limit, ++ Gee.HashSet unindexed_message_ids, ++ GLib.Cancellable? cancellable ++ ) throws GLib.Error { + check_open(); +- debug("%s: Searching for up to %d missing indexed messages...", account_information.id, +- limit); +- +- int count = 0, total_unindexed = 0; +- yield db.exec_transaction_async(Db.TransactionType.RW, (cx, cancellable) => { +- // Embedding a SELECT within a SELECT is painfully slow +- // with SQLite, and a LEFT OUTER JOIN will still take in +- // the order of seconds, so manually perform the operation + +- Db.Statement stmt = cx.prepare(""" +- SELECT docid FROM MessageSearchTable +- """); +- Gee.HashSet search_ids = do_build_rowid_set(stmt.exec(cancellable), cancellable); +- +- stmt = cx.prepare(""" +- SELECT id FROM MessageTable WHERE (fields & ?) = ? +- """); +- stmt.bind_uint(0, Geary.ImapDB.Folder.REQUIRED_FTS_FIELDS); +- stmt.bind_uint(1, Geary.ImapDB.Folder.REQUIRED_FTS_FIELDS); +- Gee.HashSet message_ids = do_build_rowid_set(stmt.exec(cancellable), cancellable); +- +- // This is hard to calculate correctly without doing a +- // join (which we should above, but is currently too +- // slow), and if we do get it wrong the progress monitor +- // will crash and burn, so just something too big to fail +- // for now. See Bug 776383. +- total_unindexed = message_ids.size; +- +- // chaff out any MessageTable entries not present in the MessageSearchTable ... since +- // we're given a limit, stuff messages req'ing search into separate set and stop when limit +- // reached +- Gee.HashSet unindexed_message_ids = new Gee.HashSet(Collection.int64_hash_func, +- Collection.int64_equal_func); +- foreach (int64 message_id in message_ids) { +- if (search_ids.contains(message_id)) +- continue; +- +- unindexed_message_ids.add(message_id); +- if (unindexed_message_ids.size >= limit) +- break; +- } +- +- // For all remaining MessageTable rowid's, generate search table entry +- foreach (int64 message_id in unindexed_message_ids) { +- try { +- Geary.Email.Field search_fields = Geary.Email.REQUIRED_FOR_MESSAGE | +- Geary.Email.Field.ORIGINATORS | Geary.Email.Field.RECEIVERS | +- Geary.Email.Field.SUBJECT; ++ uint count = 0; ++ var iter = unindexed_message_ids.iterator(); ++ yield this.db.exec_transaction_async( ++ RW, ++ (cx, cancellable) => { ++ while (iter.has_next() && count < limit) { ++ iter.next(); ++ int64 message_id = iter.get(); ++ try { ++ Email.Field search_fields = ( ++ Email.REQUIRED_FOR_MESSAGE | ++ Email.Field.ORIGINATORS | ++ Email.Field.RECEIVERS | ++ Email.Field.SUBJECT ++ ); + +- Geary.Email.Field db_fields; +- MessageRow row = Geary.ImapDB.Folder.do_fetch_message_row( +- cx, message_id, search_fields, out db_fields, cancellable); +- Geary.Email email = row.to_email(new Geary.ImapDB.EmailIdentifier(message_id, null)); +- Attachment.add_attachments( +- cx, this.db.attachments_path, email, message_id, cancellable +- ); ++ Email.Field db_fields; ++ MessageRow row = Geary.ImapDB.Folder.do_fetch_message_row( ++ cx, message_id, search_fields, out db_fields, cancellable ++ ); ++ Email email = row.to_email( ++ new Geary.ImapDB.EmailIdentifier(message_id, null) ++ ); ++ Attachment.add_attachments( ++ cx, this.db.attachments_path, email, message_id, cancellable ++ ); ++ Geary.ImapDB.Folder.do_add_email_to_search_table( ++ cx, message_id, email, cancellable ++ ); ++ } catch (GLib.Error e) { ++ // This is a somewhat serious issue since we rely on ++ // there always being a row in the search table for ++ // every message. ++ warning( ++ "Error populating message %s for indexing: %s", ++ message_id.to_string(), ++ e.message ++ ); ++ } + +- Geary.ImapDB.Folder.do_add_email_to_search_table(cx, message_id, email, cancellable); +- } catch (Error e) { +- // This is a somewhat serious issue since we rely on +- // there always being a row in the search table for +- // every message. +- warning("Error adding message %s to the search table: %s", message_id.to_string(), +- e.message); ++ iter.remove(); ++ ++count; + } + +- ++count; +- } +- +- return Db.TransactionOutcome.DONE; ++ return COMMIT; + }, cancellable); + + if (count > 0) { +- debug("%s: Found %d/%d missing indexed messages, %d remaining...", +- account_information.id, count, limit, total_unindexed); ++ debug("%s: Populated %u missing indexed messages...", ++ account_information.id, count); + } +- +- return (count < limit); + } + + // +-- +2.29.2 + diff --git a/mail-client/geary/files/0008-account-editor-don-t-show-close-button-for-edit-serv.patch b/mail-client/geary/files/0008-account-editor-don-t-show-close-button-for-edit-serv.patch new file mode 100644 index 0000000..75e6a12 --- /dev/null +++ b/mail-client/geary/files/0008-account-editor-don-t-show-close-button-for-edit-serv.patch @@ -0,0 +1,41 @@ +From 17afbca1727cc7780358239c7cafc8de1742bb0c Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Tue, 20 Oct 2020 12:20:45 +0200 +Subject: [PATCH 8/8] account-editor: don't show close button for edit/servers + pane + +This makes it consistent with the other panes. +--- + ui/accounts_editor_edit_pane.ui | 2 +- + ui/accounts_editor_servers_pane.ui | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ui/accounts_editor_edit_pane.ui b/ui/accounts_editor_edit_pane.ui +index 33b4a9e8..ce9bcb9a 100644 +--- a/ui/accounts_editor_edit_pane.ui ++++ b/ui/accounts_editor_edit_pane.ui +@@ -8,7 +8,7 @@ + Edit Account + Account Name + False +- True ++ False + + + True +diff --git a/ui/accounts_editor_servers_pane.ui b/ui/accounts_editor_servers_pane.ui +index a01eba5b..77ba674e 100644 +--- a/ui/accounts_editor_servers_pane.ui ++++ b/ui/accounts_editor_servers_pane.ui +@@ -7,7 +7,7 @@ + False + Server Settings + Account Name +- True ++ False + + + True +-- +2.29.2 + diff --git a/mail-client/geary/files/0009-Geary.ImapDB.Folder-Drop-create-merge-batch-size-dow.patch b/mail-client/geary/files/0009-Geary.ImapDB.Folder-Drop-create-merge-batch-size-dow.patch new file mode 100644 index 0000000..4fb6f10 --- /dev/null +++ b/mail-client/geary/files/0009-Geary.ImapDB.Folder-Drop-create-merge-batch-size-dow.patch @@ -0,0 +1,34 @@ +From 3d8b86dd4e46939dc1a839873a2d049d650d0491 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 12 Sep 2020 12:02:49 +1000 +Subject: [PATCH 009/124] Geary.ImapDB.Folder: Drop create/merge batch size + down + +We've had reports on Matrix that existing batch transactions in +`create_or_merge_email_async` are taking up to 30s to run, which is +getting uncomfortably close to the 60s timeout. + +Drop the batch size down from 25 to 10 to reduce the chance that this +will eventually fail with a "database is locked" error. + +See #921 for context. +--- + src/engine/imap-db/imap-db-folder.vala | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/engine/imap-db/imap-db-folder.vala b/src/engine/imap-db/imap-db-folder.vala +index 4b015cd1..2c2d4015 100644 +--- a/src/engine/imap-db/imap-db-folder.vala ++++ b/src/engine/imap-db/imap-db-folder.vala +@@ -40,7 +40,7 @@ private class Geary.ImapDB.Folder : BaseObject, Geary.ReferenceSemantics { + private const int LIST_EMAIL_METADATA_COUNT = 100; + private const int LIST_EMAIL_FIELDS_CHUNK_COUNT = 500; + private const int REMOVE_COMPLETE_LOCATIONS_CHUNK_COUNT = 500; +- private const int CREATE_MERGE_EMAIL_CHUNK_COUNT = 25; ++ private const int CREATE_MERGE_EMAIL_CHUNK_COUNT = 10; + private const int OLD_MSG_DETACH_BATCH_SIZE = 1000; + + // When old messages beyond the period set in the account preferences are removed this number +-- +2.29.2 + diff --git a/mail-client/geary/files/0010-Update-Friulian-translation.patch b/mail-client/geary/files/0010-Update-Friulian-translation.patch new file mode 100644 index 0000000..157dae3 --- /dev/null +++ b/mail-client/geary/files/0010-Update-Friulian-translation.patch @@ -0,0 +1,405 @@ +From 56b77cf0d7595c1ccd0846d410a16cb5d5c540b8 Mon Sep 17 00:00:00 2001 +From: Fabio Tomat +Date: Mon, 14 Sep 2020 19:32:40 +0000 +Subject: [PATCH 010/124] Update Friulian translation + +--- + po/fur.po | 103 +++++++++++++++++++++++++++++------------------------- + 1 file changed, 55 insertions(+), 48 deletions(-) + +diff --git a/po/fur.po b/po/fur.po +index f680a065..fd5e3639 100644 +--- a/po/fur.po ++++ b/po/fur.po +@@ -7,8 +7,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-08-29 01:59+0000\n" +-"PO-Revision-Date: 2020-09-08 16:21+0200\n" ++"POT-Creation-Date: 2020-09-13 04:23+0000\n" ++"PO-Revision-Date: 2020-09-14 21:31+0200\n" + "Last-Translator: Fabio Tomat \n" + "Language-Team: Friulian \n" + "Language: fur\n" +@@ -232,6 +232,8 @@ msgid "" + "Enables shortcuts for email actions that do not require pressing to " + "emulate those used by Gmail." + msgstr "" ++"Al abilite lis scurtis pes azions e-mail che no àn bisugne de pression di " ++" par emulâ chês dopradis di Gmail." + + #: desktop/org.gnome.Geary.gschema.xml:82 + msgid "Languages that shall be used in the spell checker" +@@ -242,16 +244,23 @@ msgid "" + "A list of POSIX locales, with the empty list disabling spell checking and " + "the null list using desktop languages by default." + msgstr "" ++"Une liste di localizazions POSIX, cuntune liste vueide si disabilite il " ++"control ortografic e cuntune liste nule si dopre lis lenghis predefinidis " ++"dal scritori." + + #: desktop/org.gnome.Geary.gschema.xml:90 + msgid "Languages that are displayed in the spell checker popover" + msgstr "" ++"Lis lenghis che a vegnin mostradis intal ricuadri a comparse dal control " ++"ortografic" + + #: desktop/org.gnome.Geary.gschema.xml:91 + msgid "" + "List of languages that are always displayed in the popover of the spell " + "checker." + msgstr "" ++"Liste di lenghis che a vegnin simpri mostradis intal ricuadri a comparse dal " ++"control ortografic." + + #: desktop/org.gnome.Geary.gschema.xml:96 + msgid "Notify of new mail at startup" +@@ -285,6 +294,7 @@ msgstr "" + msgid "" + "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." + msgstr "" ++"I valôrs ametûts a son “exact”, “conservative”, “aggressive”, e “horizon”." + + #: desktop/org.gnome.Geary.gschema.xml:120 + msgid "Zoom of conversation viewer" +@@ -304,13 +314,15 @@ msgstr "La ultime dimension regjistrade dal barcon dal redatôr distacât." + + #: desktop/org.gnome.Geary.gschema.xml:132 + msgid "Undo sending email delay" +-msgstr "" ++msgstr "Anule ritart di spedizion e-mail" + + #: desktop/org.gnome.Geary.gschema.xml:133 + msgid "" + "The number of seconds to wait before sending an email. Set to zero or less " + "to disable." + msgstr "" ++"Il numar di seconts di spietâ prime di inviâ une e-mail. Met a zero o mancul " ++"par disabilitâ." + + #: desktop/org.gnome.Geary.gschema.xml:139 + msgid "Brief notification display time" +@@ -320,7 +332,7 @@ msgstr "" + msgid "" + "The length of time in seconds for which brief notifications should be " + "displayed." +-msgstr "" ++msgstr "La lungjece temporâl in seconts che si à di mostrâ lis notifichis." + + #: desktop/org.gnome.Geary.gschema.xml:146 + msgid "List of optional plugins" +@@ -332,12 +344,13 @@ msgstr "I plugin listâts achì a vignaran cjariâts al inviament." + + #: desktop/org.gnome.Geary.gschema.xml:152 + msgid "Whether we migrated the old settings" +-msgstr "" ++msgstr "Indiche se o ven migrât lis impostazions vecjis" + + #: desktop/org.gnome.Geary.gschema.xml:153 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" ++"Fals par controlâ il vecjo scheme “org.yorba.geary” e copiâ i siei valôrs." + + #. Translators: In-app notification label, when + #. the app had a problem pinning an otherwise +@@ -772,11 +785,11 @@ msgstr "Salve pueste inviade sul servidôr" + #: src/client/accounts/accounts-editor-servers-pane.vala:961 + #, c-format + msgid "%s using OAuth2" +-msgstr "" ++msgstr "%s doprant OAuth2" + + #: src/client/accounts/accounts-editor-servers-pane.vala:971 + msgid "Use receiving server login" +-msgstr "" ++msgstr "Dopre acès dal servidôr di ricezion" + + #. Translators: File name used in save chooser when saving + #. attachments that do not otherwise have a name. +@@ -822,12 +835,12 @@ msgstr "Visite il sît web di Geary" + #. / Command line option + #: src/client/application/application-client.vala:97 + msgid "Print debug logging" +-msgstr "" ++msgstr "Stampe i regjistris di debug" + + #. / Command line option + #: src/client/application/application-client.vala:100 + msgid "Start with the main window hidden (deprecated)" +-msgstr "" ++msgstr "Partìs cul barcon principâl platât (deplorât)" + + #. / Command line option + #: src/client/application/application-client.vala:103 +@@ -960,13 +973,13 @@ msgstr "Fabio Tomat , 2020" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1047 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "La opzion `--hidden` e je deplorade e un doman e vignarà gjavade." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1080 ++#: src/client/application/application-client.vala:1078 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Argoment di program no ricognossût: “%s”" +@@ -1322,7 +1335,7 @@ msgstr "Salve come" + + #: src/client/components/components-inspector.vala:230 + #: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Anule" + +@@ -2208,10 +2221,8 @@ msgstr "Compile e invie modei di e-mail doprant un sfuei di calcul" + #. Translators: Info bar label for starting sending a mail + #. merge + #: src/client/plugin/mail-merge/mail-merge.vala:118 +-#, fuzzy +-#| msgid "StartTLS" + msgid "Start" +-msgstr "StartTLS" ++msgstr "Scomence" + + #. Translators: Info bar label for pausing sending a mail + #. merge +@@ -2379,21 +2390,21 @@ msgstr "%A" + #. / http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format + #: src/client/util/util-date.vala:218 + msgid "%a, %b %-e, %Y at %l:%M %P" +-msgstr "" ++msgstr "%a, %-e di %b dal %Y aes %l:%M %P" + + #. / 24 hours format for the datetime that a message being + #. / replied to was received See + #. / http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format + #: src/client/util/util-date.vala:224 + msgid "%a, %b %-e, %Y at %H:%M" +-msgstr "" ++msgstr "%a, %-e di %b dal %Y aes %H:%M" + + #. / Format for the datetime that a message being replied to + #. / was received See + #. / http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format + #: src/client/util/util-date.vala:230 + msgid "%a, %b %-e, %Y at %X" +-msgstr "" ++msgstr "%a, %-e di %b dal %Y aes %X" + + #. Translators: Label used when an email has a missing or + #. an empty subject +@@ -2426,7 +2437,7 @@ msgstr[1] "%s e altris %d" + #: src/client/util/util-email.vala:193 + #, c-format + msgid "On %1$s, %2$s wrote:" +-msgstr "" ++msgstr "Ai %1$s, %2$s al/e à scrit:" + + #. / The quoted header for a message being replied to (in case the date is not known). + #. / %s will be replaced by the original sender. +@@ -2721,7 +2732,6 @@ msgstr "" + #. put the most common localized name to the front for the + #. default. English names do not need to be included. + #: src/engine/imap-engine/imap-engine-generic-account.vala:1030 +-#, fuzzy + msgid "Trash | Rubbish | Rubbish Bin" + msgstr "Scovacere | Refudum | Bidon" + +@@ -2811,7 +2821,7 @@ msgstr "Account" + + #: ui/accounts_editor_list_pane.ui:62 + msgid "To get started, select an email provider below." +-msgstr "" ++msgstr "Par scomençâ, selezione un furnidôr di e-mail chi sot." + + #: ui/accounts_editor_list_pane.ui:75 + msgid "Welcome to Geary" +@@ -2855,27 +2865,27 @@ msgstr "_No sta fidâti di chest servidôr" + + #: ui/composer-editor.ui:100 + msgid "Bold text" +-msgstr "" ++msgstr "Test neret" + + #: ui/composer-editor.ui:124 + msgid "Italic text" +-msgstr "" ++msgstr "Test corsîf" + + #: ui/composer-editor.ui:148 + msgid "Underline text" +-msgstr "" ++msgstr "Test sotlineât" + + #: ui/composer-editor.ui:172 + msgid "Strikethrough text" +-msgstr "" ++msgstr "Test stricât" + + #: ui/composer-editor.ui:205 + msgid "Insert bulleted list" +-msgstr "" ++msgstr "Inserìs liste pontade" + + #: ui/composer-editor.ui:229 + msgid "Insert numbered list" +-msgstr "" ++msgstr "Inserìs liste numerade" + + #: ui/composer-editor.ui:262 + msgid "Indent or quote text" +@@ -2887,7 +2897,7 @@ msgstr "" + + #: ui/composer-editor.ui:315 + msgid "Remove text formatting" +-msgstr "" ++msgstr "Gjave formatazion dal test" + + #: ui/composer-editor.ui:334 + msgid "Change font type" +@@ -2915,7 +2925,7 @@ msgstr "Cambie dimension dal caratar" + + #: ui/composer-editor.ui:447 + msgid "Insert or update text link" +-msgstr "" ++msgstr "Inserìs o inzorne il colegament dal test" + + #: ui/composer-editor.ui:471 + msgid "Insert an image" +@@ -3034,7 +3044,7 @@ msgstr "Salve e siere" + #. Note that this button and the Update button will never be shown at the same time to the user. + #: ui/composer-link-popover.ui:42 + msgid "Insert the new link with this URL" +-msgstr "" ++msgstr "Inserìs il gnûf colegament cun chest URL" + + #: ui/composer-link-popover.ui:43 + msgid "Add" +@@ -3047,7 +3057,7 @@ msgstr "URL colegament" + #. Note that this button and the Insert button will never be shown at the same time to the user. + #: ui/composer-link-popover.ui:61 + msgid "Update this link’s URL" +-msgstr "" ++msgstr "Inzorne chest URL dal link" + + #: ui/composer-link-popover.ui:62 + msgid "Update" +@@ -3127,7 +3137,7 @@ msgstr "Detais:" + #. Tooltip for problem report button + #: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:24 + msgid "Search for matching log entries" +-msgstr "" ++msgstr "Cîr vôs di regjistri corispondentis" + + #. Tooltip for inspector button + #: ui/components-inspector.ui:35 +@@ -3143,7 +3153,7 @@ msgstr "" + #. Tooltip for problem report button + #: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:51 + msgid "Save logs entries and details" +-msgstr "" ++msgstr "Salve vôs dai regjistris e detais" + + #. Tooltip for inspector button + #. Tooltip for problem report button +@@ -3182,10 +3192,8 @@ msgstr "Cjarie simpri lis imagjins rimotis" + + #. Title label on contact popover + #: ui/conversation-contact-popover.ui:264 +-#, fuzzy +-#| msgid "Email address" + msgid "Deceptive email address" +-msgstr "Direzion e-mail" ++msgstr "Direzion e-mail ingjanose" + + #. Contact popover label + #: ui/conversation-contact-popover.ui:294 +@@ -3245,7 +3253,6 @@ msgstr "Sposte messaç te _Scovacere" + + #. Translators: Menu item to delete a single, specific message + #: ui/conversation-email-menus.ui:57 +-#| msgid "Autoselect next message" + msgid "_Delete message…" + msgstr "_Elimine messaç…" + +@@ -3256,23 +3263,23 @@ msgstr "_Viôt sorzint" + + #: ui/conversation-message-link-popover.ui:54 + msgid "But actually goes to:" +-msgstr "" ++msgstr "Ma invezit al va su:" + + #: ui/conversation-message-link-popover.ui:84 + msgid "The link appears to go to:" +-msgstr "" ++msgstr "Al semee che il colegament al ledi su:" + + #: ui/conversation-message-link-popover.ui:96 + msgid "Deceptive link found" +-msgstr "" ++msgstr "Colegament ingjanôs cjatât" + + #: ui/conversation-message-link-popover.ui:111 + msgid "The email sender may be leading you to the wrong web site." +-msgstr "" ++msgstr "Il mitent de e-mail al podarès puartâti su sîts web sbaliâts." + + #: ui/conversation-message-link-popover.ui:124 + msgid "If unsure, contact the sender and ask before continuing." +-msgstr "" ++msgstr "Se no si è sigûrs, contatâ il mitent e domandâ prime di continuâ." + + #: ui/conversation-message-menus.ui:7 + msgid "_Open Link" +@@ -3611,27 +3618,27 @@ msgstr "Modifiche cun test formatât" + #: ui/gtk/help-overlay.ui:468 + msgctxt "shortcut window" + msgid "Paste without formatting" +-msgstr "" ++msgstr "Tache cence formatazion" + + #: ui/gtk/help-overlay.ui:475 + msgctxt "shortcut window" + msgid "Bold text" +-msgstr "" ++msgstr "Met test in neret" + + #: ui/gtk/help-overlay.ui:482 + msgctxt "shortcut window" + msgid "Italicize text" +-msgstr "" ++msgstr "Met test in corsîf" + + #: ui/gtk/help-overlay.ui:489 + msgctxt "shortcut window" + msgid "Underline text" +-msgstr "" ++msgstr "Sotlinie il test" + + #: ui/gtk/help-overlay.ui:496 + msgctxt "shortcut window" + msgid "Strike text" +-msgstr "" ++msgstr "Striche il test" + + #: ui/gtk/help-overlay.ui:503 + msgctxt "shortcut window" +@@ -3711,7 +3718,7 @@ msgstr "_Autentiche" + + #: ui/upgrade_dialog.glade:60 + msgid "Geary update in progress…" +-msgstr "" ++msgstr "Inzornament di Geary in vore…" + + #~ msgid "mail-send" + #~ msgstr "mail-send" +-- +2.29.2 + diff --git a/mail-client/geary/files/0011-Update-Friulian-translation.patch b/mail-client/geary/files/0011-Update-Friulian-translation.patch new file mode 100644 index 0000000..6a0fa36 --- /dev/null +++ b/mail-client/geary/files/0011-Update-Friulian-translation.patch @@ -0,0 +1,180 @@ +From 4a4e6a6992fc1349fd532ad35b0c787992024162 Mon Sep 17 00:00:00 2001 +From: Fabio Tomat +Date: Tue, 15 Sep 2020 05:20:06 +0000 +Subject: [PATCH 011/124] Update Friulian translation + +--- + po/fur.po | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +diff --git a/po/fur.po b/po/fur.po +index fd5e3639..1db111d0 100644 +--- a/po/fur.po ++++ b/po/fur.po +@@ -7,8 +7,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-09-13 04:23+0000\n" +-"PO-Revision-Date: 2020-09-14 21:31+0200\n" ++"POT-Creation-Date: 2020-09-14 19:33+0000\n" ++"PO-Revision-Date: 2020-09-15 07:19+0200\n" + "Last-Translator: Fabio Tomat \n" + "Language-Team: Friulian \n" + "Language: fur\n" +@@ -288,7 +288,7 @@ msgstr "Vêr par scrivi lis e-mail in HTML; fals pal test sempliç." + + #: desktop/org.gnome.Geary.gschema.xml:114 + msgid "Advisory strategy for full-text searching" +-msgstr "" ++msgstr "Strategjie consultive pe ricercje di tescj complets" + + #: desktop/org.gnome.Geary.gschema.xml:115 + msgid "" +@@ -326,7 +326,7 @@ msgstr "" + + #: desktop/org.gnome.Geary.gschema.xml:139 + msgid "Brief notification display time" +-msgstr "" ++msgstr "Timp di visualizazion des notifichis" + + #: desktop/org.gnome.Geary.gschema.xml:140 + msgid "" +@@ -580,7 +580,7 @@ msgstr "Discjarie pueste" + #: src/client/accounts/accounts-editor-edit-pane.vala:822 + #, c-format + msgid "Change download period back to: %s" +-msgstr "" ++msgstr "Tornâ al precedent periodi di discjariament: %s" + + #: src/client/accounts/accounts-editor-edit-pane.vala:843 + msgid "Everything" +@@ -850,18 +850,18 @@ msgstr "Abilite l'ispetôr WebKitGTK intes viodudis web" + #. / Command line option + #: src/client/application/application-client.vala:106 + msgid "Log conversation monitoring" +-msgstr "" ++msgstr "Regjistre il monitorament des conversazions" + + #. / Command line option + #: src/client/application/application-client.vala:109 + msgid "Log IMAP network deserialization" +-msgstr "" ++msgstr "Regjistre la deserializazion de rêt IMAP" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". + #: src/client/application/application-client.vala:113 + msgid "Log folder normalization" +-msgstr "" ++msgstr "Regjistre la sincronizazion de cartele" + + #. / Command line option + #: src/client/application/application-client.vala:116 +@@ -873,7 +873,7 @@ msgstr "Regjistre ativitât di rêt IMAP" + #. / also be called the IMAP events queue. + #: src/client/application/application-client.vala:121 + msgid "Log IMAP replay queue" +-msgstr "" ++msgstr "Regjistre la code di events IMAP" + + #. / Command line option + #: src/client/application/application-client.vala:124 +@@ -897,10 +897,8 @@ msgstr "Vierç un gnûf barcon" + + #. / Command line option + #: src/client/application/application-client.vala:135 +-#, fuzzy +-#| msgid "Failed to store certificate" + msgid "Revoke all pinned TLS server certificates" +-msgstr "No si è rivâts a archiviâ il certificât" ++msgstr "Revoche ducj i certificâts di servidôr TLS fissâts" + + #. / Command line option + #: src/client/application/application-client.vala:138 +@@ -2268,10 +2266,8 @@ msgid "Messaging Menu" + msgstr "Menù di messaç" + + #: src/client/plugin/messaging-menu/messaging-menu.plugin.desktop.in:5 +-#, fuzzy +-#| msgid "Show notifications for new mail" + msgid "Displays Unity Messaging Menu notifications for new email" +-msgstr "Mostre lis notifichis pe gnove pueste" ++msgstr "Al mostre lis notifichis di gnove pueste tal menù dai messaçs di Unity" + + #: src/client/plugin/messaging-menu/messaging-menu.vala:79 + #, c-format +@@ -2838,6 +2834,8 @@ msgid "" + "Removing an account will remove it from Geary and delete locally cached " + "email data from your computer, but not from your service provider." + msgstr "" ++"Gjavant un account si lu gjavarà di Geary e si eliminarà dal computer i dâts " ++"e-mail te cache locâl, ma no dal gjestôr/furnidôr dal servizi." + + #: ui/accounts_editor_remove_pane.ui:122 + msgid "Remove account" +@@ -2889,11 +2887,11 @@ msgstr "Inserìs liste numerade" + + #: ui/composer-editor.ui:262 + msgid "Indent or quote text" +-msgstr "" ++msgstr "Indentâ o citâ test" + + #: ui/composer-editor.ui:286 + msgid "Un-indent or unquote text" +-msgstr "" ++msgstr "Gjavâ la indintidure o la citazion dal test" + + #: ui/composer-editor.ui:315 + msgid "Remove text formatting" +@@ -3128,6 +3126,10 @@ msgid "" + "channels or attach to a new bug report." + msgstr "" ++"Se il probleme al è grivi o al persist, salve e invie chescj detais a un dai " ++"canâi di contat o " ++"zonte suntune gnove segnalazion di erôr." + + #: ui/components-inspector-error-view.ui:47 + msgid "Details:" +@@ -3142,12 +3144,12 @@ msgstr "Cîr vôs di regjistri corispondentis" + #. Tooltip for inspector button + #: ui/components-inspector.ui:35 + msgid "Toggle appending new log entries" +-msgstr "" ++msgstr "Ativâ/disativâ la zonte di gnovis vôs di regjistri" + + #. Tooltip for inspector button + #: ui/components-inspector.ui:55 + msgid "Add a marker entry to the log" +-msgstr "" ++msgstr "Zonte une vôs-marcadôr al regjistri" + + #. Tooltip for inspector button + #. Tooltip for problem report button +@@ -3423,7 +3425,7 @@ msgstr "Bute vie conversazions" + #: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:340 + msgctxt "shortcut window" + msgid "Junk conversations" +-msgstr "" ++msgstr "Conversazions malvoludis" + + #: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:347 + msgctxt "shortcut window" +@@ -3526,11 +3528,9 @@ msgid "Select next/previous conversation" + msgstr "Selezione la prossime/precedente conversazion" + + #: ui/gtk/help-overlay.ui:248 +-#, fuzzy +-#| msgid "Autoselect next message" + msgctxt "shortcut window" + msgid "Focus next/previous message" +-msgstr "Selezione in automatic il prossim messaç" ++msgstr "Met a fûc (il stât atîf) il prossim/precedent messaç" + + #: ui/gtk/help-overlay.ui:260 + msgid "Single-key Shortcuts" +-- +2.29.2 + diff --git a/mail-client/geary/files/0012-Update-Friulian-translation.patch b/mail-client/geary/files/0012-Update-Friulian-translation.patch new file mode 100644 index 0000000..65c6adc --- /dev/null +++ b/mail-client/geary/files/0012-Update-Friulian-translation.patch @@ -0,0 +1,34 @@ +From acabdc9e73e7a6e23f14540ac2485783161eecc4 Mon Sep 17 00:00:00 2001 +From: Fabio Tomat +Date: Tue, 15 Sep 2020 05:52:24 +0000 +Subject: [PATCH 012/124] Update Friulian translation + +--- + po/fur.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/po/fur.po b/po/fur.po +index 1db111d0..d13465ba 100644 +--- a/po/fur.po ++++ b/po/fur.po +@@ -8,7 +8,7 @@ msgstr "" + "Project-Id-Version: geary master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" + "POT-Creation-Date: 2020-09-14 19:33+0000\n" +-"PO-Revision-Date: 2020-09-15 07:19+0200\n" ++"PO-Revision-Date: 2020-09-15 07:51+0200\n" + "Last-Translator: Fabio Tomat \n" + "Language-Team: Friulian \n" + "Language: fur\n" +@@ -2491,7 +2491,7 @@ msgstr "Inviade" + + #: src/client/util/util-i18n.vala:280 + msgid "Starred" +-msgstr "Preferidis" ++msgstr "Preferide" + + #: src/client/util/util-i18n.vala:283 + msgid "Important" +-- +2.29.2 + diff --git a/mail-client/geary/files/0013-Update-Friulian-translation.patch b/mail-client/geary/files/0013-Update-Friulian-translation.patch new file mode 100644 index 0000000..806ce21 --- /dev/null +++ b/mail-client/geary/files/0013-Update-Friulian-translation.patch @@ -0,0 +1,34 @@ +From e957f0f8a7310950d36837b9945a09ad7a97e63c Mon Sep 17 00:00:00 2001 +From: Fabio Tomat +Date: Tue, 15 Sep 2020 06:56:54 +0000 +Subject: [PATCH 013/124] Update Friulian translation + +--- + po/fur.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/po/fur.po b/po/fur.po +index d13465ba..b5e17eec 100644 +--- a/po/fur.po ++++ b/po/fur.po +@@ -8,7 +8,7 @@ msgstr "" + "Project-Id-Version: geary master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" + "POT-Creation-Date: 2020-09-14 19:33+0000\n" +-"PO-Revision-Date: 2020-09-15 07:51+0200\n" ++"PO-Revision-Date: 2020-09-15 08:56+0200\n" + "Last-Translator: Fabio Tomat \n" + "Language-Team: Friulian \n" + "Language: fur\n" +@@ -1181,7 +1181,7 @@ msgstr "Si lavore fûr rêt" + #: src/client/application/application-main-window.vala:542 + msgid "You will not be able to send or receive email until re-connected." + msgstr "" +-"No tu podarâs inviâ o ricevi e-mail fintremai che no tu tornarâs a coneti." ++"No tu podarâs inviâ o ricevi e-mail fintremai che no tu ti tornarâs a coneti." + + #. Translators: An info bar status label + #: src/client/application/application-main-window.vala:549 +-- +2.29.2 + diff --git a/mail-client/geary/files/0014-Update-Croatian-translation.patch b/mail-client/geary/files/0014-Update-Croatian-translation.patch new file mode 100644 index 0000000..a84331d --- /dev/null +++ b/mail-client/geary/files/0014-Update-Croatian-translation.patch @@ -0,0 +1,3505 @@ +From 3e176af1e11d8df89a20877c9d8a253a0832fad3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Goran=20Vidovi=C4=87?= +Date: Tue, 15 Sep 2020 23:17:28 +0000 +Subject: [PATCH 014/124] Update Croatian translation + +--- + po/hr.po | 2961 +++--------------------------------------------------- + 1 file changed, 116 insertions(+), 2845 deletions(-) + +diff --git a/po/hr.po b/po/hr.po +index 3ed90502..d9656025 100644 +--- a/po/hr.po ++++ b/po/hr.po +@@ -11,8 +11,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary-0.4.1\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-03-31 15:07+0000\n" +-"PO-Revision-Date: 2020-03-31 17:16+0200\n" ++"POT-Creation-Date: 2020-09-13 04:23+0000\n" ++"PO-Revision-Date: 2020-09-16 01:03+0200\n" + "Last-Translator: gogo \n" + "Language-Team: Croatian (http://www.transifex.com/projects/p/geary/language/" + "hr/)\n" +@@ -34,10 +34,10 @@ msgstr "Pošalji datoteke koristeći Geary" + + #. Translators: The application name + #: desktop/geary-autostart.desktop.in.in:3 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:12 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 +-#: src/client/accounts/accounts-editor-servers-pane.vala:555 +-#: src/client/application/application-main-window.vala:590 ++#: src/client/accounts/accounts-editor-servers-pane.vala:560 ++#: src/client/application/application-main-window.vala:608 + msgid "Geary" + msgstr "Geary" + +@@ -48,9 +48,9 @@ msgstr "E-pošta" + + #. Translators: The application's summary / tagline + #: desktop/geary-autostart.desktop.in.in:5 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:16 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:15 + #: desktop/org.gnome.Geary.desktop.in.in:5 +-#: src/client/application/application-client.vala:32 ++#: src/client/application/application-client.vala:33 + msgid "Send and receive email" + msgstr "Primi i pošalji e-poštu" + +@@ -60,11 +60,11 @@ msgid "Email;E-mail;Mail;" + msgstr "Epošta;E-pošta;Pošta;" + + #. Translators: The development team's name +-#: desktop/org.gnome.Geary.appdata.xml.in.in:14 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:13 + msgid "Geary Development Team" + msgstr "Geary razvojni tim" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:18 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:17 + msgid "" + "Geary is an email application built around conversations, for the GNOME 3 " + "desktop. It allows you to read, find and send email with a straightforward, " +@@ -74,7 +74,7 @@ msgstr "" + "okruženje. Omogućuje vam čitanje, pronalazak i slanje e-pošte iz " + "jednostavnog, modernog sučelja." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:23 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:22 + msgid "" + "Conversations allow you to read a complete discussion without having to find " + "and click from message to message." +@@ -82,43 +82,43 @@ msgstr "" + "Razgovori vam omogućuju čitanje potpune rasprave bez potrebe za " + "pronalaženjem i klikanjem iz poruke u poruku." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:27 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:26 + msgid "Geary’s features include:" + msgstr "Gearyjeve značajke uključuju:" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:29 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:28 + msgid "Quick email account setup" + msgstr "Brzo podešavanje računa e-pošte" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:30 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:29 + msgid "Shows related messages together in conversations" + msgstr "Prikazuje povezane poruke zajedno u razgovoru" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:31 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:30 + msgid "Fast, full text and keyword search" + msgstr "Brza pretraga po potpunom tekstu i ključnoj riječi" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:32 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:31 + msgid "Full-featured HTML and plain text message composer" + msgstr "Potpuno funkcionalan sastavljač poruke u HTML-u i običnom tekstu" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:33 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:32 + msgid "Desktop notification of new mail" + msgstr "Obavijest radnog okruženja o novoj pošti" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:34 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:33 + msgid "Compatible with GMail, Yahoo! Mail, Outlook.com and other IMAP servers" + msgstr "" + "Kompatibilno s GMailom, Yahoo! Mailom, Outlook.com i ostalim IMAP " + "poslužiteljima" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:48 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:47 + msgid "Geary displaying a conversation" + msgstr "Geary prikazuje razgovor" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:59 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:58 + msgid "Geary showing the rich text composer" + msgstr "Geary prikazuje sastavljača obogaćenog tekstom" + +@@ -368,13 +368,13 @@ msgstr "Svi ostali" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:195 +-#: src/client/accounts/accounts-editor-servers-pane.vala:316 ++#: src/client/accounts/accounts-editor-servers-pane.vala:321 + msgid "Check your receiving login and password" + msgstr "Provjerite svoju prijavu i lozinku primanja" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:210 +-#: src/client/accounts/accounts-editor-servers-pane.vala:329 ++#: src/client/accounts/accounts-editor-servers-pane.vala:334 + msgid "Check your receiving server details" + msgstr "Provjerite svoje pojedinosti poslužitelja primanja" + +@@ -384,13 +384,13 @@ msgstr "Provjerite svoje pojedinosti poslužitelja primanja" + #. specify custom creds here + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:232 +-#: src/client/accounts/accounts-editor-servers-pane.vala:350 ++#: src/client/accounts/accounts-editor-servers-pane.vala:355 + msgid "Check your sending login and password" + msgstr "Provjerite svoju prijavu i lozinku slanja" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:246 +-#: src/client/accounts/accounts-editor-servers-pane.vala:363 ++#: src/client/accounts/accounts-editor-servers-pane.vala:368 + msgid "Check your sending server details" + msgstr "Provjerite svoje pojedinosti poslužitelja slanja" + +@@ -446,14 +446,14 @@ msgstr "osoba@primjer.hr" + #. Translators: Label for the user's login name for an + #. IMAP, SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:593 +-#: src/client/accounts/accounts-editor-servers-pane.vala:884 ++#: src/client/accounts/accounts-editor-servers-pane.vala:889 + msgid "Login name" + msgstr "Ime prijave" + + #. Translators: Label for the user's password for an IMAP, + #. SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:607 +-#: src/client/accounts/accounts-editor-servers-pane.vala:1006 ++#: src/client/accounts/accounts-editor-servers-pane.vala:1011 + #: ui/password-dialog.glade:108 + msgid "Password" + msgstr "Lozinka" +@@ -463,7 +463,7 @@ msgstr "Lozinka" + #. Translators: This label describes the host name or IP + #. address and port used by an account's IMAP service. + #: src/client/accounts/accounts-editor-add-pane.vala:629 +-#: src/client/accounts/accounts-editor-servers-pane.vala:728 ++#: src/client/accounts/accounts-editor-servers-pane.vala:733 + msgid "IMAP server" + msgstr "IMAP poslužitelj" + +@@ -478,7 +478,7 @@ msgstr "imap.primjer.hr" + #. Translators: This label describes the host name or IP + #. address and port used by an account's SMTP service. + #: src/client/accounts/accounts-editor-add-pane.vala:638 +-#: src/client/accounts/accounts-editor-servers-pane.vala:734 ++#: src/client/accounts/accounts-editor-servers-pane.vala:739 + msgid "SMTP server" + msgstr "SMTP poslužitelj" + +@@ -624,55 +624,54 @@ msgstr[1] "%d dana unatrag" + msgstr[2] "%d dana unatrag" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2060 ++#: src/client/application/application-main-window.vala:2061 + msgid "Undo" + msgstr "Vrati" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2043 ++#: src/client/application/application-main-window.vala:2044 + msgid "Redo" + msgstr "Ponovi" + + #: src/client/accounts/accounts-editor-list-pane.vala:358 +-#: src/client/accounts/accounts-editor-list-pane.vala:446 ++#: src/client/accounts/accounts-editor-list-pane.vala:454 + #: src/client/accounts/accounts-editor-row.vala:279 + msgid "Gmail" + msgstr "Gmail" + + #: src/client/accounts/accounts-editor-list-pane.vala:362 +-#: src/client/accounts/accounts-editor-list-pane.vala:450 ++#: src/client/accounts/accounts-editor-list-pane.vala:458 + #: src/client/accounts/accounts-editor-row.vala:283 + msgid "Outlook.com" + msgstr "Outlook.com" + + #: src/client/accounts/accounts-editor-list-pane.vala:366 +-#: src/client/accounts/accounts-editor-list-pane.vala:454 ++#: src/client/accounts/accounts-editor-list-pane.vala:462 + #: src/client/accounts/accounts-editor-row.vala:287 + msgid "Yahoo" + msgstr "Yahoo" + + #. Translators: Tooltip for accounts that have been + #. loaded but disabled by the user. +-#: src/client/accounts/accounts-editor-list-pane.vala:384 ++#: src/client/accounts/accounts-editor-list-pane.vala:388 + msgid "This account has been disabled" + msgstr "Ovaj račun je onemogućen" + + #. Translators: Tooltip for accounts that have been + #. loaded but because of some error are not able to be + #. used. +-#: src/client/accounts/accounts-editor-list-pane.vala:393 ++#: src/client/accounts/accounts-editor-list-pane.vala:397 + msgid "This account has encountered a problem and is unavailable" + msgstr "Ovaj račun je naišao na problem i nedostupan je" + +-#. Translators: Label for adding a generic email account +-#: src/client/accounts/accounts-editor-list-pane.vala:443 ++#: src/client/accounts/accounts-editor-list-pane.vala:466 + msgid "Other email providers" + msgstr "Ostali pružatelji usluge e-pošte" + + #. Translators: Notification shown after removing an + #. account. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:560 ++#: src/client/accounts/accounts-editor-list-pane.vala:572 + #, c-format + msgid "Account “%s” removed" + msgstr "Račun “%s” je uklonjen" +@@ -680,7 +679,7 @@ msgstr "Račun “%s” je uklonjen" + #. Translators: Notification shown after removing an account + #. is undone. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:567 ++#: src/client/accounts/accounts-editor-list-pane.vala:579 + #, c-format + msgid "Account “%s” restored" + msgstr "Račun “%s” je obnovljen" +@@ -693,30 +692,30 @@ msgstr "Povucite za premještanje ovog računa" + #. Translators: Label describes the service provider + #. hosting the email account, e.g. Gmail, Yahoo, or some + #. other generic IMAP service. +-#: src/client/accounts/accounts-editor-row.vala:295 ++#: src/client/accounts/accounts-editor-row.vala:299 + msgid "Service provider" + msgstr "Pružatelj usluge" + + #. Translators: This label describes what form of transport + #. security (TLS, StartTLS, etc) used by an account's IMAP or SMTP + #. service. +-#: src/client/accounts/accounts-editor-row.vala:468 ++#: src/client/accounts/accounts-editor-row.vala:473 + msgid "Connection security" + msgstr "Sigurnost povezivanja" + + #. Translators: Label used when no auth scheme is used + #. by an account's IMAP or SMTP service. +-#: src/client/accounts/accounts-editor-row.vala:479 +-#: src/client/accounts/accounts-editor-servers-pane.vala:755 +-#: src/client/accounts/accounts-editor-servers-pane.vala:970 ++#: src/client/accounts/accounts-editor-row.vala:484 ++#: src/client/accounts/accounts-editor-servers-pane.vala:760 ++#: src/client/accounts/accounts-editor-servers-pane.vala:975 + msgid "None" + msgstr "Nepoznata" + +-#: src/client/accounts/accounts-editor-row.vala:486 ++#: src/client/accounts/accounts-editor-row.vala:491 + msgid "StartTLS" + msgstr "StartTLS" + +-#: src/client/accounts/accounts-editor-row.vala:493 ++#: src/client/accounts/accounts-editor-row.vala:498 + msgid "TLS" + msgstr "TLS" + +@@ -724,35 +723,35 @@ msgstr "TLS" + #. credentials (none, use IMAP, custom) when adding a new + #. account + #. Translators: An info bar button label +-#: src/client/accounts/accounts-editor-row.vala:534 +-#: src/client/application/application-main-window.vala:544 ++#: src/client/accounts/accounts-editor-row.vala:539 ++#: src/client/application/application-main-window.vala:554 + msgid "Login" + msgstr "Prijava" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (none) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:541 ++#: src/client/accounts/accounts-editor-row.vala:546 + msgid "No login needed" + msgstr "Prijava nije potrebana" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (use IMAP) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:549 ++#: src/client/accounts/accounts-editor-row.vala:554 + msgid "Use same login as receiving" + msgstr "Koristi istu prijavu kao i za primanje" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (custom) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:557 ++#: src/client/accounts/accounts-editor-row.vala:562 + msgid "Use a different login" + msgstr "Koristi drugačiju prijavu" + + #. Translators: In-app notification label, the + #. string substitution is a more detailed reason. +-#: src/client/accounts/accounts-editor-servers-pane.vala:377 ++#: src/client/accounts/accounts-editor-servers-pane.vala:382 + #, c-format + msgid "Account not updated: %s" + msgstr "Račun nije nadopunjen: %s" +@@ -760,23 +759,23 @@ msgstr "Račun nije nadopunjen: %s" + #. Translators: This label describes the program that + #. created the account, e.g. an SSO service like GOA, or + #. locally by Geary. +-#: src/client/accounts/accounts-editor-servers-pane.vala:540 ++#: src/client/accounts/accounts-editor-servers-pane.vala:545 + msgid "Account source" + msgstr "Izvor računa" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:552 ++#: src/client/accounts/accounts-editor-servers-pane.vala:557 + msgid "GNOME Online Accounts" + msgstr "GNOME mrežni računi" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:611 ++#: src/client/accounts/accounts-editor-servers-pane.vala:616 + msgid "Save draft email on server" + msgstr "Spremi skicu e-pošte na poslužitelju" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:666 ++#: src/client/accounts/accounts-editor-servers-pane.vala:671 + msgid "Save sent email on server" + msgstr "Spremi poslanu e-poštu na poslužitelju" + +@@ -785,12 +784,12 @@ msgstr "Spremi poslanu e-poštu na poslužitelju" + #. Translators: Label used when an account's IMAP or + #. SMTP service uses OAuth2. The string replacement is + #. the service's login name. +-#: src/client/accounts/accounts-editor-servers-pane.vala:956 ++#: src/client/accounts/accounts-editor-servers-pane.vala:961 + #, c-format + msgid "%s using OAuth2" + msgstr "%s koristi OAuth2" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:966 ++#: src/client/accounts/accounts-editor-servers-pane.vala:971 + msgid "Use receiving server login" + msgstr "Koristi prijavu poslužitelja primanja" + +@@ -821,15 +820,15 @@ msgstr "Datoteka već postoji u “%s”. Zamjena će prebrisati sav njen sadr + msgid "_Replace" + msgstr "_Zamijeni" + +-#: src/client/application/application-client.vala:33 ++#: src/client/application/application-client.vala:34 + msgid "Copyright 2016 Software Freedom Conservancy Inc." + msgstr "Autorsko pravo 2016 Software Freedom Conservancy Inc." + +-#: src/client/application/application-client.vala:34 ++#: src/client/application/application-client.vala:35 + msgid "Copyright 2016-2020 Geary Development Team." + msgstr "Autorsko pravo 2016-2020 Geary razvojni tim." + +-#: src/client/application/application-client.vala:36 ++#: src/client/application/application-client.vala:37 + msgid "Visit the Geary web site" + msgstr "Posjetite Geary web stranicu" + +@@ -866,105 +865,98 @@ msgstr "Zapisuj normalizaciju mape" + + #. / Command line option + #: src/client/application/application-client.vala:116 +-msgid "Log network activity" +-msgstr "Zapisuj mrežne aktivnosti" +- +-#. / Command line option +-#: src/client/application/application-client.vala:119 +-msgid "Log periodic activity" +-msgstr "Zapisuj povremene aktivnosti" ++msgid "Log IMAP network activity" ++msgstr "Zapisuj IMAP mrežne aktivnosti" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could + #. / also be called the IMAP events queue. +-#: src/client/application/application-client.vala:124 ++#: src/client/application/application-client.vala:121 + msgid "Log IMAP replay queue" + msgstr "Zapisuj ponavljanja IMAP događaja" + +-#. / Command line option. Serialization is how commands and +-#. / responses are converted into a stream of bytes for +-#. / network transmission +-#: src/client/application/application-client.vala:129 +-msgid "Log IMAP network serialization" +-msgstr "Zapisuj serijalizaciju IMAP mreže" ++#. / Command line option ++#: src/client/application/application-client.vala:124 ++msgid "Log SMTP network activity" ++msgstr "Zapisuj SMTP mrežne aktivnosti" + + #. / Command line option +-#: src/client/application/application-client.vala:132 ++#: src/client/application/application-client.vala:127 + msgid "Log database queries (generates lots of messages)" + msgstr "Zapisuj upite baze podataka (stvara veliki broj poruka)" + + #. / Command line option +-#: src/client/application/application-client.vala:135 ++#: src/client/application/application-client.vala:130 + msgid "Perform a graceful quit" + msgstr "Izvedi graciozni izlaz" + +-#: src/client/application/application-client.vala:137 ++#: src/client/application/application-client.vala:132 + msgid "Open a new window" + msgstr "Otvori novi prozor" + + #. / Command line option +-#: src/client/application/application-client.vala:140 ++#: src/client/application/application-client.vala:135 + msgid "Revoke all pinned TLS server certificates" + msgstr "Opozovi sve vjerodajnice TLS poslužitelja" + + #. / Command line option +-#: src/client/application/application-client.vala:143 ++#: src/client/application/application-client.vala:138 + msgid "Display program version" + msgstr "Prikaži inačicu programa" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:267 ++#: src/client/application/application-client.vala:262 + msgid "Geary version" + msgstr "Geary inačica" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:269 ++#: src/client/application/application-client.vala:264 + msgid "Geary revision" + msgstr "Geary revizija" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:271 ++#: src/client/application/application-client.vala:266 + msgid "GTK version" + msgstr "GTK inačica" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:278 ++#: src/client/application/application-client.vala:273 + msgid "GLib version" + msgstr "GLib inačica" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:285 ++#: src/client/application/application-client.vala:280 + msgid "WebKitGTK version" + msgstr "WebKitGTK inačica" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:292 ++#: src/client/application/application-client.vala:287 + msgid "Desktop environment" + msgstr "Okruženje radne površine" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:294 ++#: src/client/application/application-client.vala:289 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Nepoznata" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:324 ++#: src/client/application/application-client.vala:293 + msgid "Distribution name" + msgstr "Naziv distribucije" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:329 ++#: src/client/application/application-client.vala:298 + msgid "Distribution release" + msgstr "Izdanje distribucije" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:337 ++#: src/client/application/application-client.vala:303 + msgid "Installation prefix" + msgstr "Instalacija prefiksa" + +-#: src/client/application/application-client.vala:590 ++#: src/client/application/application-client.vala:559 + #, c-format + msgid "About %s" + msgstr "O %s" +@@ -972,7 +964,7 @@ msgstr "O %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:594 ++#: src/client/application/application-client.vala:563 + msgid "translator-credits" + msgstr "" + "translator-credits\n" +@@ -983,30 +975,30 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:941 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "`--hidden` mogućnost je zastarjela i biti će uklonjena u budućnosti." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:974 ++#: src/client/application/application-client.vala:1078 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Neprepoznat argument programa: “%s”" + + #. / Notification title. +-#: src/client/application/application-controller.vala:455 ++#: src/client/application/application-controller.vala:479 + #, c-format + msgid "A problem occurred sending email for %s" + msgstr "Problem je nastao pri slanju e-pošte za %s" + + #. / Notification body +-#: src/client/application/application-controller.vala:459 ++#: src/client/application/application-controller.vala:483 + msgid "Email will not be sent until re-connected" + msgstr "E-pošta neće biti poslana do ponovnog povezivnja" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:565 ++#: src/client/application/application-controller.vala:582 + msgid "Conversation marked" + msgid_plural "Conversations marked" + msgstr[0] "Razgovor označen" +@@ -1014,7 +1006,7 @@ msgstr[1] "Razgovori označeni" + msgstr[2] "Razgovori označeni" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:571 ++#: src/client/application/application-controller.vala:588 + msgid "Conversation un-marked" + msgid_plural "Conversations un-marked" + msgstr[0] "Uklonjena oznaka razgovora" +@@ -1024,8 +1016,8 @@ msgstr[2] "Uklonjena oznaka razgovora" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:597 +-#: src/client/application/application-controller.vala:681 ++#: src/client/application/application-controller.vala:614 ++#: src/client/application/application-controller.vala:698 + #, c-format + msgid "Conversation moved to %s" + msgid_plural "Conversations moved to %s" +@@ -1038,8 +1030,8 @@ msgstr[2] "Razgovori su premješteni u %s" + #. / of the source folder. + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:605 +-#: src/client/application/application-controller.vala:627 ++#: src/client/application/application-controller.vala:622 ++#: src/client/application/application-controller.vala:644 + #, c-format + msgid "Conversation restored to %s" + msgid_plural "Conversations restored to %s" +@@ -1048,7 +1040,7 @@ msgstr[1] "Razgovori su obnovljeni u %s" + msgstr[2] "Razgovori su obnovljeni u %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:648 ++#: src/client/application/application-controller.vala:665 + msgid "Conversation archived" + msgid_plural "Conversations archived" + msgstr[0] "Razgovor je arhiviran" +@@ -1057,7 +1049,7 @@ msgstr[2] "Razgovori su arhivirani" + + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:704 ++#: src/client/application/application-controller.vala:721 + #, c-format + msgid "Message restored to %s" + msgid_plural "Messages restored to %s" +@@ -1066,7 +1058,7 @@ msgstr[1] "Poruke su obnovljene u %s" + msgstr[2] "Poruke su obnovljene u %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:725 ++#: src/client/application/application-controller.vala:742 + msgid "Message archived" + msgid_plural "Messages archived" + msgstr[0] "Poruka je arhivirana" +@@ -1076,7 +1068,7 @@ msgstr[2] "Poruke su arhivirane" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:760 ++#: src/client/application/application-controller.vala:777 + #, c-format + msgid "Message moved to %s" + msgid_plural "Messages moved to %s" +@@ -1087,7 +1079,7 @@ msgstr[2] "Poruke su premještene u %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:788 ++#: src/client/application/application-controller.vala:805 + #, c-format + msgid "Conversation labelled as %s" + msgid_plural "Conversations labelled as %s" +@@ -1098,7 +1090,7 @@ msgstr[2] "Razgovori su označeni kao %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:796 ++#: src/client/application/application-controller.vala:813 + #, c-format + msgid "Conversation un-labelled as %s" + msgid_plural "Conversations un-labelled as %s" +@@ -1106,12 +1098,12 @@ msgstr[0] "Uklonjena je oznaka razgovora kao %s" + msgstr[1] "Uklonjene su oznake razgovora kao %s" + msgstr[2] "Uklonjene su oznake razgovora kao %s" + +-#: src/client/application/application-controller.vala:1215 ++#: src/client/application/application-controller.vala:1320 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Nemoguće otvaranje baze podataka za %s" + +-#: src/client/application/application-controller.vala:1216 ++#: src/client/application/application-controller.vala:1321 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1136,20 +1128,20 @@ msgstr "" + "Ponovna izgradnja baze podataka uništiti će sve lokalne poruke e-pošte i " + "njihove privitke. E-pošta na vašem poslužitelju neće biti zahvaćena." + +-#: src/client/application/application-controller.vala:1218 ++#: src/client/application/application-controller.vala:1323 + msgid "_Rebuild" + msgstr "_Ponovno izgradi" + +-#: src/client/application/application-controller.vala:1218 ++#: src/client/application/application-controller.vala:1323 + msgid "E_xit" + msgstr "Z_atvori" + +-#: src/client/application/application-controller.vala:1228 ++#: src/client/application/application-controller.vala:1333 + #, c-format + msgid "Unable to rebuild database for “%s”" + msgstr "Nemoguća ponovna izgradnja baze podataka za \"%s\"" + +-#: src/client/application/application-controller.vala:1229 ++#: src/client/application/application-controller.vala:1334 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1162,2782 +1154,61 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1468 ++#: src/client/application/application-controller.vala:1501 + #, c-format + msgid "Email sent to %s" + msgstr "E-pošta je poslana za %s" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2564 ++#: src/client/application/application-controller.vala:2491 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "E-pošta za %s čeka na dostavu" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2628 ++#: src/client/application/application-controller.vala:2555 + #, c-format + msgid "Email to %s saved" + msgstr "E-pošta za %s je spremljena" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2643 +-#: src/client/application/application-controller.vala:2701 ++#: src/client/application/application-controller.vala:2570 ++#: src/client/application/application-controller.vala:2628 + msgid "Composer could not be restored" + msgstr "Sastavljač ne može biti obnovljen" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2686 ++#: src/client/application/application-controller.vala:2613 + #, c-format + msgid "Email to %s discarded" + msgstr "E-pošta za %s je odbačena" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:530 ++#: src/client/application/application-main-window.vala:540 + msgid "Working offline" + msgstr "Izvanmrežni rad" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:532 ++#: src/client/application/application-main-window.vala:542 + msgid "You will not be able to send or receive email until re-connected." + msgstr "" + "Nećete moći slati ili primati e-poštu dok se ponovno ne povežete s " + "internetom." + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:539 ++#: src/client/application/application-main-window.vala:549 + msgid "Login problem" + msgstr "Problem prijave" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:541 ++#: src/client/application/application-main-window.vala:551 + msgid "An account has reported an incorrect login or password." + msgstr "Račun je prijavio nevaljanu lozinku prijave." + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:547 ++#: src/client/application/application-main-window.vala:558 + msgid "Retry login, you will be prompted for your password" + msgstr "Ponovno se prijavite, biti ćete upisani za novu lozinku" +- +-#. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:554 +-msgid "Security problem" +-msgstr "Sigurnosni problem" +- +-#. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:556 +-msgid "An account has reported an untrusted server.." +-msgstr "Račun je prijavio nepouzdanog poslužitelja." +- +-#. Translators: An info bar button label +-#: src/client/application/application-main-window.vala:559 +-msgid "Check" +-msgstr "Provjeri" +- +-#. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:562 +-msgid "Check the security details for the connection" +-msgstr "Provjeri sigurnosne pojedinosti za povezivanje" +- +-#. / Translators: Main window title, first string +-#. / substitution being the currently selected folder name, +-#. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:595 +-#, c-format +-msgid "%s — %s" +-msgstr "%s — %s" +- +-#: src/client/application/application-main-window.vala:991 +-msgid "Labels" +-msgstr "Oznake" +- +-#: src/client/application/application-main-window.vala:1290 +-#, c-format +-msgid "Empty all email from your %s folder?" +-msgstr "Želite li isprazniti svu e-poštu iz vaše %s mape?" +- +-#: src/client/application/application-main-window.vala:1291 +-msgid "This removes the email from Geary and your email server." +-msgstr "Ovo uklanja e-poštu iz Gearya i vaših poslužitelja e-pošte." +- +-#: src/client/application/application-main-window.vala:1292 +-msgid "This cannot be undone." +-msgstr "Ovo se ne može poništiti." +- +-#: src/client/application/application-main-window.vala:1293 +-#, c-format +-msgid "Empty %s" +-msgstr "Isprazni %s" +- +-#. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1350 +-msgid "Do you want to permanently delete this conversation?" +-msgid_plural "Do you want to permanently delete these conversations?" +-msgstr[0] "Želite li trajno obrisati ovaj razgovor?" +-msgstr[1] "Želite li trajno obrisati ove razgovore?" +-msgstr[2] "Želite li trajno obrisati ove razgovore?" +- +-#: src/client/application/application-main-window.vala:1355 +-#: src/client/application/application-main-window.vala:1370 +-msgid "Delete" +-msgstr "Obriši" +- +-#. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1365 +-msgid "Do you want to permanently delete this message?" +-msgid_plural "Do you want to permanently delete these messages?" +-msgstr[0] "Želite li trajno obrisati ovu poruku?" +-msgstr[1] "Želite li trajno obrisati ove poruke?" +-msgstr[2] "Želite li trajno obrisati ove poruke?" +- +-#: src/client/application/application-main-window.vala:1698 +-#, c-format +-msgid "%s (%d)" +-msgstr "%s (%d)" +- +-#. Translators: The first argument will be a +-#. description of the document type, the second will +-#. be a human-friendly size string. For example: +-#. Document (100.9MB) +-#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" +-#: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1839 +-#, c-format +-msgid "%s (%s)" +-msgstr "%s (%s)" +- +-#: src/client/components/components-attachment-pane.vala:379 +-msgid "Are you sure you want to open these attachments?" +-msgstr "Sigurno želite otvoriti ove privitke?" +- +-#: src/client/components/components-attachment-pane.vala:380 +-msgid "" +-"Attachments may cause damage to your system if opened. Only open files from " +-"trusted sources." +-msgstr "" +-"Privitci mogu oštetiti vaš sustav ako ih otvorite. Otvorite samo datoteke " +-"od pouzdanih korisnika." +- +-#: src/client/components/components-attachment-pane.vala:381 +-msgid "Don’t _ask me again" +-msgstr "Ne _pitaj me ponovno" +- +-#: src/client/components/components-inspector.vala:72 +-msgid "Inspector" +-msgstr "_Inspektor" +- +-#. / Translators: Title for Inspector logs pane +-#. / Translators: Title for problem report dialog logs pane +-#: src/client/components/components-inspector.vala:87 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 +-msgid "Logs" +-msgstr "Zapisi" +- +-#. / Translators: Title for Inspector system system information pane +-#. / Translators: Title for problem report system information +-#. / pane +-#: src/client/components/components-inspector.vala:91 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 +-msgid "System" +-msgstr "Sustav" +- +-#. Button label for saving problem report information +-#: src/client/components/components-inspector.vala:208 +-#: src/client/components/components-inspector.vala:211 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/problem-details-dialog.ui:42 +-msgid "Save As" +-msgstr "Spremi kao" +- +-#: src/client/components/components-inspector.vala:212 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 +-#: ui/accounts_editor_servers_pane.ui:17 +-msgid "Cancel" +-msgstr "Odustani" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:52 +-msgid "_Automatically select next message" +-msgstr "_Automatski odaberi slijedeću poruku" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:62 +-msgid "_Display conversation preview" +-msgstr "_Prikaži pregled razgovora" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:72 +-msgid "Use _three pane view" +-msgstr "Koristi _pogled stabla" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:82 +-msgid "Use _single key email shortcuts" +-msgstr "Koristi _prečace jednom tipkom za e-poštu" +- +-#: src/client/components/components-preferences-window.vala:84 +-msgid "" +-"Enable keyboard shortcuts for email actions that do not require pressing " +-"" +-msgstr "" +-"Omogući prečace tipkovnice za radnje e-pošte koje ne zahtijevaju pritisak na " +-"" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:95 +-msgid "_Watch for new mail when closed" +-msgstr "_Nadgledaj novu e-poštu kada se zatvori" +- +-#. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:99 +-msgid "Geary will keep running after all windows are closed" +-msgstr "Geary će nastaviti biti pokrenut nakon što se svi prozori zatvore" +- +-#. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:117 +-msgid "Preferences" +-msgstr "Osobitosti" +- +-#. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:179 +-msgid "Plugins" +-msgstr "Priključci" +- +-#. Translators: Info bar title for a generic account +-#. problem. +-#: src/client/components/components-problem-report-info-bar.vala:36 +-msgid "Account problem" +-msgstr "Problem s računom" +- +-#. Translators: Info bar sub-title for a generic account +-#. problem. String substitution is the account name. +-#: src/client/components/components-problem-report-info-bar.vala:40 +-#, c-format +-msgid "Geary has encountered a problem with %s." +-msgstr "Geary je naišao na problem s %s." +- +-#. Translators: Info bar sub-title for a generic +-#. account problem. String substitution is the +-#. account name. +-#: src/client/components/components-problem-report-info-bar.vala:53 +-#, c-format +-msgid "Geary encountered a problem checking mail for %s." +-msgstr "Geary je naišao na problem pri provjeri e-pošte na %s." +- +-#. Translators: Tooltip label for Retry button +-#: src/client/components/components-problem-report-info-bar.vala:57 +-msgid "Try reconnecting" +-msgstr "Pokušajte se ponovno povezati" +- +-#. Translators: Info bar title for an outgoing +-#. account problem. String substitution is the +-#. account name +-#: src/client/components/components-problem-report-info-bar.vala:65 +-#, c-format +-msgid "Geary encountered a problem sending email for %s." +-msgstr "Geary je naišao na problem pri slanju e-pošte na %s." +- +-#. Translators: Tooltip label for Retry button +-#: src/client/components/components-problem-report-info-bar.vala:69 +-msgid "Retry sending queued messages" +-msgstr "Pokušaj ponovno poslati poruke na čekanju" +- +-#. Translators: Info bar title for a generic application +-#. problem. +-#: src/client/components/components-problem-report-info-bar.vala:76 +-msgid "Geary has encountered a problem" +-msgstr "Geary je naišao na problem" +- +-#. Translators: Info bar sub-title for a generic +-#. application problem. +-#: src/client/components/components-problem-report-info-bar.vala:80 +-msgid "Please report the details if it persists." +-msgstr "Prijavite pojedinosti ako se problem nastavi." +- +-#. Translators: Button label for viewing technical details +-#. for a problem report. +-#: src/client/components/components-problem-report-info-bar.vala:94 +-msgid "_Details" +-msgstr "_Pojedinosti" +- +-#. Translators: Tooltip for viewing technical details for +-#. a problem report. +-#: src/client/components/components-problem-report-info-bar.vala:97 +-msgid "View technical details about the error" +-msgstr "Prikaži tehničke pojedinosti o grešci" +- +-#. Translators: Button label for retrying a server +-#. connection +-#: src/client/components/components-problem-report-info-bar.vala:103 +-msgid "_Retry" +-msgstr "_Pokušaj ponovno" +- +-#. / Translators: Search entry placeholder text +-#: src/client/components/components-search-bar.vala:12 +-#: src/client/folder-list/folder-list-search-branch.vala:53 +-#: src/client/util/util-i18n.vala:298 +-msgid "Search" +-msgstr "Pretraga" +- +-#. / Translators: Search entry tooltip +-#: src/client/components/components-search-bar.vala:32 +-msgid "Search all mail in account for keywords" +-msgstr "Pretraži svu e-poštu u računu po ključnim riječima" +- +-#. / Translators: Search entry placeholder, string +-#. / replacement is the name of an account +-#: src/client/components/components-search-bar.vala:81 +-#: src/client/folder-list/folder-list-search-branch.vala:54 +-#, c-format +-msgid "Search %s account" +-msgstr "Pretraži %s račun" +- +-#. Translators: Tooltip used when an entry requires a valid +-#. email address to be entered, but one is not provided. +-#: src/client/components/components-validator.vala:390 +-msgid "An email address is required" +-msgstr "Potrebna je adresa e-pošte" +- +-#. Translators: Tooltip used when an entry requires a valid +-#. email address to be entered, but the address is invalid. +-#: src/client/components/components-validator.vala:394 +-msgid "Not a valid email address" +-msgstr "Adresa e-pošte nije valjana" +- +-#. Translators: Tooltip used when an entry requires a valid, +-#. resolvable server name to be entered, but one is not +-#. provided. +-#: src/client/components/components-validator.vala:440 +-msgid "A server name is required" +-msgstr "Potreban je naziv poslužitelja" +- +-#. Translators: Tooltip used when an entry requires a valid +-#. server name to be entered, but it was unable to be +-#. looked-up in the DNS. +-#: src/client/components/components-validator.vala:445 +-msgid "Could not look up server name" +-msgstr "Nemoguća pretraga naziva poslužitelja" +- +-#: src/client/components/main-toolbar.vala:116 +-msgid "Mark conversation" +-msgid_plural "Mark conversations" +-msgstr[0] "Označi razgovor" +-msgstr[1] "Označi razgovore" +-msgstr[2] "Označi razgovore" +- +-#: src/client/components/main-toolbar.vala:121 +-msgid "Add label to conversation" +-msgid_plural "Add label to conversations" +-msgstr[0] "Dodaj oznaku razgovoru" +-msgstr[1] "Dodaj oznaku razgovorima" +-msgstr[2] "Dodaj oznaku razgovorima" +- +-#: src/client/components/main-toolbar.vala:126 +-msgid "Move conversation" +-msgid_plural "Move conversations" +-msgstr[0] "Premjesti razgovor" +-msgstr[1] "Premjesti razgovore" +-msgstr[2] "Premjesti razgovore" +- +-#: src/client/components/main-toolbar.vala:131 +-msgid "Archive conversation" +-msgid_plural "Archive conversations" +-msgstr[0] "Arhiviraj razgovor" +-msgstr[1] "Arhiviraj razgovore" +-msgstr[2] "Arhiviraj razgovore" +- +-#: src/client/components/main-toolbar.vala:142 +-msgid "Move conversation to Trash" +-msgid_plural "Move conversations to Trash" +-msgstr[0] "Premjesti razgovor u smeće" +-msgstr[1] "Premjesti razgovore u smeće" +-msgstr[2] "Premjesti razgovore u smeće" +- +-#: src/client/components/main-toolbar.vala:152 +-msgid "Delete conversation" +-msgid_plural "Delete conversations" +-msgstr[0] "Obriši razgovor" +-msgstr[1] "Obriši razgovore" +-msgstr[2] "Obriši razgovore" +- +-#. / Displayed in the space-limited status bar while a message is in the process of being sent. +-#: src/client/components/status-bar.vala:26 +-msgid "Sending…" +-msgstr "Slanje…" +- +-#. / Displayed in the space-limited status bar when a message fails to be sent due to error. +-#: src/client/components/status-bar.vala:29 +-msgid "Error sending email" +-msgstr "Greška pri slanju e-pošte" +- +-#. Displayed in the space-limited status bar when a message fails to be uploaded +-#. to Sent Mail after being sent. +-#: src/client/components/status-bar.vala:33 +-msgid "Error saving sent mail" +-msgstr "Greška pri spremanju e-pošte" +- +-#: src/client/components/stock.vala:18 +-msgid "_OK" +-msgstr "_U redu" +- +-#: src/client/components/stock.vala:19 ui/password-dialog.glade:196 +-msgid "_Cancel" +-msgstr "_Odustani" +- +-#: src/client/components/stock.vala:21 +-msgid "_About" +-msgstr "_O" +- +-#: src/client/components/stock.vala:22 +-msgid "_Add" +-msgstr "_Dodaj" +- +-#: src/client/components/stock.vala:23 +-msgid "_Close" +-msgstr "_Zatvori" +- +-#: src/client/components/stock.vala:24 +-msgid "_Discard" +-msgstr "_Odbaci" +- +-#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:42 +-msgid "_Help" +-msgstr "_Priručnik" +- +-#: src/client/components/stock.vala:26 ui/components-attachment-pane-menus.ui:7 +-msgid "_Open" +-msgstr "_Otvori" +- +-#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:32 +-msgid "_Preferences" +-msgstr "_Osobitosti" +- +-#. Translators: Menu item to print a single, specific message +-#: src/client/components/stock.vala:28 ui/conversation-email-menus.ui:64 +-msgid "_Print…" +-msgstr "_Ispis…" +- +-#: src/client/components/stock.vala:29 +-msgid "_Quit" +-msgstr "_Zatvori" +- +-#: src/client/components/stock.vala:30 +-msgid "_Remove" +-msgstr "_Ukloni" +- +-#: src/client/components/stock.vala:31 +-#: ui/components-attachment-pane-menus.ui:11 +-msgid "_Save" +-msgstr "_Spremi" +- +-#: src/client/components/stock.vala:32 +-msgid "_Keep" +-msgstr "_Zadrži" +- +-#: src/client/composer/composer-link-popover.vala:139 +-msgid "Link URL is not correctly formatted, e.g. http://example.com" +-msgstr "URL poveznice nije pravilno oblikovan, npr. http://primjer.hr" +- +-#: src/client/composer/composer-link-popover.vala:146 +-msgid "Invalid link URL" +-msgstr "Nevaljani URL poveznice" +- +-#: src/client/composer/composer-link-popover.vala:146 +-msgid "Invalid email address" +-msgstr "Nevaljana adresa e-pošte" +- +-#. / Translators: Title for an empty composer window +-#: src/client/composer/composer-widget.vala:30 +-msgid "New Message" +-msgstr "Nova poruka" +- +-#: src/client/composer/composer-widget.vala:217 +-msgid "Saved" +-msgstr "Spremljeno" +- +-#: src/client/composer/composer-widget.vala:218 +-msgid "Saving" +-msgstr "Spremanje" +- +-#: src/client/composer/composer-widget.vala:219 +-msgid "Error saving" +-msgstr "Greška spremanja" +- +-#: src/client/composer/composer-widget.vala:220 +-msgid "Press Backspace to delete quote" +-msgstr "Pritisni Backspace za brisanje citata" +- +-#. Translators: This is list of keywords, separated by pipe ("|") +-#. characters, that suggest an attachment; since this is full-word +-#. checking, include all variants of each word. No spaces are +-#. allowed. The words will be converted to lower case based on +-#. locale and English versions included automatically. +-#: src/client/composer/composer-widget.vala:236 +-msgid "" +-"attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" +-"enclosing|encloses|enclosure|enclosures" +-msgstr "privitak|priloži|privitci|prilažem|prilaganja|privitci|priloženo" +- +-#. Translators: This dialog text is displayed to the +-#. user when closing a composer where the options are +-#. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:843 +-msgid "Do you want to keep or discard this draft message?" +-msgstr "Želite li zadržati ili odbaciti ovu skicu poruke?" +- +-#. Translators: This dialog text is displayed to the +-#. user when closing a composer where the options are +-#. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:869 +-msgid "Do you want to discard this draft message?" +-msgstr "Želite li odbaciti ovu skicu poruke?" +- +-#: src/client/composer/composer-widget.vala:1508 +-msgid "Send message with an empty subject and body?" +-msgstr "Pošalji poruku s praznim predmetom i sadržajem?" +- +-#: src/client/composer/composer-widget.vala:1510 +-msgid "Send message with an empty subject?" +-msgstr "Pošalji poruku bez predmeta?" +- +-#: src/client/composer/composer-widget.vala:1512 +-msgid "Send message with an empty body?" +-msgstr "Pošalji poruku sadržaja?" +- +-#: src/client/composer/composer-widget.vala:1521 +-msgid "Send message without an attachment?" +-msgstr "Pošalji poruku bez privitka?" +- +-#: src/client/composer/composer-widget.vala:1825 +-#, c-format +-msgid "“%s” already attached for delivery." +-msgstr "\"%s\" je već priložen za dostavu." +- +-#: src/client/composer/composer-widget.vala:1861 +-#: src/client/composer/composer-widget.vala:1911 +-#, c-format +-msgid "“%s” is an empty file." +-msgstr "\"%s\" je prazna datoteka." +- +-#: src/client/composer/composer-widget.vala:1899 +-#, c-format +-msgid "“%s” could not be found." +-msgstr "%s se ne može pronaći." +- +-#: src/client/composer/composer-widget.vala:1905 +-#, c-format +-msgid "“%s” is a folder." +-msgstr "\"%s\" je mapa." +- +-#: src/client/composer/composer-widget.vala:1924 +-#, c-format +-msgid "“%s” could not be opened for reading." +-msgstr "\"%s\" je nemoguće otvoriti za čitanje." +- +-#: src/client/composer/composer-widget.vala:1932 +-msgid "Cannot add attachment" +-msgstr "Nemoguće dodavanje privitka" +- +-#. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:1989 +-#: src/client/conversation-viewer/conversation-email.vala:542 +-#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312 +-msgid "To:" +-msgstr "Prima:" +- +-#. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:1995 +-#: src/client/conversation-viewer/conversation-email.vala:547 +-#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357 +-msgid "Cc:" +-msgstr "Prima kopiju:" +- +-#. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2001 +-#: src/client/conversation-viewer/conversation-email.vala:552 +-#: ui/conversation-message.ui:402 +-msgid "Bcc:" +-msgstr "Prima tajnu kopiju:" +- +-#. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2007 +-msgid "Reply-To: " +-msgstr "Odgovor na: " +- +-#: src/client/composer/composer-widget.vala:2259 +-msgid "Select Color" +-msgstr "Odabir boje" +- +-#. Displayed in the From dropdown to indicate an +-#. "alternate email address" for an account. The first +-#. printf argument will be the alternate email address, +-#. and the second will be the account's primary email +-#. address. +-#: src/client/composer/composer-widget.vala:2445 +-#, c-format +-msgid "%1$s via %2$s" +-msgstr "%1$s putem %2$s" +- +-#. Translators: This is the name of the file chooser filter +-#. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:2802 +-msgid "Images" +-msgstr "Slike" +- +-#: src/client/composer/spell-check-popover.vala:125 +-msgid "Remove this language from the preferred list" +-msgstr "Ukloni ovaj jezik iz popisa željenih" +- +-#: src/client/composer/spell-check-popover.vala:129 +-msgid "Add this language to the preferred list" +-msgstr "Dodaj ovaj jezik na popis željenih" +- +-#: src/client/composer/spell-check-popover.vala:225 +-msgid "Search for more languages" +-msgstr "Pretraži više jezika" +- +-#. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:335 +-msgid "Move conversation to _Trash" +-msgid_plural "Move conversations to _Trash" +-msgstr[0] "Premjesti razgovor u _smeće" +-msgstr[1] "Premjesti razgovore u _smeće" +-msgstr[2] "Premjesti razgovore u _smeće" +- +-#. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:347 +-msgid "_Delete conversation" +-msgid_plural "_Delete conversations" +-msgstr[0] "_Obriši razgovor" +-msgstr[1] "_Obriši razgovore" +-msgstr[2] "_Obriši razgovore" +- +-#: src/client/conversation-list/conversation-list-view.vala:360 +-#: ui/main-toolbar-menus.ui:5 +-msgid "Mark as _Read" +-msgstr "Označi kao _pročitano" +- +-#: src/client/conversation-list/conversation-list-view.vala:368 +-#: ui/main-toolbar-menus.ui:9 +-msgid "Mark as _Unread" +-msgstr "Označi kao _nepročitano" +- +-#: src/client/conversation-list/conversation-list-view.vala:376 +-#: ui/main-toolbar-menus.ui:17 +-msgid "U_nstar" +-msgstr "Uklo_ni oznaku" +- +-#: src/client/conversation-list/conversation-list-view.vala:383 +-#: ui/main-toolbar-menus.ui:13 +-msgid "_Star" +-msgstr "_Označi" +- +-#. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:392 +-#: ui/conversation-email-menus.ui:9 +-msgid "_Reply" +-msgstr "_Odgovori" +- +-#: src/client/conversation-list/conversation-list-view.vala:398 +-msgid "R_eply All" +-msgstr "O_dgovori svima" +- +-#. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:404 +-#: ui/conversation-email-menus.ui:21 +-msgid "_Forward" +-msgstr "_Proslijedi" +- +-#: src/client/conversation-list/formatted-conversation-data.vala:18 +-msgid "Me" +-msgstr "Ja" +- +-#. Translators: Human-readable version of the RFC 822 From header +-#: src/client/conversation-viewer/conversation-email.vala:537 +-#: src/client/util/util-email.vala:226 +-msgid "From:" +-msgstr "Šalje:" +- +-#. Translators: Human-readable version of the RFC 822 Date header +-#: src/client/conversation-viewer/conversation-email.vala:557 +-#: src/client/util/util-email.vala:231 +-msgid "Date:" +-msgstr "Datum:" +- +-#. Translators: Human-readable version of the RFC 822 Subject header +-#: src/client/conversation-viewer/conversation-email.vala:567 +-#: src/client/util/util-email.vala:229 +-msgid "Subject:" +-msgstr "Predmet:" +- +-#: src/client/conversation-viewer/conversation-message.vala:128 +-msgid "This email address may have been forged" +-msgstr "Ova adresa e-pošte može biti zaboravljena" +- +-#. Translators: Label text displayed when there are too +-#. many email addresses to be shown by default in an +-#. email's header, but they are all being shown anyway. +-#: src/client/conversation-viewer/conversation-message.vala:234 +-msgid "Show less" +-msgstr "Prikaži manje" +- +-#. Translators: Label text displayed when there are +-#. too many email addresses to be shown by default in +-#. an email's header. The string substitution is the +-#. number of extra email to be shown. +-#: src/client/conversation-viewer/conversation-message.vala:260 +-#, c-format +-msgid "%d more…" +-msgstr "%d više…" +- +-#. Compact headers. These are partially done here and partially +-#. in load_contacts. +-#. Translators: This is displayed in place of the from address +-#. when the message has no from address. +-#: src/client/conversation-viewer/conversation-message.vala:529 +-msgid "No sender" +-msgstr "Bez pošiljatelja" +- +-#. Translators: This separates multiple 'from' +-#. addresses in the compact header for a message. +-#: src/client/conversation-viewer/conversation-message.vala:920 +-msgid ", " +-msgstr ", " +- +-#. Translators: This string is used as the HTML IMG ALT +-#. attribute value when displaying an inline image in an email +-#. that did not specify a file name. E.g. Imagemailing list " +-"or attach to a new bug report." +-msgstr "" +-"Ako je problem ozbiljan i nastavi se, spremite i pošaljite ove pojedinosti " +-"na mailing listu " +-"ili priložite kao novi izvještaj greške." +- +-#: ui/components-inspector-error-view.ui:49 +-msgid "Details:" +-msgstr "Pojedinosti:" +- +-#. Tooltip for inspector button +-#: ui/components-inspector.ui:20 +-msgid "Toggle appending new log entries" +-msgstr "Uklj/Isklj dodavanje novih unosa zapisa" +- +-#. Tooltip for inspector button +-#. Tooltip for problem report button +-#: ui/components-inspector.ui:37 ui/problem-details-dialog.ui:19 +-msgid "Search for matching log entries" +-msgstr "Pretraži podudaranje u unosima zapisa" +- +-#. Tooltip for inspector button +-#. Tooltip for problem report button +-#: ui/components-inspector.ui:63 ui/problem-details-dialog.ui:46 +-msgid "Save logs entries and details" +-msgstr "Spremi unose zapisa i pojedinosti" +- +-#. Tooltip for inspector button +-#. Tooltip for problem report button +-#: ui/components-inspector.ui:84 ui/problem-details-dialog.ui:62 +-msgid "Copy to clipboard" +-msgstr "Kopiraj u međuspremnik" +- +-#: ui/conversation-contact-popover.ui:146 +-msgid "New Conversation…" +-msgstr "Novi razgovor…" +- +-#: ui/conversation-contact-popover.ui:159 +-msgid "Copy Email Address" +-msgstr "Kopiraj adresu e-pošte" +- +-#: ui/conversation-contact-popover.ui:182 +-msgid "Save in Contacts…" +-msgstr "Spremi u kontakte…" +- +-#: ui/conversation-contact-popover.ui:195 +-msgid "Show Conversations" +-msgstr "Prikaži razgovore" +- +-#: ui/conversation-contact-popover.ui:208 +-msgid "Open in Contacts" +-msgstr "Otvori u kontaktima" +- +-#: ui/conversation-contact-popover.ui:221 +-msgid "Always Load Remote Images" +-msgstr "Uvijek učitaj udaljene slike" +- +-#. Title label on contact popover +-#: ui/conversation-contact-popover.ui:264 +-msgid "Deceptive email address" +-msgstr "Obmanjujuća adresa e-pošte" +- +-#. Contact popover label +-#: ui/conversation-contact-popover.ui:294 +-msgid "This email address is:" +-msgstr "Adresa ove e-pošte je:" +- +-#. Contact popover label +-#: ui/conversation-contact-popover.ui:319 +-msgid "But was forged as:" +-msgstr "Ali je zaboravljena kao:" +- +-#. Contact popover label +-#: ui/conversation-contact-popover.ui:344 +-msgid "The sender may not be trustworthy" +-msgstr "Pošiljatelj možda nije pouzdan" +- +-#: ui/conversation-email.ui:27 +-msgid "Save all attachments" +-msgstr "Spremi sve privitke" +- +-#. Note: The application will never show this button at the same time as unstar_button, one will always be hidden. +-#: ui/conversation-email.ui:50 +-msgid "Mark this message as starred" +-msgstr "Označi ovu poruku sa zvjezdicom" +- +-#. Note: The application will never show this button at the same time as star_button, one will always be hidden. +-#: ui/conversation-email.ui:72 +-msgid "Mark this message as not starred" +-msgstr "Označi ovu poruku bez zvjezdice" +- +-#. Translators: Menu item to reply to a specific message. +-#: ui/conversation-email-menus.ui:15 +-msgid "Reply to _All" +-msgstr "Odgovori _svima" +- +-#. Translators: Menu item to mark a specific message as +-#. read. +-#: ui/conversation-email-menus.ui:30 +-msgid "_Mark Read" +-msgstr "_Označi kao pročitano" +- +-#: ui/conversation-email-menus.ui:36 +-msgid "_Mark Unread" +-msgstr "_Označi kao nepročitano" +- +-#. Translators: Menu item to mark all messages in a +-#. conversation from this one as unread. +-#: ui/conversation-email-menus.ui:42 +-msgid "Mark Unread From _Here" +-msgstr "Označi kao nepročitano od _ovdje" +- +-#. Translators: Menu item to move a single, specific message +-#. to the trash folder +-#: ui/conversation-email-menus.ui:50 +-msgid "Move message to _Trash" +-msgstr "Premjesti poruku u _smeće" +- +-#. Translators: Menu item to delete a single, specific message +-#: ui/conversation-email-menus.ui:57 +-msgid "_Delete message…" +-msgstr "_Obriši poruku…" +- +-#. Translators: Menu item to view the source for a message +-#: ui/conversation-email-menus.ui:69 +-msgid "_View Source" +-msgstr "_Pogledaj izvor" +- +-#: ui/conversation-message-link-popover.ui:54 +-msgid "But actually goes to:" +-msgstr "Ali u stvari usmjerava na:" +- +-#: ui/conversation-message-link-popover.ui:84 +-msgid "The link appears to go to:" +-msgstr "Čini se da ova poveznica usmjerava na:" +- +-#: ui/conversation-message-link-popover.ui:96 +-msgid "Deceptive link found" +-msgstr "Obmanjujuća poveznica pronađena" +- +-#: ui/conversation-message-link-popover.ui:111 +-msgid "The email sender may be leading you to the wrong web site." +-msgstr "Pošiljatelj e-pošte možda vas usmjerava na pogrešnu web stranicu." +- +-#: ui/conversation-message-link-popover.ui:124 +-msgid "If unsure, contact the sender and ask before continuing." +-msgstr "Ako niste sigurni, kontaktirajte pošiljatelja prije slanja." +- +-#: ui/conversation-message-menus.ui:7 +-msgid "_Open Link" +-msgstr "_Otvori poveznicu" +- +-#: ui/conversation-message-menus.ui:11 +-msgid "Copy Link _Address" +-msgstr "Kopiraj _adresu poveznice" +- +-#: ui/conversation-message-menus.ui:17 +-msgid "_New Conversation…" +-msgstr "_Novi razgovor…" +- +-#: ui/conversation-message-menus.ui:21 +-msgid "Copy Email _Address" +-msgstr "Kopiraj adresu _e-pošte" +- +-#: ui/conversation-message-menus.ui:27 +-msgid "Save _Image As…" +-msgstr "Spremi _sliku kao…" +- +-#: ui/conversation-message-menus.ui:33 +-msgid "_Select All" +-msgstr "_Odaberi sve" +- +-#: ui/conversation-message.ui:63 +-msgid "From " +-msgstr "Posalo " +- +-#: ui/conversation-message.ui:79 ui/conversation-message.ui:178 +-msgid "1/1/1970\t" +-msgstr "1/1/1970\t" +- +-#: ui/conversation-message.ui:102 +-msgid "Preview body text." +-msgstr "Pregled sadržaja teksta." +- +-#: ui/conversation-message.ui:202 +-msgid "Sent by:" +-msgstr "Poslao:" +- +-#: ui/conversation-message.ui:247 +-msgid "Reply to:" +-msgstr "Odgovor na:" +- +-#: ui/conversation-message.ui:291 +-msgid "Subject" +-msgstr "Predmet" +- +-#: ui/conversation-viewer.ui:60 +-msgid "Find in conversation" +-msgstr "Pretraži u razgovoru" +- +-#: ui/conversation-viewer.ui:75 +-msgid "Find the previous occurrence of the search string." +-msgstr "Pretraži prijašnje pojavljivanje izraza pretrage." +- +-#: ui/conversation-viewer.ui:96 +-msgid "Find the next occurrence of the search string." +-msgstr "Pretraži sljedeće pojavljivanje izraza pretrage." +- +-#: ui/find_bar.glade:66 +-msgid "Find:" +-msgstr "Pretraži:" +- +-#: ui/find_bar.glade:89 +-msgid "_Previous" +-msgstr "_Prijašnje" +- +-#: ui/find_bar.glade:107 +-msgid "_Next" +-msgstr "_Sljedeće" +- +-#: ui/find_bar.glade:125 +-msgid "_Case sensitive" +-msgstr "Velika/Mala slova" +- +-#: ui/find_bar.glade:145 +-msgid "label" +-msgstr "natpis" +- +-#: ui/gtk/help-overlay.ui:9 +-msgid "Conversation Shortcuts" +-msgstr "Prečaci razgovora" +- +-#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:355 +-msgctxt "shortcut window" +-msgid "Actions" +-msgstr "Radnje" +- +-#: ui/gtk/help-overlay.ui:17 +-msgctxt "shortcut window" +-msgid "New conversation" +-msgstr "Novi razgovor" +- +-#: ui/gtk/help-overlay.ui:24 +-msgctxt "shortcut window" +-msgid "Reply to sender" +-msgstr "Odgovori pošiljatelju" +- +-#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:269 +-msgctxt "shortcut window" +-msgid "Reply to all" +-msgstr "Odgovori svima" +- +-#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:276 +-msgctxt "shortcut window" +-msgid "Forward" +-msgstr "Proslijedi" +- +-#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:283 +-msgctxt "shortcut window" +-msgid "Un-mark/mark read" +-msgstr "Označi/Ukloni oznaku pročitano" +- +-#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:290 +-msgctxt "shortcut window" +-msgid "Mark/un-mark starred" +-msgstr "Označi/Ukloni oznaku zvjezdice" +- +-#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:297 +-msgctxt "shortcut window" +-msgid "Archive conversations" +-msgstr "Arhiviraj razgovore" +- +-#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:304 +-msgctxt "shortcut window" +-msgid "Move conversations" +-msgstr "Premjesti razgovore" +- +-#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:311 +-msgctxt "shortcut window" +-msgid "Label conversations" +-msgstr "Natpis razgovora" +- +-#: ui/gtk/help-overlay.ui:80 +-msgctxt "shortcut window" +-msgid "Trash conversations" +-msgstr "Premjesti razgovore u smeće" +- +-#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:318 +-msgctxt "shortcut window" +-msgid "Junk conversations" +-msgstr "Premjesti razgovore u neželjenu poštu" +- +-#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:325 +-msgctxt "shortcut window" +-msgid "Delete conversations" +-msgstr "Obriši razgovore" +- +-#: ui/gtk/help-overlay.ui:104 +-msgctxt "shortcut window" +-msgid "Search" +-msgstr "Pretraga" +- +-#: ui/gtk/help-overlay.ui:108 +-msgctxt "shortcut window" +-msgid "Search for conversations" +-msgstr "Pretraži razgovore" +- +-#: ui/gtk/help-overlay.ui:115 +-msgctxt "shortcut window" +-msgid "Find in current conversation" +-msgstr "Pretraži u trenutnom razgovoru" +- +-#: ui/gtk/help-overlay.ui:141 +-msgctxt "shortcut window" +-msgid "Undo" +-msgstr "Vrati" +- +-#: ui/gtk/help-overlay.ui:145 +-msgctxt "shortcut window" +-msgid "Undo the last action" +-msgstr "Vrati posljednju radnju" +- +-#: ui/gtk/help-overlay.ui:152 +-msgctxt "shortcut window" +-msgid "Redo the last action" +-msgstr "Ponovi posljednju radnju" +- +-#: ui/gtk/help-overlay.ui:161 +-msgctxt "shortcut window" +-msgid "View" +-msgstr "Pogled" +- +-#: ui/gtk/help-overlay.ui:165 +-msgctxt "shortcut window" +-msgid "Zoom in" +-msgstr "Uvećaj" +- +-#: ui/gtk/help-overlay.ui:172 +-msgctxt "shortcut window" +-msgid "Zoom out" +-msgstr "Umanji" +- +-#: ui/gtk/help-overlay.ui:179 +-msgctxt "shortcut window" +-msgid "Reset zoom" +-msgstr "Izvorni pogled" +- +-#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:375 +-msgctxt "shortcut window" +-msgid "General" +-msgstr "Općenito" +- +-#: ui/gtk/help-overlay.ui:192 +-msgctxt "shortcut window" +-msgid "Show help" +-msgstr "Prikaži priručnik" +- +-#: ui/gtk/help-overlay.ui:199 +-msgctxt "shortcut window" +-msgid "Show keyboard shortcuts" +-msgstr "Prikaži prečace tipkovnice" +- +-#: ui/gtk/help-overlay.ui:206 +-msgctxt "shortcut window" +-msgid "Open a new window" +-msgstr "Otvori novi prozor" +- +-#: ui/gtk/help-overlay.ui:213 +-msgctxt "shortcut window" +-msgid "Close the current window" +-msgstr "Zatvori trenutni prozor" +- +-#: ui/gtk/help-overlay.ui:220 +-msgctxt "shortcut window" +-msgid "Quit the application" +-msgstr "Zatvori aplikaciju" +- +-#: ui/gtk/help-overlay.ui:229 +-msgctxt "shortcut window" +-msgid "Keyboard navigation" +-msgstr "Upravljanje tipkovnicom" +- +-#: ui/gtk/help-overlay.ui:233 +-msgctxt "shortcut window" +-msgid "Go to next/previous pane" +-msgstr "Idi na prijašnji/sljedeći okvir" +- +-#: ui/gtk/help-overlay.ui:241 +-msgctxt "shortcut window" +-msgid "Select next/previous conversation" +-msgstr "Odaberi prijašnji/sljedeći razgovor" +- +-#: ui/gtk/help-overlay.ui:248 +-msgctxt "shortcut window" +-msgid "Focus next/previous message" +-msgstr "Fokusiraj prijašnju/sljedeću poruku" +- +-#: ui/gtk/help-overlay.ui:258 +-msgctxt "shortcut window" +-msgid "Single-key shortcuts" +-msgstr "Prečaci jednom tipkom" +- +-#: ui/gtk/help-overlay.ui:262 +-msgctxt "shortcut window" +-msgid "Reply to sender " +-msgstr "Odgovori pošiljatelju " +- +-#: ui/gtk/help-overlay.ui:332 +-msgctxt "shortcut window" +-msgid "Find in current conversations" +-msgstr "Pretraži u trenutnim razgovorima" +- +-#: ui/gtk/help-overlay.ui:339 +-msgctxt "shortcut window" +-msgid "Select next/previous conversations" +-msgstr "Odaberi prijašnje/sljedeće razgovore" +- +-#: ui/gtk/help-overlay.ui:351 +-msgid "Composer Shortcuts" +-msgstr "Prečaci sastavljača" +- +-#: ui/gtk/help-overlay.ui:359 +-msgctxt "shortcut window" +-msgid "Send" +-msgstr "Pošalji" +- +-#: ui/gtk/help-overlay.ui:366 +-msgctxt "shortcut window" +-msgid "Add attachment" +-msgstr "Dodaj privitak" +- +-#: ui/gtk/help-overlay.ui:379 +-msgctxt "shortcut window" +-msgid "Close composer window" +-msgstr "Zatvori prozor sastavljača" +- +-#: ui/gtk/help-overlay.ui:386 +-msgctxt "shortcut window" +-msgid "Detach composer window" +-msgstr "Odvoji prozor sastavljača" +- +-#: ui/gtk/help-overlay.ui:393 +-msgctxt "shortcut window" +-msgid "Editing" +-msgstr "Uređivanje" +- +-#: ui/gtk/help-overlay.ui:398 +-msgctxt "shortcut window" +-msgid "Move selection to the clipboard" +-msgstr "Premjesti odabir u međuspremnik" +- +-#: ui/gtk/help-overlay.ui:405 +-msgctxt "shortcut window" +-msgid "Copy selection to clipboard" +-msgstr "Kopiraj odabir u međuspremnik" +- +-#: ui/gtk/help-overlay.ui:412 +-msgctxt "shortcut window" +-msgid "Paste from the clipboard" +-msgstr "Zalijepi iz međuspremnika" +- +-#: ui/gtk/help-overlay.ui:419 +-msgctxt "shortcut window" +-msgid "Quote text" +-msgstr "Citiraj tekst" +- +-#: ui/gtk/help-overlay.ui:426 +-msgctxt "shortcut window" +-msgid "Unquote text" +-msgstr "Ukloni citat teksta" +- +-#: ui/gtk/help-overlay.ui:435 +-msgctxt "shortcut window" +-msgid "Rich text editing" +-msgstr "Uređivanje obogaćenog teksta" +- +-#: ui/gtk/help-overlay.ui:439 +-msgctxt "shortcut window" +-msgid "Paste without formatting" +-msgstr "Zalijepi bez oblikovanja" +- +-#: ui/gtk/help-overlay.ui:446 +-msgctxt "shortcut window" +-msgid "Bold text" +-msgstr "Podebljni tekst" +- +-#: ui/gtk/help-overlay.ui:453 +-msgctxt "shortcut window" +-msgid "Italicize text" +-msgstr "Ukošeni tekst" +- +-#: ui/gtk/help-overlay.ui:460 +-msgctxt "shortcut window" +-msgid "Underline text" +-msgstr "Podvučeni tekst" +- +-#: ui/gtk/help-overlay.ui:467 +-msgctxt "shortcut window" +-msgid "Strike text" +-msgstr "Precrtani tekst" +- +-#: ui/gtk/help-overlay.ui:474 +-msgctxt "shortcut window" +-msgid "Remove formatting" +-msgstr "Ukloni oblikovanje" +- +-#: ui/gtk/help-overlay.ui:481 +-msgctxt "shortcut window" +-msgid "Insert an image" +-msgstr "Umetni sliku" +- +-#: ui/gtk/help-overlay.ui:488 +-msgctxt "shortcut window" +-msgid "Insert a link" +-msgstr "Umetni poveznicu" +- +-#: ui/main-toolbar.ui:24 +-msgctxt "tooltip" +-msgid "Compose Message" +-msgstr "Sastavljanje poruke" +- +-#: ui/main-toolbar.ui:62 +-msgid "Toggle search bar" +-msgstr "Uklj/Isklj traku pretrage" +- +-#: ui/main-toolbar.ui:114 +-msgid "Reply" +-msgstr "Odgovori" +- +-#: ui/main-toolbar.ui:137 +-msgid "Reply All" +-msgstr "Odgovori svima" +- +-#: ui/main-toolbar.ui:160 +-msgid "Forward" +-msgstr "Proslijedi" +- +-#: ui/main-toolbar.ui:265 +-msgid "Toggle find bar" +-msgstr "Uklj/Isklj traku pretrage" +- +-#: ui/main-toolbar.ui:286 +-msgid "_Archive" +-msgstr "_Arhiva" +- +-#: ui/main-toolbar-menus.ui:21 +-msgid "Toggle as _Junk" +-msgstr "Označi kao _neželjenu poštu" +- +-#: ui/main-toolbar-menus.ui:28 +-msgid "_Accounts" +-msgstr "_Računi" +- +-#: ui/main-toolbar-menus.ui:36 +-msgid "_Keyboard Shortcuts" +-msgstr "_Prečaci tipkovnice" +- +-#: ui/main-toolbar-menus.ui:47 +-msgid "_About Geary" +-msgstr "_O Gearyu" +- +-#: ui/password-dialog.glade:74 +-msgid "SMTP Credentials" +-msgstr "SMTP vjerodajnice" +- +-#: ui/password-dialog.glade:91 +-msgid "Username" +-msgstr "Korisničko ime" +- +-#: ui/password-dialog.glade:152 +-msgid "_Remember password" +-msgstr "_Zapamti lozinku" +- +-#: ui/password-dialog.glade:210 +-msgid "_Authenticate" +-msgstr "_Ovjera" +- +-#: ui/upgrade_dialog.glade:60 +-msgid "Geary update in progress…" +-msgstr "Geary nadopuna u tijeku…" +- +-#~ msgid "mail-send" +-#~ msgstr "mail-send" +- +-#~ msgid "@appid@" +-#~ msgstr "@appid@" +- +-#~ msgid "Sent Mail" +-#~ msgstr "Slanje pošte" +- +-#~ msgid "Spam" +-#~ msgstr "Neželjena pošta" +- +-#~ msgid "" +-#~ "Your computer does not appear to be connected to the Internet.\n" +-#~ "You will not be able to send or receive email until it is re-connected." +-#~ msgstr "" +-#~ "Čini se da vaše računalo nema pristup internetu.\n" +-#~ "Nećete moći slati ili primati e-poštu dok se ponovno ne povežete s " +-#~ "internetom." +- +-#~ msgid "" +-#~ "An account has reported an untrusted server.\n" +-#~ "Please check the server configuration and try again." +-#~ msgstr "" +-#~ "Račun je prijavio nepouzdanog poslužitelja.\n" +-#~ "Provjerite postavke poslužitelja i pokušajte ponovno." +- +-#~ msgid "" +-#~ "An account has reported an incorrect login or password.\n" +-#~ "Please check your login name and try again." +-#~ msgstr "" +-#~ "Račun je prijavio nevaljanu lozinku prijave.\n" +-#~ "Provjerite svoje ime prijave i pokušajte ponovno." +- +-#~ msgid "From" +-#~ msgstr "Šalje" +- +-#~ msgid "Edit Draft" +-#~ msgstr "Uredi skicu" +- +-#~ msgid "Empty _Spam…" +-#~ msgstr "Isprazni _neželjenu poštu…" +- +-#~ msgid "Empty _Trash…" +-#~ msgstr "Isprazni _smeće…" +- +-#~ msgid "%a, %b %-e, %Y at %-l:%M %p" +-#~ msgstr "%a, %-e. %b, %Y u %H:%M %p" +- +-#~ msgctxt "Default clock format" +-#~ msgid "%l:%M %P" +-#~ msgstr "%H:%M" +- +-#~ msgid "%x" +-#~ msgstr "%x" +- +-#~ msgid "Allow inspection of WebView" +-#~ msgstr "Dozvoliti inspekciju WebView-a" +- +-#~ msgid "Bold (Ctrl+B)" +-#~ msgstr "Zadebljano (Ctrl+B)" +- +-#~ msgid "C_olor" +-#~ msgstr "B_oja" +- +-#~ msgid "Failed to open default text editor." +-#~ msgstr "Nije bilo moguće otvoriti podrazumijevani uređivač teksta" +- +-#~ msgid "Failed to parse command line options: %s\n" +-#~ msgstr "Nije bilo moguće izvršiti opcije komandne linije: %s\n" +- +-#~ msgid "Indexing %s account" +-#~ msgstr "Indeksiranje %s računa" +- +-#~ msgid "Italic (Ctrl+I)" +-#~ msgstr "Kurziv (Ctrl+I)" +- +-#~ msgid "Log network deserialization" +-#~ msgstr "Bilježi serijalizaciju mreže" +- +-#~ msgid "Log network serialization" +-#~ msgstr "Logiranje mrežne serijalizacije" +- +-#~ msgid "Mark as S_pam" +-#~ msgstr "Označi kao S_pam" +- +-#~ msgid "Mark as not S_pam" +-#~ msgstr "Označi da nije S_pam" +- +-#~ msgid "Open" +-#~ msgstr "Otvaranje" +- +-#~ msgid "Output debugging information" +-#~ msgstr "Ispis informacije o debugiranju" +- +-#~ msgid "Please report comments, suggestions and bugs to:" +-#~ msgstr "Molimo, šaljite vaše komentare, prijedloge i bugove na:" +- +-#~ msgid "Quote text (Ctrl+])" +-#~ msgstr "Citiraj tekst (Ctrl+])" +- +-#~ msgid "Reading" +-#~ msgstr "Čitanje" +- +-#~ msgid "Search all mail in account for keywords (Ctrl+S)" +-#~ msgstr "Pretraži svu poštu unutar računa po ključnim riječima (Ctrl+S)" +- +-#~ msgid "Strikethrough (Ctrl+K)" +-#~ msgstr "Precrtano (Ctrl+K)" +- +-#~ msgid "Underline (Ctrl+U)" +-#~ msgstr "Podcrtano (Ctrl+U)" +- +-#~ msgid "_Play notification sounds" +-#~ msgstr "_Zvuk napomena" +- +-#~ msgid " • Connection error.\n" +-#~ msgstr " • Greška spajanja.\n" +- +-#~ msgid " • Email address already added to Geary.\n" +-#~ msgstr " • Adresa e-pošte je već dodana u Geary.\n" +- +-#~ msgid " • IMAP connection error.\n" +-#~ msgstr " • Greška IMAP spajanja.\n" +- +-#~ msgid " • IMAP username or password incorrect.\n" +-#~ msgstr " • IMAP korisničko ime i lozinka netočni.\n" +- +-#~ msgid " • Invalid account nickname.\n" +-#~ msgstr " • Neispravan nadimak računa.\n" +- +-#~ msgid " • SMTP connection error.\n" +-#~ msgstr " • Greška SMTP konekcije.\n" +- +-#~ msgid " • SMTP username or password incorrect.\n" +-#~ msgstr " • SMTP korisničko ime i lozinka netočni.\n" +- +-#~ msgid " • Username or password incorrect.\n" +-#~ msgstr " • Korisničko ime i lozinka netočni.\n" +- +-#~ msgid " (Invalid?)" +-#~ msgstr " (Neispravno?)" +- +-#~ msgid "%i matches" +-#~ msgstr "%i rezultata" +- +-#~ msgid "%i matches (wrapped)" +-#~ msgstr "%i rezultata (označeno)" +- +-#~ msgid "%u read messages" +-#~ msgstr "%u pročitanih poruka" +- +-#~ msgid "Archive conversation (Delete, Backspace, A)" +-#~ msgstr "Arhiviranje razgovora (Delete, Bakspace, A)" +- +-#~ msgid "Archive conversations (Delete, Backspace, A)" +-#~ msgstr "Arhiviranje razgovora (Delete, Bakspace, A)" +- +-#~ msgid "Copy _Link" +-#~ msgstr "Kopiranje _linka" +- +-#~ msgid "Copyright 2011-2013 Yorba Foundation" +-#~ msgstr "Copyright 2011-2013 Yorba Foundation" +- +-#~ msgid "Delete conversation (Delete, Backspace, A)" +-#~ msgstr "Brisanje razgovora (Delete, Bakspace, A)" +- +-#~ msgid "Delete conversations (Delete, Backspace, A)" +-#~ msgstr "Brisanje razgovora (Delete, Bakspace, A)" +- +-#~ msgid "Do you want to discard the unsaved message?" +-#~ msgstr "Želite li zaista odbaciti ovu poruku?" +- +-#~ msgid "E_mail address:" +-#~ msgstr "Adrese e-pošte:" +- +-#~ msgid "Encr_yption:" +-#~ msgstr "E_nkripcija:" +- +-#~ msgid "Encrypt_ion:" +-#~ msgstr "Enkripc_ija:" +- +-#~ msgid "IMAP Credentials" +-#~ msgstr "IMAP prijava" +- +-#~ msgid "Large" +-#~ msgstr "Veliko" +- +-#~ msgid "Link (Ctrl+L)" +-#~ msgstr "Link (Ctrl+L)" +- +-#~ msgid "Mail Client" +-#~ msgstr "Klijent za e-mail" +- +-#~ msgid "Medium" +-#~ msgstr "Srednje" +- +-#~ msgid "N_ame:" +-#~ msgstr "I_me:" +- +-#~ msgid "N_ickname:" +-#~ msgstr "Nad_imak" +- +-#~ msgid "No search results found." +-#~ msgstr "Nema rezultata unutar pretrage." +- +-#~ msgid "P_ort:" +-#~ msgstr "P_ort:" +- +-#~ msgid "Pass_word:" +-#~ msgstr "_Lozinka:" +- +-#~ msgid "Password:" +-#~ msgstr "Lozinka:" +- +-#~ msgid "Por_t:" +-#~ msgstr "Por_t:" +- +-#~ msgid "Port:" +-#~ msgstr "Port:" +- +-#~ msgid "Real name:" +-#~ msgstr "Stvarno ime:" +- +-#~ msgid "SSL" +-#~ msgstr "SSL" +- +-#~ msgid "SSL/TLS encryption:" +-#~ msgstr "SSL/TLS enkripcija:" +- +-#~ msgid "S_ervice:" +-#~ msgstr "Servis:" +- +-#~ msgid "Se_rver:" +-#~ msgstr "Se_rver:" +- +-#~ msgid "Ser_ver:" +-#~ msgstr "Ser_ver:" +- +-#~ msgid "Server:" +-#~ msgstr "Server:" +- +-#~ msgid "Service:" +-#~ msgstr "Usluga:" +- +-#~ msgid "Small" +-#~ msgstr "Malo" +- +-#~ msgid "" +-#~ "The version number of the local mail database is formatted for a newer " +-#~ "version of Geary. Unfortunately, the database cannot be \"rolled back\" " +-#~ "to work with this version of Geary.\n" +-#~ "\n" +-#~ "Please install the latest version of Geary and try again." +-#~ msgstr "" +-#~ "Broj verzije lokalne baze podataka e-pošte je formatiran za noviju " +-#~ "inačicu Gearyija. Na žalost, bazu podataka nije moguće \"vratiti natrag\" " +-#~ "za rad sa ovom inačicom Gearyija.\n" +-#~ "\n" +-#~ "Molimo instalirajte najnoviju inačicu Gearyija i pokušajte ponovo." +- +-#~ msgid "Unrecognized command line option \"%s\"\n" +-#~ msgstr "Nepoznata opcija komandne linije \"%s\"\n" +- +-#~ msgid "User_name:" +-#~ msgstr "Korisničko _ime::" +- +-#~ msgid "_Center" +-#~ msgstr "_Centar" +- +-#~ msgid "_Donate" +-#~ msgstr "_Doniraj" +- +-#~ msgid "_Justify" +-#~ msgstr "_Poravnanje" +- +-#~ msgid "_Left" +-#~ msgstr "_Lijevo" +- +-#~ msgid "_Mark as..." +-#~ msgstr "_Označi kao..." +- +-#~ msgid "_Password:" +-#~ msgstr "_Lozinka:" +- +-#~ msgid "_Right" +-#~ msgstr "_Desno" +- +-#~ msgid "_Username:" +-#~ msgstr "_Korisničko ime:" +- +-#~ msgid "attach|enclosed|enclosing|cover letter" +-#~ msgstr "priloži|uloži|uloženo|naslovi pismo" +- +-#~ msgid "none" +-#~ msgstr "nema" +-- +2.29.2 + diff --git a/mail-client/geary/files/0015-Update-Croatian-translation.patch b/mail-client/geary/files/0015-Update-Croatian-translation.patch new file mode 100644 index 0000000..fe47399 --- /dev/null +++ b/mail-client/geary/files/0015-Update-Croatian-translation.patch @@ -0,0 +1,2893 @@ +From d26894046be5bab3be5b8a721c46124cd9327dd8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Goran=20Vidovi=C4=87?= +Date: Tue, 15 Sep 2020 23:26:19 +0000 +Subject: [PATCH 015/124] Update Croatian translation + +--- + po/hr.po | 2866 +++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 2865 insertions(+), 1 deletion(-) + +diff --git a/po/hr.po b/po/hr.po +index d9656025..2061b350 100644 +--- a/po/hr.po ++++ b/po/hr.po +@@ -12,7 +12,7 @@ msgstr "" + "Project-Id-Version: geary-0.4.1\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" + "POT-Creation-Date: 2020-09-13 04:23+0000\n" +-"PO-Revision-Date: 2020-09-16 01:03+0200\n" ++"PO-Revision-Date: 2020-09-16 01:16+0200\n" + "Last-Translator: gogo \n" + "Language-Team: Croatian (http://www.transifex.com/projects/p/geary/language/" + "hr/)\n" +@@ -1212,3 +1212,2867 @@ msgstr "Račun je prijavio nevaljanu lozinku prijave." + #: src/client/application/application-main-window.vala:558 + msgid "Retry login, you will be prompted for your password" + msgstr "Ponovno se prijavite, biti ćete upisani za novu lozinku" ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:565 ++msgid "Security problem" ++msgstr "Sigurnosni problem" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:567 ++msgid "An account has reported an untrusted server." ++msgstr "Račun je prijavio nepouzdanog poslužitelja." ++ ++#. Translators: An info bar button label ++#: src/client/application/application-main-window.vala:570 ++msgid "Check" ++msgstr "Provjeri" ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:574 ++msgid "Check the security details for the connection" ++msgstr "Provjeri sigurnosne pojedinosti za povezivanje" ++ ++#. / Translators: Main window title, first string ++#. / substitution being the currently selected folder name, ++#. / the second being the selected account name. ++#: src/client/application/application-main-window.vala:617 ++#, c-format ++msgid "%s — %s" ++msgstr "%s — %s" ++ ++#. Translators: The name of the folder group containing ++#. folders created by people (as opposed to special-use ++#. folders) ++#: src/client/application/application-main-window.vala:996 ++#: src/client/folder-list/folder-list-account-branch.vala:43 ++msgid "Labels" ++msgstr "Oznake" ++ ++#: src/client/application/application-main-window.vala:1293 ++#, c-format ++msgid "Empty all email from your %s folder?" ++msgstr "Želite li isprazniti svu e-poštu iz vaše %s mape?" ++ ++#: src/client/application/application-main-window.vala:1294 ++msgid "This removes the email from Geary and your email server." ++msgstr "Ovo uklanja e-poštu iz Gearya i vaših poslužitelja e-pošte." ++ ++#: src/client/application/application-main-window.vala:1295 ++msgid "This cannot be undone." ++msgstr "Ovo se ne može poništiti." ++ ++#: src/client/application/application-main-window.vala:1296 ++#, c-format ++msgid "Empty %s" ++msgstr "Isprazni %s" ++ ++#. / Translators: Primary text for a confirmation dialog ++#: src/client/application/application-main-window.vala:1353 ++msgid "Do you want to permanently delete this conversation?" ++msgid_plural "Do you want to permanently delete these conversations?" ++msgstr[0] "Želite li trajno obrisati ovaj razgovor?" ++msgstr[1] "Želite li trajno obrisati ove razgovore?" ++msgstr[2] "Želite li trajno obrisati ove razgovore?" ++ ++#: src/client/application/application-main-window.vala:1358 ++#: src/client/application/application-main-window.vala:1373 ++msgid "Delete" ++msgstr "Obriši" ++ ++#. / Translators: Primary text for a confirmation dialog ++#: src/client/application/application-main-window.vala:1368 ++msgid "Do you want to permanently delete this message?" ++msgid_plural "Do you want to permanently delete these messages?" ++msgstr[0] "Želite li trajno obrisati ovu poruku?" ++msgstr[1] "Želite li trajno obrisati ove poruke?" ++msgstr[2] "Želite li trajno obrisati ove poruke?" ++ ++#: src/client/application/application-main-window.vala:1691 ++#, c-format ++msgid "%s (%d)" ++msgstr "%s (%d)" ++ ++#. Translators: The first argument will be a ++#. description of the document type, the second will ++#. be a human-friendly size string. For example: ++#. Document (100.9MB) ++#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" ++#: src/client/components/components-attachment-pane.vala:107 ++#: src/client/composer/composer-widget.vala:1784 ++#, c-format ++msgid "%s (%s)" ++msgstr "%s (%s)" ++ ++#: src/client/components/components-attachment-pane.vala:379 ++msgid "Are you sure you want to open these attachments?" ++msgstr "Sigurno želite otvoriti ove privitke?" ++ ++#: src/client/components/components-attachment-pane.vala:380 ++msgid "" ++"Attachments may cause damage to your system if opened. Only open files from " ++"trusted sources." ++msgstr "" ++"Privitci mogu oštetiti vaš sustav ako ih otvorite. Otvorite samo datoteke " ++"od pouzdanih korisnika." ++ ++#: src/client/components/components-attachment-pane.vala:381 ++msgid "Don’t _ask me again" ++msgstr "Ne _pitaj me ponovno" ++ ++#: src/client/components/components-inspector.vala:78 ++msgid "Inspector" ++msgstr "_Inspektor" ++ ++#. / Translators: Title for Inspector logs pane ++#. / Translators: Title for problem report dialog logs pane ++#: src/client/components/components-inspector.vala:93 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 ++msgid "Logs" ++msgstr "Zapisi" ++ ++#. / Translators: Title for Inspector system system information pane ++#. / Translators: Title for problem report system information ++#. / pane ++#: src/client/components/components-inspector.vala:97 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 ++msgid "System" ++msgstr "Sustav" ++ ++#. Button label for saving problem report information ++#: src/client/components/components-inspector.vala:226 ++#: src/client/components/components-inspector.vala:229 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 ++#: ui/problem-details-dialog.ui:47 ++msgid "Save As" ++msgstr "Spremi kao" ++ ++#: src/client/components/components-inspector.vala:230 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 ++msgid "Cancel" ++msgstr "Odustani" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:124 ++msgid "_Automatically select next message" ++msgstr "_Automatski odaberi slijedeću poruku" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:134 ++msgid "_Display conversation preview" ++msgstr "_Prikaži pregled razgovora" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:144 ++msgid "Use _three pane view" ++msgstr "Koristi _pogled stabla" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:154 ++msgid "Use _single key email shortcuts" ++msgstr "Koristi _prečace jednom tipkom za e-poštu" ++ ++#: src/client/components/components-preferences-window.vala:156 ++msgid "" ++"Enable keyboard shortcuts for email actions that do not require pressing " ++"" ++msgstr "" ++"Omogući prečace tipkovnice za radnje e-pošte koje ne zahtijevaju pritisak na " ++"" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:167 ++msgid "_Watch for new mail when closed" ++msgstr "_Nadgledaj novu e-poštu kada se zatvori" ++ ++#. / Translators: Preferences tooltip ++#: src/client/components/components-preferences-window.vala:171 ++msgid "Geary will keep running after all windows are closed" ++msgstr "Geary će nastaviti biti pokrenut nakon što se svi prozori zatvore" ++ ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:189 ++msgid "Preferences" ++msgstr "Osobitosti" ++ ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:250 ++msgid "Plugins" ++msgstr "Priključci" ++ ++#. Translators: Info bar title for a generic account ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:36 ++msgid "Account problem" ++msgstr "Problem s računom" ++ ++#. Translators: Info bar sub-title for a generic account ++#. problem. String substitution is the account name. ++#: src/client/components/components-problem-report-info-bar.vala:40 ++#, c-format ++msgid "Geary has encountered a problem with %s." ++msgstr "Geary je naišao na problem s %s." ++ ++#. Translators: Info bar sub-title for a generic ++#. account problem. String substitution is the ++#. account name. ++#: src/client/components/components-problem-report-info-bar.vala:53 ++#, c-format ++msgid "Geary encountered a problem checking mail for %s." ++msgstr "Geary je naišao na problem pri provjeri e-pošte na %s." ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:57 ++msgid "Try reconnecting" ++msgstr "Pokušajte se ponovno povezati" ++ ++#. Translators: Info bar title for an outgoing ++#. account problem. String substitution is the ++#. account name ++#: src/client/components/components-problem-report-info-bar.vala:65 ++#, c-format ++msgid "Geary encountered a problem sending email for %s." ++msgstr "Geary je naišao na problem pri slanju e-pošte na %s." ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:69 ++msgid "Retry sending queued messages" ++msgstr "Pokušaj ponovno poslati poruke na čekanju" ++ ++#. Translators: Info bar title for a generic application ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:76 ++msgid "Geary has encountered a problem" ++msgstr "Geary je naišao na problem" ++ ++#. Translators: Info bar sub-title for a generic ++#. application problem. ++#: src/client/components/components-problem-report-info-bar.vala:80 ++msgid "Please report the details if it persists." ++msgstr "Prijavite pojedinosti ako se problem nastavi." ++ ++#. Translators: Button label for viewing technical details ++#. for a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:94 ++msgid "_Details" ++msgstr "_Pojedinosti" ++ ++#. Translators: Tooltip for viewing technical details for ++#. a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:97 ++msgid "View technical details about the error" ++msgstr "Prikaži tehničke pojedinosti o grešci" ++ ++#. Translators: Button label for retrying a server ++#. connection ++#: src/client/components/components-problem-report-info-bar.vala:103 ++msgid "_Retry" ++msgstr "_Pokušaj ponovno" ++ ++#. / Translators: Search entry placeholder text ++#: src/client/components/components-search-bar.vala:12 ++#: src/client/folder-list/folder-list-search-branch.vala:53 ++#: src/client/util/util-i18n.vala:298 ++msgid "Search" ++msgstr "Pretraga" ++ ++#. / Translators: Search entry tooltip ++#: src/client/components/components-search-bar.vala:32 ++msgid "Search all mail in account for keywords" ++msgstr "Pretraži svu e-poštu u računu po ključnim riječima" ++ ++#. / Translators: Search entry placeholder, string ++#. / replacement is the name of an account ++#: src/client/components/components-search-bar.vala:81 ++#: src/client/folder-list/folder-list-search-branch.vala:54 ++#, c-format ++msgid "Search %s account" ++msgstr "Pretraži %s račun" ++ ++#. Translators: Tooltip used when an entry requires a valid ++#. email address to be entered, but one is not provided. ++#: src/client/components/components-validator.vala:394 ++msgid "An email address is required" ++msgstr "Potrebna je adresa e-pošte" ++ ++#. Translators: Tooltip used when an entry requires a valid ++#. email address to be entered, but the address is invalid. ++#: src/client/components/components-validator.vala:398 ++msgid "Not a valid email address" ++msgstr "Adresa e-pošte nije valjana" ++ ++#. Translators: Tooltip used when an entry requires a valid, ++#. resolvable server name to be entered, but one is not ++#. provided. ++#: src/client/components/components-validator.vala:444 ++msgid "A server name is required" ++msgstr "Potreban je naziv poslužitelja" ++ ++#. Translators: Tooltip used when an entry requires a valid ++#. server name to be entered, but it was unable to be ++#. looked-up in the DNS. ++#: src/client/components/components-validator.vala:449 ++msgid "Could not look up server name" ++msgstr "Nemoguća pretraga naziva poslužitelja" ++ ++#: src/client/components/main-toolbar.vala:116 ++msgid "Mark conversation" ++msgid_plural "Mark conversations" ++msgstr[0] "Označi razgovor" ++msgstr[1] "Označi razgovore" ++msgstr[2] "Označi razgovore" ++ ++#: src/client/components/main-toolbar.vala:121 ++msgid "Add label to conversation" ++msgid_plural "Add label to conversations" ++msgstr[0] "Dodaj oznaku razgovoru" ++msgstr[1] "Dodaj oznaku razgovorima" ++msgstr[2] "Dodaj oznaku razgovorima" ++ ++#: src/client/components/main-toolbar.vala:126 ++msgid "Move conversation" ++msgid_plural "Move conversations" ++msgstr[0] "Premjesti razgovor" ++msgstr[1] "Premjesti razgovore" ++msgstr[2] "Premjesti razgovore" ++ ++#: src/client/components/main-toolbar.vala:131 ++msgid "Archive conversation" ++msgid_plural "Archive conversations" ++msgstr[0] "Arhiviraj razgovor" ++msgstr[1] "Arhiviraj razgovore" ++msgstr[2] "Arhiviraj razgovore" ++ ++#: src/client/components/main-toolbar.vala:142 ++msgid "Move conversation to Trash" ++msgid_plural "Move conversations to Trash" ++msgstr[0] "Premjesti razgovor u smeće" ++msgstr[1] "Premjesti razgovore u smeće" ++msgstr[2] "Premjesti razgovore u smeće" ++ ++#: src/client/components/main-toolbar.vala:152 ++msgid "Delete conversation" ++msgid_plural "Delete conversations" ++msgstr[0] "Obriši razgovor" ++msgstr[1] "Obriši razgovore" ++msgstr[2] "Obriši razgovore" ++ ++#. / Displayed in the space-limited status bar while a message is in the process of being sent. ++#: src/client/components/status-bar.vala:26 ++msgid "Sending…" ++msgstr "Slanje…" ++ ++#. / Displayed in the space-limited status bar when a message fails to be sent due to error. ++#: src/client/components/status-bar.vala:29 ++msgid "Error sending email" ++msgstr "Greška pri slanju e-pošte" ++ ++#. Displayed in the space-limited status bar when a message fails to be uploaded ++#. to Sent Mail after being sent. ++#: src/client/components/status-bar.vala:33 ++msgid "Error saving sent mail" ++msgstr "Greška pri spremanju e-pošte" ++ ++#: src/client/components/stock.vala:18 ++msgid "_OK" ++msgstr "_U redu" ++ ++#: src/client/components/stock.vala:19 ++#: src/client/plugin/mail-merge/mail-merge.vala:392 ++#: ui/password-dialog.glade:196 ++msgid "_Cancel" ++msgstr "_Odustani" ++ ++#: src/client/components/stock.vala:21 ++msgid "_About" ++msgstr "_O" ++ ++#: src/client/components/stock.vala:22 ++msgid "_Add" ++msgstr "_Dodaj" ++ ++#: src/client/components/stock.vala:23 ++msgid "_Close" ++msgstr "_Zatvori" ++ ++#: src/client/components/stock.vala:24 ++msgid "_Discard" ++msgstr "_Odbaci" ++ ++#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:42 ++msgid "_Help" ++msgstr "_Priručnik" ++ ++#: src/client/components/stock.vala:26 ++#: src/client/plugin/mail-merge/mail-merge.vala:391 ++#: ui/components-attachment-pane-menus.ui:7 ++msgid "_Open" ++msgstr "_Otvori" ++ ++#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:32 ++msgid "_Preferences" ++msgstr "_Osobitosti" ++ ++#. Translators: Menu item to print a single, specific message ++#: src/client/components/stock.vala:28 ui/conversation-email-menus.ui:64 ++msgid "_Print…" ++msgstr "_Ispis…" ++ ++#: src/client/components/stock.vala:29 ++msgid "_Quit" ++msgstr "_Zatvori" ++ ++#: src/client/components/stock.vala:30 ++msgid "_Remove" ++msgstr "_Ukloni" ++ ++#: src/client/components/stock.vala:31 ++#: ui/components-attachment-pane-menus.ui:11 ++msgid "_Save" ++msgstr "_Spremi" ++ ++#: src/client/components/stock.vala:32 ++msgid "_Keep" ++msgstr "_Zadrži" ++ ++#: src/client/composer/composer-editor.vala:675 ++msgid "Select Color" ++msgstr "Odabir boje" ++ ++#: src/client/composer/composer-link-popover.vala:139 ++msgid "Link URL is not correctly formatted, e.g. http://example.com" ++msgstr "URL poveznice nije pravilno oblikovan, npr. http://primjer.hr" ++ ++#: src/client/composer/composer-link-popover.vala:146 ++msgid "Invalid link URL" ++msgstr "Nevaljani URL poveznice" ++ ++#: src/client/composer/composer-link-popover.vala:146 ++msgid "Invalid email address" ++msgstr "Nevaljana adresa e-pošte" ++ ++#. / Translators: Title for an empty composer window ++#: src/client/composer/composer-widget.vala:32 ++msgid "New Message" ++msgstr "Nova poruka" ++ ++#: src/client/composer/composer-widget.vala:167 ++msgid "Saved" ++msgstr "Spremljeno" ++ ++#: src/client/composer/composer-widget.vala:168 ++msgid "Saving" ++msgstr "Spremanje" ++ ++#: src/client/composer/composer-widget.vala:169 ++msgid "Error saving" ++msgstr "Greška spremanja" ++ ++#: src/client/composer/composer-widget.vala:170 ++msgid "Press Backspace to delete quote" ++msgstr "Pritisni Backspace za brisanje citata" ++ ++#. Translators: This is list of keywords, separated by pipe ("|") ++#. characters, that suggest an attachment; since this is full-word ++#. checking, include all variants of each word. No spaces are ++#. allowed. The words will be converted to lower case based on ++#. locale and English versions included automatically. ++#: src/client/composer/composer-widget.vala:186 ++msgid "" ++"attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" ++"enclosing|encloses|enclosure|enclosures" ++msgstr "privitak|priloži|privitci|prilažem|prilaganja|privitci|priloženo" ++ ++#. Translators: This dialog text is displayed to the ++#. user when closing a composer where the options are ++#. Keep, Discard or Cancel. ++#: src/client/composer/composer-widget.vala:862 ++msgid "Do you want to keep or discard this draft message?" ++msgstr "Želite li zadržati ili odbaciti ovu skicu poruke?" ++ ++#. Translators: This dialog text is displayed to the ++#. user when closing a composer where the options are ++#. only Discard or Cancel. ++#: src/client/composer/composer-widget.vala:888 ++msgid "Do you want to discard this draft message?" ++msgstr "Želite li odbaciti ovu skicu poruke?" ++ ++#: src/client/composer/composer-widget.vala:1440 ++msgid "Send message with an empty subject and body?" ++msgstr "Pošalji poruku s praznim predmetom i sadržajem?" ++ ++#: src/client/composer/composer-widget.vala:1442 ++msgid "Send message with an empty subject?" ++msgstr "Pošalji poruku bez predmeta?" ++ ++#: src/client/composer/composer-widget.vala:1444 ++msgid "Send message with an empty body?" ++msgstr "Pošalji poruku sadržaja?" ++ ++#: src/client/composer/composer-widget.vala:1453 ++msgid "Send message without an attachment?" ++msgstr "Pošalji poruku bez privitka?" ++ ++#: src/client/composer/composer-widget.vala:1772 ++#, c-format ++msgid "“%s” already attached for delivery." ++msgstr "\"%s\" je već priložen za dostavu." ++ ++#: src/client/composer/composer-widget.vala:1804 ++#: src/client/composer/composer-widget.vala:1854 ++#, c-format ++msgid "“%s” is an empty file." ++msgstr "\"%s\" je prazna datoteka." ++ ++#: src/client/composer/composer-widget.vala:1842 ++#, c-format ++msgid "“%s” could not be found." ++msgstr "%s se ne može pronaći." ++ ++#: src/client/composer/composer-widget.vala:1848 ++#, c-format ++msgid "“%s” is a folder." ++msgstr "\"%s\" je mapa." ++ ++#: src/client/composer/composer-widget.vala:1867 ++#, c-format ++msgid "“%s” could not be opened for reading." ++msgstr "\"%s\" je nemoguće otvoriti za čitanje." ++ ++#: src/client/composer/composer-widget.vala:1875 ++msgid "Cannot add attachment" ++msgstr "Nemoguće dodavanje privitka" ++ ++#. Translators: This is the name of the file chooser filter ++#. when inserting an image in the composer. ++#: src/client/composer/composer-widget.vala:1946 ++msgid "Images" ++msgstr "Slike" ++ ++#. Translators: Human-readable version of the RFC 822 To header ++#: src/client/composer/composer-widget.vala:2010 ++#: src/client/conversation-viewer/conversation-email.vala:542 ++#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 ++msgid "To:" ++msgstr "Prima:" ++ ++#. Translators: Human-readable version of the RFC 822 CC header ++#: src/client/composer/composer-widget.vala:2016 ++#: src/client/conversation-viewer/conversation-email.vala:547 ++#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 ++msgid "Cc:" ++msgstr "Prima kopiju:" ++ ++#. Translators: Human-readable version of the RFC 822 BCC header ++#: src/client/composer/composer-widget.vala:2022 ++#: src/client/conversation-viewer/conversation-email.vala:552 ++#: ui/conversation-message.ui:402 ++msgid "Bcc:" ++msgstr "Prima tajnu kopiju:" ++ ++#. Translators: Human-readable version of the RFC 822 Reply-To header ++#: src/client/composer/composer-widget.vala:2028 ++msgid "Reply-To: " ++msgstr "Odgovor na: " ++ ++#. Displayed in the From dropdown to indicate an ++#. "alternate email address" for an account. The first ++#. printf argument will be the alternate email address, ++#. and the second will be the account's primary email ++#. address. ++#: src/client/composer/composer-widget.vala:2146 ++#, c-format ++msgid "%1$s via %2$s" ++msgstr "%1$s putem %2$s" ++ ++#: src/client/composer/spell-check-popover.vala:125 ++msgid "Remove this language from the preferred list" ++msgstr "Ukloni ovaj jezik iz popisa željenih" ++ ++#: src/client/composer/spell-check-popover.vala:129 ++msgid "Add this language to the preferred list" ++msgstr "Dodaj ovaj jezik na popis željenih" ++ ++#: src/client/composer/spell-check-popover.vala:225 ++msgid "Search for more languages" ++msgstr "Pretraži više jezika" ++ ++#. / Translators: Context menu item ++#: src/client/conversation-list/conversation-list-view.vala:339 ++msgid "Move conversation to _Trash" ++msgid_plural "Move conversations to _Trash" ++msgstr[0] "Premjesti razgovor u _smeće" ++msgstr[1] "Premjesti razgovore u _smeće" ++msgstr[2] "Premjesti razgovore u _smeće" ++ ++#. / Translators: Context menu item ++#: src/client/conversation-list/conversation-list-view.vala:351 ++msgid "_Delete conversation" ++msgid_plural "_Delete conversations" ++msgstr[0] "_Obriši razgovor" ++msgstr[1] "_Obriši razgovore" ++msgstr[2] "_Obriši razgovore" ++ ++#: src/client/conversation-list/conversation-list-view.vala:364 ++#: ui/main-toolbar-menus.ui:5 ++msgid "Mark as _Read" ++msgstr "Označi kao _pročitano" ++ ++#: src/client/conversation-list/conversation-list-view.vala:372 ++#: ui/main-toolbar-menus.ui:9 ++msgid "Mark as _Unread" ++msgstr "Označi kao _nepročitano" ++ ++#: src/client/conversation-list/conversation-list-view.vala:380 ++#: ui/main-toolbar-menus.ui:17 ++msgid "U_nstar" ++msgstr "Uklo_ni oznaku" ++ ++#: src/client/conversation-list/conversation-list-view.vala:387 ++#: ui/main-toolbar-menus.ui:13 ++msgid "_Star" ++msgstr "_Označi" ++ ++#. Translators: Menu item to reply to a specific message. ++#: src/client/conversation-list/conversation-list-view.vala:396 ++#: ui/conversation-email-menus.ui:9 ++msgid "_Reply" ++msgstr "_Odgovori" ++ ++#: src/client/conversation-list/conversation-list-view.vala:402 ++msgid "R_eply All" ++msgstr "O_dgovori svima" ++ ++#. Translators: Menu item to forward a specific message. ++#: src/client/conversation-list/conversation-list-view.vala:408 ++#: ui/conversation-email-menus.ui:21 ++msgid "_Forward" ++msgstr "_Proslijedi" ++ ++#: src/client/conversation-list/formatted-conversation-data.vala:18 ++msgid "Me" ++msgstr "Ja" ++ ++#. Translators: Human-readable version of the RFC 822 From header ++#: src/client/conversation-viewer/conversation-email.vala:537 ++#: src/client/util/util-email.vala:240 ++msgid "From:" ++msgstr "Šalje:" ++ ++#. Translators: Human-readable version of the RFC 822 Date header ++#: src/client/conversation-viewer/conversation-email.vala:557 ++#: src/client/util/util-email.vala:245 ++msgid "Date:" ++msgstr "Datum:" ++ ++#. Translators: Human-readable version of the RFC 822 Subject header ++#: src/client/conversation-viewer/conversation-email.vala:567 ++#: src/client/util/util-email.vala:243 ++msgid "Subject:" ++msgstr "Predmet:" ++ ++#: src/client/conversation-viewer/conversation-message.vala:128 ++msgid "This email address may have been forged" ++msgstr "Ova adresa e-pošte može biti zaboravljena" ++ ++#. Translators: Label text displayed when there are too ++#. many email addresses to be shown by default in an ++#. email's header, but they are all being shown anyway. ++#: src/client/conversation-viewer/conversation-message.vala:234 ++msgid "Show less" ++msgstr "Prikaži manje" ++ ++#. Translators: Label text displayed when there are ++#. too many email addresses to be shown by default in ++#. an email's header. The string substitution is the ++#. number of extra email to be shown. ++#: src/client/conversation-viewer/conversation-message.vala:260 ++#, c-format ++msgid "%d more…" ++msgstr "%d više…" ++ ++#. Compact headers. These are partially done here and partially ++#. in load_contacts. ++#. Translators: This is displayed in place of the from address ++#. when the message has no from address. ++#: src/client/conversation-viewer/conversation-message.vala:529 ++msgid "No sender" ++msgstr "Bez pošiljatelja" ++ ++#. Translators: This separates multiple 'from' ++#. addresses in the compact header for a message. ++#: src/client/conversation-viewer/conversation-message.vala:920 ++msgid ", " ++msgstr ", " ++ ++#. Translators: This string is used as the HTML IMG ALT ++#. attribute value when displaying an inline image in an email ++#. that did not specify a file name. E.g. Imagecontact " ++"channels or attach to a new bug report." ++msgstr "" ++"Ako je problem ozbiljan i nastavi se, spremite i pošaljite ove pojedinosti " ++"na kanal kontakta " ++"ili priložite kao novi izvještaj greške." ++ ++#: ui/components-inspector-error-view.ui:47 ++msgid "Details:" ++msgstr "Pojedinosti:" ++ ++#. Tooltip for inspector button ++#. Tooltip for problem report button ++#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:24 ++msgid "Search for matching log entries" ++msgstr "Pretraži podudaranje u unosima zapisa" ++ ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:35 ++msgid "Toggle appending new log entries" ++msgstr "Uklj/Isklj dodavanje novih unosa zapisa" ++ ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:55 ++msgid "Add a marker entry to the log" ++msgstr "Dodaj unos oznake u zapis" ++ ++#. Tooltip for inspector button ++#. Tooltip for problem report button ++#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:51 ++msgid "Save logs entries and details" ++msgstr "Spremi unose zapisa i pojedinosti" ++ ++#. Tooltip for inspector button ++#. Tooltip for problem report button ++#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:67 ++msgid "Copy to clipboard" ++msgstr "Kopiraj u međuspremnik" ++ ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:121 ++msgid "Clears all log entries" ++msgstr "Ukloni sve unose zapisa" ++ ++#: ui/conversation-contact-popover.ui:146 ++msgid "New Conversation…" ++msgstr "Novi razgovor…" ++ ++#: ui/conversation-contact-popover.ui:159 ++msgid "Copy Email Address" ++msgstr "Kopiraj adresu e-pošte" ++ ++#: ui/conversation-contact-popover.ui:182 ++msgid "Save in Contacts…" ++msgstr "Spremi u kontakte…" ++ ++#: ui/conversation-contact-popover.ui:195 ++msgid "Show Conversations" ++msgstr "Prikaži razgovore" ++ ++#: ui/conversation-contact-popover.ui:208 ++msgid "Open in Contacts" ++msgstr "Otvori u kontaktima" ++ ++#: ui/conversation-contact-popover.ui:221 ++msgid "Always Load Remote Images" ++msgstr "Uvijek učitaj udaljene slike" ++ ++#. Title label on contact popover ++#: ui/conversation-contact-popover.ui:264 ++msgid "Deceptive email address" ++msgstr "Obmanjujuća adresa e-pošte" ++ ++#. Contact popover label ++#: ui/conversation-contact-popover.ui:294 ++msgid "This email address is:" ++msgstr "Adresa ove e-pošte je:" ++ ++#. Contact popover label ++#: ui/conversation-contact-popover.ui:319 ++msgid "But was forged as:" ++msgstr "Ali je zaboravljena kao:" ++ ++#. Contact popover label ++#: ui/conversation-contact-popover.ui:344 ++msgid "The sender may not be trustworthy" ++msgstr "Pošiljatelj možda nije pouzdan" ++ ++#: ui/conversation-email.ui:27 ++msgid "Save all attachments" ++msgstr "Spremi sve privitke" ++ ++#. Note: The application will never show this button at the same time as unstar_button, one will always be hidden. ++#: ui/conversation-email.ui:50 ++msgid "Mark this message as starred" ++msgstr "Označi ovu poruku sa zvjezdicom" ++ ++#. Note: The application will never show this button at the same time as star_button, one will always be hidden. ++#: ui/conversation-email.ui:72 ++msgid "Mark this message as not starred" ++msgstr "Označi ovu poruku bez zvjezdice" ++ ++#. Translators: Menu item to reply to a specific message. ++#: ui/conversation-email-menus.ui:15 ++msgid "Reply to _All" ++msgstr "Odgovori _svima" ++ ++#. Translators: Menu item to mark a specific message as ++#. read. ++#: ui/conversation-email-menus.ui:30 ++msgid "_Mark Read" ++msgstr "_Označi kao pročitano" ++ ++#: ui/conversation-email-menus.ui:36 ++msgid "_Mark Unread" ++msgstr "_Označi kao nepročitano" ++ ++#. Translators: Menu item to mark all messages in a ++#. conversation from this one as unread. ++#: ui/conversation-email-menus.ui:42 ++msgid "Mark Unread From _Here" ++msgstr "Označi kao nepročitano od _ovdje" ++ ++#. Translators: Menu item to move a single, specific message ++#. to the trash folder ++#: ui/conversation-email-menus.ui:50 ++msgid "Move message to _Trash" ++msgstr "Premjesti poruku u _smeće" ++ ++#. Translators: Menu item to delete a single, specific message ++#: ui/conversation-email-menus.ui:57 ++msgid "_Delete message…" ++msgstr "_Obriši poruku…" ++ ++#. Translators: Menu item to view the source for a message ++#: ui/conversation-email-menus.ui:69 ++msgid "_View Source" ++msgstr "_Pogledaj izvor" ++ ++#: ui/conversation-message-link-popover.ui:54 ++msgid "But actually goes to:" ++msgstr "Ali u stvari usmjerava na:" ++ ++#: ui/conversation-message-link-popover.ui:84 ++msgid "The link appears to go to:" ++msgstr "Čini se da ova poveznica usmjerava na:" ++ ++#: ui/conversation-message-link-popover.ui:96 ++msgid "Deceptive link found" ++msgstr "Obmanjujuća poveznica pronađena" ++ ++#: ui/conversation-message-link-popover.ui:111 ++msgid "The email sender may be leading you to the wrong web site." ++msgstr "Pošiljatelj e-pošte možda vas usmjerava na pogrešnu web stranicu." ++ ++#: ui/conversation-message-link-popover.ui:124 ++msgid "If unsure, contact the sender and ask before continuing." ++msgstr "Ako niste sigurni, kontaktirajte pošiljatelja prije slanja." ++ ++#: ui/conversation-message-menus.ui:7 ++msgid "_Open Link" ++msgstr "_Otvori poveznicu" ++ ++#: ui/conversation-message-menus.ui:11 ++msgid "Copy Link _Address" ++msgstr "Kopiraj _adresu poveznice" ++ ++#: ui/conversation-message-menus.ui:17 ++msgid "_New Conversation…" ++msgstr "_Novi razgovor…" ++ ++#: ui/conversation-message-menus.ui:21 ++msgid "Copy Email _Address" ++msgstr "Kopiraj adresu _e-pošte" ++ ++#: ui/conversation-message-menus.ui:27 ++msgid "Save _Image As…" ++msgstr "Spremi _sliku kao…" ++ ++#: ui/conversation-message-menus.ui:33 ++msgid "_Select All" ++msgstr "_Odaberi sve" ++ ++#: ui/conversation-message.ui:63 ++msgid "From " ++msgstr "Posalo " ++ ++#: ui/conversation-message.ui:79 ui/conversation-message.ui:178 ++msgid "1/1/1970\t" ++msgstr "1/1/1970\t" ++ ++#: ui/conversation-message.ui:102 ++msgid "Preview body text." ++msgstr "Pregled sadržaja teksta." ++ ++#: ui/conversation-message.ui:202 ++msgid "Sent by:" ++msgstr "Poslao:" ++ ++#: ui/conversation-message.ui:247 ++msgid "Reply to:" ++msgstr "Odgovor na:" ++ ++#: ui/conversation-message.ui:291 ++msgid "Subject" ++msgstr "Predmet" ++ ++#: ui/conversation-viewer.ui:60 ++msgid "Find in conversation" ++msgstr "Pretraži u razgovoru" ++ ++#: ui/conversation-viewer.ui:75 ++msgid "Find the previous occurrence of the search string." ++msgstr "Pretraži prijašnje pojavljivanje izraza pretrage." ++ ++#: ui/conversation-viewer.ui:96 ++msgid "Find the next occurrence of the search string." ++msgstr "Pretraži sljedeće pojavljivanje izraza pretrage." ++ ++#: ui/find_bar.glade:66 ++msgid "Find:" ++msgstr "Pretraži:" ++ ++#: ui/find_bar.glade:89 ++msgid "_Previous" ++msgstr "_Prijašnje" ++ ++#: ui/find_bar.glade:107 ++msgid "_Next" ++msgstr "_Sljedeće" ++ ++#: ui/find_bar.glade:125 ++msgid "_Case sensitive" ++msgstr "Velika/Mala slova" ++ ++#: ui/find_bar.glade:145 ++msgid "label" ++msgstr "natpis" ++ ++#: ui/gtk/help-overlay.ui:9 ++msgid "Conversation Shortcuts" ++msgstr "Prečaci razgovora" ++ ++#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:377 ++msgctxt "shortcut window" ++msgid "Actions" ++msgstr "Radnje" ++ ++#: ui/gtk/help-overlay.ui:17 ++msgctxt "shortcut window" ++msgid "New conversation" ++msgstr "Novi razgovor" ++ ++#: ui/gtk/help-overlay.ui:24 ++msgctxt "shortcut window" ++msgid "Reply to sender" ++msgstr "Odgovori pošiljatelju" ++ ++#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:281 ++msgctxt "shortcut window" ++msgid "Reply to all" ++msgstr "Odgovori svima" ++ ++#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:288 ++msgctxt "shortcut window" ++msgid "Forward" ++msgstr "Proslijedi" ++ ++#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:295 ++msgctxt "shortcut window" ++msgid "Un-mark/mark read" ++msgstr "Označi/Ukloni oznaku pročitano" ++ ++#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:302 ++msgctxt "shortcut window" ++msgid "Mark/un-mark starred" ++msgstr "Označi/Ukloni oznaku zvjezdice" ++ ++#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:309 ++msgctxt "shortcut window" ++msgid "Archive conversations" ++msgstr "Arhiviraj razgovore" ++ ++#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:326 ++msgctxt "shortcut window" ++msgid "Move conversations" ++msgstr "Premjesti razgovore" ++ ++#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:333 ++msgctxt "shortcut window" ++msgid "Label conversations" ++msgstr "Natpis razgovora" ++ ++#: ui/gtk/help-overlay.ui:80 ++msgctxt "shortcut window" ++msgid "Trash conversations" ++msgstr "Premjesti razgovore u smeće" ++ ++#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:340 ++msgctxt "shortcut window" ++msgid "Junk conversations" ++msgstr "Premjesti razgovore u neželjenu poštu" ++ ++#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:347 ++msgctxt "shortcut window" ++msgid "Delete conversations" ++msgstr "Obriši razgovore" ++ ++#: ui/gtk/help-overlay.ui:104 ++msgctxt "shortcut window" ++msgid "Search" ++msgstr "Pretraga" ++ ++#: ui/gtk/help-overlay.ui:108 ++msgctxt "shortcut window" ++msgid "Search for conversations" ++msgstr "Pretraži razgovore" ++ ++#: ui/gtk/help-overlay.ui:115 ui/gtk/help-overlay.ui:354 ++msgctxt "shortcut window" ++msgid "Find in current conversation" ++msgstr "Pretraži u trenutnom razgovoru" ++ ++#: ui/gtk/help-overlay.ui:141 ++msgctxt "shortcut window" ++msgid "Undo" ++msgstr "Vrati" ++ ++#: ui/gtk/help-overlay.ui:145 ++msgctxt "shortcut window" ++msgid "Undo the last action" ++msgstr "Vrati posljednju radnju" ++ ++#: ui/gtk/help-overlay.ui:152 ++msgctxt "shortcut window" ++msgid "Redo the last action" ++msgstr "Ponovi posljednju radnju" ++ ++#: ui/gtk/help-overlay.ui:161 ++msgctxt "shortcut window" ++msgid "View" ++msgstr "Pogled" ++ ++#: ui/gtk/help-overlay.ui:165 ++msgctxt "shortcut window" ++msgid "Zoom in" ++msgstr "Uvećaj" ++ ++#: ui/gtk/help-overlay.ui:172 ++msgctxt "shortcut window" ++msgid "Zoom out" ++msgstr "Umanji" ++ ++#: ui/gtk/help-overlay.ui:179 ++msgctxt "shortcut window" ++msgid "Reset zoom" ++msgstr "Izvorni pogled" ++ ++#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:404 ++msgctxt "shortcut window" ++msgid "General" ++msgstr "Općenito" ++ ++#: ui/gtk/help-overlay.ui:192 ++msgctxt "shortcut window" ++msgid "Show help" ++msgstr "Prikaži priručnik" ++ ++#: ui/gtk/help-overlay.ui:199 ++msgctxt "shortcut window" ++msgid "Show keyboard shortcuts" ++msgstr "Prikaži prečace tipkovnice" ++ ++#: ui/gtk/help-overlay.ui:206 ++msgctxt "shortcut window" ++msgid "Open a new window" ++msgstr "Otvori novi prozor" ++ ++#: ui/gtk/help-overlay.ui:213 ++msgctxt "shortcut window" ++msgid "Close the current window" ++msgstr "Zatvori trenutni prozor" ++ ++#: ui/gtk/help-overlay.ui:220 ++msgctxt "shortcut window" ++msgid "Quit the application" ++msgstr "Zatvori aplikaciju" ++ ++#: ui/gtk/help-overlay.ui:229 ++msgctxt "shortcut window" ++msgid "Keyboard navigation" ++msgstr "Upravljanje tipkovnicom" ++ ++#: ui/gtk/help-overlay.ui:233 ++msgctxt "shortcut window" ++msgid "Go to next/previous pane" ++msgstr "Idi na prijašnji/sljedeći okvir" ++ ++#: ui/gtk/help-overlay.ui:241 ++msgctxt "shortcut window" ++msgid "Select next/previous conversation" ++msgstr "Odaberi prijašnji/sljedeći razgovor" ++ ++#: ui/gtk/help-overlay.ui:248 ++msgctxt "shortcut window" ++msgid "Focus next/previous message" ++msgstr "Fokusiraj prijašnju/sljedeću poruku" ++ ++#: ui/gtk/help-overlay.ui:260 ++msgid "Single-key Shortcuts" ++msgstr "Prečaci jednom tipkom" ++ ++#: ui/gtk/help-overlay.ui:265 ++msgctxt "shortcut window" ++msgid "Single-key shortcuts (if enabled)" ++msgstr "Prečaci jednom tipkom (ako je omogućeno)" ++ ++#: ui/gtk/help-overlay.ui:274 ++msgctxt "shortcut window" ++msgid "Reply to sender " ++msgstr "Odgovori pošiljatelju " ++ ++#: ui/gtk/help-overlay.ui:361 ++msgctxt "shortcut window" ++msgid "Select next/previous conversations" ++msgstr "Odaberi prijašnje/sljedeće razgovore" ++ ++#: ui/gtk/help-overlay.ui:373 ++msgid "Composer Shortcuts" ++msgstr "Prečaci sastavljača" ++ ++#: ui/gtk/help-overlay.ui:381 ++msgctxt "shortcut window" ++msgid "Send" ++msgstr "Pošalji" ++ ++#: ui/gtk/help-overlay.ui:388 ++msgctxt "shortcut window" ++msgid "Add attachment" ++msgstr "Dodaj privitak" ++ ++#: ui/gtk/help-overlay.ui:395 ++msgctxt "shortcut window" ++msgid "Detach the composer" ++msgstr "Odvoji sastavljača" ++ ++#: ui/gtk/help-overlay.ui:408 ++msgctxt "shortcut window" ++msgid "Close composer window" ++msgstr "Zatvori prozor sastavljača" ++ ++#: ui/gtk/help-overlay.ui:415 ++msgctxt "shortcut window" ++msgid "Detach composer window" ++msgstr "Odvoji prozor sastavljača" ++ ++#: ui/gtk/help-overlay.ui:422 ++msgctxt "shortcut window" ++msgid "Editing" ++msgstr "Uređivanje" ++ ++#: ui/gtk/help-overlay.ui:427 ++msgctxt "shortcut window" ++msgid "Move selection to the clipboard" ++msgstr "Premjesti odabir u međuspremnik" ++ ++#: ui/gtk/help-overlay.ui:434 ++msgctxt "shortcut window" ++msgid "Copy selection to clipboard" ++msgstr "Kopiraj odabir u međuspremnik" ++ ++#: ui/gtk/help-overlay.ui:441 ++msgctxt "shortcut window" ++msgid "Paste from the clipboard" ++msgstr "Zalijepi iz međuspremnika" ++ ++#: ui/gtk/help-overlay.ui:448 ++msgctxt "shortcut window" ++msgid "Quote text" ++msgstr "Citiraj tekst" ++ ++#: ui/gtk/help-overlay.ui:455 ++msgctxt "shortcut window" ++msgid "Unquote text" ++msgstr "Ukloni citat teksta" ++ ++#: ui/gtk/help-overlay.ui:464 ++msgctxt "shortcut window" ++msgid "Rich text editing" ++msgstr "Uređivanje obogaćenog teksta" ++ ++#: ui/gtk/help-overlay.ui:468 ++msgctxt "shortcut window" ++msgid "Paste without formatting" ++msgstr "Zalijepi bez oblikovanja" ++ ++#: ui/gtk/help-overlay.ui:475 ++msgctxt "shortcut window" ++msgid "Bold text" ++msgstr "Podebljni tekst" ++ ++#: ui/gtk/help-overlay.ui:482 ++msgctxt "shortcut window" ++msgid "Italicize text" ++msgstr "Ukošeni tekst" ++ ++#: ui/gtk/help-overlay.ui:489 ++msgctxt "shortcut window" ++msgid "Underline text" ++msgstr "Podvučeni tekst" ++ ++#: ui/gtk/help-overlay.ui:496 ++msgctxt "shortcut window" ++msgid "Strike text" ++msgstr "Precrtani tekst" ++ ++#: ui/gtk/help-overlay.ui:503 ++msgctxt "shortcut window" ++msgid "Remove formatting" ++msgstr "Ukloni oblikovanje" ++ ++#: ui/gtk/help-overlay.ui:510 ++msgctxt "shortcut window" ++msgid "Insert an image" ++msgstr "Umetni sliku" ++ ++#: ui/gtk/help-overlay.ui:517 ++msgctxt "shortcut window" ++msgid "Insert a link" ++msgstr "Umetni poveznicu" ++ ++#: ui/main-toolbar.ui:24 ++msgctxt "tooltip" ++msgid "Compose Message" ++msgstr "Sastavljanje poruke" ++ ++#: ui/main-toolbar.ui:62 ++msgid "Toggle search bar" ++msgstr "Uklj/Isklj traku pretrage" ++ ++#: ui/main-toolbar.ui:114 ++msgid "Reply" ++msgstr "Odgovori" ++ ++#: ui/main-toolbar.ui:137 ++msgid "Reply All" ++msgstr "Odgovori svima" ++ ++#: ui/main-toolbar.ui:160 ++msgid "Forward" ++msgstr "Proslijedi" ++ ++#: ui/main-toolbar.ui:265 ++msgid "Toggle find bar" ++msgstr "Uklj/Isklj traku pretrage" ++ ++#: ui/main-toolbar.ui:286 ++msgid "_Archive" ++msgstr "_Arhiva" ++ ++#: ui/main-toolbar-menus.ui:21 ++msgid "Toggle as _Junk" ++msgstr "Označi kao _neželjenu poštu" ++ ++#: ui/main-toolbar-menus.ui:28 ++msgid "_Accounts" ++msgstr "_Računi" ++ ++#: ui/main-toolbar-menus.ui:36 ++msgid "_Keyboard Shortcuts" ++msgstr "_Prečaci tipkovnice" ++ ++#: ui/main-toolbar-menus.ui:47 ++msgid "_About Geary" ++msgstr "_O Gearyu" ++ ++#: ui/password-dialog.glade:74 ++msgid "SMTP Credentials" ++msgstr "SMTP vjerodajnice" ++ ++#: ui/password-dialog.glade:91 ++msgid "Username" ++msgstr "Korisničko ime" ++ ++#: ui/password-dialog.glade:152 ++msgid "_Remember password" ++msgstr "_Zapamti lozinku" ++ ++#: ui/password-dialog.glade:210 ++msgid "_Authenticate" ++msgstr "_Ovjera" ++ ++#: ui/upgrade_dialog.glade:60 ++msgid "Geary update in progress…" ++msgstr "Geary nadopuna u tijeku…" ++ ++#~ msgid "Log periodic activity" ++#~ msgstr "Zapisuj povremene aktivnosti" ++ ++#~ msgid "Log IMAP network serialization" ++#~ msgstr "Zapisuj serijalizaciju IMAP mreže" ++ ++#~ msgid "Desktop Notifications" ++#~ msgstr "Obavijesti radne površine" ++ ++#~ msgid "Displays desktop notifications when new email is delivered" ++#~ msgstr "Obavijest radnog okruženja o dostavi nove pošte" ++ ++#~ msgid "Folder Highlight" ++#~ msgstr "Naglašavanje mape" ++ ++#~ msgid "Highlights folders that have newly delivered mail" ++#~ msgstr "Naglasi mape koje imaju novo dostavljenu e-poštu" ++ ++#~ msgid "Notification Badge" ++#~ msgstr "Značka obavijesti" ++ ++#~ msgid "Displays a dock badge showing the number of new messages" ++#~ msgstr "" ++#~ "Prikazuje značku obavijesti u doku na kojoj se prikazuje broj novih poruka" ++ ++#~ msgid "Special Folders" ++#~ msgstr "Posebne mape" ++ ++#~ msgctxt "shortcut window" ++#~ msgid "Find in current conversations" ++#~ msgstr "Pretraži u trenutnim razgovorima" ++ ++#~ msgid "mail-send" ++#~ msgstr "mail-send" ++ ++#~ msgid "@appid@" ++#~ msgstr "@appid@" ++ ++#~ msgid "Sent Mail" ++#~ msgstr "Slanje pošte" ++ ++#~ msgid "Spam" ++#~ msgstr "Neželjena pošta" ++ ++#~ msgid "" ++#~ "Your computer does not appear to be connected to the Internet.\n" ++#~ "You will not be able to send or receive email until it is re-connected." ++#~ msgstr "" ++#~ "Čini se da vaše računalo nema pristup internetu.\n" ++#~ "Nećete moći slati ili primati e-poštu dok se ponovno ne povežete s " ++#~ "internetom." ++ ++#~ msgid "" ++#~ "An account has reported an untrusted server.\n" ++#~ "Please check the server configuration and try again." ++#~ msgstr "" ++#~ "Račun je prijavio nepouzdanog poslužitelja.\n" ++#~ "Provjerite postavke poslužitelja i pokušajte ponovno." ++ ++#~ msgid "" ++#~ "An account has reported an incorrect login or password.\n" ++#~ "Please check your login name and try again." ++#~ msgstr "" ++#~ "Račun je prijavio nevaljanu lozinku prijave.\n" ++#~ "Provjerite svoje ime prijave i pokušajte ponovno." ++ ++#~ msgid "From" ++#~ msgstr "Šalje" ++ ++#~ msgid "Edit Draft" ++#~ msgstr "Uredi skicu" ++ ++#~ msgid "Empty _Spam…" ++#~ msgstr "Isprazni _neželjenu poštu…" ++ ++#~ msgid "Empty _Trash…" ++#~ msgstr "Isprazni _smeće…" ++ ++#~ msgid "%a, %b %-e, %Y at %-l:%M %p" ++#~ msgstr "%a, %-e. %b, %Y u %H:%M %p" ++ ++#~ msgctxt "Default clock format" ++#~ msgid "%l:%M %P" ++#~ msgstr "%H:%M" ++ ++#~ msgid "%x" ++#~ msgstr "%x" ++ ++#~ msgid "Allow inspection of WebView" ++#~ msgstr "Dozvoliti inspekciju WebView-a" ++ ++#~ msgid "Bold (Ctrl+B)" ++#~ msgstr "Zadebljano (Ctrl+B)" ++ ++#~ msgid "C_olor" ++#~ msgstr "B_oja" ++ ++#~ msgid "Failed to open default text editor." ++#~ msgstr "Nije bilo moguće otvoriti podrazumijevani uređivač teksta" ++ ++#~ msgid "Failed to parse command line options: %s\n" ++#~ msgstr "Nije bilo moguće izvršiti opcije komandne linije: %s\n" ++ ++#~ msgid "Indexing %s account" ++#~ msgstr "Indeksiranje %s računa" ++ ++#~ msgid "Italic (Ctrl+I)" ++#~ msgstr "Kurziv (Ctrl+I)" ++ ++#~ msgid "Log network deserialization" ++#~ msgstr "Bilježi serijalizaciju mreže" ++ ++#~ msgid "Log network serialization" ++#~ msgstr "Logiranje mrežne serijalizacije" ++ ++#~ msgid "Mark as S_pam" ++#~ msgstr "Označi kao S_pam" ++ ++#~ msgid "Mark as not S_pam" ++#~ msgstr "Označi da nije S_pam" ++ ++#~ msgid "Open" ++#~ msgstr "Otvaranje" ++ ++#~ msgid "Output debugging information" ++#~ msgstr "Ispis informacije o debugiranju" ++ ++#~ msgid "Please report comments, suggestions and bugs to:" ++#~ msgstr "Molimo, šaljite vaše komentare, prijedloge i bugove na:" ++ ++#~ msgid "Quote text (Ctrl+])" ++#~ msgstr "Citiraj tekst (Ctrl+])" ++ ++#~ msgid "Reading" ++#~ msgstr "Čitanje" ++ ++#~ msgid "Search all mail in account for keywords (Ctrl+S)" ++#~ msgstr "Pretraži svu poštu unutar računa po ključnim riječima (Ctrl+S)" ++ ++#~ msgid "Strikethrough (Ctrl+K)" ++#~ msgstr "Precrtano (Ctrl+K)" ++ ++#~ msgid "Underline (Ctrl+U)" ++#~ msgstr "Podcrtano (Ctrl+U)" ++ ++#~ msgid "_Play notification sounds" ++#~ msgstr "_Zvuk napomena" ++ ++#~ msgid " • Connection error.\n" ++#~ msgstr " • Greška spajanja.\n" ++ ++#~ msgid " • Email address already added to Geary.\n" ++#~ msgstr " • Adresa e-pošte je već dodana u Geary.\n" ++ ++#~ msgid " • IMAP connection error.\n" ++#~ msgstr " • Greška IMAP spajanja.\n" ++ ++#~ msgid " • IMAP username or password incorrect.\n" ++#~ msgstr " • IMAP korisničko ime i lozinka netočni.\n" ++ ++#~ msgid " • Invalid account nickname.\n" ++#~ msgstr " • Neispravan nadimak računa.\n" ++ ++#~ msgid " • SMTP connection error.\n" ++#~ msgstr " • Greška SMTP konekcije.\n" ++ ++#~ msgid " • SMTP username or password incorrect.\n" ++#~ msgstr " • SMTP korisničko ime i lozinka netočni.\n" ++ ++#~ msgid " • Username or password incorrect.\n" ++#~ msgstr " • Korisničko ime i lozinka netočni.\n" ++ ++#~ msgid " (Invalid?)" ++#~ msgstr " (Neispravno?)" ++ ++#~ msgid "%i matches" ++#~ msgstr "%i rezultata" ++ ++#~ msgid "%i matches (wrapped)" ++#~ msgstr "%i rezultata (označeno)" ++ ++#~ msgid "%u read messages" ++#~ msgstr "%u pročitanih poruka" ++ ++#~ msgid "Archive conversation (Delete, Backspace, A)" ++#~ msgstr "Arhiviranje razgovora (Delete, Bakspace, A)" ++ ++#~ msgid "Archive conversations (Delete, Backspace, A)" ++#~ msgstr "Arhiviranje razgovora (Delete, Bakspace, A)" ++ ++#~ msgid "Copy _Link" ++#~ msgstr "Kopiranje _linka" ++ ++#~ msgid "Copyright 2011-2013 Yorba Foundation" ++#~ msgstr "Copyright 2011-2013 Yorba Foundation" ++ ++#~ msgid "Delete conversation (Delete, Backspace, A)" ++#~ msgstr "Brisanje razgovora (Delete, Bakspace, A)" ++ ++#~ msgid "Delete conversations (Delete, Backspace, A)" ++#~ msgstr "Brisanje razgovora (Delete, Bakspace, A)" ++ ++#~ msgid "Do you want to discard the unsaved message?" ++#~ msgstr "Želite li zaista odbaciti ovu poruku?" ++ ++#~ msgid "E_mail address:" ++#~ msgstr "Adrese e-pošte:" ++ ++#~ msgid "Encr_yption:" ++#~ msgstr "E_nkripcija:" ++ ++#~ msgid "Encrypt_ion:" ++#~ msgstr "Enkripc_ija:" ++ ++#~ msgid "IMAP Credentials" ++#~ msgstr "IMAP prijava" ++ ++#~ msgid "Large" ++#~ msgstr "Veliko" ++ ++#~ msgid "Link (Ctrl+L)" ++#~ msgstr "Link (Ctrl+L)" ++ ++#~ msgid "Mail Client" ++#~ msgstr "Klijent za e-mail" ++ ++#~ msgid "Medium" ++#~ msgstr "Srednje" ++ ++#~ msgid "N_ame:" ++#~ msgstr "I_me:" ++ ++#~ msgid "N_ickname:" ++#~ msgstr "Nad_imak" ++ ++#~ msgid "No search results found." ++#~ msgstr "Nema rezultata unutar pretrage." ++ ++#~ msgid "P_ort:" ++#~ msgstr "P_ort:" ++ ++#~ msgid "Pass_word:" ++#~ msgstr "_Lozinka:" ++ ++#~ msgid "Password:" ++#~ msgstr "Lozinka:" ++ ++#~ msgid "Por_t:" ++#~ msgstr "Por_t:" ++ ++#~ msgid "Port:" ++#~ msgstr "Port:" ++ ++#~ msgid "Real name:" ++#~ msgstr "Stvarno ime:" ++ ++#~ msgid "SSL" ++#~ msgstr "SSL" ++ ++#~ msgid "SSL/TLS encryption:" ++#~ msgstr "SSL/TLS enkripcija:" ++ ++#~ msgid "S_ervice:" ++#~ msgstr "Servis:" ++ ++#~ msgid "Se_rver:" ++#~ msgstr "Se_rver:" ++ ++#~ msgid "Ser_ver:" ++#~ msgstr "Ser_ver:" ++ ++#~ msgid "Server:" ++#~ msgstr "Server:" ++ ++#~ msgid "Service:" ++#~ msgstr "Usluga:" ++ ++#~ msgid "Small" ++#~ msgstr "Malo" ++ ++#~ msgid "" ++#~ "The version number of the local mail database is formatted for a newer " ++#~ "version of Geary. Unfortunately, the database cannot be \"rolled back\" " ++#~ "to work with this version of Geary.\n" ++#~ "\n" ++#~ "Please install the latest version of Geary and try again." ++#~ msgstr "" ++#~ "Broj verzije lokalne baze podataka e-pošte je formatiran za noviju " ++#~ "inačicu Gearyija. Na žalost, bazu podataka nije moguće \"vratiti natrag\" " ++#~ "za rad sa ovom inačicom Gearyija.\n" ++#~ "\n" ++#~ "Molimo instalirajte najnoviju inačicu Gearyija i pokušajte ponovo." ++ ++#~ msgid "Unrecognized command line option \"%s\"\n" ++#~ msgstr "Nepoznata opcija komandne linije \"%s\"\n" ++ ++#~ msgid "User_name:" ++#~ msgstr "Korisničko _ime::" ++ ++#~ msgid "_Center" ++#~ msgstr "_Centar" ++ ++#~ msgid "_Donate" ++#~ msgstr "_Doniraj" ++ ++#~ msgid "_Justify" ++#~ msgstr "_Poravnanje" ++ ++#~ msgid "_Left" ++#~ msgstr "_Lijevo" ++ ++#~ msgid "_Mark as..." ++#~ msgstr "_Označi kao..." ++ ++#~ msgid "_Password:" ++#~ msgstr "_Lozinka:" ++ ++#~ msgid "_Right" ++#~ msgstr "_Desno" ++ ++#~ msgid "_Username:" ++#~ msgstr "_Korisničko ime:" ++ ++#~ msgid "attach|enclosed|enclosing|cover letter" ++#~ msgstr "priloži|uloži|uloženo|naslovi pismo" ++ ++#~ msgid "none" ++#~ msgstr "nema" +-- +2.29.2 + diff --git a/mail-client/geary/files/0016-Update-Slovak-translation.patch b/mail-client/geary/files/0016-Update-Slovak-translation.patch new file mode 100644 index 0000000..4a46293 --- /dev/null +++ b/mail-client/geary/files/0016-Update-Slovak-translation.patch @@ -0,0 +1,3209 @@ +From e56e2a8e5483ad7a4273e6b6851233ed33b6b153 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Du=C5=A1an=20Kazik?= +Date: Wed, 16 Sep 2020 11:28:54 +0000 +Subject: [PATCH 016/124] Update Slovak translation + +--- + po/sk.po | 1730 ++++++++++++++++++++++++++++++------------------------ + 1 file changed, 973 insertions(+), 757 deletions(-) + +diff --git a/po/sk.po b/po/sk.po +index 1b1196ae..8fc3e1f4 100644 +--- a/po/sk.po ++++ b/po/sk.po +@@ -10,16 +10,16 @@ msgid "" + msgstr "" + "Project-Id-Version: geary-0.4.1\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-05-04 08:24+0000\n" +-"PO-Revision-Date: 2020-05-08 14:50+0200\n" ++"POT-Creation-Date: 2020-08-29 01:59+0000\n" ++"PO-Revision-Date: 2020-09-16 13:28+0200\n" + "Last-Translator: Dušan Kazik \n" + "Language-Team: Slovak \n" + "Language: sk\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0\n" +-"X-Generator: Gtranslator 3.36.0\n" ++"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" ++"X-Generator: Poedit 2.4.1\n" + + #: desktop/geary-attach.contract.desktop.in:3 + msgid "Send by email" +@@ -31,10 +31,10 @@ msgstr "Odošle súbory pomocou aplikácie Geary" + + #. Translators: The application name + #: desktop/geary-autostart.desktop.in.in:3 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:12 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 +-#: src/client/accounts/accounts-editor-servers-pane.vala:555 +-#: src/client/application/application-main-window.vala:555 ++#: src/client/accounts/accounts-editor-servers-pane.vala:560 ++#: src/client/application/application-main-window.vala:608 + msgid "Geary" + msgstr "Geary" + +@@ -45,9 +45,9 @@ msgstr "Email" + + #. Translators: The application's summary / tagline + #: desktop/geary-autostart.desktop.in.in:5 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:16 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:15 + #: desktop/org.gnome.Geary.desktop.in.in:5 +-#: src/client/application/application-client.vala:32 ++#: src/client/application/application-client.vala:33 + msgid "Send and receive email" + msgstr "Odosiela a prijíma emaily" + +@@ -57,11 +57,11 @@ msgid "Email;E-mail;Mail;" + msgstr "email;e-mail;pošta;" + + #. Translators: The development team's name +-#: desktop/org.gnome.Geary.appdata.xml.in.in:14 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:13 + msgid "Geary Development Team" + msgstr "Tím vývojárov aplikácie Geary" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:18 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:17 + msgid "" + "Geary is an email application built around conversations, for the GNOME 3 " + "desktop. It allows you to read, find and send email with a straightforward, " +@@ -71,7 +71,7 @@ msgstr "" + "Umožňuje vám prečítať, hľadať a odosielať emaily s jasným a moderným " + "rozhraním." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:23 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:22 + msgid "" + "Conversations allow you to read a complete discussion without having to find " + "and click from message to message." +@@ -79,43 +79,43 @@ msgstr "" + "Rozhovory vám umožňujú prečítať kompletnú diskusiu bez nutnosti vyhľadania a " + "klikania zo správy na správu." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:27 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:26 + msgid "Geary’s features include:" + msgstr "Funkcie aplikácie Geary zahŕňajú:" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:29 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:28 + msgid "Quick email account setup" + msgstr "Rýchle nastavenie emailového účtu" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:30 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:29 + msgid "Shows related messages together in conversations" + msgstr "Zobrazenie spolu súvisiacich správ v rozhovoroch" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:31 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:30 + msgid "Fast, full text and keyword search" + msgstr "Rýchle, fulltextové vyhľadávanie a hľadanie podľa kľúčového slova" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:32 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:31 + msgid "Full-featured HTML and plain text message composer" + msgstr "Plnohodnotný nástroj na tvorbu správ vo formáte HTML a v čistom texte" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:33 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:32 + msgid "Desktop notification of new mail" + msgstr "Upozornenie pracovného prostredia na novú poštu" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:34 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:33 + msgid "Compatible with GMail, Yahoo! Mail, Outlook.com and other IMAP servers" + msgstr "" + "Kompatibilita so servermi GMail, Yahoo! Mail, Outlook.com a inými servermi " + "typu IMAP" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:48 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:47 + msgid "Geary displaying a conversation" + msgstr "Aplikácia Geary zobrazujúca rozhovor" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:59 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:58 + msgid "Geary showing the rich text composer" + msgstr "Aplikácia Geary zobrazujúca tvorcu správ s formátovaným textom" + +@@ -323,10 +323,18 @@ msgid "" + msgstr "" + + #: desktop/org.gnome.Geary.gschema.xml:146 ++msgid "List of optional plugins" ++msgstr "Zoznam voliteľných zásuvných modulov" ++ ++#: desktop/org.gnome.Geary.gschema.xml:147 ++msgid "Plugins listed here will be loaded on startup." ++msgstr "Zásuvné moduly z tohto zoznamu budú načítané po spustení." ++ ++#: desktop/org.gnome.Geary.gschema.xml:152 + msgid "Whether we migrated the old settings" + msgstr "Či sa majú migrovať staré nastavenia" + +-#: desktop/org.gnome.Geary.gschema.xml:147 ++#: desktop/org.gnome.Geary.gschema.xml:153 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -346,13 +354,13 @@ msgstr "Všetci ostatní" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:195 +-#: src/client/accounts/accounts-editor-servers-pane.vala:316 ++#: src/client/accounts/accounts-editor-servers-pane.vala:321 + msgid "Check your receiving login and password" + msgstr "Skontrolujte vaše prihlasovacie meno a heslo pre prijímanie" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:210 +-#: src/client/accounts/accounts-editor-servers-pane.vala:329 ++#: src/client/accounts/accounts-editor-servers-pane.vala:334 + msgid "Check your receiving server details" + msgstr "Skontrolujte vaše podrobnosti serveru prijímania" + +@@ -362,13 +370,13 @@ msgstr "Skontrolujte vaše podrobnosti serveru prijímania" + #. specify custom creds here + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:232 +-#: src/client/accounts/accounts-editor-servers-pane.vala:350 ++#: src/client/accounts/accounts-editor-servers-pane.vala:355 + msgid "Check your sending login and password" + msgstr "Skontrolujte vaše prihlasovacie meno a heslo pre odosielanie" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:246 +-#: src/client/accounts/accounts-editor-servers-pane.vala:363 ++#: src/client/accounts/accounts-editor-servers-pane.vala:368 + msgid "Check your sending server details" + msgstr "Skontrolujte vaše podrobnosti serveru odosielania" + +@@ -424,14 +432,14 @@ msgstr "osoba@priklad.sk" + #. Translators: Label for the user's login name for an + #. IMAP, SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:593 +-#: src/client/accounts/accounts-editor-servers-pane.vala:884 ++#: src/client/accounts/accounts-editor-servers-pane.vala:889 + msgid "Login name" + msgstr "Prihlasovacie meno" + + #. Translators: Label for the user's password for an IMAP, + #. SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:607 +-#: src/client/accounts/accounts-editor-servers-pane.vala:1006 ++#: src/client/accounts/accounts-editor-servers-pane.vala:1011 + #: ui/password-dialog.glade:108 + msgid "Password" + msgstr "Heslo" +@@ -441,7 +449,7 @@ msgstr "Heslo" + #. Translators: This label describes the host name or IP + #. address and port used by an account's IMAP service. + #: src/client/accounts/accounts-editor-add-pane.vala:629 +-#: src/client/accounts/accounts-editor-servers-pane.vala:728 ++#: src/client/accounts/accounts-editor-servers-pane.vala:733 + msgid "IMAP server" + msgstr "Server IMAP" + +@@ -456,7 +464,7 @@ msgstr "imap.priklad.sk" + #. Translators: This label describes the host name or IP + #. address and port used by an account's SMTP service. + #: src/client/accounts/accounts-editor-add-pane.vala:638 +-#: src/client/accounts/accounts-editor-servers-pane.vala:734 ++#: src/client/accounts/accounts-editor-servers-pane.vala:739 + msgid "SMTP server" + msgstr "Server SMTP" + +@@ -602,55 +610,54 @@ msgstr[1] "starú %d deň" + msgstr[2] "starú %d dni" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2053 ++#: src/client/application/application-main-window.vala:2061 + msgid "Undo" + msgstr "Vrátiť späť" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2036 ++#: src/client/application/application-main-window.vala:2044 + msgid "Redo" + msgstr "Znovu vykonať" + + #: src/client/accounts/accounts-editor-list-pane.vala:358 +-#: src/client/accounts/accounts-editor-list-pane.vala:446 ++#: src/client/accounts/accounts-editor-list-pane.vala:454 + #: src/client/accounts/accounts-editor-row.vala:279 + msgid "Gmail" + msgstr "Gmail" + + #: src/client/accounts/accounts-editor-list-pane.vala:362 +-#: src/client/accounts/accounts-editor-list-pane.vala:450 ++#: src/client/accounts/accounts-editor-list-pane.vala:458 + #: src/client/accounts/accounts-editor-row.vala:283 + msgid "Outlook.com" + msgstr "Outlook.com" + + #: src/client/accounts/accounts-editor-list-pane.vala:366 +-#: src/client/accounts/accounts-editor-list-pane.vala:454 ++#: src/client/accounts/accounts-editor-list-pane.vala:462 + #: src/client/accounts/accounts-editor-row.vala:287 + msgid "Yahoo" + msgstr "Yahoo" + + #. Translators: Tooltip for accounts that have been + #. loaded but disabled by the user. +-#: src/client/accounts/accounts-editor-list-pane.vala:384 ++#: src/client/accounts/accounts-editor-list-pane.vala:388 + msgid "This account has been disabled" + msgstr "Tento účet bol zakázaný" + + #. Translators: Tooltip for accounts that have been + #. loaded but because of some error are not able to be + #. used. +-#: src/client/accounts/accounts-editor-list-pane.vala:393 ++#: src/client/accounts/accounts-editor-list-pane.vala:397 + msgid "This account has encountered a problem and is unavailable" + msgstr "Tento účet narazil na problém a nie je dostupný" + +-#. Translators: Label for adding a generic email account +-#: src/client/accounts/accounts-editor-list-pane.vala:443 ++#: src/client/accounts/accounts-editor-list-pane.vala:466 + msgid "Other email providers" + msgstr "Iní poskytovatelia emailu" + + #. Translators: Notification shown after removing an + #. account. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:560 ++#: src/client/accounts/accounts-editor-list-pane.vala:572 + #, c-format + msgid "Account “%s” removed" + msgstr "Účet „%s“ bol odstránený" +@@ -658,7 +665,7 @@ msgstr "Účet „%s“ bol odstránený" + #. Translators: Notification shown after removing an account + #. is undone. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:567 ++#: src/client/accounts/accounts-editor-list-pane.vala:579 + #, c-format + msgid "Account “%s” restored" + msgstr "Účet „%s“ bol obnovený" +@@ -671,67 +678,66 @@ msgstr "Ťahaním presuniete túto položku" + #. Translators: Label describes the service provider + #. hosting the email account, e.g. Gmail, Yahoo, or some + #. other generic IMAP service. +-#: src/client/accounts/accounts-editor-row.vala:295 ++#: src/client/accounts/accounts-editor-row.vala:299 + msgid "Service provider" + msgstr "Poskytovateľ služby" + + #. Translators: This label describes what form of transport + #. security (TLS, StartTLS, etc) used by an account's IMAP or SMTP + #. service. +-#: src/client/accounts/accounts-editor-row.vala:468 ++#: src/client/accounts/accounts-editor-row.vala:473 + msgid "Connection security" + msgstr "Zabezpečenie pripojenia" + + #. Translators: Label used when no auth scheme is used + #. by an account's IMAP or SMTP service. +-#: src/client/accounts/accounts-editor-row.vala:479 +-#: src/client/accounts/accounts-editor-servers-pane.vala:755 +-#: src/client/accounts/accounts-editor-servers-pane.vala:970 +-#: src/engine/api/geary-special-folder-type.vala:58 ++#: src/client/accounts/accounts-editor-row.vala:484 ++#: src/client/accounts/accounts-editor-servers-pane.vala:760 ++#: src/client/accounts/accounts-editor-servers-pane.vala:975 + msgid "None" + msgstr "Nič" + +-#: src/client/accounts/accounts-editor-row.vala:486 ++#: src/client/accounts/accounts-editor-row.vala:491 + msgid "StartTLS" + msgstr "StartTLS" + +-#: src/client/accounts/accounts-editor-row.vala:493 ++#: src/client/accounts/accounts-editor-row.vala:498 + msgid "TLS" + msgstr "TLS" + + #. Translators: Label for source of SMTP authentication + #. credentials (none, use IMAP, custom) when adding a new + #. account +-#. Button label for retrying when a login error has occurred +-#: src/client/accounts/accounts-editor-row.vala:534 +-#: ui/application-main-window.ui:346 ++#. Translators: An info bar button label ++#: src/client/accounts/accounts-editor-row.vala:539 ++#: src/client/application/application-main-window.vala:554 + msgid "Login" + msgstr "Prihlásenie" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (none) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:541 ++#: src/client/accounts/accounts-editor-row.vala:546 + msgid "No login needed" + msgstr "Nie je potrebné prihlásenie" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (use IMAP) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:549 ++#: src/client/accounts/accounts-editor-row.vala:554 + msgid "Use same login as receiving" + msgstr "Použiť rovnaké prihlásenie ako pre prijímanie" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (custom) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:557 ++#: src/client/accounts/accounts-editor-row.vala:562 + msgid "Use a different login" + msgstr "Použiť iné prihlásenie" + + #. Translators: In-app notification label, the + #. string substitution is a more detailed reason. +-#: src/client/accounts/accounts-editor-servers-pane.vala:377 ++#: src/client/accounts/accounts-editor-servers-pane.vala:382 + #, c-format + msgid "Account not updated: %s" + msgstr "Účet nebol aktualizovaný: %s" +@@ -739,23 +745,23 @@ msgstr "Účet nebol aktualizovaný: %s" + #. Translators: This label describes the program that + #. created the account, e.g. an SSO service like GOA, or + #. locally by Geary. +-#: src/client/accounts/accounts-editor-servers-pane.vala:540 ++#: src/client/accounts/accounts-editor-servers-pane.vala:545 + msgid "Account source" + msgstr "Zdroj účtu" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:552 ++#: src/client/accounts/accounts-editor-servers-pane.vala:557 + msgid "GNOME Online Accounts" + msgstr "Účty služieb prostredia GNOME" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:611 ++#: src/client/accounts/accounts-editor-servers-pane.vala:616 + msgid "Save draft email on server" + msgstr "Uložiť koncepty na serveri" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:666 ++#: src/client/accounts/accounts-editor-servers-pane.vala:671 + msgid "Save sent email on server" + msgstr "Uložiť odoslanú poštu na serveri" + +@@ -764,12 +770,12 @@ msgstr "Uložiť odoslanú poštu na serveri" + #. Translators: Label used when an account's IMAP or + #. SMTP service uses OAuth2. The string replacement is + #. the service's login name. +-#: src/client/accounts/accounts-editor-servers-pane.vala:956 ++#: src/client/accounts/accounts-editor-servers-pane.vala:961 + #, c-format + msgid "%s using OAuth2" + msgstr "%s s použitím OAuth2" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:966 ++#: src/client/accounts/accounts-editor-servers-pane.vala:971 + msgid "Use receiving server login" + msgstr "Použiť prihlasovacie údaje ako pre server prijímania" + +@@ -800,63 +806,55 @@ msgstr "Súbor v „%s“ už existuje. Nahradením sa prepíše jeho obsah." + msgid "_Replace" + msgstr "_Nahradiť" + +-#: src/client/application/application-client.vala:33 ++#: src/client/application/application-client.vala:34 + msgid "Copyright 2016 Software Freedom Conservancy Inc." + msgstr "Autorské práva 2016 Software Freedom Conservancy Inc." + +-#: src/client/application/application-client.vala:34 +-msgid "Copyright 2016-2019 Geary Development Team." +-msgstr "Autorské práva 2016-2019 Tím vývojárov aplikácie Geary." ++#: src/client/application/application-client.vala:35 ++msgid "Copyright 2016-2020 Geary Development Team." ++msgstr "Autorské práva 2016-2020 Tím vývojárov aplikácie Geary." + +-#: src/client/application/application-client.vala:36 ++#: src/client/application/application-client.vala:37 + msgid "Visit the Geary web site" + msgstr "Navštívte webovú stránku aplikácie Geary" + + #. / Command line option +-#: src/client/application/application-client.vala:94 ++#: src/client/application/application-client.vala:97 + msgid "Print debug logging" + msgstr "Vypíše ladiaci záznam" + + # cmd line desc + #. / Command line option +-#: src/client/application/application-client.vala:97 ++#: src/client/application/application-client.vala:100 + msgid "Start with the main window hidden (deprecated)" + msgstr "Spustí aplikáciu Geary so skrytým hlavným oknom (zastarané)" + + #. / Command line option +-#: src/client/application/application-client.vala:100 ++#: src/client/application/application-client.vala:103 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "Povolí inšpektora WebKitGTK vo webových zobrazeniach" + + #. / Command line option +-#: src/client/application/application-client.vala:103 ++#: src/client/application/application-client.vala:106 + msgid "Log conversation monitoring" + msgstr "Zaznamená monitorovanie rozhovorov" + + # cmd line desc + #. / Command line option +-#: src/client/application/application-client.vala:106 +-#, fuzzy +-#| msgid "Log network deserialization" ++#: src/client/application/application-client.vala:109 + msgid "Log IMAP network deserialization" +-msgstr "Zaznamená deserializáciu siete" ++msgstr "Zaznamená deserializáciu sieťového protokolu IMAP" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/application-client.vala:110 ++#: src/client/application/application-client.vala:113 + msgid "Log folder normalization" + msgstr "Zaznamená normalizáciu priečinkov" + +-#. / Command line option +-#: src/client/application/application-client.vala:113 +-msgid "Log network activity" +-msgstr "Zaznamená aktivitu siete" +- +-# cmd line desc + #. / Command line option + #: src/client/application/application-client.vala:116 +-msgid "Log periodic activity" +-msgstr "Periodicky zaznamená aktivitu" ++msgid "Log IMAP network activity" ++msgstr "Zaznamená aktivitu sieťového protokolu IMAP" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could +@@ -865,92 +863,88 @@ msgstr "Periodicky zaznamená aktivitu" + msgid "Log IMAP replay queue" + msgstr "Zaznamená frontu udalostí servera IMAP" + +-#. / Command line option. Serialization is how commands and +-#. / responses are converted into a stream of bytes for +-#. / network transmission +-#: src/client/application/application-client.vala:126 +-#, fuzzy +-#| msgid "Log network serialization" +-msgid "Log IMAP network serialization" +-msgstr "Zaznamená serializáciu siete" ++#. / Command line option ++#: src/client/application/application-client.vala:124 ++msgid "Log SMTP network activity" ++msgstr "Zaznamená aktivitu sieťového protokolu SMTP" + + #. / Command line option +-#: src/client/application/application-client.vala:129 ++#: src/client/application/application-client.vala:127 + msgid "Log database queries (generates lots of messages)" + msgstr "Zaznamená požiadavky databázy (vygeneruje množstvo správ)" + + #. / Command line option +-#: src/client/application/application-client.vala:132 ++#: src/client/application/application-client.vala:130 + msgid "Perform a graceful quit" + msgstr "Vykoná ukončenie podľa správnosti" + +-#: src/client/application/application-client.vala:134 ++#: src/client/application/application-client.vala:132 + msgid "Open a new window" + msgstr "Otvorí nové okno" + + #. / Command line option +-#: src/client/application/application-client.vala:137 ++#: src/client/application/application-client.vala:135 + msgid "Revoke all pinned TLS server certificates" + msgstr "Odvolá všetky certifikáty pripnutých serverov TLS" + + #. / Command line option +-#: src/client/application/application-client.vala:140 ++#: src/client/application/application-client.vala:138 + msgid "Display program version" + msgstr "Zobrazí verziu aplikácie" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:264 ++#: src/client/application/application-client.vala:262 + msgid "Geary version" + msgstr "Verzia aplikácie Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:266 ++#: src/client/application/application-client.vala:264 + msgid "Geary revision" + msgstr "Revízia aplikácie Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:268 ++#: src/client/application/application-client.vala:266 + msgid "GTK version" + msgstr "Verzia rozhrania GTK" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:275 ++#: src/client/application/application-client.vala:273 + msgid "GLib version" + msgstr "Verzia knižnice GLib" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:282 ++#: src/client/application/application-client.vala:280 + msgid "WebKitGTK version" + msgstr "Verzia WebKitGTK" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:289 ++#: src/client/application/application-client.vala:287 + msgid "Desktop environment" + msgstr "Pracovné prostredie" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:291 ++#: src/client/application/application-client.vala:289 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Neznámy" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:321 ++#: src/client/application/application-client.vala:293 + msgid "Distribution name" + msgstr "Názov distribúcie" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:326 ++#: src/client/application/application-client.vala:298 + msgid "Distribution release" + msgstr "Vydanie distribúcie" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:334 ++#: src/client/application/application-client.vala:303 + msgid "Installation prefix" + msgstr "Predpona inštalácie" + +-#: src/client/application/application-client.vala:587 ++#: src/client/application/application-client.vala:559 + #, c-format + msgid "About %s" + msgstr "O %s" +@@ -958,36 +952,36 @@ msgstr "O %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:591 ++#: src/client/application/application-client.vala:563 + msgid "translator-credits" + msgstr "Dušan Kazik " + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:937 ++#: src/client/application/application-client.vala:1047 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "Voľba „--hidden“ je zastaraná a bude v budúcnosti odstránená." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:970 ++#: src/client/application/application-client.vala:1080 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Nerozpoznaný parameter programu: „%s“" + + #. / Notification title. +-#: src/client/application/application-controller.vala:458 ++#: src/client/application/application-controller.vala:479 + #, c-format + msgid "A problem occurred sending email for %s" + msgstr "Vyskytol sa problém pri odosielaní emailu z účtu %s" + + #. / Notification body +-#: src/client/application/application-controller.vala:462 ++#: src/client/application/application-controller.vala:483 + msgid "Email will not be sent until re-connected" + msgstr "Email nebude odoslaný až do opätovného pripojenia" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:568 ++#: src/client/application/application-controller.vala:582 + msgid "Conversation marked" + msgid_plural "Conversations marked" + msgstr[0] "Rozhovory boli označené" +@@ -995,7 +989,7 @@ msgstr[1] "Rozhovor bol označený" + msgstr[2] "Rozhovory boli označené" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:574 ++#: src/client/application/application-controller.vala:588 + msgid "Conversation un-marked" + msgid_plural "Conversations un-marked" + msgstr[0] "Rozhovorom bolo zrušené označenie" +@@ -1005,8 +999,8 @@ msgstr[2] "Rozhovorom bolo zrušené označenie" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:600 +-#: src/client/application/application-controller.vala:684 ++#: src/client/application/application-controller.vala:614 ++#: src/client/application/application-controller.vala:698 + #, c-format + msgid "Conversation moved to %s" + msgid_plural "Conversations moved to %s" +@@ -1019,8 +1013,8 @@ msgstr[2] "Rozhovory boli presunuté do priečinka %s" + #. / of the source folder. + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:608 +-#: src/client/application/application-controller.vala:630 ++#: src/client/application/application-controller.vala:622 ++#: src/client/application/application-controller.vala:644 + #, c-format + msgid "Conversation restored to %s" + msgid_plural "Conversations restored to %s" +@@ -1029,7 +1023,7 @@ msgstr[1] "Rozhovor bol obnovený do priečinka %s" + msgstr[2] "Rozhovory boli obnovené do priečinka %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:651 ++#: src/client/application/application-controller.vala:665 + msgid "Conversation archived" + msgid_plural "Conversations archived" + msgstr[0] "Rozhovory boli archivované" +@@ -1038,7 +1032,7 @@ msgstr[2] "Rozhovory boli archivované" + + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:707 ++#: src/client/application/application-controller.vala:721 + #, c-format + msgid "Message restored to %s" + msgid_plural "Messages restored to %s" +@@ -1047,7 +1041,7 @@ msgstr[1] "Správy boli obnovené do priečinka %s" + msgstr[2] "Správy boli obnovené do priečinka %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:728 ++#: src/client/application/application-controller.vala:742 + msgid "Message archived" + msgid_plural "Messages archived" + msgstr[0] "Správa bola archivovaná" +@@ -1057,7 +1051,7 @@ msgstr[2] "Správy boli archivované" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:763 ++#: src/client/application/application-controller.vala:777 + #, c-format + msgid "Message moved to %s" + msgid_plural "Messages moved to %s" +@@ -1068,7 +1062,7 @@ msgstr[2] "Správy boli presunuté do priečinka %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:791 ++#: src/client/application/application-controller.vala:805 + #, c-format + msgid "Conversation labelled as %s" + msgid_plural "Conversations labelled as %s" +@@ -1079,7 +1073,7 @@ msgstr[2] "Rozhovory boli označené ako %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:799 ++#: src/client/application/application-controller.vala:813 + #, c-format + msgid "Conversation un-labelled as %s" + msgid_plural "Conversations un-labelled as %s" +@@ -1087,12 +1081,12 @@ msgstr[0] "Rozhovorom bola zrušená menovka %s" + msgstr[1] "Rozhovoru bola zrušená menovka %s" + msgstr[2] "Rozhovorom bola zrušená menovka %s" + +-#: src/client/application/application-controller.vala:1223 ++#: src/client/application/application-controller.vala:1320 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Nie je možné otvoriť databázu pre %s" + +-#: src/client/application/application-controller.vala:1224 ++#: src/client/application/application-controller.vala:1321 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1117,20 +1111,20 @@ msgstr "" + "Znovu zostavenie databázy zničí všetku miestnu poštu a jej prílohy. Pošta " + "na serveri nebude ovplyvnená." + +-#: src/client/application/application-controller.vala:1226 ++#: src/client/application/application-controller.vala:1323 + msgid "_Rebuild" + msgstr "_Znovu zostaviť" + +-#: src/client/application/application-controller.vala:1226 ++#: src/client/application/application-controller.vala:1323 + msgid "E_xit" + msgstr "_Ukončiť" + +-#: src/client/application/application-controller.vala:1236 ++#: src/client/application/application-controller.vala:1333 + #, c-format + msgid "Unable to rebuild database for “%s”" + msgstr "Nie je možné znovu zostaviť databázu účtu „%s“" + +-#: src/client/application/application-controller.vala:1237 ++#: src/client/application/application-controller.vala:1334 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1143,92 +1137,142 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1561 ++#: src/client/application/application-controller.vala:1501 + #, c-format + msgid "Email sent to %s" + msgstr "Email pre %s bol odoslaný" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2656 ++#: src/client/application/application-controller.vala:2491 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "Email pre %s bol zaradený do fronty na doručenie" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2720 ++#: src/client/application/application-controller.vala:2555 + #, c-format + msgid "Email to %s saved" + msgstr "Email pre %s bol uložený" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2735 +-#: src/client/application/application-controller.vala:2793 ++#: src/client/application/application-controller.vala:2570 ++#: src/client/application/application-controller.vala:2628 + msgid "Composer could not be restored" + msgstr "Nepodarilo sa obnoviť tvorcu správ" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2778 ++#: src/client/application/application-controller.vala:2613 + #, c-format + msgid "Email to %s discarded" + msgstr "Email pre %s bol zahodený" + ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:540 ++msgid "Working offline" ++msgstr "Práca bez pripojenia" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:542 ++msgid "You will not be able to send or receive email until re-connected." ++msgstr "" ++"Nebudete môcť odoslať alebo prijať email, pokiaľ sa opätovne nepripojíte." ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:549 ++msgid "Login problem" ++msgstr "Problém s prihlásením" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:551 ++msgid "An account has reported an incorrect login or password." ++msgstr "Účet nahlásil nesprávne prihlasovacie meno alebo heslo." ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:558 ++msgid "Retry login, you will be prompted for your password" ++msgstr "Znovu sa pokúsi o prihlásenie, budete vyzvaný na zadanie hesla" ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:565 ++msgid "Security problem" ++msgstr "Problém so zabezpečením" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:567 ++msgid "An account has reported an untrusted server." ++msgstr "Účet nahlásil nedôveryhodný server." ++ ++#. Translators: An info bar button label ++#: src/client/application/application-main-window.vala:570 ++msgid "Check" ++msgstr "Skontrolovať" ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:574 ++msgid "Check the security details for the connection" ++msgstr "Skontroluje podrobnosti zabezpečenia pre pripojenie" ++ + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:560 ++#: src/client/application/application-main-window.vala:617 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" + +-#: src/client/application/application-main-window.vala:967 ++#. Translators: The name of the folder group containing ++#. folders created by people (as opposed to special-use ++#. folders) ++#: src/client/application/application-main-window.vala:996 ++#: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Menovky" + ++#: src/client/application/application-main-window.vala:1293 ++#, c-format ++msgid "Empty all email from your %s folder?" ++msgstr "Vyprázdniť všetky emaily z vášho priečinka %s?" ++ ++#: src/client/application/application-main-window.vala:1294 ++msgid "This removes the email from Geary and your email server." ++msgstr "" ++"Týmto sa odstránia všetky emaily z aplikácie Geary a vášho emailového " ++"servera." ++ ++#: src/client/application/application-main-window.vala:1295 ++msgid "This cannot be undone." ++msgstr "Táto akcia sa nebude dať vrátiť späť." ++ ++#: src/client/application/application-main-window.vala:1296 ++#, c-format ++msgid "Empty %s" ++msgstr "Vyprázdniť priečinok %s" ++ + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1306 ++#: src/client/application/application-main-window.vala:1353 + msgid "Do you want to permanently delete this conversation?" + msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Chcete natrvalo odstrániť tieto rozhovory?" + msgstr[1] "Chcete natrvalo odstrániť tento rozhovor?" + msgstr[2] "Chcete natrvalo odstrániť tieto rozhovory?" + +-#: src/client/application/application-main-window.vala:1311 +-#: src/client/application/application-main-window.vala:1326 ++#: src/client/application/application-main-window.vala:1358 ++#: src/client/application/application-main-window.vala:1373 + msgid "Delete" + msgstr "Odstrániť" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1321 ++#: src/client/application/application-main-window.vala:1368 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Chcete natrvalo odstrániť túto správu?" + msgstr[1] "Chcete natrvalo odstrániť tieto správy?" + msgstr[2] "Chcete natrvalo odstrániť tieto správy?" + +-#: src/client/application/application-main-window.vala:1334 +-#, c-format +-msgid "Empty all email from your %s folder?" +-msgstr "Vyprázdniť všetky emaily z vášho priečinka %s?" +- +-#: src/client/application/application-main-window.vala:1337 +-msgid "This removes the email from Geary and your email server." +-msgstr "" +-"Týmto sa odstránia všetky emaily z aplikácie Geary a vášho emailového " +-"servera." +- +-#: src/client/application/application-main-window.vala:1338 +-msgid "This cannot be undone." +-msgstr "Táto akcia sa nebude dať vrátiť späť." +- +-#: src/client/application/application-main-window.vala:1339 +-#, c-format +-msgid "Empty %s" +-msgstr "Vyprázdniť priečinok %s" +- +-#: src/client/application/application-main-window.vala:1669 ++#: src/client/application/application-main-window.vala:1691 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1239,7 +1283,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1839 ++#: src/client/composer/composer-widget.vala:1784 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1260,61 +1304,61 @@ msgstr "" + msgid "Don’t _ask me again" + msgstr "Nepýtať s_a znovu" + +-#: src/client/components/components-inspector.vala:72 ++#: src/client/components/components-inspector.vala:78 + msgid "Inspector" + msgstr "Inšpektor" + + #. / Translators: Title for Inspector logs pane + #. / Translators: Title for problem report dialog logs pane +-#: src/client/components/components-inspector.vala:87 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 ++#: src/client/components/components-inspector.vala:93 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 + msgid "Logs" + msgstr "Záznamy" + + #. / Translators: Title for Inspector system system information pane + #. / Translators: Title for problem report system information + #. / pane +-#: src/client/components/components-inspector.vala:91 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 ++#: src/client/components/components-inspector.vala:97 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 + msgid "System" + msgstr "Systém" + + #. Button label for saving problem report information +-#: src/client/components/components-inspector.vala:208 +-#: src/client/components/components-inspector.vala:211 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/problem-details-dialog.ui:42 ++#: src/client/components/components-inspector.vala:226 ++#: src/client/components/components-inspector.vala:229 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 ++#: ui/problem-details-dialog.ui:47 + msgid "Save As" + msgstr "Uložiť ako" + +-#: src/client/components/components-inspector.vala:212 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 ++#: src/client/components/components-inspector.vala:230 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 + #: ui/accounts_editor_servers_pane.ui:17 + msgid "Cancel" + msgstr "Zrušiť" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:43 ++#: src/client/components/components-preferences-window.vala:124 + msgid "_Automatically select next message" + msgstr "_Automaticky vybrať ďalšiu správu" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:53 ++#: src/client/components/components-preferences-window.vala:134 + msgid "_Display conversation preview" + msgstr "_Zobraziť náhľad rozhovoru" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:63 ++#: src/client/components/components-preferences-window.vala:144 + msgid "Use _three pane view" + msgstr "Použiť zobrazenie s _troma panelmi" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:73 ++#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "Použiť emailové klávesové skratky o _jednom klávese" + +-#: src/client/components/components-preferences-window.vala:75 ++#: src/client/components/components-preferences-window.vala:156 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" +@@ -1323,19 +1367,99 @@ msgstr "" + "klávesu " + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:86 ++#: src/client/components/components-preferences-window.vala:167 + msgid "_Watch for new mail when closed" + msgstr "_Sledovať novú poštu, keď je aplikácia zavretá" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:90 ++#: src/client/components/components-preferences-window.vala:171 + msgid "Geary will keep running after all windows are closed" + msgstr "Aplikácia Geary bude naďalej spustená aj po uzavretí všetkých okien" + ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:189 ++msgid "Preferences" ++msgstr "Nastavenia" ++ ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:250 ++msgid "Plugins" ++msgstr "Zásuvné moduly" ++ ++#. Translators: Info bar title for a generic account ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:36 ++msgid "Account problem" ++msgstr "Problém s účtom" ++ ++#. Translators: Info bar sub-title for a generic account ++#. problem. String substitution is the account name. ++#: src/client/components/components-problem-report-info-bar.vala:40 ++#, c-format ++msgid "Geary has encountered a problem with %s." ++msgstr "Aplikácia Geary narazila na problém s účtom %s." ++ ++#. Translators: Info bar sub-title for a generic ++#. account problem. String substitution is the ++#. account name. ++#: src/client/components/components-problem-report-info-bar.vala:53 ++#, c-format ++msgid "Geary encountered a problem checking mail for %s." ++msgstr "Aplikácia Geary narazila na problém pri kontrole pošty na účte %s." ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:57 ++msgid "Try reconnecting" ++msgstr "Skúsiť znovu pripojenie" ++ ++#. Translators: Info bar title for an outgoing ++#. account problem. String substitution is the ++#. account name ++#: src/client/components/components-problem-report-info-bar.vala:65 ++#, c-format ++msgid "Geary encountered a problem sending email for %s." ++msgstr "Aplikácia Geary narazila na problém pri odosielaní pošty z účtu %s." ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:69 ++msgid "Retry sending queued messages" ++msgstr "Skúsiť znovu odoslať správy vo fronte" ++ ++#. Translators: Info bar title for a generic application ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:76 ++msgid "Geary has encountered a problem" ++msgstr "Aplikácia Geary narazila na problém" ++ ++#. Translators: Info bar sub-title for a generic ++#. application problem. ++#: src/client/components/components-problem-report-info-bar.vala:80 ++msgid "Please report the details if it persists." ++msgstr "Prosím, ak problém pretrváva., nahláste podrobnosti." ++ ++#. Translators: Button label for viewing technical details ++#. for a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:94 ++msgid "_Details" ++msgstr "Po_drobnosti" ++ ++# tooltip ++#. Translators: Tooltip for viewing technical details for ++#. a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:97 ++msgid "View technical details about the error" ++msgstr "Zobrazí technické podrobnosti o chybe" ++ ++#. Translators: Button label for retrying a server ++#. connection ++#: src/client/components/components-problem-report-info-bar.vala:103 ++msgid "_Retry" ++msgstr "_Skúsiť znova" ++ + #. / Translators: Search entry placeholder text + #: src/client/components/components-search-bar.vala:12 + #: src/client/folder-list/folder-list-search-branch.vala:53 +-#: src/engine/api/geary-special-folder-type.vala:51 ++#: src/client/util/util-i18n.vala:298 + msgid "Search" + msgstr "Vyhľadať" + +@@ -1354,27 +1478,27 @@ msgstr "Prehľadať účet %s" + + #. Translators: Tooltip used when an entry requires a valid + #. email address to be entered, but one is not provided. +-#: src/client/components/components-validator.vala:390 ++#: src/client/components/components-validator.vala:394 + msgid "An email address is required" + msgstr "Vyžaduje sa emailová adresa" + + #. Translators: Tooltip used when an entry requires a valid + #. email address to be entered, but the address is invalid. +-#: src/client/components/components-validator.vala:394 ++#: src/client/components/components-validator.vala:398 + msgid "Not a valid email address" + msgstr "Nie je platnou emailovou adresou" + + #. Translators: Tooltip used when an entry requires a valid, + #. resolvable server name to be entered, but one is not + #. provided. +-#: src/client/components/components-validator.vala:440 ++#: src/client/components/components-validator.vala:444 + msgid "A server name is required" + msgstr "Vyžaduje sa názov serveru" + + #. Translators: Tooltip used when an entry requires a valid + #. server name to be entered, but it was unable to be + #. looked-up in the DNS. +-#: src/client/components/components-validator.vala:445 ++#: src/client/components/components-validator.vala:449 + msgid "Could not look up server name" + msgstr "Nepodarilo sa nájsť názov serveru" + +@@ -1420,76 +1544,6 @@ msgstr[0] "Odstráni rozhovory" + msgstr[1] "Odstráni rozhovor" + msgstr[2] "Odstráni rozhovory" + +-#. Translators: Info bar title for a generic account +-#. problem. +-#: src/client/components/main-window-info-bar.vala:44 +-msgid "Account problem" +-msgstr "Problém s účtom" +- +-#. Translators: Info bar sub-title for a generic account +-#. problem. String substitution is the account name. +-#: src/client/components/main-window-info-bar.vala:48 +-#, c-format +-msgid "Geary has encountered a problem with %s." +-msgstr "Aplikácia Geary narazila na problém s účtom %s." +- +-#. Translators: Info bar sub-title for a generic +-#. account problem. String substitution is the +-#. account name. +-#: src/client/components/main-window-info-bar.vala:61 +-#, c-format +-msgid "Geary encountered a problem checking mail for %s." +-msgstr "Aplikácia Geary narazila na problém pri kontrole pošty na účte %s." +- +-#. Translators: Tooltip label for Retry button +-#: src/client/components/main-window-info-bar.vala:65 +-msgid "Try reconnecting" +-msgstr "Skúsiť znovu pripojenie" +- +-#. Translators: Info bar title for an outgoing +-#. account problem. String substitution is the +-#. account name +-#: src/client/components/main-window-info-bar.vala:73 +-#, c-format +-msgid "Geary encountered a problem sending email for %s." +-msgstr "Aplikácia Geary narazila na problém pri odosielaní pošty z účtu %s." +- +-#. Translators: Tooltip label for Retry button +-#: src/client/components/main-window-info-bar.vala:77 +-msgid "Retry sending queued messages" +-msgstr "Skúsiť znovu odoslať správy vo fronte" +- +-#. Translators: Info bar title for a generic application +-#. problem. +-#: src/client/components/main-window-info-bar.vala:84 +-msgid "Geary has encountered a problem" +-msgstr "Aplikácia Geary narazila na problém" +- +-#. Translators: Info bar sub-title for a generic +-#. application problem. +-#: src/client/components/main-window-info-bar.vala:88 +-msgid "Please report the details if it persists." +-msgstr "Prosím, ak problém pretrváva., nahláste podrobnosti." +- +-#. Translators: Button label for viewing technical details +-#. for a problem report. +-#: src/client/components/main-window-info-bar.vala:99 +-msgid "_Details" +-msgstr "Po_drobnosti" +- +-# tooltip +-#. Translators: Tooltip for viewing technical details for +-#. a problem report. +-#: src/client/components/main-window-info-bar.vala:102 +-msgid "View technical details about the error" +-msgstr "Zobrazí technické podrobnosti o chybe" +- +-#. Translators: Button label for retrying a server +-#. connection +-#: src/client/components/main-window-info-bar.vala:108 +-msgid "_Retry" +-msgstr "_Skúsiť znova" +- + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1510,7 +1564,9 @@ msgstr "Chyba pri ukladaní odoslanej pošty" + msgid "_OK" + msgstr "_OK" + +-#: src/client/components/stock.vala:19 ui/password-dialog.glade:196 ++#: src/client/components/stock.vala:19 ++#: src/client/plugin/mail-merge/mail-merge.vala:392 ++#: ui/password-dialog.glade:196 + msgid "_Cancel" + msgstr "_Zrušiť" + +@@ -1530,15 +1586,17 @@ msgstr "_Zavrieť" + msgid "_Discard" + msgstr "Za_hodiť" + +-#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:52 ++#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:42 + msgid "_Help" + msgstr "Po_mocník" + +-#: src/client/components/stock.vala:26 ui/components-attachment-pane-menus.ui:7 ++#: src/client/components/stock.vala:26 ++#: src/client/plugin/mail-merge/mail-merge.vala:391 ++#: ui/components-attachment-pane-menus.ui:7 + msgid "_Open" + msgstr "_Otvoriť" + +-#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:42 ++#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:32 + msgid "_Preferences" + msgstr "N_astavenia" + +@@ -1564,6 +1622,10 @@ msgstr "_Uložiť" + msgid "_Keep" + msgstr "_Ponechať" + ++#: src/client/composer/composer-editor.vala:675 ++msgid "Select Color" ++msgstr "Výber farby" ++ + #: src/client/composer/composer-link-popover.vala:139 + msgid "Link URL is not correctly formatted, e.g. http://example.com" + msgstr "URL odkazu nie je v správnom formáte, napr. http://priklad.sk" +@@ -1577,23 +1639,23 @@ msgid "Invalid email address" + msgstr "Neplatná emailová adresa" + + #. / Translators: Title for an empty composer window +-#: src/client/composer/composer-widget.vala:30 ++#: src/client/composer/composer-widget.vala:32 + msgid "New Message" + msgstr "Nová správa" + +-#: src/client/composer/composer-widget.vala:217 ++#: src/client/composer/composer-widget.vala:167 + msgid "Saved" + msgstr "Uložené" + +-#: src/client/composer/composer-widget.vala:218 ++#: src/client/composer/composer-widget.vala:168 + msgid "Saving" + msgstr "Ukladá sa" + +-#: src/client/composer/composer-widget.vala:219 ++#: src/client/composer/composer-widget.vala:169 + msgid "Error saving" + msgstr "Chyba pri ukladaní" + +-#: src/client/composer/composer-widget.vala:220 ++#: src/client/composer/composer-widget.vala:170 + msgid "Press Backspace to delete quote" + msgstr "Stlačte kláves Backspace na odstránenie citácie" + +@@ -1602,7 +1664,7 @@ msgstr "Stlačte kláves Backspace na odstránenie citácie" + #. checking, include all variants of each word. No spaces are + #. allowed. The words will be converted to lower case based on + #. locale and English versions included automatically. +-#: src/client/composer/composer-widget.vala:236 ++#: src/client/composer/composer-widget.vala:186 + msgid "" + "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" + "enclosing|encloses|enclosure|enclosures" +@@ -1614,115 +1676,105 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:843 ++#: src/client/composer/composer-widget.vala:862 + msgid "Do you want to keep or discard this draft message?" + msgstr "Chcete ponechať alebo zahodiť tento koncept?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:869 ++#: src/client/composer/composer-widget.vala:888 + msgid "Do you want to discard this draft message?" + msgstr "Chcete zahodiť tento koncept?" + +-#: src/client/composer/composer-widget.vala:1508 ++#: src/client/composer/composer-widget.vala:1440 + msgid "Send message with an empty subject and body?" + msgstr "Odoslať správu bez predmetu a s prázdnym telom?" + +-#: src/client/composer/composer-widget.vala:1510 ++#: src/client/composer/composer-widget.vala:1442 + msgid "Send message with an empty subject?" + msgstr "Odoslať správu bez predmetu?" + +-#: src/client/composer/composer-widget.vala:1512 ++#: src/client/composer/composer-widget.vala:1444 + msgid "Send message with an empty body?" + msgstr "Odoslať správu s prázdnym telom?" + +-#: src/client/composer/composer-widget.vala:1521 ++#: src/client/composer/composer-widget.vala:1453 + msgid "Send message without an attachment?" + msgstr "Odoslať správu bez prílohy?" + +-#: src/client/composer/composer-widget.vala:1825 ++#: src/client/composer/composer-widget.vala:1772 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "„%s“ je už priložený na doručenie." + +-#: src/client/composer/composer-widget.vala:1861 +-#: src/client/composer/composer-widget.vala:1911 ++#: src/client/composer/composer-widget.vala:1804 ++#: src/client/composer/composer-widget.vala:1854 + #, c-format + msgid "“%s” is an empty file." + msgstr "„%s“ je prázdny súbor." + +-#: src/client/composer/composer-widget.vala:1899 ++#: src/client/composer/composer-widget.vala:1842 + #, c-format + msgid "“%s” could not be found." + msgstr "„%s“ sa nepodarilo nájsť." + +-#: src/client/composer/composer-widget.vala:1905 ++#: src/client/composer/composer-widget.vala:1848 + #, c-format + msgid "“%s” is a folder." + msgstr "„%s“ je priečinok." + +-#: src/client/composer/composer-widget.vala:1924 ++#: src/client/composer/composer-widget.vala:1867 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "„%s“ sa nepodarilo otvoriť na čítanie." + +-#: src/client/composer/composer-widget.vala:1932 ++#: src/client/composer/composer-widget.vala:1875 + msgid "Cannot add attachment" + msgstr "Nedá sa pridať príloha" + ++#. Translators: This is the name of the file chooser filter ++#. when inserting an image in the composer. ++#: src/client/composer/composer-widget.vala:1946 ++msgid "Images" ++msgstr "Obrázky" ++ + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:1989 +-#: src/client/conversation-viewer/conversation-email.vala:559 +-#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312 ++#: src/client/composer/composer-widget.vala:2010 ++#: src/client/conversation-viewer/conversation-email.vala:542 ++#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Pre:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:1995 +-#: src/client/conversation-viewer/conversation-email.vala:564 +-#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357 ++#: src/client/composer/composer-widget.vala:2016 ++#: src/client/conversation-viewer/conversation-email.vala:547 ++#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Kópia:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2001 +-#: src/client/conversation-viewer/conversation-email.vala:569 ++#: src/client/composer/composer-widget.vala:2022 ++#: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Skrytá kópia:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2007 ++#: src/client/composer/composer-widget.vala:2028 + msgid "Reply-To: " + msgstr "Komu odpovedať: " + +-#: src/client/composer/composer-widget.vala:2259 +-msgid "Select Color" +-msgstr "Výber farby" +- + #. Displayed in the From dropdown to indicate an + #. "alternate email address" for an account. The first + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2445 ++#: src/client/composer/composer-widget.vala:2146 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s prostredníctvom účtu %2$s" + +-#. Composer label (with mnemonic underscore) for the account selector +-#. when choosing what address to send a message from. +-#: src/client/composer/composer-widget.vala:2501 +-msgid "_From:" +-msgstr "Od:" +- +-#. Translators: This is the name of the file chooser filter +-#. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:2806 +-msgid "Images" +-msgstr "Obrázky" +- + # tooltip + #: src/client/composer/spell-check-popover.vala:125 + msgid "Remove this language from the preferred list" +@@ -1739,7 +1791,7 @@ msgid "Search for more languages" + msgstr "Vyhľadajte viac jazykov" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:335 ++#: src/client/conversation-list/conversation-list-view.vala:339 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "Presunúť rozhovory do _Koša" +@@ -1747,45 +1799,45 @@ msgstr[1] "Presunúť rozhovor do _Koša" + msgstr[2] "Presunúť rozhovory do _Koša" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:347 ++#: src/client/conversation-list/conversation-list-view.vala:351 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "O_dstrániť rozhovory" + msgstr[1] "O_dstrániť rozhovor" + msgstr[2] "O_dstrániť rozhovory" + +-#: src/client/conversation-list/conversation-list-view.vala:360 ++#: src/client/conversation-list/conversation-list-view.vala:364 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Označiť ako _prečítanú" + +-#: src/client/conversation-list/conversation-list-view.vala:368 ++#: src/client/conversation-list/conversation-list-view.vala:372 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Označiť ako _neprečítanú" + +-#: src/client/conversation-list/conversation-list-view.vala:376 ++#: src/client/conversation-list/conversation-list-view.vala:380 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "Zrušiť oz_načenie hviezdičkou" + +-#: src/client/conversation-list/conversation-list-view.vala:383 ++#: src/client/conversation-list/conversation-list-view.vala:387 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "Označiť _hviezdičkou" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:392 ++#: src/client/conversation-list/conversation-list-view.vala:396 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "_Odpovedať" + +-#: src/client/conversation-list/conversation-list-view.vala:398 ++#: src/client/conversation-list/conversation-list-view.vala:402 + msgid "R_eply All" + msgstr "Odpov_edať všetkým" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:404 ++#: src/client/conversation-list/conversation-list-view.vala:408 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Preposlať" +@@ -1795,20 +1847,20 @@ msgid "Me" + msgstr "Ja" + + #. Translators: Human-readable version of the RFC 822 From header +-#: src/client/conversation-viewer/conversation-email.vala:554 +-#: src/client/util/util-email.vala:226 ++#: src/client/conversation-viewer/conversation-email.vala:537 ++#: src/client/util/util-email.vala:240 + msgid "From:" + msgstr "Od:" + + #. Translators: Human-readable version of the RFC 822 Date header +-#: src/client/conversation-viewer/conversation-email.vala:574 +-#: src/client/util/util-email.vala:231 ++#: src/client/conversation-viewer/conversation-email.vala:557 ++#: src/client/util/util-email.vala:245 + msgid "Date:" + msgstr "Dátum:" + + #. Translators: Human-readable version of the RFC 822 Subject header +-#: src/client/conversation-viewer/conversation-email.vala:584 +-#: src/client/util/util-email.vala:229 ++#: src/client/conversation-viewer/conversation-email.vala:567 ++#: src/client/util/util-email.vala:243 + msgid "Subject:" + msgstr "Predmet:" + +@@ -1816,32 +1868,68 @@ msgstr "Predmet:" + msgid "This email address may have been forged" + msgstr "Táto emailová adresa mohla byť zabudnutá" + ++#. Translators: Label text displayed when there are too ++#. many email addresses to be shown by default in an ++#. email's header, but they are all being shown anyway. ++#: src/client/conversation-viewer/conversation-message.vala:234 ++msgid "Show less" ++msgstr "Zobraziť menej" ++ ++#. Translators: Label text displayed when there are ++#. too many email addresses to be shown by default in ++#. an email's header. The string substitution is the ++#. number of extra email to be shown. ++#: src/client/conversation-viewer/conversation-message.vala:260 ++#, c-format ++msgid "%d more…" ++msgstr "%d ďalších…" ++ + #. Compact headers. These are partially done here and partially + #. in load_contacts. + #. Translators: This is displayed in place of the from address + #. when the message has no from address. +-#: src/client/conversation-viewer/conversation-message.vala:439 ++#: src/client/conversation-viewer/conversation-message.vala:529 + msgid "No sender" + msgstr "Žiadny odosielateľ" + + #. Translators: This separates multiple 'from' + #. addresses in the compact header for a message. +-#: src/client/conversation-viewer/conversation-message.vala:831 ++#: src/client/conversation-viewer/conversation-message.vala:920 + msgid ", " + msgstr ", " + + #. Translators: This string is used as the HTML IMG ALT + #. attribute value when displaying an inline image in an email + #. that did not specify a file name. E.g. Imagemailing " +-#| "list or file a new bug report." ++#: ui/components-inspector-error-view.ui:31 + msgid "" + "If the problem is serious or persists, please save and send these details to " +-"the mailing list " +-"or attach to a new bug report." ++"one of the contact " ++"channels or attach to a new bug report." + msgstr "" +-"Ak je problém vážny alebo pretrváva, prosím, skopírujte a odošlite tieto " +-"podrobnosti do poštovej konferencie alebo nahláste nové chybové hlásenie." ++"Ak je problém vážny alebo pretrváva, prosím, uložte a odošlite tieto " ++"podrobnosti do jedného z kontaktných kanálov alebo ich priložte k novému chybovému hláseniu." + +-#: ui/components-inspector-error-view.ui:49 ++#: ui/components-inspector-error-view.ui:47 + msgid "Details:" + msgstr "Podrobnosti:" + +-#. Tooltip for inspector button +-#: ui/components-inspector.ui:20 +-msgid "Toggle appending new log entries" +-msgstr "Prepne pridávanie nových položiek záznamu" +- + # placeholder + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:37 ui/problem-details-dialog.ui:19 ++#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:24 + msgid "Search for matching log entries" + msgstr "Vyhľadá zhodné položky záznamu" + ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:35 ++msgid "Toggle appending new log entries" ++msgstr "Prepne pridávanie nových položiek záznamu" ++ ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:55 ++msgid "Add a marker entry to the log" ++msgstr "" ++ + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:63 ui/problem-details-dialog.ui:46 ++#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:51 + msgid "Save logs entries and details" + msgstr "Uloží položky záznamu a podrobnosti" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:84 ui/problem-details-dialog.ui:62 ++#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:67 + msgid "Copy to clipboard" + msgstr "Skopíruje to schránky" + ++# tooltip ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:121 ++msgid "Clears all log entries" ++msgstr "Vymaže všetky položky záznamu" ++ + #: ui/conversation-contact-popover.ui:146 + msgid "New Conversation…" + msgstr "Nový rozhovor…" +@@ -3058,26 +3274,6 @@ msgstr "Označí túto správu hviezdičkou" + msgid "Mark this message as not starred" + msgstr "Zruší označenie tejto správy hviezdičkou" + +-#: ui/conversation-email.ui:124 +-msgid "Edit Draft" +-msgstr "Upraviť koncept" +- +-#: ui/conversation-email.ui:151 +-msgid "Draft message" +-msgstr "Koncept" +- +-#: ui/conversation-email.ui:167 +-msgid "This message has not yet been sent." +-msgstr "Táto správa ešte nebola odoslaná." +- +-#: ui/conversation-email.ui:213 +-msgid "Message not saved" +-msgstr "Správa nebola uložená" +- +-#: ui/conversation-email.ui:229 +-msgid "This message was sent, but has not been saved to your account." +-msgstr "Táto správa bola odoslaná, ale nebola uložená do vášho účtu." +- + #. Translators: Menu item to reply to a specific message. + #: ui/conversation-email-menus.ui:15 + msgid "Reply to _All" +@@ -3183,22 +3379,6 @@ msgstr "Komu odpovedať:" + msgid "Subject" + msgstr "Predmet" + +-#: ui/conversation-message.ui:501 +-msgid "Show Images" +-msgstr "Zobraziť obrázky" +- +-#: ui/conversation-message.ui:514 +-msgid "Always Show From Sender" +-msgstr "Vždy zobraziť od odosielateľa" +- +-#: ui/conversation-message.ui:542 +-msgid "Remote images not shown" +-msgstr "Vzdialené obrázky neboli zobrazené" +- +-#: ui/conversation-message.ui:559 +-msgid "Only show remote images from senders you trust." +-msgstr "Vzdialené obrázky zobrazujte od odosielateľov, ktorým dôverujete." +- + # placeholder + #: ui/conversation-viewer.ui:60 + msgid "Find in conversation" +@@ -3237,7 +3417,7 @@ msgstr "menovka" + msgid "Conversation Shortcuts" + msgstr "Skratky rozhovorov" + +-#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:355 ++#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:377 + msgctxt "shortcut window" + msgid "Actions" + msgstr "Akcie" +@@ -3252,37 +3432,37 @@ msgctxt "shortcut window" + msgid "Reply to sender" + msgstr "Odpovedanie odosielateľovi" + +-#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:269 ++#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:281 + msgctxt "shortcut window" + msgid "Reply to all" + msgstr "Odpovedanie všetkým" + +-#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:276 ++#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:288 + msgctxt "shortcut window" + msgid "Forward" + msgstr "Preposlanie" + +-#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:283 ++#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:295 + msgctxt "shortcut window" + msgid "Un-mark/mark read" + msgstr "Označenie ako prečítané/neprečítané" + +-#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:290 ++#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:302 + msgctxt "shortcut window" + msgid "Mark/un-mark starred" + msgstr "Označenie/zrušenie označenia hviezdičkou" + +-#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:297 ++#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:309 + msgctxt "shortcut window" + msgid "Archive conversations" + msgstr "Archivácia rozhovorov" + +-#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:304 ++#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:326 + msgctxt "shortcut window" + msgid "Move conversations" + msgstr "Presun rozhovorov" + +-#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:311 ++#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:333 + msgctxt "shortcut window" + msgid "Label conversations" + msgstr "Pridanie menovky rozhovorom" +@@ -3292,12 +3472,12 @@ msgctxt "shortcut window" + msgid "Trash conversations" + msgstr "Presunutie rozhovorov do Koša" + +-#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:318 ++#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:340 + msgctxt "shortcut window" + msgid "Junk conversations" + msgstr "Presunutie rozhovorov do Nevyžiadanej pošty" + +-#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:325 ++#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:347 + msgctxt "shortcut window" + msgid "Delete conversations" + msgstr "Odstránenie rozhovorov" +@@ -3312,7 +3492,7 @@ msgctxt "shortcut window" + msgid "Search for conversations" + msgstr "Vyhľadanie rozhovorov" + +-#: ui/gtk/help-overlay.ui:115 ++#: ui/gtk/help-overlay.ui:115 ui/gtk/help-overlay.ui:354 + msgctxt "shortcut window" + msgid "Find in current conversation" + msgstr "Nájdenie v aktuálnom rozhovore" +@@ -3352,7 +3532,7 @@ msgctxt "shortcut window" + msgid "Reset zoom" + msgstr "Obnovenie priblíženia" + +-#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:375 ++#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:404 + msgctxt "shortcut window" + msgid "General" + msgstr "Všeobecné" +@@ -3402,82 +3582,86 @@ msgctxt "shortcut window" + msgid "Focus next/previous message" + msgstr "Zameranie na nasledovnú/predošlú správu" + +-#: ui/gtk/help-overlay.ui:258 +-msgctxt "shortcut window" +-msgid "Single-key shortcuts" ++#: ui/gtk/help-overlay.ui:260 ++msgid "Single-key Shortcuts" + msgstr "Klávesové skratky o jednom klávese" + +-#: ui/gtk/help-overlay.ui:262 ++#: ui/gtk/help-overlay.ui:265 + msgctxt "shortcut window" +-msgid "Reply to sender " +-msgstr "Odpovedanie odosielateľovi" ++msgid "Single-key shortcuts (if enabled)" ++msgstr "Klávesové skratky o jednom klávese (ak sú povolené)" + +-#: ui/gtk/help-overlay.ui:332 ++#: ui/gtk/help-overlay.ui:274 + msgctxt "shortcut window" +-msgid "Find in current conversations" +-msgstr "Nájdenie v aktuálnych rozhovoroch" ++msgid "Reply to sender " ++msgstr "Odpovedanie odosielateľovi" + +-#: ui/gtk/help-overlay.ui:339 ++#: ui/gtk/help-overlay.ui:361 + msgctxt "shortcut window" + msgid "Select next/previous conversations" + msgstr "Výber ďalších/predošlých rozhovorov" + +-#: ui/gtk/help-overlay.ui:351 ++#: ui/gtk/help-overlay.ui:373 + msgid "Composer Shortcuts" + msgstr "Skratky tvorcu správ" + +-#: ui/gtk/help-overlay.ui:359 ++#: ui/gtk/help-overlay.ui:381 + msgctxt "shortcut window" + msgid "Send" + msgstr "Odoslanie" + +-#: ui/gtk/help-overlay.ui:366 ++#: ui/gtk/help-overlay.ui:388 + msgctxt "shortcut window" + msgid "Add attachment" + msgstr "Pridanie prílohy" + +-#: ui/gtk/help-overlay.ui:379 ++#: ui/gtk/help-overlay.ui:395 ++msgctxt "shortcut window" ++msgid "Detach the composer" ++msgstr "Odpojenie okna tvorcu správy" ++ ++#: ui/gtk/help-overlay.ui:408 + msgctxt "shortcut window" + msgid "Close composer window" + msgstr "Zavretie okna tvorcu správy" + +-#: ui/gtk/help-overlay.ui:386 ++#: ui/gtk/help-overlay.ui:415 + msgctxt "shortcut window" + msgid "Detach composer window" + msgstr "Odpojenie okna tvorcu správy" + +-#: ui/gtk/help-overlay.ui:393 ++#: ui/gtk/help-overlay.ui:422 + msgctxt "shortcut window" + msgid "Editing" + msgstr "Upravovanie" + +-#: ui/gtk/help-overlay.ui:398 ++#: ui/gtk/help-overlay.ui:427 + msgctxt "shortcut window" + msgid "Move selection to the clipboard" + msgstr "Presun výberu do schránky" + +-#: ui/gtk/help-overlay.ui:405 ++#: ui/gtk/help-overlay.ui:434 + msgctxt "shortcut window" + msgid "Copy selection to clipboard" + msgstr "Skopírovanie výberu do schránky" + +-#: ui/gtk/help-overlay.ui:412 ++#: ui/gtk/help-overlay.ui:441 + msgctxt "shortcut window" + msgid "Paste from the clipboard" + msgstr "Vloženie zo schránky" + +-#: ui/gtk/help-overlay.ui:419 ++#: ui/gtk/help-overlay.ui:448 + msgctxt "shortcut window" + msgid "Quote text" + msgstr "Citácia textu" + + # tooltip +-#: ui/gtk/help-overlay.ui:426 ++#: ui/gtk/help-overlay.ui:455 + msgctxt "shortcut window" + msgid "Unquote text" + msgstr "Zrušenie citácie textu" + +-#: ui/gtk/help-overlay.ui:435 ++#: ui/gtk/help-overlay.ui:464 + #, fuzzy + #| msgctxt "shortcut window" + #| msgid "Rich text mode" +@@ -3485,43 +3669,43 @@ msgctxt "shortcut window" + msgid "Rich text editing" + msgstr "Formátovanie textu" + +-#: ui/gtk/help-overlay.ui:439 ++#: ui/gtk/help-overlay.ui:468 + msgctxt "shortcut window" + msgid "Paste without formatting" + msgstr "Vloženie bez formátovania" + +-#: ui/gtk/help-overlay.ui:446 ++#: ui/gtk/help-overlay.ui:475 + msgctxt "shortcut window" + msgid "Bold text" + msgstr "Tučný text" + +-#: ui/gtk/help-overlay.ui:453 ++#: ui/gtk/help-overlay.ui:482 + msgctxt "shortcut window" + msgid "Italicize text" + msgstr "Kurzíva textu" + +-#: ui/gtk/help-overlay.ui:460 ++#: ui/gtk/help-overlay.ui:489 + msgctxt "shortcut window" + msgid "Underline text" + msgstr "Podčiarknutie textu" + +-#: ui/gtk/help-overlay.ui:467 ++#: ui/gtk/help-overlay.ui:496 + msgctxt "shortcut window" + msgid "Strike text" + msgstr "Preškrtnutie textu" + +-#: ui/gtk/help-overlay.ui:474 ++#: ui/gtk/help-overlay.ui:503 + msgctxt "shortcut window" + msgid "Remove formatting" + msgstr "Odstránenie formátovania" + + # tooltip +-#: ui/gtk/help-overlay.ui:481 ++#: ui/gtk/help-overlay.ui:510 + msgctxt "shortcut window" + msgid "Insert an image" + msgstr "Vloženie obrázku" + +-#: ui/gtk/help-overlay.ui:488 ++#: ui/gtk/help-overlay.ui:517 + msgctxt "shortcut window" + msgid "Insert a link" + msgstr "Vloženie odkazu" +@@ -3557,26 +3741,18 @@ msgid "_Archive" + msgstr "_Archivovať" + + #: ui/main-toolbar-menus.ui:21 +-msgid "Toggle as S_pam" ++msgid "Toggle as _Junk" + msgstr "Prepnúť ako _nevyžiadanú poštu" + + #: ui/main-toolbar-menus.ui:28 +-msgid "Empty _Spam…" +-msgstr "Vyprázdniť _Nevyžiadanú poštu…" +- +-#: ui/main-toolbar-menus.ui:32 +-msgid "Empty _Trash…" +-msgstr "Vyprázdniť _Kôš…" +- +-#: ui/main-toolbar-menus.ui:38 + msgid "_Accounts" + msgstr "Účt_y" + +-#: ui/main-toolbar-menus.ui:46 ++#: ui/main-toolbar-menus.ui:36 + msgid "_Keyboard Shortcuts" + msgstr "Klávesové _skratky" + +-#: ui/main-toolbar-menus.ui:57 ++#: ui/main-toolbar-menus.ui:47 + msgid "_About Geary" + msgstr "_O aplikácii Geary" + +@@ -3600,15 +3776,64 @@ msgstr "_Overiť totožnosť" + msgid "Geary update in progress…" + msgstr "Prebieha aktualizácia aplikácie Geary…" + ++# cmd line desc ++#~ msgid "Log periodic activity" ++#~ msgstr "Periodicky zaznamená aktivitu" ++ ++#, fuzzy ++#~| msgid "Log network serialization" ++#~ msgid "Log IMAP network serialization" ++#~ msgstr "Zaznamená serializáciu siete" ++ ++#~ msgid "Sent Mail" ++#~ msgstr "Odoslaná pošta" ++ ++#~ msgid "Spam" ++#~ msgstr "Nevyžiadaná pošta" ++ ++#~ msgid "" ++#~ "Your computer does not appear to be connected to the Internet.\n" ++#~ "You will not be able to send or receive email until it is re-connected." ++#~ msgstr "" ++#~ "Zdá sa, že váš počítač nie je pripojený k internetu.\n" ++#~ "Nebudete môcť odoslať alebo prijať email, pokiaľ sa opätovne nepripojíte." ++ ++#~ msgid "" ++#~ "An account has reported an untrusted server.\n" ++#~ "Please check the server configuration and try again." ++#~ msgstr "" ++#~ "Účet nahlásil nedôveryhodný server.\n" ++#~ "Prosím, skontrolujte konfiguráciu servera a skúste to znovu." ++ ++#~ msgid "" ++#~ "An account has reported an incorrect login or password.\n" ++#~ "Please check your login name and try again." ++#~ msgstr "" ++#~ "Účet nahlásil nesprávne prihlasovacie meno alebo heslo.\n" ++#~ "Prosím, skontrolujte vaše prihlasovacie meno a skúste to znovu." ++ ++#~ msgid "From" ++#~ msgstr "Od" ++ ++#~ msgid "Edit Draft" ++#~ msgstr "Upraviť koncept" ++ ++#~ msgctxt "shortcut window" ++#~ msgid "Find in current conversations" ++#~ msgstr "Nájdenie v aktuálnych rozhovoroch" ++ ++#~ msgid "Empty _Spam…" ++#~ msgstr "Vyprázdniť _Nevyžiadanú poštu…" ++ ++#~ msgid "Empty _Trash…" ++#~ msgstr "Vyprázdniť _Kôš…" ++ + #~ msgid "mail-send" + #~ msgstr "mail-send" + + #~ msgid "Enable notification sounds" + #~ msgstr "Povoliť zvuky oznámení" + +-#~ msgid "Show notifications for new mail" +-#~ msgstr "Zobraziť upozornenia pre novú poštu" +- + #~ msgid "Additional addresses for %s" + #~ msgstr "Dodatočné adresy pre %s" + +@@ -4152,9 +4377,6 @@ msgstr "Prebieha aktualizácia aplikácie Geary…" + #~ msgid "Show _notifications for new mail" + #~ msgstr "Zobraziť _upozornenia pre novú poštu" + +-#~ msgid "Preferences" +-#~ msgstr "Nastavenia" +- + #~ msgid "" + #~ "Are you sure you want to remove " + #~ "this account? " +@@ -4248,9 +4470,6 @@ msgstr "Prebieha aktualizácia aplikácie Geary…" + #~ msgid "Enable _spell checking" + #~ msgstr "Povoliť _kontrolu pravopisu" + +-#~ msgid "Empty" +-#~ msgstr "Vyprázdniť" +- + #~ msgid "_Inspect..." + #~ msgstr "_Preskúmať…" + +@@ -4274,9 +4493,6 @@ msgstr "Prebieha aktualizácia aplikácie Geary…" + #~ msgstr[1] "%i zhody (zalomené)" + #~ msgstr[2] "%i zhôd (zalomených)" + +-#~ msgid "not found" +-#~ msgstr "nenájdené" +- + #~ msgid "No conversations selected." + #~ msgstr "Žiadne vybraté rozhovory." + +-- +2.29.2 + diff --git a/mail-client/geary/files/0017-Update-Slovak-translation.patch b/mail-client/geary/files/0017-Update-Slovak-translation.patch new file mode 100644 index 0000000..501460c --- /dev/null +++ b/mail-client/geary/files/0017-Update-Slovak-translation.patch @@ -0,0 +1,276 @@ +From 5942e30377f7e47abe60236ceac100384bf74add Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Du=C5=A1an=20Kazik?= +Date: Mon, 21 Sep 2020 11:52:17 +0000 +Subject: [PATCH 017/124] Update Slovak translation + +(cherry picked from commit 2028c9dea3f1d8f6c5dcfdd44f5f1990121e0983) +--- + po/sk.po | 71 ++++++++++++++++++++++++++------------------------------ + 1 file changed, 33 insertions(+), 38 deletions(-) + +diff --git a/po/sk.po b/po/sk.po +index 8fc3e1f4..dc0138c2 100644 +--- a/po/sk.po ++++ b/po/sk.po +@@ -10,8 +10,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary-0.4.1\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-08-29 01:59+0000\n" +-"PO-Revision-Date: 2020-09-16 13:28+0200\n" ++"POT-Creation-Date: 2020-09-19 08:49+0000\n" ++"PO-Revision-Date: 2020-09-21 13:51+0200\n" + "Last-Translator: Dušan Kazik \n" + "Language-Team: Slovak \n" + "Language: sk\n" +@@ -212,6 +212,8 @@ msgstr "Automaticky vybrať ďalšiu správu" + #: desktop/org.gnome.Geary.gschema.xml:63 + msgid "True if we should autoselect the next available conversation." + msgstr "" ++"Nastavte na True, ak by sme mali automaticky vybrať nasledujúci dostupný " ++"rozhovor." + + #: desktop/org.gnome.Geary.gschema.xml:68 + msgid "Display message previews" +@@ -219,7 +221,7 @@ msgstr "Zobraziť náhľady správ" + + #: desktop/org.gnome.Geary.gschema.xml:69 + msgid "True if we should display a short preview of each message." +-msgstr "" ++msgstr "Nastavte na True, ak by sme mali zobraziť krátky náhľad každej správy." + + #: desktop/org.gnome.Geary.gschema.xml:74 + msgid "Use single key shortcuts" +@@ -261,7 +263,7 @@ msgstr "Nastavením na True, bude oznamovaná nová pošta po spustení." + + #: desktop/org.gnome.Geary.gschema.xml:102 + msgid "Ask when opening an attachment" +-msgstr "" ++msgstr "Opýtať sa pri otváraní prílohy" + + #: desktop/org.gnome.Geary.gschema.xml:103 + msgid "True to ask when opening an attachment." +@@ -290,7 +292,7 @@ msgstr "Priblíženie prehliadača konverzácií" + + #: desktop/org.gnome.Geary.gschema.xml:121 + msgid "The zoom to apply on the conservation view." +-msgstr "" ++msgstr "Priblíženie, ktoré sa má použiť pre zobrazenie rozhovorov." + + #: desktop/org.gnome.Geary.gschema.xml:126 + msgid "Size of detached composer window" +@@ -298,7 +300,7 @@ msgstr "Veľkosť odpojeného okna tvorcu správ" + + #: desktop/org.gnome.Geary.gschema.xml:127 + msgid "The last recorded size of the detached composer window." +-msgstr "" ++msgstr "Posledná zaznamenaná veľkosť odpojeného okna tvorcu správ." + + #: desktop/org.gnome.Geary.gschema.xml:132 + msgid "Undo sending email delay" +@@ -314,13 +316,15 @@ msgstr "" + + #: desktop/org.gnome.Geary.gschema.xml:139 + msgid "Brief notification display time" +-msgstr "" ++msgstr "Doba zobrazenia stručného oznámenia" + + #: desktop/org.gnome.Geary.gschema.xml:140 + msgid "" + "The length of time in seconds for which brief notifications should be " + "displayed." + msgstr "" ++"Dĺžka trvania v sekundách, počas ktorého by mali byť zobrazované stručné " ++"oznámenia." + + #: desktop/org.gnome.Geary.gschema.xml:146 + msgid "List of optional plugins" +@@ -958,13 +962,13 @@ msgstr "Dušan Kazik " + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1047 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "Voľba „--hidden“ je zastaraná a bude v budúcnosti odstránená." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1080 ++#: src/client/application/application-client.vala:1078 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Nerozpoznaný parameter programu: „%s“" +@@ -1140,21 +1144,21 @@ msgstr "" + #: src/client/application/application-controller.vala:1501 + #, c-format + msgid "Email sent to %s" +-msgstr "Email pre %s bol odoslaný" ++msgstr "Email pre príjemcu %s bol odoslaný" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. + #: src/client/application/application-controller.vala:2491 + #, c-format + msgid "Email to %s queued for delivery" +-msgstr "Email pre %s bol zaradený do fronty na doručenie" ++msgstr "Email pre príjemcu %s bol zaradený do fronty na doručenie" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. + #: src/client/application/application-controller.vala:2555 + #, c-format + msgid "Email to %s saved" +-msgstr "Email pre %s bol uložený" ++msgstr "Email pre príjemcu %s bol uložený" + + #. / Translators: A label for an in-app notification. + #: src/client/application/application-controller.vala:2570 +@@ -1167,7 +1171,7 @@ msgstr "Nepodarilo sa obnoviť tvorcu správ" + #: src/client/application/application-controller.vala:2613 + #, c-format + msgid "Email to %s discarded" +-msgstr "Email pre %s bol zahodený" ++msgstr "Email pre príjemcu %s bol zahodený" + + #. Translators: An info bar status label + #: src/client/application/application-main-window.vala:540 +@@ -1334,7 +1338,7 @@ msgstr "Uložiť ako" + + #: src/client/components/components-inspector.vala:230 + #: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Zrušiť" + +@@ -2185,7 +2189,6 @@ msgstr "Vytvára opakovane použiteľné šablóny na odosielanie emailov" + #. included. + #: src/client/plugin/email-templates/email-templates.vala:29 + #: src/client/plugin/mail-merge/mail-merge.vala:29 +-#| msgid "Sent | Sent Mail | Sent Email | Sent E-Mail" + msgid "Templates | Template Mail | Template Email | Template E-Mail" + msgstr "Šablóny | Poštová šablóna | Šablóna emailu | Šablóna e-mailu" + +@@ -2195,11 +2198,12 @@ msgstr "Šablóny | Poštová šablóna | Šablóna emailu | Šablóna e-mailu" + msgid "Templates" + msgstr "Šablóny" + ++# DK: šablóna + #. Translators: Info bar button label for creating a + #. new email template + #: src/client/plugin/email-templates/email-templates.vala:282 + msgid "New" +-msgstr "Nový" ++msgstr "Nová" + + #. Translators: Infobar status label for an email template + #: src/client/plugin/email-templates/email-templates.vala:293 +@@ -2233,11 +2237,11 @@ msgstr "Upraviť" + #: src/client/plugin/mail-merge/mail-merge.vala:389 + #: src/client/plugin/mail-merge/mail-merge.vala:488 + msgid "Mail Merge" +-msgstr "" ++msgstr "Zlúčenie pošty" + + #: src/client/plugin/mail-merge/mail-merge.plugin.desktop.in:6 + msgid "Fill in and send email templates using a spreadsheet" +-msgstr "" ++msgstr "Vyplní šablóny emailov na odoslanie pomocou tabuľkového súboru" + + #. Translators: Info bar label for starting sending a mail + #. merge +@@ -2258,21 +2262,21 @@ msgstr "Pozastaviť" + #, c-format + msgid "Sent %u of %u" + msgid_plural "Sent %u of %u" +-msgstr[0] "" +-msgstr[1] "" +-msgstr[2] "" ++msgstr[0] "Odoslaných %u emailov z %u" ++msgstr[1] "Odoslaný %u email z %u" ++msgstr[2] "Odoslané %u emaily z %u" + + #. Translators: Infobar status label for an email mail merge + #. template + #: src/client/plugin/mail-merge/mail-merge.vala:324 + msgid "Mail merge template" +-msgstr "" ++msgstr "Šablóna pre zlúčenie pošty" + + #. Translators: Info bar button label for performing a + #. mail-merge on an email template + #: src/client/plugin/mail-merge/mail-merge.vala:328 + msgid "Merge" +-msgstr "" ++msgstr "Zlúčiť" + + #. / Translators: Action bar menu button label for + #. / mail-merge plugin +@@ -2290,10 +2294,8 @@ msgid "Messaging Menu" + msgstr "Ponuka správ" + + #: src/client/plugin/messaging-menu/messaging-menu.plugin.desktop.in:5 +-#, fuzzy +-#| msgid "Show notifications for new mail" + msgid "Displays Unity Messaging Menu notifications for new email" +-msgstr "Zobraziť upozornenia pre novú poštu" ++msgstr "Zobrazí oznámenia pre novú poštu v ponuke správ prostredia Unity" + + #: src/client/plugin/messaging-menu/messaging-menu.vala:79 + #, c-format +@@ -2301,14 +2303,12 @@ msgid "%s — New Messages" + msgstr "%s — Nové správy" + + #: src/client/plugin/sent-sound/sent-sound.plugin.desktop.in:4 +-#, fuzzy +-#| msgid "not found" + msgid "Sent Sound" +-msgstr "nenájdené" ++msgstr "Zvuk po odoslaní" + + #: src/client/plugin/sent-sound/sent-sound.plugin.desktop.in:5 + msgid "Plays the desktop sent-mail sound when an email is sent" +-msgstr "" ++msgstr "Prehrá systémový zvuk po odoslaní emailu" + + #. Translators: Info bar button label for emptying + #. trash/spam folders +@@ -3190,7 +3190,7 @@ msgstr "Prepne pridávanie nových položiek záznamu" + #. Tooltip for inspector button + #: ui/components-inspector.ui:55 + msgid "Add a marker entry to the log" +-msgstr "" ++msgstr "Pridá značku do záznamu" + + #. Tooltip for inspector button + #. Tooltip for problem report button +@@ -3237,10 +3237,8 @@ msgstr "Vždy načítať vzdialené obrázky" + + #. Title label on contact popover + #: ui/conversation-contact-popover.ui:264 +-#, fuzzy +-#| msgid "Remove email address" + msgid "Deceptive email address" +-msgstr "Odstráni emailové adresy" ++msgstr "Podvodná emailová adresa" + + #. Contact popover label + #: ui/conversation-contact-popover.ui:294 +@@ -3662,12 +3660,9 @@ msgid "Unquote text" + msgstr "Zrušenie citácie textu" + + #: ui/gtk/help-overlay.ui:464 +-#, fuzzy +-#| msgctxt "shortcut window" +-#| msgid "Rich text mode" + msgctxt "shortcut window" + msgid "Rich text editing" +-msgstr "Formátovanie textu" ++msgstr "Úprava formátovaného textu" + + #: ui/gtk/help-overlay.ui:468 + msgctxt "shortcut window" +-- +2.29.2 + diff --git a/mail-client/geary/files/0018-Updated-Spanish-translation.patch b/mail-client/geary/files/0018-Updated-Spanish-translation.patch new file mode 100644 index 0000000..cfdbdc2 --- /dev/null +++ b/mail-client/geary/files/0018-Updated-Spanish-translation.patch @@ -0,0 +1,75 @@ +From 571c10add8f8b0ad33031935f5de1bd6ff6fed2b Mon Sep 17 00:00:00 2001 +From: Daniel Mustieles +Date: Wed, 23 Sep 2020 09:26:43 +0200 +Subject: [PATCH 018/124] Updated Spanish translation + +--- + po/es.po | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/po/es.po b/po/es.po +index c387333b..fc6a4f53 100644 +--- a/po/es.po ++++ b/po/es.po +@@ -18,8 +18,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary-0.4.1\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-08-29 01:59+0000\n" +-"PO-Revision-Date: 2020-08-26 10:09+0200\n" ++"POT-Creation-Date: 2020-09-21 11:52+0000\n" ++"PO-Revision-Date: 2020-09-23 09:16+0200\n" + "Last-Translator: Daniel Mustieles \n" + "Language-Team: Spanish - Spain \n" + "Language: es_ES\n" +@@ -27,7 +27,7 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" +-"X-Generator: Gtranslator 3.36.0\n" ++"X-Generator: Gtranslator 3.38.0\n" + + #: desktop/geary-attach.contract.desktop.in:3 + msgid "Send by email" +@@ -982,13 +982,13 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1047 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "La opción «--hidden» está obsoleta y se eliminará en el futuro." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1080 ++#: src/client/application/application-client.vala:1078 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Opción de la línea de comandos no reconocida: «%s»" +@@ -1345,7 +1345,7 @@ msgstr "Guardar como" + + #: src/client/components/components-inspector.vala:230 + #: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Cancelar" + +@@ -2248,11 +2248,11 @@ msgstr "Pausar" + #. folder. The first string substitution the number of email + #. already sent, the second is the total number to send. + #: src/client/plugin/mail-merge/mail-merge.vala:240 +-#, fuzzy, c-format ++#, c-format + #| msgid "Sent %u of %u" + msgid "Sent %u of %u" + msgid_plural "Sent %u of %u" +-msgstr[0] "Enviados %u de %u" ++msgstr[0] "Enviado %u de %u" + msgstr[1] "Enviados %u de %u" + + #. Translators: Infobar status label for an email mail merge +-- +2.29.2 + diff --git a/mail-client/geary/files/0020-Application.CertificateManager-Fix-critical-when-no-.patch b/mail-client/geary/files/0020-Application.CertificateManager-Fix-critical-when-no-.patch new file mode 100644 index 0000000..567a9e5 --- /dev/null +++ b/mail-client/geary/files/0020-Application.CertificateManager-Fix-critical-when-no-.patch @@ -0,0 +1,31 @@ +From 7f7c55e79a0ec40ec3fae5c86568e4c1b6cc37df Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 25 Sep 2020 08:25:34 +1000 +Subject: [PATCH 020/124] Application.CertificateManager: Fix critical when no + GCR trust stores + +Ensure GCR store not null before accessing it. +--- + src/client/application/application-certificate-manager.vala | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/client/application/application-certificate-manager.vala b/src/client/application/application-certificate-manager.vala +index ff0e7785..d9e40fcd 100644 +--- a/src/client/application/application-certificate-manager.vala ++++ b/src/client/application/application-certificate-manager.vala +@@ -74,8 +74,10 @@ public class Application.CertificateManager : GLib.Object { + bool has_rw_store = false; + if (has_uris) { + Gck.Slot? store = Gcr.pkcs11_get_trust_store_slot(); +- has_rw_store = !store.has_flags(CKF_WRITE_PROTECTED); +- debug("GCR store is R/W: %s", has_rw_store.to_string()); ++ if (store != null) { ++ has_rw_store = !store.has_flags(CKF_WRITE_PROTECTED); ++ debug("GCR store is R/W: %s", has_rw_store.to_string()); ++ } + } + + return has_rw_store; +-- +2.29.2 + diff --git a/mail-client/geary/files/0021-Application.CertificateManager-Warn-when-GCR-not-abl.patch b/mail-client/geary/files/0021-Application.CertificateManager-Warn-when-GCR-not-abl.patch new file mode 100644 index 0000000..2a38d61 --- /dev/null +++ b/mail-client/geary/files/0021-Application.CertificateManager-Warn-when-GCR-not-abl.patch @@ -0,0 +1,46 @@ +From 0475d29f84ef13861fdc5ee2e747c00644c002fc Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 25 Sep 2020 08:27:36 +1000 +Subject: [PATCH 021/124] Application.CertificateManager: Warn when GCR not + able to access stores + +At least let people know somehow their GCR setup is lacking. +--- + .../application-certificate-manager.vala | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/src/client/application/application-certificate-manager.vala b/src/client/application/application-certificate-manager.vala +index d9e40fcd..3add2206 100644 +--- a/src/client/application/application-certificate-manager.vala ++++ b/src/client/application/application-certificate-manager.vala +@@ -68,7 +68,13 @@ public class Application.CertificateManager : GLib.Object { + !Geary.String.is_empty(Gcr.pkcs11_get_trust_store_uri()) && + Gcr.pkcs11_get_trust_lookup_uris().length > 0 + ); +- debug("GCR slot URIs found: %s", has_uris.to_string()); ++ if (has_uris) { ++ debug("GCR slot URIs found: %s", has_uris.to_string()); ++ } else { ++ warning( ++ "No GCR slot URIs found, GCR certificate pinning unavailable" ++ ); ++ } + } + + bool has_rw_store = false; +@@ -77,6 +83,12 @@ public class Application.CertificateManager : GLib.Object { + if (store != null) { + has_rw_store = !store.has_flags(CKF_WRITE_PROTECTED); + debug("GCR store is R/W: %s", has_rw_store.to_string()); ++ } else { ++ warning("No GCR store found, GCR certificate pinning unavailable"); ++ } ++ ++ if (!has_rw_store) { ++ warning("GCR store is not RW, GCR certificate pinning unavailable"); + } + } + +-- +2.29.2 + diff --git a/mail-client/geary/files/0022-Geary.Imap.Session-Avoid-critical-when-client-sessio.patch b/mail-client/geary/files/0022-Geary.Imap.Session-Avoid-critical-when-client-sessio.patch new file mode 100644 index 0000000..f09bede --- /dev/null +++ b/mail-client/geary/files/0022-Geary.Imap.Session-Avoid-critical-when-client-sessio.patch @@ -0,0 +1,35 @@ +From 2093aa32292e11455648d62d8b7a992532aac04e Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 23 Sep 2020 08:44:04 +1000 +Subject: [PATCH 022/124] Geary.Imap.Session: Avoid critical when client + session logged out + +If the client session is being logging out but some other tasks is +still attempting to use it, getting a mailbox will assume at least +one personal namespace exists, but it will have been cleared. + +Add a check and throw an exception if none are present, so at least +it is handled in a well defined way. + +Fixes #986 +--- + src/engine/imap/transport/imap-client-session.vala | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/engine/imap/transport/imap-client-session.vala b/src/engine/imap/transport/imap-client-session.vala +index f42112f2..81d892ef 100644 +--- a/src/engine/imap/transport/imap-client-session.vala ++++ b/src/engine/imap/transport/imap-client-session.vala +@@ -599,6 +599,9 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + } + if (ns == null) { + // fall back to the default personal namespace ++ if (this.personal_namespaces.is_empty) { ++ throw new ImapError.UNAVAILABLE("No personal namespace"); ++ } + ns = this.personal_namespaces[0]; + } + +-- +2.29.2 + diff --git a/mail-client/geary/files/0023-Geary.Imap.SessionObject-Ensure-the-session-is-conne.patch b/mail-client/geary/files/0023-Geary.Imap.SessionObject-Ensure-the-session-is-conne.patch new file mode 100644 index 0000000..807f15e --- /dev/null +++ b/mail-client/geary/files/0023-Geary.Imap.SessionObject-Ensure-the-session-is-conne.patch @@ -0,0 +1,47 @@ +From 1c951f890840b91885d5f3752bb8bc3fdfc26324 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 23 Sep 2020 08:48:45 +1000 +Subject: [PATCH 023/124] Geary.Imap.SessionObject: Ensure the session is + connected when accessed + +Ensure the client session is connected as well as non-null when being +accessed, so that if being logged out it is also treated as being +disconnected. +--- + src/engine/imap/api/imap-session-object.vala | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/src/engine/imap/api/imap-session-object.vala b/src/engine/imap/api/imap-session-object.vala +index 4937d462..ee1ac09f 100644 +--- a/src/engine/imap/api/imap-session-object.vala ++++ b/src/engine/imap/api/imap-session-object.vala +@@ -83,16 +83,20 @@ public abstract class Geary.Imap.SessionObject : BaseObject, Logging.Source { + } + + /** +- * Obtains IMAP session the server for use by this object. ++ * Returns a valid IMAP client session for use by this object. + * +- * @throws ImapError.NOT_CONNECTED if the session with the server +- * server has been dropped via {@link close}, or because +- * the connection was lost. ++ * @throws ImapError.NOT_CONNECTED if the client session has been ++ * dropped via {@link close}, if the client session is logging out ++ * or has been closed, or because the connection to the server was ++ * lost. + */ + protected ClientSession claim_session() + throws ImapError { +- if (this.session == null) { +- throw new ImapError.NOT_CONNECTED("IMAP object has no session"); ++ if (this.session == null || ++ this.session.get_protocol_state() == NOT_CONNECTED) { ++ throw new ImapError.NOT_CONNECTED( ++ "IMAP object has no session or is not connected" ++ ); + } + return this.session; + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0024-Geary.Imap.FolderSession-Ensure-client-session-is-se.patch b/mail-client/geary/files/0024-Geary.Imap.FolderSession-Ensure-client-session-is-se.patch new file mode 100644 index 0000000..57d49b6 --- /dev/null +++ b/mail-client/geary/files/0024-Geary.Imap.FolderSession-Ensure-client-session-is-se.patch @@ -0,0 +1,101 @@ +From b209f84e5895d7ae3b9ca200f36343d162914932 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 23 Sep 2020 09:11:50 +1000 +Subject: [PATCH 024/124] Geary.Imap.FolderSession: Ensure client session is + selected when accessed + +Ensure the underlying ClientSession object is in the SELECTED state +for the correct mailbox when obtaining it. +--- + src/engine/imap/api/imap-folder-session.vala | 31 ++++++++++++++++---- + src/engine/imap/api/imap-session-object.vala | 2 +- + 2 files changed, 26 insertions(+), 7 deletions(-) + +diff --git a/src/engine/imap/api/imap-folder-session.vala b/src/engine/imap/api/imap-folder-session.vala +index 092c06cd..98db3088 100644 +--- a/src/engine/imap/api/imap-folder-session.vala ++++ b/src/engine/imap/api/imap-folder-session.vala +@@ -38,6 +38,8 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + /** Determines if this folder accepts custom IMAP flags. */ + public Trillian accepts_user_flags { get; private set; default = Trillian.UNKNOWN; } + ++ private MailboxSpecifier mailbox; ++ + private Quirks quirks; + + private Nonblocking.Mutex cmd_mutex = new Nonblocking.Mutex(); +@@ -107,9 +109,9 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + session.search.connect(on_search); + session.status_response_received.connect(on_status_response); + +- MailboxSpecifier mailbox = session.get_mailbox_for_path(folder.path); ++ this.mailbox = session.get_mailbox_for_path(folder.path); + StatusResponse? response = yield session.select_async( +- mailbox, cancellable ++ this.mailbox, cancellable + ); + throw_on_not_ok(response, "SELECT " + this.folder.path.to_string()); + +@@ -1107,8 +1109,6 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + Geary.EmailFlags? flags, + GLib.DateTime? date_received) + throws GLib.Error { +- ClientSession session = claim_session(); +- + MessageFlags? msg_flags = null; + if (flags != null) { + Imap.EmailFlags imap_flags = Imap.EmailFlags.from_api_email_flags(flags); +@@ -1121,9 +1121,8 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + if (date_received != null) + internaldate = new InternalDate.from_date_time(date_received); + +- MailboxSpecifier mailbox = session.get_mailbox_for_path(this.folder.path); + AppendCommand cmd = new AppendCommand( +- mailbox, ++ this.mailbox, + msg_flags, + internaldate, + message.get_rfc822_buffer(), +@@ -1161,6 +1160,26 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + ); + } + ++ /** ++ * Returns a valid IMAP client session for use by this object. ++ * ++ * In addition to the checks made by {@link ++ * SessionObject.claim_session}, this method also ensures that the ++ * IMAP session is in the SELECTED state for the correct mailbox. ++ */ ++ protected override ClientSession claim_session() ++ throws ImapError { ++ var session = base.claim_session(); ++ if (session.get_protocol_state() != SELECTED && ++ !this.mailbox.equal_to(session.selected_mailbox)) { ++ throw new ImapError.NOT_CONNECTED( ++ "IMAP object no longer SELECTED for %s", ++ this.mailbox.to_string() ++ ); ++ } ++ return session; ++ } ++ + // HACK: See https://bugzilla.gnome.org/show_bug.cgi?id=714902 + // + // Detect when a server has returned a BAD response to FETCH +diff --git a/src/engine/imap/api/imap-session-object.vala b/src/engine/imap/api/imap-session-object.vala +index ee1ac09f..d47c6950 100644 +--- a/src/engine/imap/api/imap-session-object.vala ++++ b/src/engine/imap/api/imap-session-object.vala +@@ -90,7 +90,7 @@ public abstract class Geary.Imap.SessionObject : BaseObject, Logging.Source { + * or has been closed, or because the connection to the server was + * lost. + */ +- protected ClientSession claim_session() ++ protected virtual ClientSession claim_session() + throws ImapError { + if (this.session == null || + this.session.get_protocol_state() == NOT_CONNECTED) { +-- +2.29.2 + diff --git a/mail-client/geary/files/0025-Geary.Imap.SessionObject-Rename-claim_session-to-get.patch b/mail-client/geary/files/0025-Geary.Imap.SessionObject-Rename-claim_session-to-get.patch new file mode 100644 index 0000000..40588e7 --- /dev/null +++ b/mail-client/geary/files/0025-Geary.Imap.SessionObject-Rename-claim_session-to-get.patch @@ -0,0 +1,134 @@ +From ac425f57b134c2264723e20ea15319ab615f0f9d Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 23 Sep 2020 09:17:28 +1000 +Subject: [PATCH 025/124] Geary.Imap.SessionObject: Rename `claim_session` to + `get_session` + +Don't over-sell what it does. +--- + src/engine/imap/api/imap-account-session.vala | 10 +++++----- + src/engine/imap/api/imap-folder-session.vala | 14 +++++++------- + src/engine/imap/api/imap-session-object.vala | 2 +- + 3 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/src/engine/imap/api/imap-account-session.vala b/src/engine/imap/api/imap-account-session.vala +index 238bd85c..813d9e5e 100644 +--- a/src/engine/imap/api/imap-account-session.vala ++++ b/src/engine/imap/api/imap-account-session.vala +@@ -45,7 +45,7 @@ internal class Geary.Imap.AccountSession : Geary.Imap.SessionObject { + */ + public async FolderPath get_default_personal_namespace(Cancellable? cancellable) + throws Error { +- ClientSession session = claim_session(); ++ ClientSession session = get_session(); + Gee.List personal = session.get_personal_namespaces(); + if (personal.is_empty) { + throw new ImapError.INVALID("No personal namespace found"); +@@ -69,7 +69,7 @@ internal class Geary.Imap.AccountSession : Geary.Imap.SessionObject { + public bool is_folder_path_valid(FolderPath? path) throws GLib.Error { + bool is_valid = false; + if (path != null) { +- ClientSession session = claim_session(); ++ ClientSession session = get_session(); + try { + session.get_mailbox_for_path(path); + is_valid = true; +@@ -94,7 +94,7 @@ internal class Geary.Imap.AccountSession : Geary.Imap.SessionObject { + Geary.Folder.SpecialUse? use, + Cancellable? cancellable) + throws Error { +- ClientSession session = claim_session(); ++ ClientSession session = get_session(); + MailboxSpecifier mailbox = session.get_mailbox_for_path(path); + bool can_create_special = session.capabilities.has_capability(Capabilities.CREATE_SPECIAL_USE); + CreateCommand cmd = ( +@@ -125,7 +125,7 @@ internal class Geary.Imap.AccountSession : Geary.Imap.SessionObject { + public async Imap.Folder fetch_folder_async(FolderPath path, + Cancellable? cancellable) + throws Error { +- ClientSession session = claim_session(); ++ ClientSession session = get_session(); + Imap.Folder? folder = this.folders.get(path); + if (folder == null) { + Gee.List? mailboxes = yield send_list_async( +@@ -169,7 +169,7 @@ internal class Geary.Imap.AccountSession : Geary.Imap.SessionObject { + fetch_child_folders_async(FolderPath parent, + GLib.Cancellable? cancellable) + throws GLib.Error { +- ClientSession session = claim_session(); ++ ClientSession session = get_session(); + Gee.List children = new Gee.ArrayList(); + Gee.List mailboxes = yield send_list_async( + session, parent, true, cancellable +diff --git a/src/engine/imap/api/imap-folder-session.vala b/src/engine/imap/api/imap-folder-session.vala +index 98db3088..8b4212e6 100644 +--- a/src/engine/imap/api/imap-folder-session.vala ++++ b/src/engine/imap/api/imap-folder-session.vala +@@ -127,7 +127,7 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + */ + public async void enable_idle(Cancellable? cancellable) + throws Error { +- ClientSession session = claim_session(); ++ ClientSession session = get_session(); + int token = yield this.cmd_mutex.claim_async(cancellable); + Error? cmd_err = null; + try { +@@ -303,7 +303,7 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + Gee.Set? search_results, + GLib.Cancellable? cancellable) + throws GLib.Error { +- ClientSession session = claim_session(); ++ ClientSession session = get_session(); + Gee.Map? responses = null; + int token = yield this.cmd_mutex.claim_async(cancellable); + +@@ -648,7 +648,7 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + public async void remove_email_async(Gee.List msg_sets, + GLib.Cancellable? cancellable) + throws GLib.Error { +- ClientSession session = claim_session(); ++ ClientSession session = get_session(); + Gee.List flags = new Gee.ArrayList(); + flags.add(MessageFlag.DELETED); + +@@ -721,7 +721,7 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + FolderPath destination, + GLib.Cancellable? cancellable) + throws GLib.Error { +- ClientSession session = claim_session(); ++ ClientSession session = get_session(); + + MailboxSpecifier mailbox = session.get_mailbox_for_path(destination); + CopyCommand cmd = new CopyCommand(msg_set, mailbox, cancellable); +@@ -1164,12 +1164,12 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + * Returns a valid IMAP client session for use by this object. + * + * In addition to the checks made by {@link +- * SessionObject.claim_session}, this method also ensures that the ++ * SessionObject.get_session}, this method also ensures that the + * IMAP session is in the SELECTED state for the correct mailbox. + */ +- protected override ClientSession claim_session() ++ protected override ClientSession get_session() + throws ImapError { +- var session = base.claim_session(); ++ var session = base.get_session(); + if (session.get_protocol_state() != SELECTED && + !this.mailbox.equal_to(session.selected_mailbox)) { + throw new ImapError.NOT_CONNECTED( +diff --git a/src/engine/imap/api/imap-session-object.vala b/src/engine/imap/api/imap-session-object.vala +index d47c6950..4a46ae1e 100644 +--- a/src/engine/imap/api/imap-session-object.vala ++++ b/src/engine/imap/api/imap-session-object.vala +@@ -90,7 +90,7 @@ public abstract class Geary.Imap.SessionObject : BaseObject, Logging.Source { + * or has been closed, or because the connection to the server was + * lost. + */ +- protected virtual ClientSession claim_session() ++ protected virtual ClientSession get_session() + throws ImapError { + if (this.session == null || + this.session.get_protocol_state() == NOT_CONNECTED) { +-- +2.29.2 + diff --git a/mail-client/geary/files/0026-Geary.State.Machine-Support-GObject-notify-signal-fo.patch b/mail-client/geary/files/0026-Geary.State.Machine-Support-GObject-notify-signal-fo.patch new file mode 100644 index 0000000..e5a7348 --- /dev/null +++ b/mail-client/geary/files/0026-Geary.State.Machine-Support-GObject-notify-signal-fo.patch @@ -0,0 +1,154 @@ +From ed4ba33127795a7ffefb6517ed57185ef44fe1c7 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 27 Sep 2020 15:58:40 +1000 +Subject: [PATCH 026/124] Geary.State.Machine: Support GObject notify signal + for state changes + +Modernise the API a bit by using properties instead of explicit +getters/setters, an hence support GObject notify signals when the +state property changes. +--- + .../imap/transport/imap-client-session.vala | 9 ++--- + .../imap/transport/imap-deserializer.vala | 4 +- + src/engine/state/state-machine.vala | 37 ++++++------------- + 3 files changed, 18 insertions(+), 32 deletions(-) + +diff --git a/src/engine/imap/transport/imap-client-session.vala b/src/engine/imap/transport/imap-client-session.vala +index 81d892ef..91137f1e 100644 +--- a/src/engine/imap/transport/imap-client-session.vala ++++ b/src/engine/imap/transport/imap-client-session.vala +@@ -483,11 +483,10 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + }; + + fsm = new Geary.State.Machine(machine_desc, mappings, on_ignored_transition); +- fsm.set_logging(false); + } + + ~ClientSession() { +- switch (fsm.get_state()) { ++ switch (fsm.state) { + case State.NOT_CONNECTED: + case State.CLOSED: + // no problem-o +@@ -782,7 +781,7 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + + private bool on_greeting_timeout() { + // if still in CONNECTING state, the greeting never arrived +- if (fsm.get_state() == State.CONNECTING) ++ if (fsm.state == State.CONNECTING) + fsm.issue(Event.TIMEOUT); + + return false; +@@ -1645,12 +1644,12 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + return (this.selected_mailbox == null) + ? new Logging.State( + this, +- this.fsm.get_state_string(fsm.get_state()) ++ this.fsm.get_state_string(fsm.state) + ) + : new Logging.State( + this, + "%s:%s selected %s", +- this.fsm.get_state_string(fsm.get_state()), ++ this.fsm.get_state_string(fsm.state), + this.selected_mailbox.to_string(), + this.selected_readonly ? "RO" : "RW" + ); +diff --git a/src/engine/imap/transport/imap-deserializer.vala b/src/engine/imap/transport/imap-deserializer.vala +index 249f7c85..559a5e78 100644 +--- a/src/engine/imap/transport/imap-deserializer.vala ++++ b/src/engine/imap/transport/imap-deserializer.vala +@@ -294,7 +294,7 @@ public class Geary.Imap.Deserializer : BaseObject, Logging.Source { + + /** {@inheritDoc} */ + public Logging.State to_logging_state() { +- return new Logging.State(this, fsm.get_state_string(fsm.get_state())); ++ return new Logging.State(this, fsm.get_state_string(fsm.state)); + } + + /** Sets the connection's logging parent. */ +@@ -429,7 +429,7 @@ public class Geary.Imap.Deserializer : BaseObject, Logging.Source { + } + + private Mode get_mode() { +- switch (fsm.get_state()) { ++ switch (fsm.state) { + case State.LITERAL_DATA: + return Mode.BLOCK; + +diff --git a/src/engine/state/state-machine.vala b/src/engine/state/state-machine.vala +index 351babb8..ef32555d 100644 +--- a/src/engine/state/state-machine.vala ++++ b/src/engine/state/state-machine.vala +@@ -5,13 +5,20 @@ + */ + + public class Geary.State.Machine : BaseObject { ++ ++ /** The state machine's current state. */ ++ public uint state { get; private set; } ++ ++ /** Determines if the state machine crashes your app when mis-configured. */ ++ public bool abort_on_no_transition { get; set; default = true; } ++ ++ /** Determines if transition logging is enabled. */ ++ public bool logging { get; private set; default = false; } ++ + private Geary.State.MachineDescriptor descriptor; +- private uint state; + private Mapping[,] transitions; + private unowned Transition? default_transition; + private bool locked = false; +- private bool abort_on_no_transition = true; +- private bool logging = false; + private unowned PostTransition? post_transition = null; + private void *post_user = null; + private Object? post_object = null; +@@ -39,26 +46,6 @@ public class Geary.State.Machine : BaseObject { + } + } + +- public uint get_state() { +- return state; +- } +- +- public bool get_abort_on_no_transition() { +- return abort_on_no_transition; +- } +- +- public void set_abort_on_no_transition(bool abort) { +- abort_on_no_transition = abort; +- } +- +- public void set_logging(bool logging) { +- this.logging = logging; +- } +- +- public bool is_logging() { +- return logging; +- } +- + public uint issue(uint event, void *user = null, Object? object = null, Error? err = null) { + assert(event < descriptor.event_count); + assert(state < descriptor.state_count); +@@ -70,7 +57,7 @@ public class Geary.State.Machine : BaseObject { + string msg = "%s: No transition defined for %s@%s".printf(to_string(), + descriptor.get_event_string(event), descriptor.get_state_string(state)); + +- if (get_abort_on_no_transition()) ++ if (this.abort_on_no_transition) + error(msg); + else + critical(msg); +@@ -96,7 +83,7 @@ public class Geary.State.Machine : BaseObject { + } + locked = false; + +- if (is_logging()) ++ if (this.logging) + message("%s: %s", to_string(), get_transition_string(old_state, event, state)); + + // Perform post-transition if registered +-- +2.29.2 + diff --git a/mail-client/geary/files/0027-Geary.Imap.ClientSession-Treat-logout-as-disconnect.patch b/mail-client/geary/files/0027-Geary.Imap.ClientSession-Treat-logout-as-disconnect.patch new file mode 100644 index 0000000..ca458cf --- /dev/null +++ b/mail-client/geary/files/0027-Geary.Imap.ClientSession-Treat-logout-as-disconnect.patch @@ -0,0 +1,561 @@ +From 41be8693d4481d6a50f49e3bf6698e9103d0bfa7 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 27 Sep 2020 16:00:35 +1000 +Subject: [PATCH 027/124] Geary.Imap.ClientSession: Treat logout as disconnect + +Convert `get_protocol_state` to an automatic property, so that rather +than requiring explcit signals for lifecycle events, a GObject notify +signal can be used instead. + +Convert disconnect signal to a property so it can be accessed if needed. + +Convert code listening to the disconnect signal to listen to notify +signals for `protocol_state` instead, and hence also treat the session +as disconnected when a logout is in progress. + +Fixes #986 +--- + src/engine/imap/api/imap-client-service.vala | 38 +++--- + src/engine/imap/api/imap-folder-session.vala | 2 +- + src/engine/imap/api/imap-session-object.vala | 26 ++-- + .../imap/transport/imap-client-session.vala | 118 ++++++++++-------- + .../transport/imap-client-session-test.vala | 40 +++--- + test/integration/imap/client-session.vala | 2 +- + 6 files changed, 130 insertions(+), 96 deletions(-) + +diff --git a/src/engine/imap/api/imap-client-service.vala b/src/engine/imap/api/imap-client-service.vala +index e0aad41b..da3598f3 100644 +--- a/src/engine/imap/api/imap-client-service.vala ++++ b/src/engine/imap/api/imap-client-service.vala +@@ -252,7 +252,7 @@ public class Geary.Imap.ClientService : Geary.ClientService { + if (!disconnect) { + // If the session has a mailbox selected, close it before + // adding it back to the pool +- ClientSession.ProtocolState proto = session.get_protocol_state(); ++ ClientSession.ProtocolState proto = session.protocol_state; + if (proto == ClientSession.ProtocolState.SELECTED || + proto == ClientSession.ProtocolState.SELECTING) { + // always close mailbox to return to authorized state +@@ -263,7 +263,7 @@ public class Geary.Imap.ClientService : Geary.ClientService { + session.to_string(), imap_error.message); + disconnect = true; + } +- if (session.get_protocol_state() != AUTHORIZED) { ++ if (session.protocol_state != AUTHORIZED) { + // Closing it didn't leave it in the desired + // state, so drop it + disconnect = true; +@@ -393,7 +393,7 @@ public class Geary.Imap.ClientService : Geary.ClientService { + /** Determines if a session is valid, disposing of it if not. */ + private async bool check_session(ClientSession target, bool claiming) { + bool valid = false; +- switch (target.get_protocol_state()) { ++ switch (target.protocol_state) { + case ClientSession.ProtocolState.AUTHORIZED: + case ClientSession.ProtocolState.CLOSING_MAILBOX: + valid = true; +@@ -472,7 +472,7 @@ public class Geary.Imap.ClientService : Geary.ClientService { + + // Only bother tracking disconnects and enabling keeping alive + // now the session is properly established. +- new_session.disconnected.connect(on_disconnected); ++ new_session.notify["disconnected"].connect(on_session_disconnected); + new_session.enable_keepalives(selected_keepalive_sec, + unselected_keepalive_sec, + selected_with_idle_keepalive_sec); +@@ -509,7 +509,7 @@ public class Geary.Imap.ClientService : Geary.ClientService { + } + + private async void disconnect_session(ClientSession session) { +- if (session.get_protocol_state() != NOT_CONNECTED) { ++ if (session.protocol_state != NOT_CONNECTED) { + debug("Logging out session: %s", session.to_string()); + // No need to remove it after logging out, the + // disconnected handler will do that for us. +@@ -548,21 +548,27 @@ public class Geary.Imap.ClientService : Geary.ClientService { + } + + if (removed) { +- session.disconnected.disconnect(on_disconnected); ++ session.notify["disconnected"].connect(on_session_disconnected); + } + return removed; + } + +- private void on_disconnected(ClientSession session, +- ClientSession.DisconnectReason reason) { +- debug( +- "Session disconnected: %s: %s", +- session.to_string(), reason.to_string() +- ); +- this.remove_session_async.begin( +- session, +- (obj, res) => { this.remove_session_async.end(res); } +- ); ++ private void on_session_disconnected(GLib.Object source, ++ GLib.ParamSpec param) { ++ var session = source as ClientSession; ++ if (session != null && ++ session.protocol_state == NOT_CONNECTED && ++ session.disconnected != null) { ++ debug( ++ "Session disconnected: %s: %s", ++ session.to_string(), ++ session.disconnected.to_string() ++ ); ++ this.remove_session_async.begin( ++ session, ++ (obj, res) => { this.remove_session_async.end(res); } ++ ); ++ } + } + + } +diff --git a/src/engine/imap/api/imap-folder-session.vala b/src/engine/imap/api/imap-folder-session.vala +index 8b4212e6..8a2290cb 100644 +--- a/src/engine/imap/api/imap-folder-session.vala ++++ b/src/engine/imap/api/imap-folder-session.vala +@@ -1170,7 +1170,7 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + protected override ClientSession get_session() + throws ImapError { + var session = base.get_session(); +- if (session.get_protocol_state() != SELECTED && ++ if (session.protocol_state != SELECTED && + !this.mailbox.equal_to(session.selected_mailbox)) { + throw new ImapError.NOT_CONNECTED( + "IMAP object no longer SELECTED for %s", +diff --git a/src/engine/imap/api/imap-session-object.vala b/src/engine/imap/api/imap-session-object.vala +index 4a46ae1e..80695fca 100644 +--- a/src/engine/imap/api/imap-session-object.vala ++++ b/src/engine/imap/api/imap-session-object.vala +@@ -39,7 +39,7 @@ public abstract class Geary.Imap.SessionObject : BaseObject, Logging.Source { + */ + protected SessionObject(ClientSession session) { + this.session = session; +- this.session.disconnected.connect(on_disconnected); ++ this.session.notify["protocol-state"].connect(on_session_state_change); + } + + ~SessionObject() { +@@ -63,7 +63,9 @@ public abstract class Geary.Imap.SessionObject : BaseObject, Logging.Source { + this.session = null; + + if (old_session != null) { +- old_session.disconnected.disconnect(on_disconnected); ++ old_session.notify["protocol-state"].disconnect( ++ on_session_state_change ++ ); + } + + return old_session; +@@ -93,7 +95,7 @@ public abstract class Geary.Imap.SessionObject : BaseObject, Logging.Source { + protected virtual ClientSession get_session() + throws ImapError { + if (this.session == null || +- this.session.get_protocol_state() == NOT_CONNECTED) { ++ this.session.protocol_state == NOT_CONNECTED) { + throw new ImapError.NOT_CONNECTED( + "IMAP object has no session or is not connected" + ); +@@ -101,11 +103,19 @@ public abstract class Geary.Imap.SessionObject : BaseObject, Logging.Source { + return this.session; + } + +- private void on_disconnected(ClientSession.DisconnectReason reason) { +- debug("Disconnected %s", reason.to_string()); +- +- close(); +- disconnected(reason); ++ private void on_session_state_change() { ++ if (this.session != null && ++ this.session.protocol_state == NOT_CONNECTED) { ++ // Disconnect reason will null when the session is being ++ // logged out but the logout command has not yet been ++ // completed. ++ var reason = ( ++ this.session.disconnected ?? ++ ClientSession.DisconnectReason.LOCAL_CLOSE ++ ); ++ close(); ++ disconnected(reason); ++ } + } + + } +diff --git a/src/engine/imap/transport/imap-client-session.vala b/src/engine/imap/transport/imap-client-session.vala +index 91137f1e..ba125616 100644 +--- a/src/engine/imap/transport/imap-client-session.vala ++++ b/src/engine/imap/transport/imap-client-session.vala +@@ -90,7 +90,7 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + * + * See [[http://tools.ietf.org/html/rfc3501#section-3]] + * +- * @see get_protocol_state ++ * @see protocol_state + */ + public enum ProtocolState { + NOT_CONNECTED, +@@ -230,6 +230,55 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + "Geary.Imap.ClientSession", State.NOT_CONNECTED, State.COUNT, Event.COUNT, + state_to_string, event_to_string); + ++ ++ /** ++ * Returns the current IMAP protocol state for the session. ++ */ ++ public ProtocolState protocol_state { ++ get { ++ var state = ProtocolState.NOT_CONNECTED; ++ switch (fsm.state) { ++ case State.NOT_CONNECTED: ++ case State.LOGOUT: ++ case State.CLOSED: ++ state = NOT_CONNECTED; ++ break; ++ ++ case State.NOAUTH: ++ state = UNAUTHORIZED; ++ break; ++ ++ case State.AUTHORIZED: ++ state = AUTHORIZED; ++ break; ++ ++ case State.SELECTED: ++ state = SELECTED; ++ break; ++ ++ case State.CONNECTING: ++ state = CONNECTING; ++ break; ++ ++ case State.AUTHORIZING: ++ state = AUTHORIZING; ++ break; ++ ++ case State.SELECTING: ++ state = SELECTING; ++ break; ++ ++ case State.CLOSING_MAILBOX: ++ state = CLOSING_MAILBOX; ++ break; ++ } ++ return state; ++ } ++ } ++ ++ /** Specifies the reason the session was disconnected, if any. */ ++ public DisconnectReason? disconnected { get; private set; default = null; } ++ + /** + * Set of IMAP extensions reported as being supported by the server. + * +@@ -330,9 +379,6 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + // Connection state changes + // + +- /** Emitted when the session is disconnected for any reason. */ +- public signal void disconnected(DisconnectReason reason); +- + /** Emitted when an IMAP command status response is received. */ + public signal void status_response_received(StatusResponse status_response); + +@@ -482,7 +528,14 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + new Geary.State.Mapping(State.CLOSED, Event.RECV_ERROR, Geary.State.nop), + }; + +- fsm = new Geary.State.Machine(machine_desc, mappings, on_ignored_transition); ++ this.fsm = new Geary.State.Machine( ++ machine_desc, ++ mappings, ++ on_ignored_transition ++ ); ++ this.fsm.notify["state"].connect( ++ () => this.notify_property("protocol_state") ++ ); + } + + ~ClientSession() { +@@ -493,7 +546,7 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + break; + + default: +- warning("ClientSession ref dropped while still active"); ++ GLib.warning("ClientSession ref dropped while still active"); + } + } + +@@ -636,43 +689,6 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + return delim; + } + +- /** +- * Returns the current {@link ProtocolState} of the {@link ClientSession} and, if selected, +- * the current mailbox. +- */ +- public ProtocolState get_protocol_state() { +- switch (fsm.get_state()) { +- case State.NOT_CONNECTED: +- case State.LOGOUT: +- case State.CLOSED: +- return ProtocolState.NOT_CONNECTED; +- +- case State.NOAUTH: +- return ProtocolState.UNAUTHORIZED; +- +- case State.AUTHORIZED: +- return ProtocolState.AUTHORIZED; +- +- case State.SELECTED: +- return ProtocolState.SELECTED; +- +- case State.CONNECTING: +- return ProtocolState.CONNECTING; +- +- case State.AUTHORIZING: +- return ProtocolState.AUTHORIZING; +- +- case State.SELECTING: +- return ProtocolState.SELECTING; +- +- case State.CLOSING_MAILBOX: +- return ProtocolState.CLOSING_MAILBOX; +- +- default: +- assert_not_reached(); +- } +- } +- + // Some commands require waiting for a completion response in order to shift the state machine's + // State; this allocates such a wait, returning false if another command is outstanding also + // waiting for one to finish +@@ -1197,7 +1213,7 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + public void enable_idle() + throws GLib.Error { + if (this.is_idle_supported) { +- switch (get_protocol_state()) { ++ switch (this.protocol_state) { + case ProtocolState.AUTHORIZING: + case ProtocolState.AUTHORIZED: + case ProtocolState.SELECTED: +@@ -1218,7 +1234,7 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + unschedule_keepalive(); + + uint seconds; +- switch (get_protocol_state()) { ++ switch (this.protocol_state) { + case ProtocolState.NOT_CONNECTED: + case ProtocolState.CONNECTING: + return; +@@ -1555,10 +1571,11 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + MachineParams params = (MachineParams) object; + + assert(params.cmd is LogoutCommand); +- if (!reserve_state_change_cmd(params, state, event)) +- return state; ++ if (reserve_state_change_cmd(params, state, event)) { ++ state = State.LOGOUT; ++ } + +- return State.LOGOUT; ++ return state; + } + + private uint on_logging_out_recv_status(uint state, +@@ -1625,7 +1642,7 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + } + + drop_connection(); +- disconnected(DisconnectReason.LOCAL_CLOSE); ++ this.disconnected = DisconnectReason.LOCAL_CLOSE; + + if (disconnect_err != null) + throw disconnect_err; +@@ -1661,6 +1678,8 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + } + + private async void do_disconnect(DisconnectReason reason) { ++ this.disconnected = reason; ++ + try { + yield this.cx.disconnect_async(); + } catch (GLib.Error err) { +@@ -1668,7 +1687,6 @@ public class Geary.Imap.ClientSession : BaseObject, Logging.Source { + } + + drop_connection(); +- disconnected(reason); + } + + // +diff --git a/test/engine/imap/transport/imap-client-session-test.vala b/test/engine/imap/transport/imap-client-session-test.vala +index 2aed9211..c9a4165c 100644 +--- a/test/engine/imap/transport/imap-client-session-test.vala ++++ b/test/engine/imap/transport/imap-client-session-test.vala +@@ -44,17 +44,17 @@ class Geary.Imap.ClientSessionTest : TestCase { + this.server.add_script_line(WAIT_FOR_DISCONNECT, ""); + + var test_article = new ClientSession(new_endpoint(), new Quirks()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + test_article.connect_async.begin( + CONNECT_TIMEOUT, null, this.async_completion + ); + test_article.connect_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == UNAUTHORIZED); ++ assert_true(test_article.protocol_state == UNAUTHORIZED); + + test_article.disconnect_async.begin(null, this.async_completion); + test_article.disconnect_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + TestServer.Result result = this.server.wait_for_script(this.main_loop); + assert_true( +@@ -148,13 +148,13 @@ class Geary.Imap.ClientSessionTest : TestCase { + this.server.add_script_line(WAIT_FOR_DISCONNECT, ""); + + var test_article = new ClientSession(new_endpoint(), new Quirks()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + test_article.connect_async.begin( + CONNECT_TIMEOUT, null, this.async_completion + ); + test_article.connect_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == UNAUTHORIZED); ++ assert_true(test_article.protocol_state == UNAUTHORIZED); + + test_article.login_async.begin( + new Credentials(PASSWORD, "test", "password"), +@@ -162,11 +162,11 @@ class Geary.Imap.ClientSessionTest : TestCase { + this.async_completion + ); + test_article.login_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == AUTHORIZED); ++ assert_true(test_article.protocol_state == AUTHORIZED); + + test_article.disconnect_async.begin(null, this.async_completion); + test_article.disconnect_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + TestServer.Result result = this.server.wait_for_script(this.main_loop); + assert_true( +@@ -185,17 +185,17 @@ class Geary.Imap.ClientSessionTest : TestCase { + this.server.add_script_line(DISCONNECT, ""); + + var test_article = new ClientSession(new_endpoint(), new Quirks()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + test_article.connect_async.begin( + CONNECT_TIMEOUT, null, this.async_completion + ); + test_article.connect_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == UNAUTHORIZED); ++ assert_true(test_article.protocol_state == UNAUTHORIZED); + + test_article.logout_async.begin(null, this.async_completion); + test_article.logout_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + TestServer.Result result = this.server.wait_for_script(this.main_loop); + assert_true( +@@ -216,13 +216,13 @@ class Geary.Imap.ClientSessionTest : TestCase { + this.server.add_script_line(DISCONNECT, ""); + + var test_article = new ClientSession(new_endpoint(), new Quirks()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + test_article.connect_async.begin( + CONNECT_TIMEOUT, null, this.async_completion + ); + test_article.connect_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == UNAUTHORIZED); ++ assert_true(test_article.protocol_state == UNAUTHORIZED); + + test_article.login_async.begin( + new Credentials(PASSWORD, "test", "password"), +@@ -230,11 +230,11 @@ class Geary.Imap.ClientSessionTest : TestCase { + this.async_completion + ); + test_article.login_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == AUTHORIZED); ++ assert_true(test_article.protocol_state == AUTHORIZED); + + test_article.logout_async.begin(null, this.async_completion); + test_article.logout_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + TestServer.Result result = this.server.wait_for_script(this.main_loop); + assert_true( +@@ -261,13 +261,13 @@ class Geary.Imap.ClientSessionTest : TestCase { + this.server.add_script_line(WAIT_FOR_DISCONNECT, ""); + + var test_article = new ClientSession(new_endpoint(), new Quirks()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + test_article.connect_async.begin( + CONNECT_TIMEOUT, null, this.async_completion + ); + test_article.connect_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == UNAUTHORIZED); ++ assert_true(test_article.protocol_state == UNAUTHORIZED); + + test_article.initiate_session_async.begin( + new Credentials(PASSWORD, "test", "password"), +@@ -305,13 +305,13 @@ class Geary.Imap.ClientSessionTest : TestCase { + this.server.add_script_line(WAIT_FOR_DISCONNECT, ""); + + var test_article = new ClientSession(new_endpoint(), new Quirks()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + test_article.connect_async.begin( + CONNECT_TIMEOUT, null, this.async_completion + ); + test_article.connect_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == UNAUTHORIZED); ++ assert_true(test_article.protocol_state == UNAUTHORIZED); + + test_article.initiate_session_async.begin( + new Credentials(PASSWORD, "test", "password"), +@@ -368,13 +368,13 @@ class Geary.Imap.ClientSessionTest : TestCase { + this.server.add_script_line(WAIT_FOR_DISCONNECT, ""); + + var test_article = new ClientSession(new_endpoint(), new Quirks()); +- assert_true(test_article.get_protocol_state() == NOT_CONNECTED); ++ assert_true(test_article.protocol_state == NOT_CONNECTED); + + test_article.connect_async.begin( + CONNECT_TIMEOUT, null, this.async_completion + ); + test_article.connect_async.end(async_result()); +- assert_true(test_article.get_protocol_state() == UNAUTHORIZED); ++ assert_true(test_article.protocol_state == UNAUTHORIZED); + + test_article.initiate_session_async.begin( + new Credentials(PASSWORD, "test", "password"), +diff --git a/test/integration/imap/client-session.vala b/test/integration/imap/client-session.vala +index ca813b79..257d7319 100644 +--- a/test/integration/imap/client-session.vala ++++ b/test/integration/imap/client-session.vala +@@ -34,7 +34,7 @@ class Integration.Imap.ClientSession : TestCase { + } + + public override void tear_down() throws GLib.Error { +- if (this.session.get_protocol_state() != NOT_CONNECTED) { ++ if (this.session.protocol_state != NOT_CONNECTED) { + this.session.disconnect_async.begin(null, this.async_completion); + this.session.disconnect_async.end(async_result()); + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0028-Composer.Widget-Fix-criticals-when-mailto-has-empty-.patch b/mail-client/geary/files/0028-Composer.Widget-Fix-criticals-when-mailto-has-empty-.patch new file mode 100644 index 0000000..7d20bdb --- /dev/null +++ b/mail-client/geary/files/0028-Composer.Widget-Fix-criticals-when-mailto-has-empty-.patch @@ -0,0 +1,79 @@ +From bd85c4f1a82c14fad0f909e5b1058c73d5b56c92 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 27 Sep 2020 19:57:52 +1000 +Subject: [PATCH 028/124] Composer.Widget: Fix criticals when "mailto:" has + empty body + +--- + src/client/composer/composer-widget.vala | 13 +++++++++---- + test/client/composer/composer-widget-test.vala | 10 ++++++++++ + 2 files changed, 19 insertions(+), 4 deletions(-) + +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index ecc3fbfd..dab8cfd8 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -575,8 +575,11 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + Gee.HashMultiMap headers = new Gee.HashMultiMap(); + if (mailto.has_prefix(MAILTO_URI_PREFIX)) { + // Parse the mailto link. ++ string? email = null; + string[] parts = mailto.substring(MAILTO_URI_PREFIX.length).split("?", 2); +- string email = Uri.unescape_string(parts[0]); ++ if (parts.length > 0) { ++ email = Uri.unescape_string(parts[0]); ++ } + string[] params = parts.length == 2 ? parts[1].split("&") : new string[0]; + foreach (string param in params) { + string[] param_parts = param.split("=", 2); +@@ -587,14 +590,16 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + } + + // Assemble the headers. +- if (email.length > 0 && headers.contains("to")) ++ if (!Geary.String.is_empty_or_whitespace(email) && ++ headers.contains("to")) { + this.to = "%s,%s".printf( + email, Geary.Collection.first(headers.get("to")) + ); +- else if (email.length > 0) ++ } else if (!Geary.String.is_empty_or_whitespace(email)) { + this.to = email; +- else if (headers.contains("to")) ++ } else if (headers.contains("to")) { + this.to = Geary.Collection.first(headers.get("to")); ++ } + + if (headers.contains("cc")) + this.cc = Geary.Collection.first(headers.get("cc")); +diff --git a/test/client/composer/composer-widget-test.vala b/test/client/composer/composer-widget-test.vala +index c35b52e4..6b31c943 100644 +--- a/test/client/composer/composer-widget-test.vala ++++ b/test/client/composer/composer-widget-test.vala +@@ -92,6 +92,7 @@ public class Composer.WidgetTest : TestCase { + add_test("load_empty_body", load_empty_body); + add_test("load_empty_body_to", load_empty_body_to); + add_test("load_mailto", load_mailto); ++ add_test("load_mailto_empty", load_mailto_empty); + add_test("load_context_edit", load_context_edit); + add_test("load_context_reply_sender", load_context_reply_sender); + add_test("load_context_reply_sender_with_reply_to", load_context_reply_sender_with_reply_to); +@@ -164,6 +165,15 @@ public class Composer.WidgetTest : TestCase { + assert_equal(widget.to, "mailto@example.com"); + } + ++ public void load_mailto_empty() throws GLib.Error { ++ var widget = new Widget(this.application, this.config, this.account); ++ ++ widget.load_mailto.begin("mailto:", this.async_completion); ++ widget.load_mailto.end(async_result()); ++ ++ assert_equal(widget.to, ""); ++ } ++ + public void load_context_edit() throws GLib.Error { + var widget = new Widget(this.application, this.config, this.account); + var email = load_email(MESSAGE_WITH_REPLY_TO); +-- +2.29.2 + diff --git a/mail-client/geary/files/0029-Composer.Widget-Fix-critical-when-immediately-detach.patch b/mail-client/geary/files/0029-Composer.Widget-Fix-critical-when-immediately-detach.patch new file mode 100644 index 0000000..7eac0d3 --- /dev/null +++ b/mail-client/geary/files/0029-Composer.Widget-Fix-critical-when-immediately-detach.patch @@ -0,0 +1,58 @@ +From 70186163e8bcf1a0644669fe7c9b2b56dceef9b5 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 27 Sep 2020 22:46:40 +1000 +Subject: [PATCH 029/124] Composer.Widget: Fix critical when immediately + detaching a new composer + +New composers have no associated GLib Application instance, so when the +main window is already showing a composer and another is opened, the +new composer has no application to pass its window. + +Fix by requiring `Composer.detach` be passed an application instance +and find an appropriate instance at each call site. +--- + src/client/application/application-main-window.vala | 2 +- + src/client/composer/composer-widget.vala | 6 ++---- + 2 files changed, 3 insertions(+), 5 deletions(-) + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index e8428459..73b50e33 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -875,7 +875,7 @@ public class Application.MainWindow : + */ + internal void show_composer(Composer.Widget composer) { + if (this.has_composer) { +- composer.detach(); ++ composer.detach(this.application); + } else { + // See if the currently displayed conversation contains + // any of the composer's referred emails (preferring the +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index dab8cfd8..37e93fb4 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -785,10 +785,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + } + + /** Detaches the composer and opens it in a new window. */ +- public void detach() { ++ public void detach(Application.Client application) { + Gtk.Widget? focused_widget = null; +- var application = this.container.top_window.application as Application.Client; +- + if (this.container != null) { + focused_widget = this.container.top_window.get_focus(); + this.container.close(); +@@ -2374,7 +2372,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + } + + private void on_detach() { +- detach(); ++ detach(this.container.top_window.application as Application.Client); + } + + private void on_add_attachment() { +-- +2.29.2 + diff --git a/mail-client/geary/files/0030-Geary.RFC822.Message-Fix-plain-text-file-attachment-.patch b/mail-client/geary/files/0030-Geary.RFC822.Message-Fix-plain-text-file-attachment-.patch new file mode 100644 index 0000000..d15076c --- /dev/null +++ b/mail-client/geary/files/0030-Geary.RFC822.Message-Fix-plain-text-file-attachment-.patch @@ -0,0 +1,126 @@ +From 6fb365ebd45e283f770cde341c6332af66051ab6 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 27 Sep 2020 23:37:50 +1000 +Subject: [PATCH 030/124] Geary.RFC822.Message: Fix plain text file attachment + line ending conversion + +Since RFC822 requires CRLF for line endings, it's not possible for a MUA +to determine the correct line ending for text attachments that use the +default or quoted-printable transfer encoding. + +As such, always use a binary encoding for all non-body message parts +(which for now means always use Base64) so that line endings are +explicitly encoded and hence always decoded correctly. + +Fixes #1001 +--- + src/engine/rfc822/rfc822-message.vala | 65 +++++++++++++-------------- + 1 file changed, 30 insertions(+), 35 deletions(-) + +diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala +index 51563caf..e6cc17a4 100644 +--- a/src/engine/rfc822/rfc822-message.vala ++++ b/src/engine/rfc822/rfc822-message.vala +@@ -494,7 +494,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { + FileQueryInfoFlags.NONE + ); + +- GMime.Part part = new GMime.Part.with_type("text", "plain"); ++ GMime.Part part = new GMime.Part(); + part.set_disposition(disposition.serialize()); + part.set_filename(file.get_basename()); + +@@ -504,10 +504,26 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { + ); + part.set_content_type(content_type); + ++ // Always use a binary encoding since even when attaching ++ // text/plain parts, the line ending must always be preserved ++ // and this is not possible without a binary encoding. See ++ // https://gitlab.gnome.org/GNOME/geary/-/issues/1001 ++ // ++ // TODO: The actual content encoding should be set based on ++ // the IMAP/SMTP server's supported encoding. For example, if ++ // 8-bit or binary is supported, then those should be used ++ // instead of Base64. ++ part.set_content_encoding(BASE64); ++ + GMime.StreamGIO stream = new GMime.StreamGIO(file); + stream.set_owner(false); ++ part.set_content( ++ new GMime.DataWrapper.with_stream( ++ stream, GMime.ContentEncoding.BINARY ++ ) ++ ); + +- return yield finalise_attachment_part(stream, part, content_type, cancellable); ++ return part; + } + + /** +@@ -540,50 +556,29 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { + ); + } + +- GMime.Part part = new GMime.Part.with_type("text", "plain"); ++ GMime.Part part = new GMime.Part(); + part.set_disposition(disposition.serialize()); + part.set_filename(basename); + part.set_content_type(content_type); + +- GMime.StreamMem stream = Utils.create_stream_mem(buffer); +- +- return yield finalise_attachment_part(stream, part, content_type, cancellable); +- } +- +- /** +- * Set encoding and content object on GMime part +- */ +- private async GMime.Part finalise_attachment_part(GMime.Stream stream, +- GMime.Part part, +- GMime.ContentType content_type, +- GLib.Cancellable? cancellable) +- throws GLib.Error { +- +- // Text parts should be scanned fully to determine best +- // (i.e. most compact) transport encoding to use, but +- // that's usually fine since they tend to be +- // small. Non-text parts are nearly always going to be +- // binary, so we just assume they require Base64. ++ // Always use a binary encoding since even when attaching ++ // text/plain parts, the line ending must always be preserved ++ // and this is not possible without a binary encoding. See ++ // https://gitlab.gnome.org/GNOME/geary/-/issues/1001 + // +- // XXX We should be setting the content encoding lazily +- // though because if sending via a MTA that supports 8-bit +- // or binary transfer modes, we can avoid using a content +- // encoding altogether. +- GMime.ContentEncoding encoding = BASE64; +- if (content_type.is_type("text", Mime.ContentType.WILDCARD)) { +- encoding = yield Utils.get_best_encoding( +- stream, +- GMime.EncodingConstraint.7BIT, +- cancellable +- ); +- } ++ // TODO: The actual content encoding should be set based on ++ // the IMAP/SMTP server's supported encoding. For example, if ++ // 8-bit or binary is supported, then those should be used ++ // instead of Base64. ++ part.set_content_encoding(BASE64); + +- part.set_content_encoding(encoding); ++ GMime.StreamMem stream = Utils.create_stream_mem(buffer); + part.set_content( + new GMime.DataWrapper.with_stream( + stream, GMime.ContentEncoding.BINARY + ) + ); ++ + return part; + } + +-- +2.29.2 + diff --git a/mail-client/geary/files/0031-build-Fix-build-failure-due-to-missing-client-API.patch b/mail-client/geary/files/0031-build-Fix-build-failure-due-to-missing-client-API.patch new file mode 100644 index 0000000..4fc6f8f --- /dev/null +++ b/mail-client/geary/files/0031-build-Fix-build-failure-due-to-missing-client-API.patch @@ -0,0 +1,31 @@ +From b5abd3f9664c396ad57f177750973695c58e8b7f Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Mon, 28 Sep 2020 08:53:35 +1000 +Subject: [PATCH 031/124] build: Fix build failure due to missing client API + +Don't use client lib vala ags when building the web process extension, +since that will cause it to also write a VAPI with the same name as +the client lib, causing the build to fail if the web process side wins +that race. + +Fixes #985 +--- + src/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/meson.build b/src/meson.build +index 87760e74..225777e8 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -72,7 +72,7 @@ web_process = library('geary-web-process', + webkit2gtk_web_extension, + ], + include_directories: config_h_dir, +- vala_args: client_vala_args, ++ vala_args: geary_vala_args, + c_args: geary_c_args, + install: true, + install_dir: web_extensions_dir +-- +2.29.2 + diff --git a/mail-client/geary/files/0032-FormattedConversationData-Fix-font-settings-being-ig.patch b/mail-client/geary/files/0032-FormattedConversationData-Fix-font-settings-being-ig.patch new file mode 100644 index 0000000..3a32fc7 --- /dev/null +++ b/mail-client/geary/files/0032-FormattedConversationData-Fix-font-settings-being-ig.patch @@ -0,0 +1,62 @@ +From 836a9ad3847d42087c4daeec81e84b7b7936714a Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Mon, 28 Sep 2020 22:26:23 +1000 +Subject: [PATCH 032/124] FormattedConversationData: Fix font settings being + ignored under Flatpak + +Get the interface font from Gtk.Settings instead of GLib.Settings since +the latter can't actually access desktop settings under Flatpak. + +Partial fix for #989 + +See also GNOME/glib#2213 +--- + .../formatted-conversation-data.vala | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/src/client/conversation-list/formatted-conversation-data.vala b/src/client/conversation-list/formatted-conversation-data.vala +index f2b635f8..b21a931f 100644 +--- a/src/client/conversation-list/formatted-conversation-data.vala ++++ b/src/client/conversation-list/formatted-conversation-data.vala +@@ -100,6 +100,8 @@ public class FormattedConversationData : Geary.BaseObject { + public Geary.Email? preview { get; private set; default = null; } + + private Application.Configuration config; ++ ++ private Gtk.Settings? gtk; + private Pango.FontDescription font; + + private Geary.App.Conversation? conversation = null; +@@ -115,13 +117,13 @@ public class FormattedConversationData : Geary.BaseObject { + Geary.Email preview, + Gee.List account_owner_emails) { + this.config = config; ++ this.gtk = Gtk.Settings.get_default(); + this.conversation = conversation; + this.account_owner_emails = account_owner_emails; + this.use_to = conversation.base_folder.used_as.is_outgoing(); + +- this.font = Pango.FontDescription.from_string( +- this.config.gnome_interface.get_string("font-name") +- ); ++ this.gtk.notify["gtk-font-name"].connect(this.update_font); ++ update_font(); + + // Load preview-related data. + update_date_string(); +@@ -472,4 +474,12 @@ public class FormattedConversationData : Geary.BaseObject { + return ink_rect; + } + ++ private void update_font() { ++ var name = "Cantarell 11"; ++ if (this.gtk != null) { ++ name = this.gtk.gtk_font_name; ++ } ++ this.font = Pango.FontDescription.from_string(name); ++ } ++ + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0033-client-Fix-not-all-folders-being-displayed-in-additi.patch b/mail-client/geary/files/0033-client-Fix-not-all-folders-being-displayed-in-additi.patch new file mode 100644 index 0000000..b3c820d --- /dev/null +++ b/mail-client/geary/files/0033-client-Fix-not-all-folders-being-displayed-in-additi.patch @@ -0,0 +1,64 @@ +From bfbc7f5d70f724010a9789ecefca6c1aa9f22962 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Tue, 29 Sep 2020 23:01:38 +1000 +Subject: [PATCH 033/124] client: Fix not all folders being displayed in + additional main windows + +Application.MainWindow: Sort folders already available in an account +by path so that FolderListTree is able to add them all successfully. + +Application.FolderContext: Implement Gee.Comparable so instances can +be sorted. + +Fixes #1004 +--- + src/client/application/application-folder-context.vala | 7 ++++++- + src/client/application/application-main-window.vala | 7 ++++++- + 2 files changed, 12 insertions(+), 2 deletions(-) + +diff --git a/src/client/application/application-folder-context.vala b/src/client/application/application-folder-context.vala +index b85c901b..4ed47cf5 100644 +--- a/src/client/application/application-folder-context.vala ++++ b/src/client/application/application-folder-context.vala +@@ -9,7 +9,8 @@ + /** + * Collects application state related to a single folder. + */ +-public class Application.FolderContext : Geary.BaseObject { ++public class Application.FolderContext : Geary.BaseObject, ++ Gee.Comparable { + + + /** Specifies different kinds of displayable email counts. */ +@@ -41,6 +42,10 @@ public class Application.FolderContext : Geary.BaseObject { + update(); + } + ++ public int compare_to(FolderContext other) { ++ return this.folder.path.compare_to(other.folder.path); ++ } ++ + private void update() { + this.display_name = Util.I18n.to_folder_display_name(this.folder); + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 73b50e33..47749019 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -1010,7 +1010,12 @@ public class Application.MainWindow : + to_add.commands.undone.connect(on_command_undo); + to_add.commands.redone.connect(on_command_redo); + +- add_folders(to_add.get_folders()); ++ // Sort the folders so FolderListTree adds them all ++ // correctly ++ var added = new Gee.TreeSet(); ++ added.add_all(to_add.get_folders()); ++ ++ add_folders(added); + this.accounts.add(to_add); + } + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0034-Update-Hebrew-translation.patch b/mail-client/geary/files/0034-Update-Hebrew-translation.patch new file mode 100644 index 0000000..5cd865f --- /dev/null +++ b/mail-client/geary/files/0034-Update-Hebrew-translation.patch @@ -0,0 +1,6014 @@ +From 151f5ee66ccc79059977ce8afe865f87f28b12ac Mon Sep 17 00:00:00 2001 +From: Yosef Or Boczko +Date: Tue, 29 Sep 2020 14:05:42 +0000 +Subject: [PATCH 034/124] Update Hebrew translation + +(cherry picked from commit 710dd09e1bfbc8ce3fa7ec848cecc276c7e53dbe) +--- + po/he.po | 5285 ++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 3732 insertions(+), 1553 deletions(-) + +diff --git a/po/he.po b/po/he.po +index fd4edac1..831b0707 100644 +--- a/po/he.po ++++ b/po/he.po +@@ -10,510 +10,1145 @@ + # Yaron Shahrabani , 2012-2013 + # yoseforb , 2013 + # yoseforb , 2013 +-# Yosef Or Boczko , 2013, 2014, 2015. ++# Yosef Or Boczko , 2013-2020. + # + msgid "" + msgstr "" + "Project-Id-Version: geary-0.4.1\n" +-"Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2016-08-09 23:56+0300\n" +-"PO-Revision-Date: 2016-08-10 00:06+0300\n" ++"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" ++"POT-Creation-Date: 2020-09-19 08:49+0000\n" ++"PO-Revision-Date: 2020-09-29 17:04+0300\n" + "Last-Translator: Yosef Or Boczko \n" +-"Language-Team: עברית <>\n" ++"Language-Team: Hebrew \n" + "Language: he\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n>2||n==0) ? 1 : 2;\n" +-"X-Generator: Gtranslator 2.91.6\n" ++"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n>2||n==0) ? 1 : 2\n" ++"X-Generator: Gtranslator 3.36.0\n" + +-#: ../desktop/geary.desktop.in.h:1 ../desktop/geary-autostart.desktop.in.h:1 +-msgid "Geary" +-msgstr "Geary" +- +-#: ../desktop/geary.desktop.in.h:2 ../desktop/geary-autostart.desktop.in.h:2 +-#: ../src/client/application/geary-application.vala:18 +-msgid "Mail Client" +-msgstr "לקוח דוא״ל" +- +-#: ../desktop/geary.desktop.in.h:3 ../desktop/geary-autostart.desktop.in.h:3 +-msgid "Geary Mail" +-msgstr "דואר אלקטרוני Geary" +- +-#: ../desktop/geary.desktop.in.h:4 ../desktop/geary-autostart.desktop.in.h:4 +-msgid "Send and receive email" +-msgstr "שליחה וקבלה של דוא״ל" +- +-#: ../desktop/geary.desktop.in.h:5 ../desktop/geary-autostart.desktop.in.h:5 +-msgid "Email;E-mail;Mail;" +-msgstr "דוא״ל;דואר אלקטרוני;דואר;" +- +-#: ../desktop/geary.desktop.in.h:6 +-msgid "Compose Message" +-msgstr "יצירת הודעה" +- +-#: ../desktop/geary-attach.contract.in.h:1 ++#: desktop/geary-attach.contract.desktop.in:3 + msgid "Send by email" + msgstr "שליחה על ידי דוא״ל" + +-#: ../desktop/geary-attach.contract.in.h:2 ++#: desktop/geary-attach.contract.desktop.in:6 + msgid "Send files using Geary" + msgstr "שליחת קבצים באמצעות Geary" + +-#: ../src/client/accounts/account-dialog-add-edit-pane.vala:51 +-#: ../src/client/components/stock.vala:31 +-msgid "_Save" +-msgstr "_שמירה" +- +-#: ../src/client/accounts/account-dialog-add-edit-pane.vala:51 +-#: ../src/client/components/stock.vala:22 +-msgid "_Add" +-msgstr "_הוספה" +- +-#. reset/clear widgets +-#: ../src/client/accounts/account-dialog-edit-alternate-emails-pane.vala:120 +-#, c-format +-msgid "Additional addresses for %s" +-msgstr "כתובות נוספות עבור %s" +- +-#. Sets min size. +-#: ../src/client/accounts/account-dialog.vala:21 +-msgid "Accounts" +-msgstr "משתמשים" +- +-#. Copyright 2016 Software Freedom Conservancy Inc. +-#. * +-#. * This software is licensed under the GNU Lesser General Public License +-#. * (version 2.1 or later). See the COPYING file in this distribution. +-#. +-#. Page for adding or editing an account. +-#. / Placeholder text indicating that the user should type their first name and last name +-#: ../src/client/accounts/add-edit-page.vala:10 +-msgid "First Last" +-msgstr "שם פרטי שם משפחה" +- +-#: ../src/client/accounts/add-edit-page.vala:235 +-msgid "Welcome to Geary." +-msgstr "ברוך בואך ל־Geary." +- +-#: ../src/client/accounts/add-edit-page.vala:235 +-msgid "Enter your account information to get started." +-msgstr "נא להזין את פרטי החשבון שלך כדי להתחיל." +- +-#: ../src/client/accounts/add-edit-page.vala:255 +-msgid "2 weeks back" +-msgstr "שבועיים אחורנית" ++#. Translators: The application name ++#: desktop/geary-autostart.desktop.in.in:3 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:11 ++#: desktop/org.gnome.Geary.desktop.in.in:3 ++#: src/client/accounts/accounts-editor-servers-pane.vala:560 ++#: src/client/application/application-main-window.vala:608 ++msgid "Geary" ++msgstr "Geary" + +-#. IDs are # of days +-#: ../src/client/accounts/add-edit-page.vala:256 +-msgid "1 month back" +-msgstr "חודש אחד אחורנית" ++#: desktop/geary-autostart.desktop.in.in:4 ++#: desktop/org.gnome.Geary.desktop.in.in:4 ++#| msgid "Gmail" ++msgid "Email" ++msgstr "דוא״ל" ++ ++#. Translators: The application's summary / tagline ++#: desktop/geary-autostart.desktop.in.in:5 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:15 ++#: desktop/org.gnome.Geary.desktop.in.in:5 ++#: src/client/application/application-client.vala:33 ++msgid "Send and receive email" ++msgstr "שליחה וקבלה של דוא״ל" + +-#: ../src/client/accounts/add-edit-page.vala:257 +-msgid "3 months back" +-msgstr "שלושה חודשים אחורנית" ++#. Translators: These are desktop search terms. Do not translate semicolons, end line with a semicolon. ++#: desktop/geary-autostart.desktop.in.in:7 ++msgid "Email;E-mail;Mail;" ++msgstr "דוא״ל;דואר אלקטרוני;דואר;מייל;אימייל;אי מייל;מיילים;הודעות;" + +-#: ../src/client/accounts/add-edit-page.vala:258 +-msgid "6 months back" +-msgstr "שישה חודשים אחורנית" ++#. Translators: The development team's name ++#: desktop/org.gnome.Geary.appdata.xml.in.in:13 ++msgid "Geary Development Team" ++msgstr "צוות פיתוח Geary" + +-#: ../src/client/accounts/add-edit-page.vala:259 +-msgid "1 year back" +-msgstr "שנה אחת אחורנית" ++#: desktop/org.gnome.Geary.appdata.xml.in.in:17 ++msgid "" ++"Geary is an email application built around conversations, for the GNOME 3 " ++"desktop. It allows you to read, find and send email with a straightforward, " ++"modern interface." ++msgstr "" ++"‏Geary הוא יישם דוא״ל הבנוי סביב תכתובות, עבור שולחן העבודה GNOME 3. הוא " ++"מאפשר לקרוא, למצוא ולשלוח דוא״ל עם ממשק חדיש ופשוט." + +-#: ../src/client/accounts/add-edit-page.vala:260 +-msgid "2 years back" +-msgstr "שנתיים אחורנית" ++#: desktop/org.gnome.Geary.appdata.xml.in.in:22 ++msgid "" ++"Conversations allow you to read a complete discussion without having to find " ++"and click from message to message." ++msgstr "תכתובות מאפשר לך לקרוא דיון שלם ללא הצורך למצוא וללחוץ מהודעה להודעה." ++ ++#: desktop/org.gnome.Geary.appdata.xml.in.in:26 ++msgid "Geary’s features include:" ++msgstr "תכונות Geary כוללות:" ++ ++#: desktop/org.gnome.Geary.appdata.xml.in.in:28 ++msgid "Quick email account setup" ++msgstr "הגדרה מהירה של חשבון דוא״ל" ++ ++#: desktop/org.gnome.Geary.appdata.xml.in.in:29 ++msgid "Shows related messages together in conversations" ++msgstr "הצגת הודעות קשורות יחד בתכתובות" ++ ++#: desktop/org.gnome.Geary.appdata.xml.in.in:30 ++msgid "Fast, full text and keyword search" ++msgstr "חיפוש מילים מהיר ובכל הטקסט" ++ ++#: desktop/org.gnome.Geary.appdata.xml.in.in:31 ++msgid "Full-featured HTML and plain text message composer" ++msgstr "תמיכה מלאה ב־HTML וביצירת הודעות בטקסט פשוט" ++ ++#: desktop/org.gnome.Geary.appdata.xml.in.in:32 ++#| msgid "Show _notifications for new mail" ++msgid "Desktop notification of new mail" ++msgstr "הצגת התרעות על קבלת דואר חדש" ++ ++#: desktop/org.gnome.Geary.appdata.xml.in.in:33 ++msgid "Compatible with GMail, Yahoo! Mail, Outlook.com and other IMAP servers" ++msgstr "תואם עם Gmail, Yahoo! Mail, Outlook.com ושרתי IMAP אחרים" ++ ++#. Translators: A screenshot description. ++#: desktop/org.gnome.Geary.appdata.xml.in.in:47 ++#| msgid "_Display conversation preview" ++msgid "Geary displaying a conversation" ++msgstr "‏Geary מציג תכתובת" ++ ++#. Translators: A screenshot description. ++#: desktop/org.gnome.Geary.appdata.xml.in.in:58 ++msgid "Geary showing the rich text composer" ++msgstr "‏Geary מציג יצירת הודעה בטקסט עשיר" ++ ++#. Translators: These are desktop search terms. Do not translate semicolons, end line with a semicolon. ++#: desktop/org.gnome.Geary.desktop.in.in:7 ++msgid "Mail;E-mail;IMAP;GMail;Yahoo;Hotmail;Outlook;" ++msgstr "" ++"דואר;דואר אלקטרוני;דוא״ל;דואל;מייל;אימייל;Gmail;GMaillYahoo;Hotmail;Outlook;" + +-#: ../src/client/accounts/add-edit-page.vala:261 +-msgid "4 years back" +-msgstr "ארבע שנים אחורנית" ++#: desktop/org.gnome.Geary.desktop.in.in:22 ++msgid "Compose Message" ++msgstr "יצירת הודעה" + +-#. Separator +-#: ../src/client/accounts/add-edit-page.vala:263 +-msgid "Everything" +-msgstr "הכל" ++#: desktop/org.gnome.Geary.desktop.in.in:26 ++msgid "New Window" ++msgstr "חלון חדש" + +-#: ../src/client/accounts/add-edit-page.vala:282 +-msgid "Edit" +-msgstr "עריכה" ++#: desktop/org.gnome.Geary.gschema.xml:8 ++msgid "Maximize window" ++msgstr "Maximize window" + +-#: ../src/client/accounts/add-edit-page.vala:284 +-msgid "Preview" +-msgstr "תצוגה מקדימה" ++#: desktop/org.gnome.Geary.gschema.xml:9 ++msgid "True if the application window is maximized, false otherwise." ++msgstr "True if the application window is maximized, false otherwise." + +-#: ../src/client/accounts/add-edit-page.vala:738 +-msgid "Remem_ber passwords" +-msgstr "זכירת סס_מאות" ++#: desktop/org.gnome.Geary.gschema.xml:14 ++msgid "Width of window" ++msgstr "Width of window" + +-#: ../src/client/accounts/add-edit-page.vala:745 ../ui/login.glade.h:6 +-msgid "Remem_ber password" +-msgstr "זכירת _ססמה" ++#: desktop/org.gnome.Geary.gschema.xml:15 ++msgid "The last recorded width of the application window." ++msgstr "The last recorded width of the application window." + +-#: ../src/client/accounts/add-edit-page.vala:779 +-msgid "Unable to validate:\n" +-msgstr "לא ניתן לאמת לאמת:\n" ++#: desktop/org.gnome.Geary.gschema.xml:20 ++msgid "Height of window" ++msgstr "Height of window" + +-#: ../src/client/accounts/add-edit-page.vala:781 +-msgid " • Invalid account nickname.\n" +-msgstr " • כינוי חשבון לא חוקי.\n" ++#: desktop/org.gnome.Geary.gschema.xml:21 ++msgid "The last recorded height of the application window." ++msgstr "The last recorded height of the application window." + +-#: ../src/client/accounts/add-edit-page.vala:784 +-msgid " • Email address already added to Geary.\n" +-msgstr " • כתובת דוא״ל זה כבר נוסף ל־Geary.\n" ++#: desktop/org.gnome.Geary.gschema.xml:26 ++msgid "Position of folder list pane" ++msgstr "Position of folder list pane" + +-#: ../src/client/accounts/add-edit-page.vala:788 +-msgid " • IMAP connection error.\n" +-msgstr " • IMAP בעיית חיבור.\n" ++#: desktop/org.gnome.Geary.gschema.xml:27 ++msgid "Position of the folder list Paned grabber." ++msgstr "Position of the folder list Paned grabber." + +-#: ../src/client/accounts/add-edit-page.vala:791 +-msgid " • IMAP username or password incorrect.\n" +-msgstr "• שם משתמש או ססמת ה־IMAP שגויים.\n" ++#: desktop/org.gnome.Geary.gschema.xml:32 ++msgid "Position of folder list pane when horizontal" ++msgstr "Position of folder list pane when horizontal" + +-#: ../src/client/accounts/add-edit-page.vala:794 +-msgid " • SMTP connection error.\n" +-msgstr " • SMTP בעיית חיבור.\n" ++#: desktop/org.gnome.Geary.gschema.xml:33 ++msgid "" ++"Position of the folder list Paned grabber in the horizontal orientation." ++msgstr "" ++"Position of the folder list Paned grabber in the horizontal orientation." + +-#: ../src/client/accounts/add-edit-page.vala:797 +-msgid " • SMTP username or password incorrect.\n" +-msgstr " • שם משתמש או ססמת SMTP אינם נכונים.\n" ++#: desktop/org.gnome.Geary.gschema.xml:38 ++msgid "Position of folder list pane when vertical" ++msgstr "Position of folder list pane when vertical" + +-#: ../src/client/accounts/add-edit-page.vala:801 +-msgid " • Connection error.\n" +-msgstr "• בעיית חיבור.\n" ++#: desktop/org.gnome.Geary.gschema.xml:39 ++msgid "Position of the folder list Paned grabber in the vertical orientation." ++msgstr "Position of the folder list Paned grabber in the vertical orientation." + +-#: ../src/client/accounts/add-edit-page.vala:805 +-msgid " • Username or password incorrect.\n" +-msgstr " • שם משתמש או ססמה אינם נכונים.\n" ++#: desktop/org.gnome.Geary.gschema.xml:44 ++msgid "Orientation of the folder list pane" ++msgstr "Orientation of the folder list pane" + +-#: ../src/client/application/geary-application.vala:19 +-msgid "Copyright 2016 Software Freedom Conservancy Inc." +-msgstr "כל הזכויות שמורות למוסד לחופש התכנה בע״מ. 2016" ++#: desktop/org.gnome.Geary.gschema.xml:45 ++msgid "True if the folder list Paned is in the horizontal orientation." ++msgstr "True if the folder list Paned is in the horizontal orientation." + +-#: ../src/client/application/geary-application.vala:21 +-msgid "Visit the Geary web site" +-msgstr "ביקור באתר Geary" ++#: desktop/org.gnome.Geary.gschema.xml:50 ++msgid "Show/hide formatting toolbar" ++msgstr "Show/hide formatting toolbar" + +-#: ../src/client/application/geary-args.vala:10 +-msgid "Start Geary with hidden main window" +-msgstr "Start Geary with hidden main window" ++#: desktop/org.gnome.Geary.gschema.xml:51 ++msgid "True if the formatting toolbar in the composer is shown." ++msgstr "True if the formatting toolbar in the composer is shown." + +-#: ../src/client/application/geary-args.vala:11 +-msgid "Output debugging information" +-msgstr "הצגת מידע שיסייע באיתור תקלות" ++#: desktop/org.gnome.Geary.gschema.xml:56 ++msgid "Position of message list pane" ++msgstr "Position of message list pane" + +-#: ../src/client/application/geary-args.vala:12 +-msgid "Log conversation monitoring" +-msgstr "ביצוע רישום של מעקב תכתובות" ++#: desktop/org.gnome.Geary.gschema.xml:57 ++msgid "Position of the message list Paned grabber." ++msgstr "Position of the message list Paned grabber." + +-#: ../src/client/application/geary-args.vala:13 +-msgid "Log network deserialization" +-msgstr "ביצוע רישום של network deserialization" ++#: desktop/org.gnome.Geary.gschema.xml:62 ++#| msgid "_Automatically select next message" ++msgid "Autoselect next message" ++msgstr "Autoselect next message" + +-#: ../src/client/application/geary-args.vala:14 +-msgid "Log network activity" +-msgstr "ביצוע רישום של פעילות הרשת" ++#: desktop/org.gnome.Geary.gschema.xml:63 ++msgid "True if we should autoselect the next available conversation." ++msgstr "True if we should autoselect the next available conversation." + +-#. / The IMAP replay queue is how changes on the server are replicated on the client. +-#. / It could also be called the IMAP events queue. +-#: ../src/client/application/geary-args.vala:17 +-msgid "Log IMAP replay queue" +-msgstr "ביצוע רישום של replay queue ב־IMAP" ++#: desktop/org.gnome.Geary.gschema.xml:68 ++#| msgid "_Display conversation preview" ++msgid "Display message previews" ++msgstr "Display message previews" + +-#. / Serialization is how commands and responses are converted into a stream of bytes for +-#. / network transmission +-#: ../src/client/application/geary-args.vala:20 +-msgid "Log network serialization" +-msgstr "ביצוע רישום של network serialization" ++#: desktop/org.gnome.Geary.gschema.xml:69 ++msgid "True if we should display a short preview of each message." ++msgstr "True if we should display a short preview of each message." + +-#: ../src/client/application/geary-args.vala:21 +-msgid "Log periodic activity" +-msgstr "ביצוע רישום של פעילות תקופתית" ++#: desktop/org.gnome.Geary.gschema.xml:74 ++msgid "Use single key shortcuts" ++msgstr "Use single key shortcuts" + +-#: ../src/client/application/geary-args.vala:22 +-msgid "Log database queries (generates lots of messages)" +-msgstr "ביצוע רישום שאילתות למסד הנתונים (מייצר כמות רבה של הודעות)" ++#: desktop/org.gnome.Geary.gschema.xml:75 ++msgid "" ++"Enables shortcuts for email actions that do not require pressing to " ++"emulate those used by Gmail." ++msgstr "" ++"Enables shortcuts for email actions that do not require pressing to " ++"emulate those used by Gmail." + +-#. / "Normalization" can also be called "synchronization" +-#: ../src/client/application/geary-args.vala:24 +-msgid "Log folder normalization" +-msgstr "ביצוע רישום של folder normalization" ++#: desktop/org.gnome.Geary.gschema.xml:82 ++msgid "Languages that shall be used in the spell checker" ++msgstr "Languages that shall be used in the spell checker" + +-#: ../src/client/application/geary-args.vala:25 +-msgid "Allow inspection of WebView" +-msgstr "לאפשר בדיקה של WebView" ++#: desktop/org.gnome.Geary.gschema.xml:83 ++msgid "" ++"A list of POSIX locales, with the empty list disabling spell checking and " ++"the null list using desktop languages by default." ++msgstr "" ++"A list of POSIX locales, with the empty list disabling spell checking and " ++"the null list using desktop languages by default." + +-#: ../src/client/application/geary-args.vala:26 +-msgid "Revoke all server certificates with TLS warnings" +-msgstr "לשלול כל אישורי שרת עם אזהרות TLS" ++#: desktop/org.gnome.Geary.gschema.xml:90 ++msgid "Languages that are displayed in the spell checker popover" ++msgstr "Languages that are displayed in the spell checker popover" + +-#: ../src/client/application/geary-args.vala:27 +-msgid "Display program version" +-msgstr "הצגת גרסת התכנה" ++#: desktop/org.gnome.Geary.gschema.xml:91 ++msgid "" ++"List of languages that are always displayed in the popover of the spell " ++"checker." ++msgstr "" ++"List of languages that are always displayed in the popover of the spell " ++"checker." + +-#. This gives a command-line hint on how to open new composer windows with mailto: +-#: ../src/client/application/geary-args.vala:51 +-#, c-format +-msgid "Use %s to open a new composer window" +-msgstr "יש להשתמש %s לפתיחת חלון יצירת הודעה חדשה חדש" ++#: desktop/org.gnome.Geary.gschema.xml:96 ++#| msgid "Notify of new mail at start_up" ++msgid "Notify of new mail at startup" ++msgstr "Notify of new mail at startup" + +-#: ../src/client/application/geary-args.vala:52 +-msgid "Please report comments, suggestions and bugs to:" +-msgstr "נא לשלוח הערות, הצעות ודיווחי תקלות לכתובת:" ++#: desktop/org.gnome.Geary.gschema.xml:97 ++#| msgid "Notify of new mail at start_up" ++msgid "True to notify of new mail at startup." ++msgstr "True to notify of new mail at startup." + +-#. i18n: Command line arguments are invalid +-#: ../src/client/application/geary-args.vala:59 +-#, c-format +-msgid "Failed to parse command line options: %s\n" +-msgstr "ניתוח הפרמטרים שהועברו בשורת הפקודה נכשל: %s\n" ++#: desktop/org.gnome.Geary.gschema.xml:102 ++msgid "Ask when opening an attachment" ++msgstr "Ask when opening an attachment" + +-#: ../src/client/application/geary-args.vala:70 +-#, c-format +-msgid "Unrecognized command line option \"%s\"\n" +-msgstr "הפרמטרים לשורת הפקודה אינם מוכרים: „%s”\n" ++#: desktop/org.gnome.Geary.gschema.xml:103 ++#| msgid "To add them as attachments" ++msgid "True to ask when opening an attachment." ++msgstr "True to ask when opening an attachment." + +-#: ../src/client/application/geary-controller.vala:60 +-msgid "Delete conversation" +-msgstr "מחיקת שיחה" ++#: desktop/org.gnome.Geary.gschema.xml:108 ++msgid "Whether to compose emails in HTML" ++msgstr "Whether to compose emails in HTML" + +-#: ../src/client/application/geary-controller.vala:61 +-msgid "Delete conversation (Shift+Delete)" +-msgstr "מחיקת שיחה (Shift+Delete)" ++#: desktop/org.gnome.Geary.gschema.xml:109 ++msgid "True to compose emails in HTML; false for plain text." ++msgstr "True to compose emails in HTML; false for plain text." + +-#: ../src/client/application/geary-controller.vala:62 +-msgid "Delete conversations (Shift+Delete)" +-msgstr "מחיקת שיחות (Shift+Delete)" ++#: desktop/org.gnome.Geary.gschema.xml:114 ++msgid "Advisory strategy for full-text searching" ++msgstr "Advisory strategy for full-text searching" + +-#. This refers to the action ("move email to the trash"), not the Trash folder itself +-#: ../src/client/application/geary-controller.vala:66 +-msgid "Move conversation to Trash (Delete, Backspace)" +-msgstr "הזזת שיחה לאשפה (Delete, Backspace)" ++#: desktop/org.gnome.Geary.gschema.xml:115 ++msgid "" ++"Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." ++msgstr "" ++"Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." + +-#: ../src/client/application/geary-controller.vala:67 +-msgid "Move conversations to Trash (Delete, Backspace)" +-msgstr "הזזת שיחות לאשפה (Delete, Backspace)" ++#: desktop/org.gnome.Geary.gschema.xml:120 ++#| msgid "No conversations in folder." ++msgid "Zoom of conversation viewer" ++msgstr "Zoom of conversation viewer" + +-#. This refers to the action ("archive an email"), not the Archive folder itself +-#: ../src/client/application/geary-controller.vala:71 +-msgid "_Archive" +-msgstr "תיוק ב_ארכיון" ++#: desktop/org.gnome.Geary.gschema.xml:121 ++msgid "The zoom to apply on the conservation view." ++msgstr "The zoom to apply on the conservation view." + +-#: ../src/client/application/geary-controller.vala:72 +-msgid "Archive conversation (A)" +-msgstr "תיוק שיחה בארכיון (ש)" ++#: desktop/org.gnome.Geary.gschema.xml:126 ++#| msgid "Use %s to open a new composer window" ++msgid "Size of detached composer window" ++msgstr "Size of detached composer window" + +-#: ../src/client/application/geary-controller.vala:73 +-msgid "Archive conversations (A)" +-msgstr "תיוק שיחות בארכיון (A)" ++#: desktop/org.gnome.Geary.gschema.xml:127 ++msgid "The last recorded size of the detached composer window." ++msgstr "The last recorded size of the detached composer window." + +-#: ../src/client/application/geary-controller.vala:76 +-msgid "Mark as S_pam" +-msgstr "סימון כ_דואר זבל" ++#: desktop/org.gnome.Geary.gschema.xml:132 ++#| msgid "Error sending email" ++msgid "Undo sending email delay" ++msgstr "Undo sending email delay" + +-#: ../src/client/application/geary-controller.vala:77 +-msgid "Mark as not S_pam" +-msgstr "סימון כלא דואר ז_בל" ++#: desktop/org.gnome.Geary.gschema.xml:133 ++msgid "" ++"The number of seconds to wait before sending an email. Set to zero or less " ++"to disable." ++msgstr "" ++"The number of seconds to wait before sending an email. Set to zero or less " ++"to disable." + +-#: ../src/client/application/geary-controller.vala:79 +-#: ../src/client/application/geary-controller.vala:403 +-msgid "Mark conversation" +-msgstr "סימון שיחה" ++#: desktop/org.gnome.Geary.gschema.xml:139 ++msgid "Brief notification display time" ++msgstr "Brief notification display time" + +-#: ../src/client/application/geary-controller.vala:80 +-msgid "Mark conversations" +-msgstr "סימון שיחות" ++#: desktop/org.gnome.Geary.gschema.xml:140 ++msgid "" ++"The length of time in seconds for which brief notifications should be " ++"displayed." ++msgstr "" ++"The length of time in seconds for which brief notifications should be " ++"displayed." + +-#: ../src/client/application/geary-controller.vala:81 +-msgid "Add label to conversation" +-msgstr "הוספת תווית לשיחה" ++#: desktop/org.gnome.Geary.gschema.xml:146 ++msgid "List of optional plugins" ++msgstr "List of optional plugins" + +-#: ../src/client/application/geary-controller.vala:82 +-msgid "Add label to conversations" +-msgstr "הוספת תווית לשיחות" ++#: desktop/org.gnome.Geary.gschema.xml:147 ++msgid "Plugins listed here will be loaded on startup." ++msgstr "Plugins listed here will be loaded on startup." + +-#: ../src/client/application/geary-controller.vala:83 +-#: ../src/client/application/geary-controller.vala:442 +-msgid "Move conversation" +-msgstr "הזזת שיחה" ++#: desktop/org.gnome.Geary.gschema.xml:152 ++msgid "Whether we migrated the old settings" ++msgstr "Whether we migrated the old settings" + +-#: ../src/client/application/geary-controller.vala:84 +-msgid "Move conversations" +-msgstr "הזזת שיחות" ++#: desktop/org.gnome.Geary.gschema.xml:153 ++msgid "" ++"False to check for the old “org.yorba.geary”-schema and copy its values." ++msgstr "" ++"False to check for the old “org.yorba.geary”-schema and copy its values." ++ ++#. Translators: In-app notification label, when ++#. the app had a problem pinning an otherwise ++#. untrusted TLS certificate ++#: src/client/accounts/accounts-editor.vala:210 ++msgid "Failed to store certificate" ++msgstr "ארע כשל באחסון אישור" ++ ++#. Translators: Label for adding an email account ++#. account for a generic IMAP service provider. ++#: src/client/accounts/accounts-editor-add-pane.vala:108 ++msgid "All others" ++msgstr "כל השאר" ++ ++#. Translators: In-app notification label ++#: src/client/accounts/accounts-editor-add-pane.vala:195 ++#: src/client/accounts/accounts-editor-servers-pane.vala:321 ++msgid "Check your receiving login and password" ++msgstr "בדיקת קבלת ההתחברות והססמה שלך" ++ ++#. Translators: In-app notification label ++#: src/client/accounts/accounts-editor-add-pane.vala:210 ++#: src/client/accounts/accounts-editor-servers-pane.vala:334 ++msgid "Check your receiving server details" ++msgstr "בדיקת קבלת פרטי השרת שלך" ++ ++#. Translators: In-app notification label ++#. There was an SMTP auth error, but IMAP already ++#. succeeded, so the user probably needs to ++#. specify custom creds here ++#. Translators: In-app notification label ++#: src/client/accounts/accounts-editor-add-pane.vala:232 ++#: src/client/accounts/accounts-editor-servers-pane.vala:355 ++msgid "Check your sending login and password" ++msgstr "בדיקת שליחת ההתחברות והססמה שלך" ++ ++#. Translators: In-app notification label ++#: src/client/accounts/accounts-editor-add-pane.vala:246 ++#: src/client/accounts/accounts-editor-servers-pane.vala:368 ++msgid "Check your sending server details" ++msgstr "בדיקת שליחת פרטי השרת שלך" ++ ++#. Translators: In-app notification label ++#: src/client/accounts/accounts-editor-add-pane.vala:261 ++msgid "Check your email address and password" ++msgstr "בדיקת כתובת הדוא״ל והססמה שלך" ++ ++#. Translators: In-app notification label ++#: src/client/accounts/accounts-editor-add-pane.vala:272 ++msgid "Could not connect, check your network" ++msgstr "לא ניתן להתחבר, יש לבדוק את הרשת שלך" ++ ++#. Translators: In-app notification label for a ++#. generic error creating an account ++#: src/client/accounts/accounts-editor-add-pane.vala:285 ++msgid "An unexpected problem occurred" ++msgstr "התרחשה בעיה בלתי צפויה" ++ ++#. Translators: In-app notification label, the ++#. string substitution is a more detailed reason. ++#: src/client/accounts/accounts-editor-add-pane.vala:303 ++#, c-format ++msgid "Account not created: %s" ++msgstr "לא נוצר חשבון: ‏%s" ++ ++#. Translators: Label for the person's actual name when adding ++#. an account ++#: src/client/accounts/accounts-editor-add-pane.vala:558 ++msgid "Your name" ++msgstr "השם שלך" ++ ++#. Translators: Label used for the address part of an ++#. email address when editing a user's sender address ++#. preferences for an account. ++#: src/client/accounts/accounts-editor-add-pane.vala:575 ++#: src/client/accounts/accounts-editor-edit-pane.vala:513 ++#| msgid "Email address:" ++msgid "Email address" ++msgstr "כתובת דוא״ל" ++ ++#. Translators: Placeholder for the default sender address ++#. when adding an account ++#. Translators: This is used as a placeholder for the ++#. address part of an email address when editing a user's ++#. sender address preferences for an account. ++#: src/client/accounts/accounts-editor-add-pane.vala:579 ++#: src/client/accounts/accounts-editor-edit-pane.vala:479 ++msgid "person@example.com" ++msgstr "person@example.com" ++ ++#. Translators: Label for an IMAP/SMTP service login/user name ++#. when adding an account ++#. Translators: Label for the user's login name for an ++#. IMAP, SMTP, etc service ++#: src/client/accounts/accounts-editor-add-pane.vala:593 ++#: src/client/accounts/accounts-editor-servers-pane.vala:889 ++msgid "Login name" ++msgstr "שם התחברות" ++ ++#. Translators: Label for the user's password for an IMAP, ++#. SMTP, etc service ++#: src/client/accounts/accounts-editor-add-pane.vala:607 ++#: src/client/accounts/accounts-editor-servers-pane.vala:1011 ++#: ui/password-dialog.glade:108 ++msgid "Password" ++msgstr "ססמה" + +-#: ../src/client/application/geary-controller.vala:383 +-#: ../ui/app_menu.interface.h:1 +-msgid "A_ccounts" +-msgstr "_חשבונות" ++#. Translators: Label for the IMAP server hostname when ++#. adding an account. ++#. Translators: This label describes the host name or IP ++#. address and port used by an account's IMAP service. ++#: src/client/accounts/accounts-editor-add-pane.vala:629 ++#: src/client/accounts/accounts-editor-servers-pane.vala:733 ++#| msgid "IMAP username" ++msgid "IMAP server" ++msgstr "שרת IMAP" ++ ++#. Translators: Placeholder for the IMAP server hostname ++#. when adding an account. ++#: src/client/accounts/accounts-editor-add-pane.vala:632 ++msgid "imap.example.com" ++msgstr "imap.example.com" ++ ++#. Translators: Label for the SMTP server hostname when ++#. adding an account. ++#. Translators: This label describes the host name or IP ++#. address and port used by an account's SMTP service. ++#: src/client/accounts/accounts-editor-add-pane.vala:638 ++#: src/client/accounts/accounts-editor-servers-pane.vala:739 ++#| msgid "SMTP username" ++msgid "SMTP server" ++msgstr "שרת SMTP" ++ ++#. Translators: Placeholder for the SMTP server hostname ++#. when adding an account. ++#: src/client/accounts/accounts-editor-add-pane.vala:641 ++msgid "smtp.example.com" ++msgstr "smtp.example.com" ++ ++#. Translators: Label in the account editor for the user's ++#. custom name for an account. ++#: src/client/accounts/accounts-editor-edit-pane.vala:277 ++#: ui/accounts_editor_remove_pane.ui:123 ++#| msgid "Accounts" ++msgid "Account name" ++msgstr "שם החשבון" ++ ++#. Translators: Tooltip used to undo changing ++#. the name of an account. The string ++#. substitution is the old name of the ++#. account. ++#: src/client/accounts/accounts-editor-edit-pane.vala:318 ++#, c-format ++msgid "Change account name back to “%s”" ++msgstr "שינוי שם החשבון חזרה ל־„%s”" ++ ++#. Translators: Tooltip for adding a new email sender/from ++#. address's address to an account ++#: src/client/accounts/accounts-editor-edit-pane.vala:342 ++#| msgid "Remove email address" ++msgid "Add a new sender email address" ++msgstr "הוספת כתובת שולח חדשה" ++ ++#. Translators: Label used to indicate the user has ++#. provided no display name for one of their sender ++#. email addresses in their account settings. ++#: src/client/accounts/accounts-editor-edit-pane.vala:423 ++msgid "Name not set" ++msgstr "לא הוגדר שם" ++ ++#. Translators: This is used as a placeholder for the ++#. display name for an email address when editing a user's ++#. sender address preferences for an account. ++#: src/client/accounts/accounts-editor-edit-pane.vala:464 ++msgid "Sender Name" ++msgstr "שם שולח" ++ ++#: src/client/accounts/accounts-editor-edit-pane.vala:491 ++#| msgid "_Remove" ++msgid "Remove" ++msgstr "הסרה" ++ ++#. Translators: Label used for the display name part of an ++#. email address when editing a user's sender address ++#. preferences for an account. ++#: src/client/accounts/accounts-editor-edit-pane.vala:506 ++#| msgid "Username" ++msgid "Sender name" ++msgstr "שם שולח" ++ ++#. Translators: Label used as the undo tooltip after adding an ++#. new sender email address to an account. The string ++#. substitution is the email address added. ++#: src/client/accounts/accounts-editor-edit-pane.vala:573 ++#, c-format ++msgid "Remove “%s”" ++msgstr "הסרת „%s”" + +-#: ../src/client/application/geary-controller.vala:388 +-#: ../src/client/components/stock.vala:27 ../ui/app_menu.interface.h:2 +-msgid "_Preferences" +-msgstr "הע_דפות" ++#. Translators: Label used as the undo tooltip after editing a ++#. sender address for an account. The string substitution is ++#. the email address edited. ++#: src/client/accounts/accounts-editor-edit-pane.vala:613 ++#, c-format ++msgid "Undo changes to “%s”" ++msgstr "ביטול השינויים עבור „%s”" + +-#: ../src/client/application/geary-controller.vala:392 +-#: ../src/client/components/stock.vala:25 ../ui/app_menu.interface.h:3 +-msgid "_Help" +-msgstr "_עזרה" ++#. Translators: Label used as the undo tooltip after removing ++#. a sender address from an account. The string substitution ++#. is the email address edited. ++#: src/client/accounts/accounts-editor-edit-pane.vala:700 ++#, c-format ++msgid "Add “%s” back" ++msgstr "הוספת „%s” חזרה" ++ ++#. Translators: Label used as the undo tooltip after removing ++#. a sender address from an account. The string substitution ++#. is the email address edited. ++#: src/client/accounts/accounts-editor-edit-pane.vala:742 ++msgid "Undo signature changes" ++msgstr "ביטול שינוי חתימה" ++ ++#. Translators: This label describes the account ++#. preference for the length of time (weeks, months or ++#. years) that past email should be downloaded. ++#: src/client/accounts/accounts-editor-edit-pane.vala:790 ++#| msgid "_Download mail" ++msgid "Download mail" ++msgstr "הורדת דואר" ++ ++#. Translators: Tooltip for undoing a change ++#. to the length of time that past email ++#. should be downloaded for an account. The ++#. string substitution is the duration, ++#. e.g. "1 month back". ++#: src/client/accounts/accounts-editor-edit-pane.vala:822 ++#, c-format ++msgid "Change download period back to: %s" ++msgstr "שינוי תקופת הורדה ל: %s" + +-#: ../src/client/application/geary-controller.vala:396 +-#: ../src/client/components/stock.vala:21 ../ui/app_menu.interface.h:4 +-msgid "_About" +-msgstr "על _אודות" ++#: src/client/accounts/accounts-editor-edit-pane.vala:843 ++msgid "Everything" ++msgstr "מאז ומעולם" + +-#: ../src/client/application/geary-controller.vala:400 +-#: ../src/client/components/stock.vala:29 ../ui/app_menu.interface.h:5 +-msgid "_Quit" +-msgstr "י_ציאה" ++#: src/client/accounts/accounts-editor-edit-pane.vala:847 ++msgid "2 weeks back" ++msgstr "שבועיים אחורנית" + +-#: ../src/client/application/geary-controller.vala:405 +-msgid "_Mark as..." +-msgstr "_סימון בתור…" ++#: src/client/accounts/accounts-editor-edit-pane.vala:851 ++msgid "1 month back" ++msgstr "חודש אחד אחורנית" + +-#: ../src/client/application/geary-controller.vala:411 +-msgid "Mark as _Read" +-msgstr "סימון כ_נקרא" ++#: src/client/accounts/accounts-editor-edit-pane.vala:855 ++msgid "3 months back" ++msgstr "שלושה חודשים אחורנית" + +-#: ../src/client/application/geary-controller.vala:417 +-msgid "Mark as _Unread" +-msgstr "סימון כ_לא נקרא" ++#: src/client/accounts/accounts-editor-edit-pane.vala:859 ++msgid "6 months back" ++msgstr "שישה חודשים אחורנית" + +-#: ../src/client/application/geary-controller.vala:423 +-msgid "_Star" +-msgstr "הוספת _כוכב" ++#: src/client/accounts/accounts-editor-edit-pane.vala:863 ++msgid "1 year back" ++msgstr "שנה אחת אחורנית" + +-#: ../src/client/application/geary-controller.vala:428 +-msgid "U_nstar" +-msgstr "ה_סרת כוכב" ++#: src/client/accounts/accounts-editor-edit-pane.vala:867 ++msgid "2 years back" ++msgstr "שנתיים אחורנית" + +-#: ../src/client/application/geary-controller.vala:438 +-msgid "Add label" +-msgstr "הוספת תווית" ++#: src/client/accounts/accounts-editor-edit-pane.vala:871 ++msgid "4 years back" ++msgstr "ארבע שנים אחורנית" + +-#: ../src/client/application/geary-controller.vala:439 +-msgid "_Label" +-msgstr "_תווית" ++#: src/client/accounts/accounts-editor-edit-pane.vala:877 ++#, c-format ++#| msgid "1 year back" ++msgid "%d day back" ++msgid_plural "%d days back" ++msgstr[0] "יום אחד אחורה" ++msgstr[1] "‏%d ימים אחורה" ++msgstr[2] "יומיים אחורה" ++ ++#: src/client/accounts/accounts-editor-list-pane.vala:255 ++#: src/client/application/application-main-window.vala:2061 ++#| msgid "_Undo" ++msgid "Undo" ++msgstr "ביטול" ++ ++#: src/client/accounts/accounts-editor-list-pane.vala:264 ++#: src/client/application/application-main-window.vala:2044 ++#| msgid "_Redo" ++msgid "Redo" ++msgstr "ביצוע חוזר" ++ ++#: src/client/accounts/accounts-editor-list-pane.vala:358 ++#: src/client/accounts/accounts-editor-list-pane.vala:454 ++#: src/client/accounts/accounts-editor-row.vala:279 ++msgid "Gmail" ++msgstr "Gmail" + +-#: ../src/client/application/geary-controller.vala:443 +-msgid "_Move" +-msgstr "ה_עברה" ++#: src/client/accounts/accounts-editor-list-pane.vala:362 ++#: src/client/accounts/accounts-editor-list-pane.vala:458 ++#: src/client/accounts/accounts-editor-row.vala:283 ++msgid "Outlook.com" ++msgstr "Outlook.com" + +-#: ../src/client/application/geary-controller.vala:447 +-msgid "Compose new message (Ctrl+N, N)" +-msgstr "יצירת הודעה חדשה (Ctrl+מ, מ)" ++#: src/client/accounts/accounts-editor-list-pane.vala:366 ++#: src/client/accounts/accounts-editor-list-pane.vala:462 ++#: src/client/accounts/accounts-editor-row.vala:287 ++#| msgid "Yahoo! Mail" ++msgid "Yahoo" ++msgstr "Yahoo" ++ ++#. Translators: Tooltip for accounts that have been ++#. loaded but disabled by the user. ++#: src/client/accounts/accounts-editor-list-pane.vala:388 ++msgid "This account has been disabled" ++msgstr "החשבון הושבת" ++ ++#. Translators: Tooltip for accounts that have been ++#. loaded but because of some error are not able to be ++#. used. ++#: src/client/accounts/accounts-editor-list-pane.vala:397 ++msgid "This account has encountered a problem and is unavailable" ++msgstr "חשבון זה נתקל בבעיה ולכן אינו זימן" ++ ++#: src/client/accounts/accounts-editor-list-pane.vala:466 ++msgid "Other email providers" ++msgstr "ספקי דוא״ל אחרים" ++ ++#. Translators: Notification shown after removing an ++#. account. The string substitution is the name of the ++#. account. ++#: src/client/accounts/accounts-editor-list-pane.vala:572 ++#, c-format ++msgid "Account “%s” removed" ++msgstr "חשבון „%s” הוסר" + +-#. Reply to a message. +-#: ../src/client/application/geary-controller.vala:451 +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1892 +-msgid "_Reply" +-msgstr "לה_שיב" ++#. Translators: Notification shown after removing an account ++#. is undone. The string substitution is the name of the ++#. account. ++#: src/client/accounts/accounts-editor-list-pane.vala:579 ++#, c-format ++msgid "Account “%s” restored" ++msgstr "חשבון „%s” שוחזר" ++ ++#. Translators: Tooltip for dragging list items ++#: src/client/accounts/accounts-editor-row.vala:50 ++msgid "Drag to move this item" ++msgstr "יש לגרור על מנת להזיז פריט זה" ++ ++#. Translators: Label describes the service provider ++#. hosting the email account, e.g. Gmail, Yahoo, or some ++#. other generic IMAP service. ++#: src/client/accounts/accounts-editor-row.vala:299 ++msgid "Service provider" ++msgstr "ספק השרת" ++ ++#. Translators: This label describes what form of transport ++#. security (TLS, StartTLS, etc) used by an account's IMAP or SMTP ++#. service. ++#: src/client/accounts/accounts-editor-row.vala:473 ++msgid "Connection security" ++msgstr "אבטחת החיבור" ++ ++#. Translators: Label used when no auth scheme is used ++#. by an account's IMAP or SMTP service. ++#: src/client/accounts/accounts-editor-row.vala:484 ++#: src/client/accounts/accounts-editor-servers-pane.vala:760 ++#: src/client/accounts/accounts-editor-servers-pane.vala:975 ++msgid "None" ++msgstr "כלום" + +-#: ../src/client/application/geary-controller.vala:452 +-msgid "Reply (Ctrl+R, R)" +-msgstr "להשיב (Ctrl+ר, ר)" ++#: src/client/accounts/accounts-editor-row.vala:491 ++#| msgid "_Star" ++msgid "StartTLS" ++msgstr "StartTLS" ++ ++#: src/client/accounts/accounts-editor-row.vala:498 ++#| msgid "SSL/TLS" ++msgid "TLS" ++msgstr "TLS" ++ ++#. Translators: Label for source of SMTP authentication ++#. credentials (none, use IMAP, custom) when adding a new ++#. account ++#. Translators: An info bar button label ++#: src/client/accounts/accounts-editor-row.vala:539 ++#: src/client/application/application-main-window.vala:554 ++msgid "Login" ++msgstr "התחברות" ++ ++#. Translators: ComboBox value for source of SMTP ++#. authentication credentials (none) when adding a new ++#. account ++#: src/client/accounts/accounts-editor-row.vala:546 ++msgid "No login needed" ++msgstr "לא נדרשת התחברות" ++ ++#. Translators: ComboBox value for source of SMTP ++#. authentication credentials (use IMAP) when adding a new ++#. account ++#: src/client/accounts/accounts-editor-row.vala:554 ++msgid "Use same login as receiving" ++msgstr "שימוש בשם ההתחברות שמתקבל" ++ ++#. Translators: ComboBox value for source of SMTP ++#. authentication credentials (custom) when adding a new ++#. account ++#: src/client/accounts/accounts-editor-row.vala:562 ++msgid "Use a different login" ++msgstr "שימוש בהתחברות שונה" ++ ++#. Translators: In-app notification label, the ++#. string substitution is a more detailed reason. ++#: src/client/accounts/accounts-editor-servers-pane.vala:382 ++#, c-format ++msgid "Account not updated: %s" ++msgstr "חשבון לא מעודכן: %s" ++ ++#. Translators: This label describes the program that ++#. created the account, e.g. an SSO service like GOA, or ++#. locally by Geary. ++#: src/client/accounts/accounts-editor-servers-pane.vala:545 ++#| msgid "Accounts" ++msgid "Account source" ++msgstr "מקור החשבון" ++ ++#: src/client/accounts/accounts-editor-servers-pane.vala:557 ++msgid "GNOME Online Accounts" ++msgstr "חשבונות מקוונים GNOME" ++ ++#. Translators: This label describes an account ++#. preference. ++#: src/client/accounts/accounts-editor-servers-pane.vala:616 ++#| msgid "Save dra_fts on server" ++msgid "Save draft email on server" ++msgstr "שמירת טיוטה על השרת" ++ ++#. Translators: This label describes an account ++#. preference. ++#: src/client/accounts/accounts-editor-servers-pane.vala:671 ++#| msgid "_Save sent mail" ++msgid "Save sent email on server" ++msgstr "שמירת דואר יוצא על השרת" ++ ++#. Add a suffix for OAuth2 auth so people know they ++#. shouldn't expect to be prompted for a password ++#. Translators: Label used when an account's IMAP or ++#. SMTP service uses OAuth2. The string replacement is ++#. the service's login name. ++#: src/client/accounts/accounts-editor-servers-pane.vala:961 ++#, c-format ++msgid "%s using OAuth2" ++msgstr "‏%s משתמש ב־OAuth2" ++ ++#: src/client/accounts/accounts-editor-servers-pane.vala:971 ++msgid "Use receiving server login" ++msgstr "שימוש בשרת ההתחברות המתקבל" ++ ++#. Translators: File name used in save chooser when saving ++#. attachments that do not otherwise have a name. ++#: src/client/application/application-attachment-manager.vala:21 ++msgid "Untitled" ++msgstr "ללא כותרת" ++ ++#. / Translators: Dialog primary label when prompting to ++#. / overwrite a file. The string substitution is the file'sx ++#. / name. ++#: src/client/application/application-attachment-manager.vala:222 ++#, c-format ++#| msgid "A file named \"%s\" already exists. Do you want to replace it?" ++msgid "A file named “%s” already exists. Do you want to replace it?" ++msgstr "כבר קיים קובץ בשם „%s“. האם להחליפו?" ++ ++#. / Translators: Dialog secondary label when prompting to ++#. / overwrite a file. The string substitution is the parent ++#. / folder's name. ++#: src/client/application/application-attachment-manager.vala:229 ++#, c-format ++#| msgid "" ++#| "The file already exists in \"%s\". Replacing it will overwrite its " ++#| "contents." ++msgid "" ++"The file already exists in “%s”. Replacing it will overwrite its contents." ++msgstr "הקובץ כבר קיים תחת „%s“. החלפתו תגרום לאיבוד תוכנו." + +-#: ../src/client/application/geary-controller.vala:456 +-msgid "R_eply All" +-msgstr "להשיב ל_כולם" ++#: src/client/application/application-attachment-manager.vala:236 ++msgid "_Replace" ++msgstr "ה_חלפה" + +-#: ../src/client/application/geary-controller.vala:457 +-msgid "Reply all (Ctrl+Shift+R, Shift+R)" +-msgstr "להשיב לכולם (Ctrl+Shift+ר, Shift+ר)" ++#: src/client/application/application-client.vala:34 ++msgid "Copyright 2016 Software Freedom Conservancy Inc." ++msgstr "כל הזכויות שמורות למוסד לחופש התכנה בע״מ. 2016" + +-#. Forward a message. +-#: ../src/client/application/geary-controller.vala:462 +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1902 +-msgid "_Forward" +-msgstr "ה_עברה" ++#: src/client/application/application-client.vala:35 ++msgid "Copyright 2016-2020 Geary Development Team." ++msgstr "כל הזכויות שמורות 2016-2020 צוות פיתוח Geary." + +-#: ../src/client/application/geary-controller.vala:463 +-msgid "Forward (Ctrl+L, F)" +-msgstr "העברה (Ctrl+ך, כ)" ++#: src/client/application/application-client.vala:37 ++msgid "Visit the Geary web site" ++msgstr "ביקור באתר Geary" + +-#: ../src/client/application/geary-controller.vala:502 +-msgid "Empty" +-msgstr "ריקון" ++#. / Command line option ++#: src/client/application/application-client.vala:97 ++msgid "Print debug logging" ++msgstr "Print debug logging" + +-#: ../src/client/application/geary-controller.vala:503 +-msgid "Empty Spam or Trash folders" +-msgstr "ריקון תיקיית דואר זבל או אשפה" ++#. / Command line option ++#: src/client/application/application-client.vala:100 ++#| msgid "Start Geary with hidden main window" ++msgid "Start with the main window hidden (deprecated)" ++msgstr "Start with the main window hidden (deprecated)" + +-#: ../src/client/application/geary-controller.vala:507 +-msgid "Empty _Spam…" +-msgstr "ריקון דואר _זבל…" ++#. / Command line option ++#: src/client/application/application-client.vala:103 ++msgid "Enable WebKitGTK Inspector in web views" ++msgstr "Enable WebKitGTK Inspector in web views" + +-#: ../src/client/application/geary-controller.vala:511 +-msgid "Empty _Trash…" +-msgstr "ריקון א_שפה…" ++#. / Command line option ++#: src/client/application/application-client.vala:106 ++msgid "Log conversation monitoring" ++msgstr "Log conversation monitoring" + +-#. No callback is connected, since we bind the toggle button to the search bar visibility +-#: ../src/client/application/geary-controller.vala:540 +-msgid "Toggle search bar" +-msgstr "הצגת סרגל החיפוש" ++#. / Command line option ++#: src/client/application/application-client.vala:109 ++#| msgid "Log network deserialization" ++msgid "Log IMAP network deserialization" ++msgstr "Log IMAP network deserialization" + +-#: ../src/client/application/geary-controller.vala:735 +-msgid "Unable to store server trust exception" +-msgstr "לא ניתן לאחסן שרת מהימן חריג" ++#. / Command line option. "Normalization" can also be called ++#. / "synchronization". ++#: src/client/application/application-client.vala:113 ++msgid "Log folder normalization" ++msgstr "ביצוע רישום של folder normalization" + +-#: ../src/client/application/geary-controller.vala:972 +-msgid "Your settings are insecure" +-msgstr "ההגדרות שלך אינן בטוחות" ++#. / Command line option ++#: src/client/application/application-client.vala:116 ++#| msgid "Log network activity" ++msgid "Log IMAP network activity" ++msgstr "Log IMAP network activity" + +-#: ../src/client/application/geary-controller.vala:973 +-msgid "" +-"Your IMAP and/or SMTP settings do not specify SSL or TLS. This means your " +-"username and password could be read by another person on the network. Are " +-"you sure you want to do this?" +-msgstr "" +-"הגדרות ה־IMAP ו/או הגדרות ה־SMTP אינן מגדירות התחברות דרך פרוטוקול אבטחה SSL " +-"או TLS. משמעות הדבר ששם המשתמש והססמה שלך יכולים להיקרא ע״י תכניות מעקב ברשת " +-"שלך. האם להתחבר לחשבון?" ++#. / Command line option. The IMAP replay queue is how changes ++#. / on the server are replicated on the client. It could ++#. / also be called the IMAP events queue. ++#: src/client/application/application-client.vala:121 ++msgid "Log IMAP replay queue" ++msgstr "Log IMAP replay queue" + +-#: ../src/client/application/geary-controller.vala:974 +-msgid "Co_ntinue" +-msgstr "לה_משיך" ++#. / Command line option ++#: src/client/application/application-client.vala:124 ++#| msgid "Log network activity" ++msgid "Log SMTP network activity" ++msgstr "Log SMTP network activity" + +-#. / Displayed in the space-limited status bar when a message fails to be sent due to error. +-#: ../src/client/application/geary-controller.vala:1052 +-#: ../src/client/components/status-bar.vala:29 +-msgid "Error sending email" +-msgstr "שגיאה בשליחת דוא״ל" ++#. / Command line option ++#: src/client/application/application-client.vala:127 ++msgid "Log database queries (generates lots of messages)" ++msgstr "Log database queries (generates lots of messages)" ++ ++#. / Command line option ++#: src/client/application/application-client.vala:130 ++msgid "Perform a graceful quit" ++msgstr "Perform a graceful quit" ++ ++#: src/client/application/application-client.vala:132 ++#| msgid "Use %s to open a new composer window" ++msgid "Open a new window" ++msgstr "פתיחת חלון חדש" ++ ++#. / Command line option ++#: src/client/application/application-client.vala:135 ++#| msgid "Revoke all server certificates with TLS warnings" ++msgid "Revoke all pinned TLS server certificates" ++msgstr "Revoke all pinned TLS server certificates" ++ ++#. / Command line option ++#: src/client/application/application-client.vala:138 ++msgid "Display program version" ++msgstr "Display program version" ++ ++#. / Application runtime information label ++#: src/client/application/application-client.vala:262 ++#| msgid "Mark conversation" ++msgid "Geary version" ++msgstr "גרסת Geary" ++ ++#. / Application runtime information label ++#: src/client/application/application-client.vala:264 ++msgid "Geary revision" ++msgstr "עדכון Geary" ++ ++#. / Application runtime information label ++#: src/client/application/application-client.vala:266 ++msgid "GTK version" ++msgstr "גרסת GTK" ++ ++#. / Applciation runtime information label ++#: src/client/application/application-client.vala:273 ++msgid "GLib version" ++msgstr "גרסת GLib" ++ ++#. / Application runtime information label ++#: src/client/application/application-client.vala:280 ++msgid "WebKitGTK version" ++msgstr "גרסת WebKitGTK" ++ ++#. / Application runtime information label ++#: src/client/application/application-client.vala:287 ++msgid "Desktop environment" ++msgstr "סביבת שולחן עבודה" ++ ++#. Translators: This is the file type displayed for ++#. attachments with unknown file types. ++#: src/client/application/application-client.vala:289 ++#: src/client/components/components-attachment-pane.vala:91 ++msgid "Unknown" ++msgstr "לא ידוע" ++ ++#. / Application runtime information label ++#: src/client/application/application-client.vala:293 ++msgid "Distribution name" ++msgstr "שם הפצה" ++ ++#. / Application runtime information label ++#: src/client/application/application-client.vala:298 ++msgid "Distribution release" ++msgstr "גרסת הפצה" ++ ++#. / Application runtime information label ++#: src/client/application/application-client.vala:303 ++msgid "Installation prefix" ++msgstr "תחילית התקנה" ++ ++#: src/client/application/application-client.vala:559 ++#, c-format ++msgid "About %s" ++msgstr "על אודות %s" + +-#: ../src/client/application/geary-controller.vala:1053 +-msgid "" +-"Geary encountered an error sending an email. If the problem persists, " +-"please manually delete the email from your Outbox folder." ++#. Translators: add your name and email address to receive ++#. credit in the About dialog For example: Yamada Taro ++#. ++#: src/client/application/application-client.vala:563 ++msgid "translator-credits" + msgstr "" +-"‏Geary נתקל בשגיאה בשליחת דוא״ל. אם הבעיה נמשכת, יש למחוק ידנית את הדוא״ל " +-"מתיקיית דואר יוצא שלך." ++"דוביקס \n" ++"ירון שהרבני \n" ++"יוסף אור בוצ׳קו " + +-#. Displayed in the space-limited status bar when a message fails to be uploaded +-#. to Sent Mail after being sent. +-#: ../src/client/application/geary-controller.vala:1057 +-#: ../src/client/components/status-bar.vala:33 +-msgid "Error saving sent mail" +-msgstr "שגיאה בשמירת דוא״ל שנשלח" ++#. / Warning printed to the console when a deprecated ++#. / command line option is used. ++#: src/client/application/application-client.vala:1045 ++msgid "The `--hidden` option is deprecated and will be removed in the future." ++msgstr "The `--hidden` option is deprecated and will be removed in the future." + +-#: ../src/client/application/geary-controller.vala:1058 +-msgid "" +-"Geary encountered an error saving a sent message to Sent Mail. The message " +-"will stay in your Outbox folder until you delete it." +-msgstr "" +-"‏Geary נתקל בשגיאה בשמירת הודעה שנשלחה לדואר יוצא. ההודעה תישאר בתיקייה " +-"בהמתנה לשליחה עד שתמחק." ++#. / Command line warning, string substitution ++#. / is the given argument ++#: src/client/application/application-client.vala:1078 ++#, c-format ++msgid "Unrecognised program argument: “%s”" ++msgstr "Unrecognised program argument: “%s”" + +-#: ../src/client/application/geary-controller.vala:1127 +-msgid "Labels" +-msgstr "תוויות" ++#. / Notification title. ++#: src/client/application/application-controller.vala:479 ++#, c-format ++msgid "A problem occurred sending email for %s" ++msgstr "ארעה בעיה בשליחת דואר עבור %s" ++ ++#. / Notification body ++#: src/client/application/application-controller.vala:483 ++msgid "Email will not be sent until re-connected" ++msgstr "לא ישלח כל דוא״ל עד שתתבצע התחברות מחודשת" ++ ++#. / Translators: Label for in-app notification ++#: src/client/application/application-controller.vala:582 ++#| msgid "%u conversation selected" ++#| msgid_plural "%u conversations selected" ++msgid "Conversation marked" ++msgid_plural "Conversations marked" ++msgstr[0] "תכתובת סומנה" ++msgstr[1] "תכתובות סומנו" ++msgstr[2] "תכתובות סומנו" ++ ++#. / Translators: Label for in-app notification ++#: src/client/application/application-controller.vala:588 ++#| msgid "%s - Conversation Inspector" ++msgid "Conversation un-marked" ++msgid_plural "Conversations un-marked" ++msgstr[0] "בוטל סימון תכתובת" ++msgstr[1] "בוטלו סימון תכתובות" ++msgstr[2] "בוטלו סימון תכתובות" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the destination folder. ++#: src/client/application/application-controller.vala:614 ++#: src/client/application/application-controller.vala:698 ++#, c-format ++#| msgid "Log conversation monitoring" ++msgid "Conversation moved to %s" ++msgid_plural "Conversations moved to %s" ++msgstr[0] "תכתובת הועברה אל %s" ++msgstr[1] "תכתובות הועברו אל %s" ++msgstr[2] "תכתובות הועברו אל %s" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the source folder. ++#. / Translators: Label for in-app notification. String ++#. / substitution is the name of the destination folder. ++#: src/client/application/application-controller.vala:622 ++#: src/client/application/application-controller.vala:644 ++#, c-format ++#| msgid "%s - Conversation Inspector" ++msgid "Conversation restored to %s" ++msgid_plural "Conversations restored to %s" ++msgstr[0] "תכתובת שוחזרה אל %s" ++msgstr[1] "תכתובות שוחזרו אל %s" ++msgstr[2] "תכתובות שוחזרו אל %s" ++ ++#. / Translators: Label for in-app notification. ++#: src/client/application/application-controller.vala:665 ++#| msgid "%u conversation selected" ++#| msgid_plural "%u conversations selected" ++msgid "Conversation archived" ++msgid_plural "Conversations archived" ++msgstr[0] "תכתובת אורכבה" ++msgstr[1] "תכתובות אורכבו" ++msgstr[2] "תכתובות אורכבו" ++ ++#. / Translators: Label for in-app notification. String ++#. / substitution is the name of the destination folder. ++#: src/client/application/application-controller.vala:721 ++#, c-format ++msgid "Message restored to %s" ++msgid_plural "Messages restored to %s" ++msgstr[0] "הודעה שוחזרה אל %s" ++msgstr[1] "הודעות שוחזרו אל %s" ++msgstr[2] "הודעות שוחזרו אל %s" ++ ++#. / Translators: Label for in-app notification. ++#: src/client/application/application-controller.vala:742 ++msgid "Message archived" ++msgid_plural "Messages archived" ++msgstr[0] "הודעה אורכבה אל %s" ++msgstr[1] "הודעות אורכבו אל %s" ++msgstr[2] "הודעות אורכבו אל %s" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the destination folder. ++#: src/client/application/application-controller.vala:777 ++#, c-format ++msgid "Message moved to %s" ++msgid_plural "Messages moved to %s" ++msgstr[0] "הודעה הועברה אל %s" ++msgstr[1] "הודעות הועברו אל %s" ++msgstr[2] "הודעות הועברו אל %s" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the destination folder. ++#: src/client/application/application-controller.vala:805 ++#, c-format ++#| msgid "%u conversation selected" ++#| msgid_plural "%u conversations selected" ++msgid "Conversation labelled as %s" ++msgid_plural "Conversations labelled as %s" ++msgstr[0] "תכתובת סומנה בתווית %s" ++msgstr[1] "תכתובות סומנו בתווית %s" ++msgstr[2] "תכתובות סומנו בתווית %s" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the destination folder. ++#: src/client/application/application-controller.vala:813 ++#, c-format ++msgid "Conversation un-labelled as %s" ++msgid_plural "Conversations un-labelled as %s" ++msgstr[0] "בוטל סימון תכתובת בתווית %s" ++msgstr[1] "בוטל סימון תכתובות בתווית %s" ++msgstr[2] "בוטל סימון תכתובות בתווית %s" + +-#. give the user two options: reset the Account local store, or exit Geary. A third +-#. could be done to leave the Account in an unopened state, but we don't currently +-#. have provisions for that. +-#: ../src/client/application/geary-controller.vala:1139 ++#: src/client/application/application-controller.vala:1320 + #, c-format + msgid "Unable to open the database for %s" +-msgstr "לא ניתן לפתוח מסד הנתונים עבור %s" ++msgstr "לא ניתן לפתוח את מסד הנתונים עבור %s" + +-#: ../src/client/application/geary-controller.vala:1140 ++#: src/client/application/application-controller.vala:1321 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -536,617 +1171,942 @@ msgstr "" + "יצירה מחדש של מסד הנתונים תמחק את כל הדוא״ל המקומי ואת כל הקבצים המצורפים " + "שלו. הדואר על השרת שלך לא יושפע." + +-#: ../src/client/application/geary-controller.vala:1142 ++#: src/client/application/application-controller.vala:1323 + msgid "_Rebuild" +-msgstr "י_צירה מחדש" ++msgstr "_יצירה מחדש" + +-#: ../src/client/application/geary-controller.vala:1142 ++#: src/client/application/application-controller.vala:1323 + msgid "E_xit" + msgstr "י_ציאה" + +-#: ../src/client/application/geary-controller.vala:1151 ++#: src/client/application/application-controller.vala:1333 + #, c-format +-msgid "Unable to rebuild database for \"%s\"" ++#| msgid "Unable to rebuild database for \"%s\"" ++msgid "Unable to rebuild database for “%s”" + msgstr "לא ניתן ליצור מחדש מסד נתונים עבור „%s”" + +-#: ../src/client/application/geary-controller.vala:1152 ++#: src/client/application/application-controller.vala:1334 + #, c-format + msgid "" + "Error during rebuild:\n" + "\n" + "%s" + msgstr "" +-"שגיאה במהלך יצירה מחדש:\n" ++"שגיאה בתהליך היצירה מחדש:\n" + "%s" + +-#. some other problem opening the account ... as with other flow path, can't run +-#. Geary today with an account in unopened state, so have to exit +-#: ../src/client/application/geary-controller.vala:1174 +-#: ../src/client/application/geary-controller.vala:1184 +-#: ../src/client/application/geary-controller.vala:1195 ++#. / Translators: The label for an in-app notification. The ++#. / string substitution is a list of recipients of the email. ++#: src/client/application/application-controller.vala:1501 + #, c-format +-msgid "Unable to open local mailbox for %s" +-msgstr "לא ניתן לפתוח תיבת דואר מקומית עבור %s" +- +-#: ../src/client/application/geary-controller.vala:1175 +-#, c-format +-msgid "" +-"There was an error opening the local mail database for this account. This is " +-"possibly due to a file permissions problem.\n" +-"\n" +-"Please check that you have read/write permissions for all files in this " +-"directory:\n" +-"\n" +-"%s" +-msgstr "" +-"אירעה שגיאה בפתיחת מסד הנתונים המקומי של הדואר עבור חשבון זה. ככל הנראה עקב " +-"בעיות הרשאות הקובץ.\n" +-"\n" +-"יש לבדוק אם יש לך הרשאות קריאה/כתיבה לכל הקבצים בתיקייה:\n" +-"%s" +- +-#: ../src/client/application/geary-controller.vala:1185 +-msgid "" +-"The version number of the local mail database is formatted for a newer " +-"version of Geary. Unfortunately, the database cannot be \"rolled back\" to " +-"work with this version of Geary.\n" +-"\n" +-"Please install the latest version of Geary and try again." +-msgstr "" +-"מספר הגרסה של מסד הנתונים המקומי של הדואר מתאים לגרסה חדשה של Geary. למרבה " +-"הצער, לא ניתן לשחזר את מסד הנתונים כדי שיעבוד עם גרסה זו של Geary.\n" +-"\n" +-"יש להתקין שוב את הגרסה האחרונה של Geary." +- +-#: ../src/client/application/geary-controller.vala:1196 +-msgid "" +-"There was an error opening the local account. This is probably due to " +-"connectivity issues.\n" +-"\n" +-"Please check your network connection and restart Geary." +-msgstr "" +-"אירעה שגיאה בפתיחת החשבון המקומי. ככל הנראה עקב בעיות חיבור.\n" +-"\n" +-"יש לבדוק את חיבור הרשת שלך ולהפעיל מחדש את Geary." ++msgid "Email sent to %s" ++msgstr "נשלחת הודעה אל %s" + +-#: ../src/client/application/geary-controller.vala:1708 ++#. / Translators: The label for an in-app notification. The ++#. / string substitution is a list of recipients of the email. ++#: src/client/application/application-controller.vala:2491 + #, c-format +-msgid "About %s" +-msgstr "על אודות %s" +- +-#. / Translators: add your name and email address to receive credit in the About dialog +-#. / For example: Yamada Taro +-#: ../src/client/application/geary-controller.vala:1711 +-msgid "translator-credits" +-msgstr "" +-"דוביקס \n" +-"ירון שהרבני \n" +-"יוסף אור בוצ׳קו " +- +-#: ../src/client/application/geary-controller.vala:1968 +-msgid "Undo move (Ctrl+Z)" +-msgstr "ביטול העברה (Ctrl+ז)" ++msgid "Email to %s queued for delivery" ++msgstr "הודעה אל %s ממתינה בתור לשליחה" + +-#: ../src/client/application/geary-controller.vala:1978 ++#. / Translators: The label for an in-app notification. The ++#. / string substitution is a list of recipients of the email. ++#: src/client/application/application-controller.vala:2555 + #, c-format +-msgid "Are you sure you want to open \"%s\"?" +-msgstr "האם אכן לפתוח את „%s”?" +- +-#: ../src/client/application/geary-controller.vala:1979 +-msgid "" +-"Attachments may cause damage to your system if opened. Only open files from " +-"trusted sources." +-msgstr "" +-"קבצים מצורפים עלולים לגרום נזק למערכת שלך. כדאי לפתוח אך ורק קבצים המגיעים " +-"ממקור אמין." +- +-#: ../src/client/application/geary-controller.vala:1980 +-msgid "Don't _ask me again" +-msgstr "_לא לשאול אותי שוב" +- +-#: ../src/client/application/geary-controller.vala:1998 ++msgid "Email to %s saved" ++msgstr "נשמרה הודעה אל %s" ++ ++#. / Translators: A label for an in-app notification. ++#: src/client/application/application-controller.vala:2570 ++#: src/client/application/application-controller.vala:2628 ++#| msgid "\"%s\" could not be found." ++msgid "Composer could not be restored" ++msgstr "לא ניתן לאחזר את יוצר ההודעות" ++ ++#. / Translators: The label for an in-app notification. The ++#. / string substitution is a list of recipients of the email. ++#: src/client/application/application-controller.vala:2613 + #, c-format +-msgid "A file named \"%s\" already exists. Do you want to replace it?" +-msgstr "קובץ בשם „%s” כבר קיים. האם להחליף אותו?" +- +-#: ../src/client/application/geary-controller.vala:2000 ++msgid "Email to %s discarded" ++msgstr "הודעה אל %s הושלכה" ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:540 ++msgid "Working offline" ++msgstr "פועל בצורה לא מקוונת" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:542 ++msgid "You will not be able to send or receive email until re-connected." ++msgstr "לא ניתן לשלוח או לקבל הודעות עד להתחברות מחודשת." ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:549 ++msgid "Login problem" ++msgstr "בעיית התחברות" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:551 ++msgid "An account has reported an incorrect login or password." ++msgstr "החשבון דיווח על התחברות או ססמה לא נכונה." ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:558 ++msgid "Retry login, you will be prompted for your password" ++msgstr "יש לנסות להתחבר שוב, ססמתך תידרש" ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:565 ++msgid "Security problem" ++msgstr "בעיית אבטחה" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:567 ++msgid "An account has reported an untrusted server." ++msgstr "החשבון דיווח על שרת לא אמין." ++ ++#. Translators: An info bar button label ++#: src/client/application/application-main-window.vala:570 ++msgid "Check" ++msgstr "בדיקה" ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:574 ++msgid "Check the security details for the connection" ++msgstr "בדיקת פרטי אבטחת ההתחברות" ++ ++#. / Translators: Main window title, first string ++#. / substitution being the currently selected folder name, ++#. / the second being the selected account name. ++#: src/client/application/application-main-window.vala:617 + #, c-format +-msgid "" +-"The file already exists in \"%s\". Replacing it will overwrite its contents." +-msgstr "הקובץ כבר קיים תחת „%s”. החלפתו תגרום לאיבוד התוכן הקיים." +- +-#: ../src/client/application/geary-controller.vala:2003 +-msgid "_Replace" +-msgstr "ה_חלפה" +- +-#. Find out what to do with the inline composers. +-#. TODO: Remove this in favor of automatically saving drafts +-#: ../src/client/application/geary-controller.vala:2301 +-msgid "Close open draft messages?" +-msgstr "סגירת טיוטות פתוחות?" ++msgid "%s — %s" ++msgstr "%s — %s" ++ ++#. Translators: The name of the folder group containing ++#. folders created by people (as opposed to special-use ++#. folders) ++#: src/client/application/application-main-window.vala:996 ++#: src/client/folder-list/folder-list-account-branch.vala:43 ++msgid "Labels" ++msgstr "תוויות" + +-#: ../src/client/application/geary-controller.vala:2431 ++#: src/client/application/application-main-window.vala:1293 + #, c-format + msgid "Empty all email from your %s folder?" + msgstr "ריקון כל הדואר מהתיקייה %s?" + +-#: ../src/client/application/geary-controller.vala:2432 ++#: src/client/application/application-main-window.vala:1294 + msgid "This removes the email from Geary and your email server." +-msgstr "פעולה זו מוחקת את הדואר מ־Geary וכן משרת הדוא״ל שלך." ++msgstr "פעולה זו תמחוק את הדואר מ־Geary וכן משרת הדוא״ל שלך." + +-#: ../src/client/application/geary-controller.vala:2433 ++#: src/client/application/application-main-window.vala:1295 + msgid "This cannot be undone." +-msgstr "פעולה זה לא ניתנת לביטול." ++msgstr "פעולה זאת לא ניתנת לביטול." + +-#: ../src/client/application/geary-controller.vala:2434 ++#: src/client/application/application-main-window.vala:1296 + #, c-format + msgid "Empty %s" + msgstr "ריקון %s" + +-#: ../src/client/application/geary-controller.vala:2451 +-#, c-format +-msgid "Error emptying %s" +-msgstr "שגיאה בריקון %s" ++#. / Translators: Primary text for a confirmation dialog ++#: src/client/application/application-main-window.vala:1353 ++#| msgid "Do you want to permanently delete this message?" ++#| msgid_plural "Do you want to permanently delete these messages?" ++msgid "Do you want to permanently delete this conversation?" ++msgid_plural "Do you want to permanently delete these conversations?" ++msgstr[0] "האם ברצונך למחוק תכתובת זו לצמיתות?" ++msgstr[1] "האם ברצונך למחוק תכתובות אלה לצמיתות?" ++msgstr[2] "האם ברצונך למחוק תכתובות אלה לצמיתות?" ++ ++#: src/client/application/application-main-window.vala:1358 ++#: src/client/application/application-main-window.vala:1373 ++msgid "Delete" ++msgstr "מחיקה" + +-#: ../src/client/application/geary-controller.vala:2481 ++#. / Translators: Primary text for a confirmation dialog ++#: src/client/application/application-main-window.vala:1368 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "האם ברצונך למחוק הודעה זו לצמיתות?" + msgstr[1] "האם ברצונך למחוק הודעות אלה לצמיתות?" + msgstr[2] "האם ברצונך למחוק הודעות אלה לצמיתות?" + +-#: ../src/client/application/geary-controller.vala:2483 +-msgid "Delete" +-msgstr "מחיקה" +- +-#: ../src/client/application/geary-controller.vala:2514 +-msgid "Undo archive (Ctrl+Z)" +-msgstr "ביטול ארכוב (Ctrl+ז)" +- +-#: ../src/client/application/geary-controller.vala:2529 +-msgid "Undo trash (Ctrl+Z)" +-msgstr "ביטול העברה לאשפה (Ctrl+ז)" +- +-#: ../src/client/application/geary-controller.vala:2582 +-msgid "Undo (Ctrl+Z)" +-msgstr "ביטול (Ctrl+ז)" +- +-#: ../src/client/components/conversation-find-bar.vala:214 ++#: src/client/application/application-main-window.vala:1691 + #, c-format +-msgid "%i match" +-msgid_plural "%i matches" +-msgstr[0] "התאמה אחת" +-msgstr[1] "%i התאמות" +-msgstr[2] "שתי התאמות" ++msgid "%s (%d)" ++msgstr "%s (%d)" + +-#: ../src/client/components/conversation-find-bar.vala:216 ++#. Translators: The first argument will be a ++#. description of the document type, the second will ++#. be a human-friendly size string. For example: ++#. Document (100.9MB) ++#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" ++#: src/client/components/components-attachment-pane.vala:107 ++#: src/client/composer/composer-widget.vala:1784 + #, c-format +-msgid "%i match (wrapped)" +-msgid_plural "%i matches (wrapped)" +-msgstr[0] "התאמה אחת (גולש)" +-msgstr[1] "%i התאמות (גולש)" +-msgstr[2] "שתי התאמות (גולש)" ++msgid "%s (%s)" ++msgstr "%s (%s)" + +-#: ../src/client/components/conversation-find-bar.vala:218 +-msgid "not found" +-msgstr "לא נמצא" ++#: src/client/components/components-attachment-pane.vala:379 ++#| msgid "Are you sure you want to open \"%s\"?" ++msgid "Are you sure you want to open these attachments?" ++msgstr "האם אכן ברצונך לפתוח קובץ מצורף זה?" + +-#: ../src/client/components/main-window.vala:359 +-#, c-format +-msgid "%s (%d)" +-msgstr "%s (%d)" ++#: src/client/components/components-attachment-pane.vala:380 ++msgid "" ++"Attachments may cause damage to your system if opened. Only open files from " ++"trusted sources." ++msgstr "" ++"קבצים מצורפים עלולים לגרום נזק למערכת שלך. כדאי לפתוח אך ורק קבצים המגיעים " ++"ממקור אמין." + +-#: ../src/client/components/search-bar.vala:8 +-#: ../src/client/folder-list/folder-list-search-branch.vala:38 +-#: ../src/engine/api/geary-special-folder-type.vala:51 +-msgid "Search" +-msgstr "חיפוש" ++#: src/client/components/components-attachment-pane.vala:381 ++#| msgid "Don't _ask me again" ++msgid "Don’t _ask me again" ++msgstr "לא ל_שאול אותי שוב" ++ ++#: src/client/components/components-inspector.vala:78 ++#| msgid "_Inspect" ++msgid "Inspector" ++msgstr "מפקח" ++ ++#. / Translators: Title for Inspector logs pane ++#. / Translators: Title for problem report dialog logs pane ++#: src/client/components/components-inspector.vala:93 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 ++msgid "Logs" ++msgstr "יומנים" ++ ++#. / Translators: Title for Inspector system system information pane ++#. / Translators: Title for problem report system information ++#. / pane ++#: src/client/components/components-inspector.vala:97 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 ++msgid "System" ++msgstr "מערכת" ++ ++#. Button label for saving problem report information ++#: src/client/components/components-inspector.vala:226 ++#: src/client/components/components-inspector.vala:229 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 ++#: ui/problem-details-dialog.ui:47 ++#| msgid "_Save As..." ++msgid "Save As" ++msgstr "שמירה בשם" ++ ++#: src/client/components/components-inspector.vala:230 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 ++#| msgid "_Cancel" ++msgid "Cancel" ++msgstr "ביטול" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:124 ++msgid "_Automatically select next message" ++msgstr "_בחירת ההודעה הבאה אוטומטית" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:134 ++msgid "_Display conversation preview" ++msgstr "הצגת תצוגה מ_קדימה של שיחה" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:144 ++msgid "Use _three pane view" ++msgstr "שימוש ב_שלוש חלוניות תצוגה" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:154 ++msgid "Use _single key email shortcuts" ++msgstr "שימוש במקש _בודד לקיצורים בדוא״ל" ++ ++#: src/client/components/components-preferences-window.vala:156 ++msgid "" ++"Enable keyboard shortcuts for email actions that do not require pressing " ++"" ++msgstr "מאפשר פעולות בדוא״ל ללא צורך בלחיצה על מקש " ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:167 ++#| msgid "Always _watch for new mail" ++msgid "_Watch for new mail when closed" ++msgstr "_קבלת הודעות חדשות גם לאחר סגירת החלון" ++ ++#. / Translators: Preferences tooltip ++#: src/client/components/components-preferences-window.vala:171 ++msgid "Geary will keep running after all windows are closed" ++msgstr "‏Geary ימשיך לפעול גם לאחר סגירת כל החלונות" ++ ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:189 ++msgid "Preferences" ++msgstr "העדפות" + +-#. Search entry. +-#: ../src/client/components/search-bar.vala:23 +-msgid "Search all mail in account for keywords (Ctrl+S)" +-msgstr "חיפוש בכל חשבונות הדואר עם צירוף מקשים (Ctrl+ד)" ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:250 ++msgid "Plugins" ++msgstr "תוספים" ++ ++#. Translators: Info bar title for a generic account ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:36 ++#| msgid "Accounts" ++msgid "Account problem" ++msgstr "בעיות בחשבון" ++ ++#. Translators: Info bar sub-title for a generic account ++#. problem. String substitution is the account name. ++#: src/client/components/components-problem-report-info-bar.vala:40 ++#, c-format ++msgid "Geary has encountered a problem with %s." ++msgstr "‏Geary נתקל בבעיה עם %s." + +-#: ../src/client/components/search-bar.vala:103 ++#. Translators: Info bar sub-title for a generic ++#. account problem. String substitution is the ++#. account name. ++#: src/client/components/components-problem-report-info-bar.vala:53 + #, c-format +-msgid "Indexing %s account" +-msgstr "מפתוּח חשבון %s" ++msgid "Geary encountered a problem checking mail for %s." ++msgstr "‏Geary נתקל בבעיה בבדיקת הודעה עבור %s." ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:57 ++msgid "Try reconnecting" ++msgstr "יש לנסות להתחבר מחדש" ++ ++#. Translators: Info bar title for an outgoing ++#. account problem. String substitution is the ++#. account name ++#: src/client/components/components-problem-report-info-bar.vala:65 ++#, c-format ++msgid "Geary encountered a problem sending email for %s." ++msgstr "‏Geary נתקל בבעיה בשליחת הודעה עבור %s." ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:69 ++msgid "Retry sending queued messages" ++msgstr "יש לנסות לשלוח שוב את ההודעות בתור" ++ ++#. Translators: Info bar title for a generic application ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:76 ++msgid "Geary has encountered a problem" ++msgstr "‏Geary נתקל בבעיה" ++ ++#. Translators: Info bar sub-title for a generic ++#. application problem. ++#: src/client/components/components-problem-report-info-bar.vala:80 ++msgid "Please report the details if it persists." ++msgstr "נא לדווח על פרטי הבעיה אם התקלתה נמשכת." ++ ++#. Translators: Button label for viewing technical details ++#. for a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:94 ++msgid "_Details" ++msgstr "_פרטים" ++ ++#. Translators: Tooltip for viewing technical details for ++#. a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:97 ++msgid "View technical details about the error" ++msgstr "הצגת פרטים טכניים על התקלה" ++ ++#. Translators: Button label for retrying a server ++#. connection ++#: src/client/components/components-problem-report-info-bar.vala:103 ++msgid "_Retry" ++msgstr "_ניסיון חוזר" ++ ++#. / Translators: Search entry placeholder text ++#: src/client/components/components-search-bar.vala:12 ++#: src/client/folder-list/folder-list-search-branch.vala:53 ++#: src/client/util/util-i18n.vala:298 ++msgid "Search" ++msgstr "חיפוש" ++ ++#. / Translators: Search entry tooltip ++#: src/client/components/components-search-bar.vala:32 ++#| msgid "Search all mail in account for keywords (Ctrl+S)" ++msgid "Search all mail in account for keywords" ++msgstr "חיפוש מילים בכל הדואר שבחשבון" + +-#: ../src/client/components/search-bar.vala:114 +-#: ../src/client/folder-list/folder-list-search-branch.vala:39 ++#. / Translators: Search entry placeholder, string ++#. / replacement is the name of an account ++#: src/client/components/components-search-bar.vala:81 ++#: src/client/folder-list/folder-list-search-branch.vala:54 + #, c-format + msgid "Search %s account" + msgstr "חיפוש בחשבון %s" + ++#. Translators: Tooltip used when an entry requires a valid ++#. email address to be entered, but one is not provided. ++#: src/client/components/components-validator.vala:394 ++msgid "An email address is required" ++msgstr "נדרשת כתובת דוא״ל" ++ ++#. Translators: Tooltip used when an entry requires a valid ++#. email address to be entered, but the address is invalid. ++#: src/client/components/components-validator.vala:398 ++#| msgid "Remove email address" ++msgid "Not a valid email address" ++msgstr "כתובת דוא״ל לא תקינה" ++ ++#. Translators: Tooltip used when an entry requires a valid, ++#. resolvable server name to be entered, but one is not ++#. provided. ++#: src/client/components/components-validator.vala:444 ++msgid "A server name is required" ++msgstr "דרוש שם שרת" ++ ++#. Translators: Tooltip used when an entry requires a valid ++#. server name to be entered, but it was unable to be ++#. looked-up in the DNS. ++#: src/client/components/components-validator.vala:449 ++msgid "Could not look up server name" ++msgstr "לא ניתן למצוא את שם השרת" ++ ++#: src/client/components/main-toolbar.vala:116 ++#| msgid "Mark conversation" ++msgid "Mark conversation" ++msgid_plural "Mark conversations" ++msgstr[0] "סימון תכתובת" ++msgstr[1] "סימון תכתובות" ++msgstr[2] "סימון תכתובות" ++ ++#: src/client/components/main-toolbar.vala:121 ++#| msgid "Add label to conversation" ++msgid "Add label to conversation" ++msgid_plural "Add label to conversations" ++msgstr[0] "הוספת תווית לתכתובת" ++msgstr[1] "הוספת תווית לתכתובות" ++msgstr[2] "הוספת תווית לתכתובות" ++ ++#: src/client/components/main-toolbar.vala:126 ++#| msgid "Move conversation" ++msgid "Move conversation" ++msgid_plural "Move conversations" ++msgstr[0] "העברת תכתובת" ++msgstr[1] "העברת תכתובות" ++msgstr[2] "העברת תכתובות" ++ ++#: src/client/components/main-toolbar.vala:131 ++#| msgid "Archive conversation (A)" ++msgid "Archive conversation" ++msgid_plural "Archive conversations" ++msgstr[0] "תיוק תכתובת בארכיון" ++msgstr[1] "תיוק תכתובות בארכיון" ++msgstr[2] "תיוק תכתובות בארכיון" ++ ++#: src/client/components/main-toolbar.vala:142 ++#| msgid "Move conversations" ++msgid "Move conversation to Trash" ++msgid_plural "Move conversations to Trash" ++msgstr[0] "העברת תכתובת לאשפה" ++msgstr[1] "העברת תכתובות לאשפה" ++msgstr[2] "העברת תכתובות לאשפה" ++ ++#: src/client/components/main-toolbar.vala:152 ++#| msgid "Delete conversation" ++msgid "Delete conversation" ++msgid_plural "Delete conversations" ++msgstr[0] "מחיקת תכתובת" ++msgstr[1] "מחיקת תכתובות" ++msgstr[2] "מחיקת תכתובות" ++ + #. / Displayed in the space-limited status bar while a message is in the process of being sent. +-#: ../src/client/components/status-bar.vala:26 +-msgid "Sending..." ++#: src/client/components/status-bar.vala:26 ++#| msgid "Sending..." ++msgid "Sending…" + msgstr "שולח…" + +-#: ../src/client/components/stock.vala:18 ../ui/account_cannot_remove.glade.h:3 ++#. / Displayed in the space-limited status bar when a message fails to be sent due to error. ++#: src/client/components/status-bar.vala:29 ++msgid "Error sending email" ++msgstr "שגיאה בשליחת דוא״ל" ++ ++#. Displayed in the space-limited status bar when a message fails to be uploaded ++#. to Sent Mail after being sent. ++#: src/client/components/status-bar.vala:33 ++msgid "Error saving sent mail" ++msgstr "שגיאה בשמירת דוא״ל שנשלח" ++ ++#: src/client/components/stock.vala:18 + msgid "_OK" + msgstr "_אישור" + +-#: ../src/client/components/stock.vala:19 ../ui/edit_alternate_emails.glade.h:3 +-#: ../ui/password-dialog.glade.h:5 ../ui/remove_confirm.glade.h:5 ++#: src/client/components/stock.vala:19 ++#: src/client/plugin/mail-merge/mail-merge.vala:392 ++#: ui/password-dialog.glade:196 + msgid "_Cancel" + msgstr "_ביטול" + +-#: ../src/client/components/stock.vala:23 ++#: src/client/components/stock.vala:21 ++msgid "_About" ++msgstr "על _אודות" ++ ++#: src/client/components/stock.vala:22 ++msgid "_Add" ++msgstr "_הוספה" ++ ++#: src/client/components/stock.vala:23 + msgid "_Close" + msgstr "_סגירה" + +-#: ../src/client/components/stock.vala:24 ++#: src/client/components/stock.vala:24 + msgid "_Discard" + msgstr "השל_כה" + +-#: ../src/client/components/stock.vala:26 ++#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:42 ++msgid "_Help" ++msgstr "_עזרה" ++ ++#: src/client/components/stock.vala:26 ++#: src/client/plugin/mail-merge/mail-merge.vala:391 ++#: ui/components-attachment-pane-menus.ui:7 + msgid "_Open" + msgstr "_פתיחה" + +-#: ../src/client/components/stock.vala:28 +-msgid "_Print..." ++#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:32 ++msgid "_Preferences" ++msgstr "הע_דפות" ++ ++#. Translators: Menu item to print a single, specific message ++#: src/client/components/stock.vala:28 ui/conversation-email-menus.ui:64 ++#| msgid "_Print..." ++msgid "_Print…" + msgstr "ה_דפסה…" + +-#: ../src/client/components/stock.vala:30 ../ui/remove_confirm.glade.h:6 ++#: src/client/components/stock.vala:29 ++msgid "_Quit" ++msgstr "י_ציאה" ++ ++#: src/client/components/stock.vala:30 + msgid "_Remove" + msgstr "_הסרה" + +-#. Select all. +-#: ../src/client/components/stock.vala:32 +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1358 +-msgid "Select _All" +-msgstr "בחירת ה_כול" ++#: src/client/components/stock.vala:31 ++#: ui/components-attachment-pane-menus.ui:11 ++msgid "_Save" ++msgstr "_שמירה" + +-#: ../src/client/components/stock.vala:33 ++#: src/client/components/stock.vala:32 + msgid "_Keep" + msgstr "_שמירה" + +-#: ../src/client/composer/composer-widget.vala:71 ++#: src/client/composer/composer-editor.vala:675 ++msgid "Select Color" ++msgstr "בחירת צבע" ++ ++#: src/client/composer/composer-link-popover.vala:139 ++msgid "Link URL is not correctly formatted, e.g. http://example.com" ++msgstr "קישור URL לא מובנה כראוי, לדוגמה http://example.com" ++ ++#: src/client/composer/composer-link-popover.vala:146 ++msgid "Invalid link URL" ++msgstr "קישור URL לא תקין" ++ ++#: src/client/composer/composer-link-popover.vala:146 ++#| msgid "Remove email address" ++msgid "Invalid email address" ++msgstr "כתובת דוא״ל לא תקינה" ++ ++#. / Translators: Title for an empty composer window ++#: src/client/composer/composer-widget.vala:32 ++msgid "New Message" ++msgstr "הודעה חדשה" ++ ++#: src/client/composer/composer-widget.vala:167 + msgid "Saved" + msgstr "נשמר" + +-#: ../src/client/composer/composer-widget.vala:72 ++#: src/client/composer/composer-widget.vala:168 + msgid "Saving" +-msgstr "נשמר" ++msgstr "שומר" + +-#: ../src/client/composer/composer-widget.vala:73 ++#: src/client/composer/composer-widget.vala:169 + msgid "Error saving" + msgstr "שגיאת בשמירה" + +-#: ../src/client/composer/composer-widget.vala:74 ++#: src/client/composer/composer-widget.vala:170 + msgid "Press Backspace to delete quote" + msgstr "יש להקיש על Backspace למחיקת ציטוט" + +-#: ../src/client/composer/composer-widget.vala:75 +-msgid "New Message" +-msgstr "הודעה חדשה" +- +-#. A list of keywords, separated by pipe ("|") characters, that suggest an attachment; since +-#. this is full-word checking, include all variants of each word. No spaces are allowed. +-#: ../src/client/composer/composer-widget.vala:136 ++#. Translators: This is list of keywords, separated by pipe ("|") ++#. characters, that suggest an attachment; since this is full-word ++#. checking, include all variants of each word. No spaces are ++#. allowed. The words will be converted to lower case based on ++#. locale and English versions included automatically. ++#: src/client/composer/composer-widget.vala:186 + msgid "" + "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" + "enclosing|encloses|enclosure|enclosures" + msgstr "לצרף|צירוף|מצורף|צרף|קובץ מצורף|צורף|נספח" + +-#: ../src/client/composer/composer-widget.vala:1108 +-#: ../src/client/composer/composer-widget.vala:1112 +-msgid "Do you want to discard this message?" +-msgstr "האם למחוק הודעה זו?" +- +-#: ../src/client/composer/composer-widget.vala:1268 ++#. Translators: This dialog text is displayed to the ++#. user when closing a composer where the options are ++#. Keep, Discard or Cancel. ++#: src/client/composer/composer-widget.vala:862 ++#| msgid "Do you want to discard this message?" ++msgid "Do you want to keep or discard this draft message?" ++msgstr "האם ברצונך לשמור או למחוק את טיוטת הודעה זו?" ++ ++#. Translators: This dialog text is displayed to the ++#. user when closing a composer where the options are ++#. only Discard or Cancel. ++#: src/client/composer/composer-widget.vala:888 ++#| msgid "Do you want to discard this message?" ++msgid "Do you want to discard this draft message?" ++msgstr "האם ברצונך למחוק טיוטת הודעה זו?" ++ ++#: src/client/composer/composer-widget.vala:1440 + msgid "Send message with an empty subject and body?" + msgstr "האם לשלוח את ההודעה ללא כותרת ותוכן?" + +-#: ../src/client/composer/composer-widget.vala:1270 ++#: src/client/composer/composer-widget.vala:1442 + msgid "Send message with an empty subject?" + msgstr "האם לשלוח את ההודעה ללא כותרת?" + +-#: ../src/client/composer/composer-widget.vala:1272 ++#: src/client/composer/composer-widget.vala:1444 + msgid "Send message with an empty body?" + msgstr "האם לשלוח את ההודעה ללא תוכן?" + +-#: ../src/client/composer/composer-widget.vala:1274 ++#: src/client/composer/composer-widget.vala:1453 + msgid "Send message without an attachment?" + msgstr "האם לשלוח את ההודעה ללא קובץ מצורף?" + +-#: ../src/client/composer/composer-widget.vala:1536 +-msgid "Cannot add attachment" +-msgstr "לא ניתן לצרף את הקובץ המבוקש" +- +-#: ../src/client/composer/composer-widget.vala:1547 +-#, c-format +-msgid "\"%s\" could not be found." +-msgstr "‏„%s” לא נמצא." +- +-#: ../src/client/composer/composer-widget.vala:1554 ++#: src/client/composer/composer-widget.vala:1772 + #, c-format +-msgid "\"%s\" is a folder." +-msgstr "‏„%s” היא תיקייה." ++#| msgid "\"%s\" already attached for delivery." ++msgid "“%s” already attached for delivery." ++msgstr "‏„%s” כבר מצורף למכתב." + +-#: ../src/client/composer/composer-widget.vala:1561 ++#: src/client/composer/composer-widget.vala:1804 ++#: src/client/composer/composer-widget.vala:1854 + #, c-format +-msgid "\"%s\" is an empty file." ++#| msgid "\"%s\" is an empty file." ++msgid "“%s” is an empty file." + msgstr "‏„%s” הוא קובץ ריק." + +-#: ../src/client/composer/composer-widget.vala:1575 ++#: src/client/composer/composer-widget.vala:1842 + #, c-format +-msgid "\"%s\" could not be opened for reading." +-msgstr "לא ניתן לפתוח את „%s” לקריאה." ++#| msgid "\"%s\" could not be found." ++msgid "“%s” could not be found." ++msgstr "‏„%s” לא נמצא." + +-#: ../src/client/composer/composer-widget.vala:1582 ++#: src/client/composer/composer-widget.vala:1848 + #, c-format +-msgid "\"%s\" already attached for delivery." +-msgstr "‏„%s” כבר מצורף למכתב." ++#| msgid "\"%s\" is a folder." ++msgid "“%s” is a folder." ++msgstr "‏„%s” היא תיקייה." + +-#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" +-#: ../src/client/composer/composer-widget.vala:1591 ++#: src/client/composer/composer-widget.vala:1867 + #, c-format +-msgid "%s (%s)" +-msgstr "%s (%s)" +- +-#: ../src/client/composer/composer-widget.vala:1652 +-msgid "To: " +-msgstr "אל: " ++#| msgid "\"%s\" could not be opened for reading." ++msgid "“%s” could not be opened for reading." ++msgstr "לא ניתן לפתוח את „%s” לקריאה." + +-#: ../src/client/composer/composer-widget.vala:1655 +-msgid "Cc: " +-msgstr "עותק: " ++#: src/client/composer/composer-widget.vala:1875 ++msgid "Cannot add attachment" ++msgstr "לא ניתן לצרף את הקובץ המבוקש" + +-#: ../src/client/composer/composer-widget.vala:1658 +-msgid "Bcc: " +-msgstr "עותק מוסתר: " ++#. Translators: This is the name of the file chooser filter ++#. when inserting an image in the composer. ++#: src/client/composer/composer-widget.vala:1946 ++#| msgid "Show Images" ++msgid "Images" ++msgstr "תמונות" ++ ++#. Translators: Human-readable version of the RFC 822 To header ++#: src/client/composer/composer-widget.vala:2010 ++#: src/client/conversation-viewer/conversation-email.vala:542 ++#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 ++msgid "To:" ++msgstr "אל:" + +-#: ../src/client/composer/composer-widget.vala:1661 +-msgid "Reply-To: " +-msgstr "להשבי אל:" ++#. Translators: Human-readable version of the RFC 822 CC header ++#: src/client/composer/composer-widget.vala:2016 ++#: src/client/conversation-viewer/conversation-email.vala:547 ++#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 ++msgid "Cc:" ++msgstr "עותק:" + +-#: ../src/client/composer/composer-widget.vala:1894 +-msgid "Select Color" +-msgstr "בחר צבע" ++#. Translators: Human-readable version of the RFC 822 BCC header ++#: src/client/composer/composer-widget.vala:2022 ++#: src/client/conversation-viewer/conversation-email.vala:552 ++#: ui/conversation-message.ui:402 ++msgid "Bcc:" ++msgstr "עותק מוסתר:" + +-#. Displayed in the From dropdown to indicate an "alternate email address" +-#. for an account. The first printf argument will be the alternate email +-#. address, and the second will be the account's primary email address. +-#: ../src/client/composer/composer-widget.vala:2341 ++#. Translators: Human-readable version of the RFC 822 Reply-To header ++#: src/client/composer/composer-widget.vala:2028 ++msgid "Reply-To: " ++msgstr "להשיב אל:" ++ ++#. Displayed in the From dropdown to indicate an ++#. "alternate email address" for an account. The first ++#. printf argument will be the alternate email address, ++#. and the second will be the account's primary email ++#. address. ++#: src/client/composer/composer-widget.vala:2146 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s באמצעות %2$s" + +-#. Composer label (with mnemonic underscore) for the account selector +-#. when choosing what address to send a message from. +-#: ../src/client/composer/composer-widget.vala:2383 +-msgid "_From:" +-msgstr "_מאת:" ++#: src/client/composer/spell-check-popover.vala:125 ++msgid "Remove this language from the preferred list" ++msgstr "הסרת שפה זו מרשימת המועדפים" + +-#: ../src/client/composer/spell-check-popover.vala:210 ++#: src/client/composer/spell-check-popover.vala:129 ++msgid "Add this language to the preferred list" ++msgstr "הוספת שפה זו לרשימת המועדפים" ++ ++#: src/client/composer/spell-check-popover.vala:225 + msgid "Search for more languages" + msgstr "חיפוש שפות נוספות" + +-#: ../src/client/conversation-list/formatted-conversation-data.vala:11 +-msgid "Me" +-msgstr "אני" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:414 +-msgid "No conversations selected." +-msgstr "לא נבחרה אף תכתובת." ++#. / Translators: Context menu item ++#: src/client/conversation-list/conversation-list-view.vala:339 ++#| msgid "Move conversations" ++msgid "Move conversation to _Trash" ++msgid_plural "Move conversations to _Trash" ++msgstr[0] "העברת תכתובת ל_אשפה" ++msgstr[1] "העברת תכתובות ל_אשפה" ++msgstr[2] "העברת תכתובות ל_אשפה" ++ ++#. / Translators: Context menu item ++#: src/client/conversation-list/conversation-list-view.vala:351 ++#| msgid "Delete conversation" ++msgid "_Delete conversation" ++msgid_plural "_Delete conversations" ++msgstr[0] "_מחיקת תכתובת" ++msgstr[1] "_מחיקת תכתובות" ++msgstr[2] "_מחיקת תכתובות" ++ ++#: src/client/conversation-list/conversation-list-view.vala:364 ++#: ui/main-toolbar-menus.ui:5 ++msgid "Mark as _Read" ++msgstr "סימון כ_נקרא" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:416 +-#, c-format +-msgid "%u conversation selected." +-msgid_plural "%u conversations selected." +-msgstr[0] "נבחרה תכתובת אחת." +-msgstr[1] "נבחרו %u תכתובות." +-msgstr[2] "נבחרו שתי תכתובות." ++#: src/client/conversation-list/conversation-list-view.vala:372 ++#: ui/main-toolbar-menus.ui:9 ++msgid "Mark as _Unread" ++msgstr "סימון כ_לא נקרא" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:446 +-msgid "No search results found." +-msgstr "לא מצאו תוצאות בחיפוש." ++#: src/client/conversation-list/conversation-list-view.vala:380 ++#: ui/main-toolbar-menus.ui:17 ++msgid "U_nstar" ++msgstr "ה_סרת כוכב" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:448 +-msgid "No conversations in folder." +-msgstr "אין תכתובות בתיקייה." ++#: src/client/conversation-list/conversation-list-view.vala:387 ++#: ui/main-toolbar-menus.ui:13 ++msgid "_Star" ++msgstr "סימון ב_כוכב" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:720 +-msgid "This message contains remote images." +-msgstr "הודעה זו מכילה תמונות מרוחקות." ++#. Translators: Menu item to reply to a specific message. ++#: src/client/conversation-list/conversation-list-view.vala:396 ++#: ui/conversation-email-menus.ui:9 ++msgid "_Reply" ++msgstr "לה_שיב" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:720 +-msgid "Show Images" +-msgstr "הצגת תמונות" ++#: src/client/conversation-list/conversation-list-view.vala:402 ++msgid "R_eply All" ++msgstr "להשיב ל_כולם" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:721 +-msgid "Always Show From Sender" +-msgstr "תמיד להציג תמונות משולח זה" ++#. Translators: Menu item to forward a specific message. ++#: src/client/conversation-list/conversation-list-view.vala:408 ++#: ui/conversation-email-menus.ui:21 ++msgid "_Forward" ++msgstr "ה_עברה" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:745 +-msgid "Edit Draft" +-msgstr "עריכת טיוטה" ++#: src/client/conversation-list/formatted-conversation-data.vala:18 ++msgid "Me" ++msgstr "אני" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:838 ++#. Translators: Human-readable version of the RFC 822 From header ++#: src/client/conversation-viewer/conversation-email.vala:537 ++#: src/client/util/util-email.vala:240 + msgid "From:" + msgstr "מאת:" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:841 +-msgid "To:" +-msgstr "אל:" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:844 +-msgid "Cc:" +-msgstr "עותק:" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:847 +-msgid "Bcc:" +-msgstr "עותק מוסתר:" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:850 +-msgid "Subject:" +-msgstr "נושא:" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:853 ++#. Translators: Human-readable version of the RFC 822 Date header ++#: src/client/conversation-viewer/conversation-email.vala:557 ++#: src/client/util/util-email.vala:245 + msgid "Date:" + msgstr "תאריך:" + +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1173 +-#, c-format +-msgid "%u read message" +-msgid_plural "%u read messages" +-msgstr[0] "הודעה אחת שנקראה" +-msgstr[1] "%u הודעות שנקראו" +-msgstr[2] "שתי הודעות שנקראו" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1305 +-#, c-format +-msgid "This message was sent successfully, but could not be saved to %s." +-msgstr "ההודעה נשלחה בהצלחה, אך לא ניתן לשמור אותה אל %s." +- +-#. Add a menu item for copying the current selection. +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1331 +-#: ../ui/composer.glade.h:4 +-msgid "_Copy" +-msgstr "ה_עתקה" +- +-#. Add a menu item for copying the address. +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1339 +-msgid "Copy _Email Address" +-msgstr "העתקת כתובת _דוא״ל" +- +-#. Add a menu item for copying the link. +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1344 +-#: ../ui/composer.glade.h:17 +-msgid "Copy _Link" +-msgstr "ה_עתקת קישור" +- +-#. Select message. +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1352 +-msgid "Select _Message" +-msgstr "_בחירת הודעה" +- +-#. Inspect. +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1364 +-msgid "_Inspect" +-msgstr "_בחינה" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1591 +-msgid "This link appears to go to" +-msgstr "הקישור מראה לאן ללכת" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1592 +-msgid "but actually goes to" +-msgstr "אך למעשה הולך ל־" +- +-#. If href doesn't look like a URL, something is fishy, so warn the user +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1647 +-msgid " (Invalid?)" +-msgstr " (לא חוקי?)" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1753 +-msgid "_Save Image As..." +-msgstr "שמירת _תמונה בשם…" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1857 +-msgid "_Save As..." +-msgstr "_שמירה בשם…" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1862 +-msgid "Save All A_ttachments..." +-msgstr "שמירת _כל הקבצים המצורפים…" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1882 +-msgid "Save A_ttachment..." +-msgid_plural "Save All A_ttachments..." +-msgstr[0] "שמירת ה_קובץ המצורף…" +-msgstr[1] "שמירת הק_בצים המצורפים…" +-msgstr[2] "שמירת הק_בצים המצורפים…" +- +-#. Reply to all on a message. +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1897 +-msgid "Reply to _All" +-msgstr "להשיב ל_כולם" +- +-#. Mark as read/unread. +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1914 +-msgid "_Mark as Read" +-msgstr "סימון כ_נקרא" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1918 +-msgid "_Mark as Unread" +-msgstr "סימון כ_לא נקרא" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1924 +-msgid "Mark Unread From _Here" +-msgstr "סימון כלא נקרא מ_כאן" +- +-#. Separator. +-#. View original message source. +-#: ../src/client/conversation-viewer/conversation-viewer.vala:1939 +-msgid "_View Source" +-msgstr "צפייה ב_מקור" +- +-#. Generate the attachment table. +-#. / Placeholder filename for attachments with no filename. +-#: ../src/client/conversation-viewer/conversation-viewer.vala:2264 +-#: ../src/engine/rfc822/rfc822-utils.vala:366 +-msgid "none" +-msgstr "ללא שם" +- +-#: ../src/client/conversation-viewer/conversation-viewer.vala:2399 +-msgid "Failed to open default text editor." +-msgstr "פתיחת עורך הטקסט נכשלה." ++#. Translators: Human-readable version of the RFC 822 Subject header ++#: src/client/conversation-viewer/conversation-email.vala:567 ++#: src/client/util/util-email.vala:243 ++msgid "Subject:" ++msgstr "נושא:" + +-#: ../src/client/conversation-viewer/conversation-web-view.vala:319 ++#: src/client/conversation-viewer/conversation-message.vala:128 ++msgid "This email address may have been forged" ++msgstr "יתכן וכתובת דוא״ל זו זויפה" ++ ++#. Translators: Label text displayed when there are too ++#. many email addresses to be shown by default in an ++#. email's header, but they are all being shown anyway. ++#: src/client/conversation-viewer/conversation-message.vala:234 ++#| msgid "Show Images" ++msgid "Show less" ++msgstr "להציג פחות" ++ ++#. Translators: Label text displayed when there are ++#. too many email addresses to be shown by default in ++#. an email's header. The string substitution is the ++#. number of extra email to be shown. ++#: src/client/conversation-viewer/conversation-message.vala:260 + #, c-format +-msgid "%s - Conversation Inspector" +-msgstr "‏%s - מפקח תכתובת" ++msgid "%d more…" ++msgstr "עוד %d…" ++ ++#. Compact headers. These are partially done here and partially ++#. in load_contacts. ++#. Translators: This is displayed in place of the from address ++#. when the message has no from address. ++#: src/client/conversation-viewer/conversation-message.vala:529 ++msgid "No sender" ++msgstr "אין שולח" ++ ++#. Translators: This separates multiple 'from' ++#. addresses in the compact header for a message. ++#: src/client/conversation-viewer/conversation-message.vala:920 ++msgid ", " ++msgstr ", " ++ ++#. Translators: This string is used as the HTML IMG ALT ++#. attribute value when displaying an inline image in an email ++#. that did not specify a file name. E.g. Imagecontact " ++"channels or attach to a new bug report." ++msgstr "" ++"אם הבעיה קריטית או מתמשכת, נא לשמור ולשלוח את הפרטים באחד מערוצי הקשר או לצרף אל דיווח על תקלה חדשה." ++ ++#: ui/components-inspector-error-view.ui:47 ++#| msgid "_Details" ++msgid "Details:" ++msgstr "פרטים:" ++ ++#. Tooltip for inspector button ++#. Tooltip for problem report button ++#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:24 ++#| msgid "Search for more languages" ++msgid "Search for matching log entries" ++msgstr "חיפוש עבור התאמות ברשומות היומן" ++ ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:35 ++msgid "Toggle appending new log entries" ++msgstr "" ++ ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:55 ++msgid "Add a marker entry to the log" ++msgstr "" ++ ++#. Tooltip for inspector button ++#. Tooltip for problem report button ++#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:51 ++msgid "Save logs entries and details" ++msgstr "שמירת רשומות היומן ופרטיו" ++ ++#. Tooltip for inspector button ++#. Tooltip for problem report button ++#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:67 ++msgid "Copy to clipboard" ++msgstr "העתקה ללוח הגזירים" ++ ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:121 ++msgid "Clears all log entries" ++msgstr "ניקוי כל רשומות היומן" ++ ++#: ui/conversation-contact-popover.ui:146 ++#| msgid "Move conversation" ++msgid "New Conversation…" ++msgstr "תכתובת חדשה…" ++ ++#: ui/conversation-contact-popover.ui:159 ++#| msgid "Copy _Email Address" ++msgid "Copy Email Address" ++msgstr "העתקת כתובת דוא״ל" ++ ++#: ui/conversation-contact-popover.ui:182 ++msgid "Save in Contacts…" ++msgstr "שמירה באנשי הקשר…" ++ ++#: ui/conversation-contact-popover.ui:195 ++#| msgid "Move conversations" ++msgid "Show Conversations" ++msgstr "הצגת תכתובות" ++ ++#: ui/conversation-contact-popover.ui:208 ++msgid "Open in Contacts" ++msgstr "פתיחה באנשי קשר" ++ ++#: ui/conversation-contact-popover.ui:221 ++msgid "Always Load Remote Images" ++msgstr "תמיד לטעון תמונות מרוחקות" ++ ++#. Title label on contact popover ++#: ui/conversation-contact-popover.ui:264 ++#| msgid "Remove email address" ++msgid "Deceptive email address" ++msgstr "כתובת דוא״ל מטעה" ++ ++#. Contact popover label ++#: ui/conversation-contact-popover.ui:294 ++#| msgid "Email address:" ++msgid "This email address is:" ++msgstr "כתובת דוא״ל זו היא:" ++ ++#. Contact popover label ++#: ui/conversation-contact-popover.ui:319 ++msgid "But was forged as:" ++msgstr "אבל הוצגה כ:" ++ ++#. Contact popover label ++#: ui/conversation-contact-popover.ui:344 ++msgid "The sender may not be trustworthy" ++msgstr "השולח עשוי להיות לא אמין" ++ ++#: ui/conversation-email.ui:27 ++#| msgid "Save All A_ttachments..." ++msgid "Save all attachments" ++msgstr "שמירת כל הקבצים המצורפים" ++ ++#. Note: The application will never show this button at the same time as unstar_button, one will always be hidden. ++#: ui/conversation-email.ui:50 ++msgid "Mark this message as starred" ++msgstr "לסמן הודעה זו בכוכב" ++ ++#. Note: The application will never show this button at the same time as star_button, one will always be hidden. ++#: ui/conversation-email.ui:72 ++msgid "Mark this message as not starred" ++msgstr "לבטל סימון הודעה זו בכוכב" ++ ++#. Translators: Menu item to reply to a specific message. ++#: ui/conversation-email-menus.ui:15 ++msgid "Reply to _All" ++msgstr "להשיב ל_כולם" ++ ++#. Translators: Menu item to mark a specific message as ++#. read. ++#: ui/conversation-email-menus.ui:30 ++#| msgid "_Mark as Read" ++msgid "_Mark Read" ++msgstr "סימון כ_נקרא" ++ ++#: ui/conversation-email-menus.ui:36 ++#| msgid "_Mark as Unread" ++msgid "_Mark Unread" ++msgstr "סימון כ_לא נקרא" ++ ++#. Translators: Menu item to mark all messages in a ++#. conversation from this one as unread. ++#: ui/conversation-email-menus.ui:42 ++msgid "Mark Unread From _Here" ++msgstr "סימון כלא נקרא מ_כאן" ++ ++#. Translators: Menu item to move a single, specific message ++#. to the trash folder ++#: ui/conversation-email-menus.ui:50 ++msgid "Move message to _Trash" ++msgstr "העברת הודעה ל_אשפה" ++ ++#. Translators: Menu item to delete a single, specific message ++#: ui/conversation-email-menus.ui:57 ++#| msgid "Select _Message" ++msgid "_Delete message…" ++msgstr "_מחיקת הודעה…" ++ ++#. Translators: Menu item to view the source for a message ++#: ui/conversation-email-menus.ui:69 ++msgid "_View Source" ++msgstr "צפייה ב_מקור" ++ ++#: ui/conversation-message-link-popover.ui:54 ++#| msgid "but actually goes to" ++msgid "But actually goes to:" ++msgstr "אך למעשה הולך אל:" ++ ++#: ui/conversation-message-link-popover.ui:84 ++#| msgid "This link appears to go to" ++msgid "The link appears to go to:" ++msgstr "הקישור מראה שהוא הולך אל:" ++ ++#: ui/conversation-message-link-popover.ui:96 ++msgid "Deceptive link found" ++msgstr "נמצא קישור מטעה" ++ ++#: ui/conversation-message-link-popover.ui:111 ++msgid "The email sender may be leading you to the wrong web site." ++msgstr "שולח ההודעה עשוי להוביל אותך לאתר אינטרנט לא נכון." ++ ++#: ui/conversation-message-link-popover.ui:124 ++msgid "If unsure, contact the sender and ask before continuing." ++msgstr "אם יש לך ספק, כדאי ליצור קשר עם השולח ולשאול אותו לפני התקדמות." ++ ++#: ui/conversation-message-menus.ui:7 ++#| msgid "_Open" ++msgid "_Open Link" ++msgstr "_פתיחת קישור" ++ ++#: ui/conversation-message-menus.ui:11 ++#| msgid "Copy _Email Address" ++msgid "Copy Link _Address" ++msgstr "העתקת כתובת _קישור" ++ ++#: ui/conversation-message-menus.ui:17 ++#| msgid "Move conversation" ++msgid "_New Conversation…" ++msgstr "_תכתובת חדשה…" ++ ++#: ui/conversation-message-menus.ui:21 ++#| msgid "Copy _Email Address" ++msgid "Copy Email _Address" ++msgstr "העתקת כתובת _דוא״ל" ++ ++#: ui/conversation-message-menus.ui:27 ++#| msgid "_Save Image As..." ++msgid "Save _Image As…" ++msgstr "שמירת _תמונה בשם…" ++ ++#: ui/conversation-message-menus.ui:33 ++#| msgid "Select _All" ++msgid "_Select All" ++msgstr "בחירת ה_כול" ++ ++#: ui/conversation-message.ui:63 ++msgid "From " ++msgstr "מאת " ++ ++#: ui/conversation-message.ui:79 ui/conversation-message.ui:178 ++msgid "1/1/1970\t" ++msgstr "1/1/1970\t" ++ ++#: ui/conversation-message.ui:102 ++msgid "Preview body text." ++msgstr "תצוגה מקדימה של גוף הטקסט" ++ ++#: ui/conversation-message.ui:202 ++msgid "Sent by:" ++msgstr "נשלח על ידי:" ++ ++#: ui/conversation-message.ui:247 ++#| msgid "Reply-To: " ++msgid "Reply to:" ++msgstr "להשיב אל:" ++ ++#: ui/conversation-message.ui:291 ++#| msgid "Subject:" ++msgid "Subject" ++msgstr "נושא" ++ ++#: ui/conversation-viewer.ui:60 ++#| msgid "Mark conversation" ++msgid "Find in conversation" ++msgstr "חיפוש בתכתובת" ++ ++#: ui/conversation-viewer.ui:75 ++msgid "Find the previous occurrence of the search string." ++msgstr "חיפוש המופע הקודם של המילה או הביטוי." ++ ++#: ui/conversation-viewer.ui:96 ++msgid "Find the next occurrence of the search string." ++msgstr "חיפוש המופע הבא של המילה או הביטוי." ++ ++#: ui/find_bar.glade:66 ++msgid "Find:" ++msgstr "חיפוש:" ++ ++#: ui/find_bar.glade:89 ++msgid "_Previous" ++msgstr "ה_קודם" ++ ++#: ui/find_bar.glade:107 ++msgid "_Next" ++msgstr "ה_בא" ++ ++#: ui/find_bar.glade:125 ++msgid "_Case sensitive" ++msgstr "התאמת _רישיות" ++ ++#: ui/find_bar.glade:145 ++msgid "label" ++msgstr "תוויות" ++ ++#: ui/gtk/help-overlay.ui:9 ++#| msgid "%s - Conversation Inspector" ++msgid "Conversation Shortcuts" ++msgstr "צירופי מקשים לתכתובת" ++ ++#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:377 ++#| msgid "Notifications" ++msgctxt "shortcut window" ++msgid "Actions" ++msgstr "פעולות" ++ ++#: ui/gtk/help-overlay.ui:17 ++#| msgid "Move conversation" ++msgctxt "shortcut window" ++msgid "New conversation" ++msgstr "תכתובת חדשה" ++ ++#: ui/gtk/help-overlay.ui:24 ++#| msgid "Reply to _All" ++msgctxt "shortcut window" ++msgid "Reply to sender" ++msgstr "להשיב לשולח" ++ ++#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:281 ++#| msgid "Reply to _All" ++msgctxt "shortcut window" ++msgid "Reply to all" ++msgstr "להשיב לכולם" ++ ++#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:288 ++#| msgid "_Forward" ++msgctxt "shortcut window" ++msgid "Forward" ++msgstr "העברה" ++ ++#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:295 ++msgctxt "shortcut window" ++msgid "Un-mark/mark read" ++msgstr "סימון/ביטול סימן כנקרא" ++ ++#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:302 ++msgctxt "shortcut window" ++msgid "Mark/un-mark starred" ++msgstr "סימון/ביטול סימון כמכוכב" ++ ++#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:309 ++#| msgid "Archive conversations (A)" ++msgctxt "shortcut window" ++msgid "Archive conversations" ++msgstr "תיוק שיחות בארכיון" ++ ++#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:326 ++#| msgid "Move conversations" ++msgctxt "shortcut window" ++msgid "Move conversations" ++msgstr "העברת תכתובות" ++ ++#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:333 ++#| msgid "Mark conversations" ++msgctxt "shortcut window" ++msgid "Label conversations" ++msgstr "סימון תכתובות" ++ ++#: ui/gtk/help-overlay.ui:80 ++#| msgid "Mark conversations" ++msgctxt "shortcut window" ++msgid "Trash conversations" ++msgstr "העברת תכתובות לאשפה" ++ ++#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:340 ++#| msgid "Mark conversations" ++msgctxt "shortcut window" ++msgid "Junk conversations" ++msgstr "העברת תכתובות לזבל" ++ ++#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:347 ++#| msgid "Delete conversation" ++msgctxt "shortcut window" ++msgid "Delete conversations" ++msgstr "מחיקת תכתובות" ++ ++#: ui/gtk/help-overlay.ui:104 ++#| msgid "Search" ++msgctxt "shortcut window" ++msgid "Search" ++msgstr "חיפוש" ++ ++#: ui/gtk/help-overlay.ui:108 ++#| msgid "Mark conversations" ++msgctxt "shortcut window" ++msgid "Search for conversations" ++msgstr "חיפוש תכתובות" ++ ++#: ui/gtk/help-overlay.ui:115 ui/gtk/help-overlay.ui:354 ++#| msgid "Add label to conversation" ++msgctxt "shortcut window" ++msgid "Find in current conversation" ++msgstr "חיפוש בתכתובת הנוכחית" ++ ++#: ui/gtk/help-overlay.ui:141 ++#| msgid "_Undo" ++msgctxt "shortcut window" ++msgid "Undo" ++msgstr "ביטול" ++ ++#: ui/gtk/help-overlay.ui:145 ++msgctxt "shortcut window" ++msgid "Undo the last action" ++msgstr "ביטול הפעולה האחרונה" ++ ++#: ui/gtk/help-overlay.ui:152 ++msgctxt "shortcut window" ++msgid "Redo the last action" ++msgstr "ביצוע חוזר של הפעולה האחרונה שבוטלה" ++ ++#: ui/gtk/help-overlay.ui:161 ++msgctxt "shortcut window" ++msgid "View" ++msgstr "תצוגה" ++ ++#: ui/gtk/help-overlay.ui:165 ++msgctxt "shortcut window" ++msgid "Zoom in" ++msgstr "התקרבות" ++ ++#: ui/gtk/help-overlay.ui:172 ++msgctxt "shortcut window" ++msgid "Zoom out" ++msgstr "התרחקות" ++ ++#: ui/gtk/help-overlay.ui:179 ++msgctxt "shortcut window" ++msgid "Reset zoom" ++msgstr "איפוס התקריב" ++ ++#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:404 ++#| msgid "General" ++msgctxt "shortcut window" ++msgid "General" ++msgstr "כללי" ++ ++#: ui/gtk/help-overlay.ui:192 ++#| msgid "Show Images" ++msgctxt "shortcut window" ++msgid "Show help" ++msgstr "הצגת עזרה" ++ ++#: ui/gtk/help-overlay.ui:199 ++msgctxt "shortcut window" ++msgid "Show keyboard shortcuts" ++msgstr "הצגת צירופי מקשים" ++ ++#: ui/gtk/help-overlay.ui:206 ++#| msgid "Use %s to open a new composer window" ++msgctxt "shortcut window" ++msgid "Open a new window" ++msgstr "פתיחת חלון חדש" ++ ++#: ui/gtk/help-overlay.ui:213 ++msgctxt "shortcut window" ++msgid "Close the current window" ++msgstr "סגירת החלון הנוכחי" ++ ++#: ui/gtk/help-overlay.ui:220 ++msgctxt "shortcut window" ++msgid "Quit the application" ++msgstr "יציאה מהיישום" ++ ++#: ui/gtk/help-overlay.ui:229 ++msgctxt "shortcut window" ++msgid "Keyboard navigation" ++msgstr "ניווט באמצעות המקלדת" ++ ++#: ui/gtk/help-overlay.ui:233 ++msgctxt "shortcut window" ++msgid "Go to next/previous pane" ++msgstr "לעבור ללוח הבא/הקודם" ++ ++#: ui/gtk/help-overlay.ui:241 ++#| msgid "Delete conversation" ++msgctxt "shortcut window" ++msgid "Select next/previous conversation" ++msgstr "בחירת התכתובת הבאה/הקודמת" ++ ++#: ui/gtk/help-overlay.ui:248 ++msgctxt "shortcut window" ++msgid "Focus next/previous message" ++msgstr "מיקוד בהודעה הבאה/הקודמת" ++ ++#: ui/gtk/help-overlay.ui:260 ++msgid "Single-key Shortcuts" ++msgstr "קיצורים באמצעות מקש-יחיד" ++ ++#: ui/gtk/help-overlay.ui:265 ++msgctxt "shortcut window" ++msgid "Single-key shortcuts (if enabled)" ++msgstr "קיצורים באמצעות מקש יחיד (אם מאופשר)" ++ ++#: ui/gtk/help-overlay.ui:274 ++#| msgid "Reply to _All" ++msgctxt "shortcut window" ++msgid "Reply to sender " ++msgstr "להשיב לשולח" ++ ++#: ui/gtk/help-overlay.ui:361 ++#| msgid "Delete conversation" ++msgctxt "shortcut window" ++msgid "Select next/previous conversations" ++msgstr "בחירת התכתובת הבאה/הקודמת" ++ ++#: ui/gtk/help-overlay.ui:373 ++#| msgid "Composer" ++msgid "Composer Shortcuts" ++msgstr "קיצורים ליוצר ההודעות" ++ ++#: ui/gtk/help-overlay.ui:381 ++#| msgid "Send" ++msgctxt "shortcut window" ++msgid "Send" ++msgstr "שליחה" + +-#. Can be typed in the search box after "from:" i.e.: +-#. "from:me". Matches conversations were sent by the user. +-#. +-#. The translated string must be a single word (use '-', '_' +-#. or similar to combine words into one), should be short, and +-#. also match the translation in "search.page" of the Geary User +-#. Guide. +-#: ../src/engine/imap-db/imap-db-account.vala:192 +-msgctxt "Search operator value - mail sent by the user" +-msgid "me" +-msgstr "אני" ++#: ui/gtk/help-overlay.ui:388 ++#| msgctxt "Search operator" ++#| msgid "attachment" ++msgctxt "shortcut window" ++msgid "Add attachment" ++msgstr "צירוף קובץ" + +-#. Can be typed in the search box after "is:" i.e.: +-#. "is:read". Matches conversations that are flagged as read. +-#. +-#. The translated string must be a single word (use '-', '_' +-#. or similar to combine words into one), should be short, and +-#. also match the translation in "search.page" of the Geary User +-#. Guide. +-#: ../src/engine/imap-db/imap-db-account.vala:204 +-msgctxt "'is:' search operator value" +-msgid "read" +-msgstr "נקרא" ++#: ui/gtk/help-overlay.ui:395 ++msgctxt "shortcut window" ++msgid "Detach the composer" ++msgstr "ניתוק יוצר ההודעות" ++ ++#: ui/gtk/help-overlay.ui:408 ++#| msgid "Use %s to open a new composer window" ++msgctxt "shortcut window" ++msgid "Close composer window" ++msgstr "סגירת חלון יוצר ההודעות" ++ ++#: ui/gtk/help-overlay.ui:415 ++#| msgid "Use %s to open a new composer window" ++msgctxt "shortcut window" ++msgid "Detach composer window" ++msgstr "ניתוק חלון יוצר ההודעות" ++ ++#: ui/gtk/help-overlay.ui:422 ++#| msgid "Edit" ++msgctxt "shortcut window" ++msgid "Editing" ++msgstr "עריכה" + +-#. Can be typed in the search box after "is:" i.e.: +-#. "is:starred". Matches conversations that are flagged as +-#. starred. +-#. +-#. The translated string must be a single word (use '-', '_' +-#. or similar to combine words into one), should be short, and +-#. also match the translation in "search.page" of the Geary User +-#. Guide. +-#: ../src/engine/imap-db/imap-db-account.vala:215 +-msgctxt "'is:' search operator value" +-msgid "starred" +-msgstr "מסומן בכוכב" ++#: ui/gtk/help-overlay.ui:427 ++msgctxt "shortcut window" ++msgid "Move selection to the clipboard" ++msgstr "העברת הבחירה ללוח הגזירים" ++ ++#: ui/gtk/help-overlay.ui:434 ++msgctxt "shortcut window" ++msgid "Copy selection to clipboard" ++msgstr "העתקת הבחירה ללוח הגזירים" ++ ++#: ui/gtk/help-overlay.ui:441 ++msgctxt "shortcut window" ++msgid "Paste from the clipboard" ++msgstr "הדבקה מלוח הגזירים" ++ ++#: ui/gtk/help-overlay.ui:448 ++#| msgid "Quote text (Ctrl+])" ++msgctxt "shortcut window" ++msgid "Quote text" ++msgstr "ציטוט טקסט" ++ ++#: ui/gtk/help-overlay.ui:455 ++#| msgid "Unquote text (Ctrl+[)" ++msgctxt "shortcut window" ++msgid "Unquote text" ++msgstr "סוף ציטוט טקסט" ++ ++#: ui/gtk/help-overlay.ui:464 ++msgctxt "shortcut window" ++msgid "Rich text editing" ++msgstr "עריכת טקסט עשירה" ++ ++#: ui/gtk/help-overlay.ui:468 ++#| msgctxt "Clipboard paste with rich text" ++#| msgid "Paste _With Formatting" ++msgctxt "shortcut window" ++msgid "Paste without formatting" ++msgstr "הדבקה ללא עיצוב" ++ ++#: ui/gtk/help-overlay.ui:475 ++msgctxt "shortcut window" ++msgid "Bold text" ++msgstr "טקסט מודגש" ++ ++#: ui/gtk/help-overlay.ui:482 ++msgctxt "shortcut window" ++msgid "Italicize text" ++msgstr "טקסט נטוי" ++ ++#: ui/gtk/help-overlay.ui:489 ++#| msgid "Underline (Ctrl+U)" ++msgctxt "shortcut window" ++msgid "Underline text" ++msgstr "טקסט עם קו תחתי" ++ ++#: ui/gtk/help-overlay.ui:496 ++msgctxt "shortcut window" ++msgid "Strike text" ++msgstr "טקסט עם קו חוצה" ++ ++#: ui/gtk/help-overlay.ui:503 ++#| msgid "Remove formatting (Ctrl+Space)" ++msgctxt "shortcut window" ++msgid "Remove formatting" ++msgstr "הסרת עיצוב" ++ ++#: ui/gtk/help-overlay.ui:510 ++msgctxt "shortcut window" ++msgid "Insert an image" ++msgstr "הכנסת תמונה" ++ ++#: ui/gtk/help-overlay.ui:517 ++msgctxt "shortcut window" ++msgid "Insert a link" ++msgstr "הכנסת קישור" ++ ++#: ui/main-toolbar.ui:24 ++#| msgid "Compose Message" ++msgctxt "tooltip" ++msgid "Compose Message" ++msgstr "יצירת הודעה" + +-#. Can be typed in the search box after "is:" i.e.: +-#. "is:unread". Matches conversations that are flagged unread. +-#. +-#. The translated string must be a single word (use '-', '_' +-#. or similar to combine words into one), should be short, and +-#. also match the translation in "search.page" of the Geary User +-#. Guide. +-#: ../src/engine/imap-db/imap-db-account.vala:225 +-msgctxt "'is:' search operator value" +-msgid "unread" +-msgstr "לא נקרא" ++#: ui/main-toolbar.ui:62 ++msgid "Toggle search bar" ++msgstr "הצגת סרגל החיפוש" + +-#. List of general possible folder names to match for the +-#. Draft mailbox. Separate names using a vertical bar and +-#. put the most common localized name to the front for the +-#. default. English names do not need to be included. +-#: ../src/engine/imap-engine/imap-engine-generic-account.vala:626 +-msgid "Drafts | Draft" +-msgstr "טיוטות | טיוטה | Drafts | Draft" ++#: ui/main-toolbar.ui:114 ++#| msgid "_Reply" ++msgid "Reply" ++msgstr "להשיב" + +-#. List of general possible folder names to match for the +-#. Sent mailbox. Separate names using a vertical bar and +-#. put the most common localized name to the front for the +-#. default. English names do not need to be included. +-#: ../src/engine/imap-engine/imap-engine-generic-account.vala:635 +-msgid "Sent | Sent Mail | Sent Email | Sent E-Mail" +-msgstr "דואר יוצא | דואר נשלח | Sent | Sent Mail | Sent Email | Sent E-Mail" ++#: ui/main-toolbar.ui:137 ++#| msgid "R_eply All" ++msgid "Reply All" ++msgstr "להשיב לכולם" + +-#. The localised name(s) of the Sent folder name as used +-#. by MS Outlook/Exchange. +-#: ../src/engine/imap-engine/imap-engine-generic-account.vala:640 +-msgctxt "Outlook localised name" +-msgid "Sent Items" +-msgstr "דואר יוצא" ++#: ui/main-toolbar.ui:160 ++#| msgid "_Forward" ++msgid "Forward" ++msgstr "העברה" + +-#. List of general possible folder names to match for the +-#. Spam mailbox. Separate names using a vertical bar and +-#. put the most common localized name to the front for the +-#. default. English names do not need to be included. +-#: ../src/engine/imap-engine/imap-engine-generic-account.vala:650 +-msgid "" +-"Junk | Spam | Junk Mail | Junk Email | Junk E-Mail | Bulk Mail | Bulk Email " +-"| Bulk E-Mail" +-msgstr "" +-"דואר זבל | ספאם | Junk | Spam | Junk Mail | Junk Email | Junk E-Mail | Bulk " +-"Mail | Bulk Email | Bulk E-Mail" ++#: ui/main-toolbar.ui:265 ++#| msgid "Toggle search bar" ++msgid "Toggle find bar" ++msgstr "הצגת סרגל החיפוש" + +-#. List of general possible folder names to match for the +-#. Trash mailbox. Separate names using a vertical bar and +-#. put the most common localized name to the front for the +-#. default. English names do not need to be included. +-#: ../src/engine/imap-engine/imap-engine-generic-account.vala:660 +-msgid "Trash | Rubbish | Rubbish Bin" +-msgstr "אשפה | זבל | Trash | Rubbish | Rubbish Bin" ++#: ui/main-toolbar.ui:286 ++msgid "_Archive" ++msgstr "תיוק ב_ארכיון" + +-#. The localised name(s) of the Trash folder name as used +-#. by MS Outlook/Exchange. +-#: ../src/engine/imap-engine/imap-engine-generic-account.vala:665 +-msgctxt "Outlook localised name" +-msgid "Deleted Items" +-msgstr "אשפה" ++#: ui/main-toolbar-menus.ui:21 ++msgid "Toggle as _Junk" ++msgstr "סימון/ביטול סימון כ_זבל" + +-#. List of general possible folder names to match for the +-#. Archive mailbox. Separate names using a vertical bar +-#. and put the most common localized name to the front for +-#. the default. English names do not need to be included. +-#: ../src/engine/imap-engine/imap-engine-generic-account.vala:675 +-msgid "Archive | Archives" +-msgstr "ארכיון | ארכיב | ארכיונים | ארכיבים | Archive | Archives" ++#: ui/main-toolbar-menus.ui:28 ++#| msgid "Accounts" ++msgid "_Accounts" ++msgstr "_חשבונות" + +-#. / Format for the datetime that a message being replied to was received +-#. / See http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format +-#: ../src/engine/rfc822/rfc822-utils.vala:215 +-msgid "%a, %b %-e, %Y at %-l:%M %p" +-msgstr "%a, %b %-e, %Y בשעה %-l:%M %p" ++#: ui/main-toolbar-menus.ui:36 ++msgid "_Keyboard Shortcuts" ++msgstr "_צירופי מקשים" + +-#. / The quoted header for a message being replied to. +-#. / %1$s will be substituted for the date, and %2$s will be substituted for +-#. / the original sender. +-#: ../src/engine/rfc822/rfc822-utils.vala:221 +-#, c-format +-msgid "On %1$s, %2$s wrote:" +-msgstr "בתאריך %1$s, %2$s כתב:" ++#: ui/main-toolbar-menus.ui:47 ++#| msgid "_About" ++msgid "_About Geary" ++msgstr "על _אודות Geary" + +-#. / The quoted header for a message being replied to (in case the date is not known). +-#. / %s will be replaced by the original sender. +-#: ../src/engine/rfc822/rfc822-utils.vala:228 +-#, c-format +-msgid "%s wrote:" +-msgstr "נכתב על ידי %s:" ++#: ui/password-dialog.glade:74 ++msgid "SMTP Credentials" ++msgstr "אישורי SMTP" + +-#. / The quoted header for a message being replied to (in case the sender is not known). +-#. / %s will be replaced by the original date +-#: ../src/engine/rfc822/rfc822-utils.vala:234 +-#, c-format +-msgid "On %s:" +-msgstr "בתאריך %s:" ++#: ui/password-dialog.glade:91 ++msgid "Username" ++msgstr "שם משתמש" + +-#: ../src/engine/rfc822/rfc822-utils.vala:263 +-msgid "---------- Forwarded message ----------" +-msgstr "---------- הודעה שהועברה ----------" ++#: ui/password-dialog.glade:152 ++msgid "_Remember password" ++msgstr "שמירת ה_ססמה" + +-#: ../src/engine/rfc822/rfc822-utils.vala:267 +-#, c-format +-msgid "From: %s\n" +-msgstr "מאת: %s\n" ++#: ui/password-dialog.glade:210 ++msgid "_Authenticate" ++msgstr "אי_מות" + +-#: ../src/engine/rfc822/rfc822-utils.vala:268 +-#, c-format +-msgid "Subject: %s\n" +-msgstr "נושא: %s\n" ++#: ui/upgrade_dialog.glade:60 ++msgid "Geary update in progress…" ++msgstr "‏Geary בתהליך שדרוג…" + +-#: ../src/engine/rfc822/rfc822-utils.vala:269 +-#, c-format +-msgid "Date: %s\n" +-msgstr "תאריך: %s\n" ++#~ msgid "Mail Client" ++#~ msgstr "לקוח דוא״ל" + +-#: ../src/engine/rfc822/rfc822-utils.vala:272 +-#, c-format +-msgid "To: %s\n" +-msgstr "אל: %s\n" ++#~ msgid "Geary Mail" ++#~ msgstr "דואר אלקטרוני Geary" + +-#: ../src/engine/rfc822/rfc822-utils.vala:275 +-#, c-format +-msgid "Cc: %s\n" +-msgstr "עותק: %s\n" ++#~ msgid "Additional addresses for %s" ++#~ msgstr "כתובות נוספות עבור %s" + +-#: ../ui/account_cannot_remove.glade.h:1 +-msgid "Cannot remove account " +-msgstr "לא ניתן למחוק משתמש" ++#~ msgid "First Last" ++#~ msgstr "שם פרטי שם משפחה" + +-#: ../ui/account_cannot_remove.glade.h:2 +-msgid "" +-"A composer window associated with this account is currently open. Send or " +-"discard the message and try again." +-msgstr "חלון כתיבה הקשור במשתמש זה פתוח כרגע. שלח או מחק את ההודעה ונסה שוב." ++#~ msgid "Enter your account information to get started." ++#~ msgstr "נא להזין את פרטי החשבון שלך כדי להתחיל." + +-#: ../ui/account_list.glade.h:1 +-msgid "Add account" +-msgstr "הוספת חשבון" ++#~ msgid "Preview" ++#~ msgstr "תצוגה מקדימה" + +-#: ../ui/account_list.glade.h:2 +-msgid "Edit account" +-msgstr "עריכת חשבון" ++#~ msgid "Remem_ber passwords" ++#~ msgstr "זכירת סס_מאות" + +-#: ../ui/account_list.glade.h:3 +-msgid "Remove account" +-msgstr "הסרת חשבון" ++#~ msgid "Remem_ber password" ++#~ msgstr "זכירת _ססמה" + +-#: ../ui/account_spinner.glade.h:1 +-msgid "Please wait while Geary validates your account." +-msgstr "יש להמתין כאשר Geary מאמת את החשבון שלך." ++#~ msgid "Unable to validate:\n" ++#~ msgstr "לא ניתן לאמת לאמת:\n" + +-#: ../ui/certificate_warning_dialog.glade.h:1 +-msgid "Untrusted Connection" +-msgstr "חיבור לא מהימן" ++#~ msgid " • Invalid account nickname.\n" ++#~ msgstr " • כינוי חשבון לא חוקי.\n" + +-#: ../ui/certificate_warning_dialog.glade.h:2 +-msgid "_Always Trust This Server" +-msgstr "_תמיד לבטוח בשרת זה" ++#~ msgid " • Email address already added to Geary.\n" ++#~ msgstr " • כתובת דוא״ל זה כבר נוסף ל־Geary.\n" + +-#: ../ui/certificate_warning_dialog.glade.h:3 +-msgid "_Trust This Server" +-msgstr "_לבטוח בשרת זה" ++#~ msgid " • IMAP connection error.\n" ++#~ msgstr " • IMAP בעיית חיבור.\n" + +-#: ../ui/certificate_warning_dialog.glade.h:4 +-msgid "_Don't Trust This Server" +-msgstr "ל_א לבטוח בשרת זה" ++#~ msgid " • IMAP username or password incorrect.\n" ++#~ msgstr "• שם משתמש או ססמת ה־IMAP שגויים.\n" + +-#: ../ui/composer.glade.h:1 +-msgid "_Undo" +-msgstr "_ביטול" ++#~ msgid " • SMTP connection error.\n" ++#~ msgstr " • SMTP בעיית חיבור.\n" + +-#: ../ui/composer.glade.h:2 +-msgid "_Redo" +-msgstr "ביצוע _שוב" ++#~ msgid " • SMTP username or password incorrect.\n" ++#~ msgstr " • שם משתמש או ססמת SMTP אינם נכונים.\n" + +-#: ../ui/composer.glade.h:3 +-msgid "Cu_t" +-msgstr "_גזירה" ++#~ msgid " • Connection error.\n" ++#~ msgstr "• בעיית חיבור.\n" + +-#: ../ui/composer.glade.h:5 +-msgid "_Paste" +-msgstr "הד_בקה" ++#~ msgid " • Username or password incorrect.\n" ++#~ msgstr " • שם משתמש או ססמה אינם נכונים.\n" + +-#: ../ui/composer.glade.h:6 +-msgid "_Left" +-msgstr "_שמאל" ++#~ msgid "Output debugging information" ++#~ msgstr "הצגת מידע שיסייע באיתור תקלות" + +-#: ../ui/composer.glade.h:7 +-msgid "_Right" +-msgstr "_ימין" ++#~ msgid "Log network serialization" ++#~ msgstr "ביצוע רישום של network serialization" + +-#: ../ui/composer.glade.h:8 +-msgid "_Center" +-msgstr "_מרכז" ++#~ msgid "Log periodic activity" ++#~ msgstr "ביצוע רישום של פעילות תקופתית" + +-#: ../ui/composer.glade.h:9 +-msgid "_Justify" +-msgstr "יישו_ר" ++#~ msgid "Allow inspection of WebView" ++#~ msgstr "לאפשר בדיקה של WebView" + +-#: ../ui/composer.glade.h:10 +-msgid "Link (Ctrl+L)" +-msgstr "קישור (Ctrl+ך)" ++#~ msgid "Please report comments, suggestions and bugs to:" ++#~ msgstr "נא לשלוח הערות, הצעות ודיווחי תקלות לכתובת:" + +-#: ../ui/composer.glade.h:11 +-msgid "C_olor" +-msgstr "_צבע" ++#~ msgid "Failed to parse command line options: %s\n" ++#~ msgstr "ניתוח הפרמטרים שהועברו בשורת הפקודה נכשל: %s\n" + +-#: ../ui/composer.glade.h:12 +-msgid "More options" +-msgstr "אפשרויות נוספות" ++#~ msgid "Unrecognized command line option \"%s\"\n" ++#~ msgstr "הפרמטרים לשורת הפקודה אינם מוכרים: „%s”\n" + +-#: ../ui/composer.glade.h:13 +-msgid "Quote text (Ctrl+])" +-msgstr "ציטוט טקסט (Ctrl+])" ++#~ msgid "Delete conversation (Shift+Delete)" ++#~ msgstr "מחיקת שיחה (Shift+Delete)" + +-#: ../ui/composer.glade.h:14 +-msgid "Unquote text (Ctrl+[)" +-msgstr "סוף ציטוט טקסט (Ctrl+[)" ++#~ msgid "Delete conversations (Shift+Delete)" ++#~ msgstr "מחיקת שיחות (Shift+Delete)" + +-#: ../ui/composer.glade.h:15 +-msgid "Remove formatting (Ctrl+Space)" +-msgstr "הסרת עיצוב (Ctrl+רווח)" ++#~ msgid "Move conversation to Trash (Delete, Backspace)" ++#~ msgstr "הזזת שיחה לאשפה (Delete, Backspace)" + +-#: ../ui/composer.glade.h:16 +-msgctxt "Clipboard paste with rich text" +-msgid "Paste _With Formatting" +-msgstr "הדבקה עם עי_צוב" ++#~ msgid "Move conversations to Trash (Delete, Backspace)" ++#~ msgstr "הזזת שיחות לאשפה (Delete, Backspace)" + +-#: ../ui/composer.glade.h:18 +-msgid "Bold (Ctrl+B)" +-msgstr "מודגש (Ctrl+נ)" ++#~ msgid "Mark as S_pam" ++#~ msgstr "סימון כ_דואר זבל" + +-#: ../ui/composer.glade.h:19 +-msgid "Italic (Ctrl+I)" +-msgstr "נטוי (Ctrl+ן)" ++#~ msgid "Mark as not S_pam" ++#~ msgstr "סימון כלא דואר ז_בל" + +-#: ../ui/composer.glade.h:20 +-msgid "Underline (Ctrl+U)" +-msgstr "קו תחתי (Ctrl+ו)" ++#~ msgid "Add label to conversations" ++#~ msgstr "הוספת תווית לשיחות" + +-#: ../ui/composer.glade.h:21 +-msgid "Strikethrough (Ctrl+K)" +-msgstr "קו חוצה (Ctrl+ל)" ++#~ msgid "A_ccounts" ++#~ msgstr "_חשבונות" + +-#: ../ui/composer.glade.h:22 +-msgid "_Rich Text" +-msgstr "טקסט _עשיר" ++#~ msgid "_Mark as..." ++#~ msgstr "_סימון בתור…" + +-#: ../ui/composer.glade.h:23 +-msgid "Show Extended Fields" +-msgstr "הצגת שדות מורחבים" +- +-#: ../ui/composer.glade.h:24 +-msgctxt "Label" +-msgid "Close and Save" +-msgstr "סגירה ושמירה" +- +-#: ../ui/composer.glade.h:25 +-msgctxt "Short Label" +-msgid "Close and Save" +-msgstr "סגירה ושמירה" +- +-#: ../ui/composer.glade.h:26 +-msgctxt "Tooltip" +-msgid "Close and Save" +-msgstr "סגירה ושמירה" +- +-#: ../ui/composer.glade.h:27 +-msgctxt "Label" +-msgid "Close and Discard" +-msgstr "סגירה והשלכה" +- +-#: ../ui/composer.glade.h:28 +-msgctxt "Short Label" +-msgid "Close and Discard" +-msgstr "סגירה והשלכה" +- +-#: ../ui/composer.glade.h:29 +-msgctxt "Tooltip" +-msgid "Close and Discard" +-msgstr "סגירה והשלכה" +- +-#: ../ui/composer.glade.h:30 +-msgid "Lar_ge" +-msgstr "_גדול" ++#~ msgid "Add label" ++#~ msgstr "הוספת תווית" + +-#: ../ui/composer.glade.h:31 +-msgid "Large" +-msgstr "גדול" ++#~ msgid "_Label" ++#~ msgstr "_תווית" + +-#: ../ui/composer.glade.h:32 +-msgid "_Medium" +-msgstr "_בינוני" ++#~ msgid "_Move" ++#~ msgstr "ה_עברה" + +-#: ../ui/composer.glade.h:33 +-msgid "Medium" +-msgstr "בינוני" ++#~ msgid "Compose new message (Ctrl+N, N)" ++#~ msgstr "יצירת הודעה חדשה (Ctrl+מ, מ)" + +-#: ../ui/composer.glade.h:34 +-msgid "_Small" +-msgstr "_קטן" ++#~ msgid "Reply (Ctrl+R, R)" ++#~ msgstr "להשיב (Ctrl+ר, ר)" + +-#: ../ui/composer.glade.h:35 +-msgid "Small" +-msgstr "קטן" ++#~ msgid "Reply all (Ctrl+Shift+R, Shift+R)" ++#~ msgstr "להשיב לכולם (Ctrl+Shift+ר, Shift+ר)" + +-#: ../ui/composer.glade.h:36 +-msgid "S_ans Serif" +-msgstr "_בלתי מעוטר" ++#~ msgid "Forward (Ctrl+L, F)" ++#~ msgstr "העברה (Ctrl+ך, כ)" + +-#: ../ui/composer.glade.h:37 +-msgid "Sans Serif" +-msgstr "בלתי מעוטר" ++#~ msgid "Empty Spam or Trash folders" ++#~ msgstr "ריקון תיקיית דואר זבל או אשפה" + +-#: ../ui/composer.glade.h:38 +-msgid "S_erif" +-msgstr "_מעוטר" ++#~ msgid "Empty _Spam…" ++#~ msgstr "ריקון דואר _זבל…" + +-#: ../ui/composer.glade.h:39 +-msgid "Serif" +-msgstr "מעוטר" ++#~ msgid "Empty _Trash…" ++#~ msgstr "ריקון א_שפה…" + +-#: ../ui/composer.glade.h:40 +-msgid "_Fixed Width" +-msgstr "_רוחב קבוע" ++#~ msgid "Unable to store server trust exception" ++#~ msgstr "לא ניתן לאחסן שרת מהימן חריג" + +-#: ../ui/composer.glade.h:41 +-msgid "Fixed Width" +-msgstr "רוחב קבוע" ++#~ msgid "Your settings are insecure" ++#~ msgstr "ההגדרות שלך אינן בטוחות" + +-#: ../ui/composer.glade.h:42 +-msgid "Detach" +-msgstr "ניתוק" ++#~ msgid "" ++#~ "Your IMAP and/or SMTP settings do not specify SSL or TLS. This means " ++#~ "your username and password could be read by another person on the " ++#~ "network. Are you sure you want to do this?" ++#~ msgstr "" ++#~ "הגדרות ה־IMAP ו/או הגדרות ה־SMTP אינן מגדירות התחברות דרך פרוטוקול אבטחה " ++#~ "SSL או TLS. משמעות הדבר ששם המשתמש והססמה שלך יכולים להיקרא ע״י תכניות " ++#~ "מעקב ברשת שלך. האם להתחבר לחשבון?" + +-#: ../ui/composer.glade.h:43 +-msgid "Detach (Ctrl+D)" +-msgstr "ניתוק (Ctrl+ג)" ++#~ msgid "Co_ntinue" ++#~ msgstr "לה_משיך" + +-#: ../ui/composer.glade.h:44 +-msgid "_Send" +-msgstr "_שליחה" ++#~ msgid "" ++#~ "Geary encountered an error sending an email. If the problem persists, " ++#~ "please manually delete the email from your Outbox folder." ++#~ msgstr "" ++#~ "‏Geary נתקל בשגיאה בשליחת דוא״ל. אם הבעיה נמשכת, יש למחוק ידנית את הדוא״ל " ++#~ "מתיקיית דואר יוצא שלך." + +-#: ../ui/composer.glade.h:45 +-msgid "Send" +-msgstr "שליחה" ++#~ msgid "" ++#~ "Geary encountered an error saving a sent message to Sent Mail. The " ++#~ "message will stay in your Outbox folder until you delete it." ++#~ msgstr "" ++#~ "‏Geary נתקל בשגיאה בשמירת הודעה שנשלחה לדואר יוצא. ההודעה תישאר בתיקייה " ++#~ "בהמתנה לשליחה עד שתמחק." ++ ++#~ msgid "Unable to open local mailbox for %s" ++#~ msgstr "לא ניתן לפתוח תיבת דואר מקומית עבור %s" ++ ++#~ msgid "" ++#~ "There was an error opening the local mail database for this account. This " ++#~ "is possibly due to a file permissions problem.\n" ++#~ "\n" ++#~ "Please check that you have read/write permissions for all files in this " ++#~ "directory:\n" ++#~ "\n" ++#~ "%s" ++#~ msgstr "" ++#~ "אירעה שגיאה בפתיחת מסד הנתונים המקומי של הדואר עבור חשבון זה. ככל הנראה " ++#~ "עקב בעיות הרשאות הקובץ.\n" ++#~ "\n" ++#~ "יש לבדוק אם יש לך הרשאות קריאה/כתיבה לכל הקבצים בתיקייה:\n" ++#~ "%s" ++ ++#~ msgid "" ++#~ "The version number of the local mail database is formatted for a newer " ++#~ "version of Geary. Unfortunately, the database cannot be \"rolled back\" " ++#~ "to work with this version of Geary.\n" ++#~ "\n" ++#~ "Please install the latest version of Geary and try again." ++#~ msgstr "" ++#~ "מספר הגרסה של מסד הנתונים המקומי של הדואר מתאים לגרסה חדשה של Geary. " ++#~ "למרבה הצער, לא ניתן לשחזר את מסד הנתונים כדי שיעבוד עם גרסה זו של Geary.\n" ++#~ "\n" ++#~ "יש להתקין שוב את הגרסה האחרונה של Geary." ++ ++#~ msgid "" ++#~ "There was an error opening the local account. This is probably due to " ++#~ "connectivity issues.\n" ++#~ "\n" ++#~ "Please check your network connection and restart Geary." ++#~ msgstr "" ++#~ "אירעה שגיאה בפתיחת החשבון המקומי. ככל הנראה עקב בעיות חיבור.\n" ++#~ "\n" ++#~ "יש לבדוק את חיבור הרשת שלך ולהפעיל מחדש את Geary." ++ ++#~ msgid "Undo move (Ctrl+Z)" ++#~ msgstr "ביטול העברה (Ctrl+ז)" ++ ++#~ msgid "Close open draft messages?" ++#~ msgstr "סגירת טיוטות פתוחות?" ++ ++#~ msgid "Error emptying %s" ++#~ msgstr "שגיאה בריקון %s" ++ ++#~ msgid "Undo archive (Ctrl+Z)" ++#~ msgstr "ביטול ארכוב (Ctrl+ז)" ++ ++#~ msgid "Undo trash (Ctrl+Z)" ++#~ msgstr "ביטול העברה לאשפה (Ctrl+ז)" ++ ++#~ msgid "Undo (Ctrl+Z)" ++#~ msgstr "ביטול (Ctrl+ז)" ++ ++#~ msgid "%i match" ++#~ msgid_plural "%i matches" ++#~ msgstr[0] "התאמה אחת" ++#~ msgstr[1] "%i התאמות" ++#~ msgstr[2] "שתי התאמות" ++ ++#~ msgid "%i match (wrapped)" ++#~ msgid_plural "%i matches (wrapped)" ++#~ msgstr[0] "התאמה אחת (גולש)" ++#~ msgstr[1] "%i התאמות (גולש)" ++#~ msgstr[2] "שתי התאמות (גולש)" ++ ++#~ msgid "Indexing %s account" ++#~ msgstr "מפתוּח חשבון %s" ++ ++#~ msgid "To: " ++#~ msgstr "אל: " ++ ++#~ msgid "Cc: " ++#~ msgstr "עותק: " ++ ++#~ msgid "Bcc: " ++#~ msgstr "עותק מוסתר: " ++ ++#~ msgid "No conversations selected." ++#~ msgstr "לא נבחרה אף תכתובת." ++ ++#~ msgid "%u conversation selected." ++#~ msgid_plural "%u conversations selected." ++#~ msgstr[0] "נבחרה תכתובת אחת." ++#~ msgstr[1] "נבחרו %u תכתובות." ++#~ msgstr[2] "נבחרו שתי תכתובות." + +-#: ../ui/composer.glade.h:46 +-msgid "Send (Ctrl+Enter)" +-msgstr "שליחה (Ctrl+Enter)" ++#~ msgid "No search results found." ++#~ msgstr "לא מצאו תוצאות בחיפוש." + +-#: ../ui/composer.glade.h:47 +-msgid "_Attach File" +-msgstr "_צירוף קובץ" ++#~ msgid "Edit Draft" ++#~ msgstr "עריכת טיוטה" + +-#: ../ui/composer.glade.h:48 +-msgid "Attach File" +-msgstr "צירוף קובץ" ++#~ msgid "Copy _Link" ++#~ msgstr "ה_עתקת קישור" + +-#: ../ui/composer.glade.h:49 +-msgid "Attach File (Ctrl+T)" +-msgstr "צירוף קובץ ‏(Ctrl+א)" ++#~ msgid " (Invalid?)" ++#~ msgstr " (לא חוקי?)" + +-#: ../ui/composer.glade.h:50 +-msgid "_Include Original Attachments" +-msgstr "_לכלול את הקבצים המצורפים המקוריים" ++#~ msgid "Save A_ttachment..." ++#~ msgid_plural "Save All A_ttachments..." ++#~ msgstr[0] "שמירת ה_קובץ המצורף…" ++#~ msgstr[1] "שמירת הק_בצים המצורפים…" ++#~ msgstr[2] "שמירת הק_בצים המצורפים…" + +-#: ../ui/composer.glade.h:51 +-msgid "Include Original Attachments" +-msgstr "לכלול את הקבצים המצורפים המקוריים" ++#~ msgid "none" ++#~ msgstr "ללא שם" + +-#: ../ui/composer.glade.h:52 +-msgid "Select spell checking language" +-msgstr "בחירת שפה לבדיקת איות" ++#~ msgid "Failed to open default text editor." ++#~ msgstr "פתיחת עורך הטקסט נכשלה." + +-#: ../ui/composer.glade.h:53 +-msgid "Spelling language" +-msgstr "שפה לבדיקת איות" ++#~ msgid "Geary will exit if you have no other open email accounts." ++#~ msgstr "‏Geary יצא אם אין לך עוד חשבונות דוא״ל פתוחים." + +-#. Address(es) e-mail is to be sent to +-#: ../ui/composer.glade.h:55 +-msgid "_To" +-msgstr "_אל" ++#~ msgid "Open" ++#~ msgstr "פתיחה" + +-#: ../ui/composer.glade.h:56 +-msgid "_Cc" +-msgstr "_עותק" ++#~ msgctxt "Default clock format" ++#~ msgid "%l:%M %P" ++#~ msgstr "%l:%M %P" + +-#: ../ui/composer.glade.h:57 +-msgid "_Subject" +-msgstr "_נושא" ++#~ msgid "%x" ++#~ msgstr "%x" + +-#: ../ui/composer.glade.h:58 +-msgid "_Bcc" +-msgstr "עותק _מוסתר" ++#~ msgid "Other" ++#~ msgstr "אחר" + +-#: ../ui/composer.glade.h:59 +-msgid "_Reply-To" +-msgstr "לה_שיב אל" ++#~ msgid "IMAP" ++#~ msgstr "IMAP" + +-#. Geary account mail will be sent from +-#: ../ui/composer.glade.h:61 +-msgid "From" +-msgstr "מאת" ++#~ msgid "SMTP" ++#~ msgstr "SMTP" + +-#: ../ui/composer.glade.h:62 +-msgid "Drop files here" +-msgstr "יש לגרור קבצים לכאן" ++#~ msgid "Spam" ++#~ msgstr "דואר זבל" + +-#: ../ui/composer.glade.h:63 +-msgid "To add them as attachments" +-msgstr "כדי להוסיף אותם כקבצים מצורפים" ++#~ msgid "From: %s\n" ++#~ msgstr "מאת: %s\n" + +-#: ../ui/edit_alternate_emails.glade.h:1 +-msgid "Remove email address" +-msgstr "מחיקת כתובת דוא״ל" ++#~ msgid "Subject: %s\n" ++#~ msgstr "נושא: %s\n" + +-#: ../ui/edit_alternate_emails.glade.h:2 +-msgid "" +-"Some email services require additional addresses be configured on the " +-"server. Contact your email provider for more information." +-msgstr "" +-"כמה שרתי דואר דורשים כתובות נוספות להגדרה על השרת. יש ליצור קשר עם\n" +-"ספק הדוא״ל שלך למיד נוסף." ++#~ msgid "Date: %s\n" ++#~ msgstr "תאריך: %s\n" + +-#: ../ui/edit_alternate_emails.glade.h:4 +-msgid "_Update" +-msgstr "_עדכון" ++#~ msgid "To: %s\n" ++#~ msgstr "אל: %s\n" + +-#: ../ui/find_bar.glade.h:1 +-msgid "Find:" +-msgstr "חיפוש:" ++#~ msgid "Cc: %s\n" ++#~ msgstr "עותק: %s\n" + +-#: ../ui/find_bar.glade.h:2 +-msgid "_Previous" +-msgstr "ה_קודם" ++#~ msgid "Cannot remove account " ++#~ msgstr "לא ניתן למחוק משתמש" + +-#: ../ui/find_bar.glade.h:3 +-msgid "_Next" +-msgstr "ה_בא" ++#~ msgid "" ++#~ "A composer window associated with this account is currently open. Send or " ++#~ "discard the message and try again." ++#~ msgstr "" ++#~ "חלון כתיבה הקשור במשתמש זה פתוח כרגע. שלח או מחק את ההודעה ונסה שוב." + +-#: ../ui/find_bar.glade.h:4 +-msgid "_Case sensitive" +-msgstr "התאמת _רישיות" ++#~ msgid "Please wait while Geary validates your account." ++#~ msgstr "יש להמתין כאשר Geary מאמת את החשבון שלך." + +-#: ../ui/find_bar.glade.h:5 +-msgid "label" +-msgstr "תוויות" ++#~ msgid "_Left" ++#~ msgstr "_שמאל" + +-#: ../ui/login.glade.h:1 ../ui/password-dialog.glade.h:3 +-msgid "Password" +-msgstr "ססמה" ++#~ msgid "_Right" ++#~ msgstr "_ימין" + +-#: ../ui/login.glade.h:2 +-msgid "E_mail address" +-msgstr "כתובת _דוא״ל" ++#~ msgid "_Center" ++#~ msgstr "_מרכז" + +-#: ../ui/login.glade.h:3 +-msgid "_Password" +-msgstr "_ססמה" ++#~ msgid "_Justify" ++#~ msgstr "יישו_ר" + +-#: ../ui/login.glade.h:4 +-msgid "S_ervice" +-msgstr "ש_רות" ++#~ msgid "Link (Ctrl+L)" ++#~ msgstr "קישור (Ctrl+ך)" + +-#: ../ui/login.glade.h:5 +-msgid "N_ame" +-msgstr "_שם" ++#~ msgid "C_olor" ++#~ msgstr "_צבע" + +-#: ../ui/login.glade.h:7 +-msgid "N_ickname" +-msgstr "_כינוי" ++#~ msgid "Bold (Ctrl+B)" ++#~ msgstr "מודגש (Ctrl+נ)" + +-#: ../ui/login.glade.h:8 +-msgid "Work, Home, etc." +-msgstr "עבודה, בית וכו׳" ++#~ msgid "Show Extended Fields" ++#~ msgstr "הצגת שדות מורחבים" + +-#: ../ui/login.glade.h:9 +-msgid "_Save sent mail" +-msgstr "_שמירת דואר יוצא" ++#~ msgctxt "Label" ++#~ msgid "Close and Save" ++#~ msgstr "סגירה ושמירה" + +-#: ../ui/login.glade.h:10 +-msgid "Addi_tional email addresses…" +-msgstr "כתובות דוא״ל _נוספות…" ++#~ msgctxt "Short Label" ++#~ msgid "Close and Save" ++#~ msgstr "סגירה ושמירה" + +-#: ../ui/login.glade.h:11 +-msgid "IMAP settings" +-msgstr "הגדרות IMAP" ++#~ msgctxt "Tooltip" ++#~ msgid "Close and Save" ++#~ msgstr "סגירה ושמירה" + +-#: ../ui/login.glade.h:12 +-msgid "Se_rver" +-msgstr "_שרת" ++#~ msgctxt "Label" ++#~ msgid "Close and Discard" ++#~ msgstr "סגירה והשלכה" + +-#: ../ui/login.glade.h:13 +-msgid "P_ort" +-msgstr "_פתחה" ++#~ msgctxt "Short Label" ++#~ msgid "Close and Discard" ++#~ msgstr "סגירה והשלכה" + +-#: ../ui/login.glade.h:14 +-msgid "Ser_ver" +-msgstr "ש_רת" ++#~ msgctxt "Tooltip" ++#~ msgid "Close and Discard" ++#~ msgstr "סגירה והשלכה" + +-#: ../ui/login.glade.h:15 +-msgid "Por_t" +-msgstr "_פתחה" ++#~ msgid "Large" ++#~ msgstr "גדול" + +-#: ../ui/login.glade.h:16 +-msgid "SMTP settings" +-msgstr "הגדרות SMTP" ++#~ msgid "Medium" ++#~ msgstr "בינוני" + +-#: ../ui/login.glade.h:17 +-msgid "User_name" +-msgstr "שם מ_שתמש" ++#~ msgid "Small" ++#~ msgstr "קטן" + +-#: ../ui/login.glade.h:18 +-msgid "Pass_word" +-msgstr "_ססמה" ++#~ msgid "Detach" ++#~ msgstr "ניתוק" + +-#: ../ui/login.glade.h:19 +-msgid "SMTP username" +-msgstr "שם משתמש SMTP" ++#~ msgid "Detach (Ctrl+D)" ++#~ msgstr "ניתוק (Ctrl+ג)" + +-#: ../ui/login.glade.h:20 +-msgid "SMTP password" +-msgstr "ססמת SMTP" ++#~ msgid "Send (Ctrl+Enter)" ++#~ msgstr "שליחה (Ctrl+Enter)" + +-#: ../ui/login.glade.h:21 +-msgid "_Username" +-msgstr "שם _משתמש" ++#~ msgid "_Attach File" ++#~ msgstr "_צירוף קובץ" + +-#: ../ui/login.glade.h:22 +-msgid "IMAP username" +-msgstr "שם משתמש IMAP" ++#~ msgid "Attach File (Ctrl+T)" ++#~ msgstr "צירוף קובץ ‏(Ctrl+א)" + +-#: ../ui/login.glade.h:23 +-msgid "IMAP password" +-msgstr "ססמת IMAP" ++#~ msgid "_Include Original Attachments" ++#~ msgstr "_לכלול את הקבצים המצורפים המקוריים" + +-#: ../ui/login.glade.h:24 +-msgid "Encr_yption" +-msgstr "ה_צפנה" ++#~ msgid "Spelling language" ++#~ msgstr "שפה לבדיקת איות" + +-#: ../ui/login.glade.h:25 +-msgid "Encrypt_ion" +-msgstr "ה_צפנה" ++#~ msgid "From" ++#~ msgstr "מאת" + +-#: ../ui/login.glade.h:27 +-msgid "SSL/TLS" +-msgstr "SSL/TLS" ++#~ msgid "" ++#~ "Some email services require additional addresses be configured on the " ++#~ "server. Contact your email provider for more information." ++#~ msgstr "" ++#~ "כמה שרתי דואר דורשים כתובות נוספות להגדרה על השרת. יש ליצור קשר עם\n" ++#~ "ספק הדוא״ל שלך למיד נוסף." + +-#: ../ui/login.glade.h:28 +-msgid "STARTTLS" +-msgstr "STARTTLS" ++#~ msgid "E_mail address" ++#~ msgstr "כתובת _דוא״ל" + +-#: ../ui/login.glade.h:29 +-msgid "No authentication re_quired" +-msgstr "לא נדרש אי_מות" ++#~ msgid "_Password" ++#~ msgstr "_ססמה" + +-#: ../ui/login.glade.h:30 +-msgid "Use IMAP cre_dentials" +-msgstr "שימוש ב_אישורי IMAP" ++#~ msgid "S_ervice" ++#~ msgstr "ש_רות" + +-#: ../ui/login.glade.h:31 ../ui/preferences.glade.h:5 +-msgid "Composer" +-msgstr "חיבור הודעות" ++#~ msgid "N_ame" ++#~ msgstr "_שם" + +-#: ../ui/login.glade.h:32 +-msgid "Save dra_fts on server" +-msgstr "שמירת _טיוטה על השרת" ++#~ msgid "N_ickname" ++#~ msgstr "_כינוי" + +-#: ../ui/login.glade.h:33 +-msgid "Si_gn emails (HTML allowed):" +-msgstr "_חתימת הודעות (HTML מאופשר):" ++#~ msgid "Work, Home, etc." ++#~ msgstr "עבודה, בית וכו׳" + +-#: ../ui/login.glade.h:34 +-msgid "Storage" +-msgstr "אחסון" ++#~ msgid "Addi_tional email addresses…" ++#~ msgstr "כתובות דוא״ל _נוספות…" + +-#: ../ui/login.glade.h:35 +-msgid "_Download mail" +-msgstr "הורדת _דוא״ל" ++#~ msgid "IMAP settings" ++#~ msgstr "הגדרות IMAP" + +-#: ../ui/password-dialog.glade.h:1 +-msgid "SMTP Credentials" +-msgstr "אישורי SMTP" ++#~ msgid "Se_rver" ++#~ msgstr "_שרת" + +-#: ../ui/password-dialog.glade.h:2 +-msgid "Username" +-msgstr "שם משתמש" ++#~ msgid "P_ort" ++#~ msgstr "_פתחה" + +-#: ../ui/password-dialog.glade.h:4 +-msgid "_Remember password" +-msgstr "שמירת ה_ססמה" ++#~ msgid "Ser_ver" ++#~ msgstr "ש_רת" + +-#: ../ui/password-dialog.glade.h:6 +-msgid "_Authenticate" +-msgstr "אי_מות" ++#~ msgid "Por_t" ++#~ msgstr "_פתחה" + +-#: ../ui/preferences.glade.h:1 +-msgid "Reading" +-msgstr "קריאה" ++#~ msgid "User_name" ++#~ msgstr "שם מ_שתמש" + +-#: ../ui/preferences.glade.h:2 +-msgid "_Automatically select next message" +-msgstr "_בחירת ההודעה הבאה אוטומטית" ++#~ msgid "Pass_word" ++#~ msgstr "_ססמה" + +-#: ../ui/preferences.glade.h:3 +-msgid "_Display conversation preview" +-msgstr "הצגת תצוגה מ_קדימה של שיחה" ++#~ msgid "SMTP password" ++#~ msgstr "ססמת SMTP" + +-#: ../ui/preferences.glade.h:4 +-msgid "Use _three pane view" +-msgstr "שימוש ב_שלוש חלוניות תצוגה" ++#~ msgid "_Username" ++#~ msgstr "שם _משתמש" + +-#: ../ui/preferences.glade.h:6 +-msgid "Enable _spell checking" +-msgstr "הפעלת בדיקת _איות" ++#~ msgid "IMAP password" ++#~ msgstr "ססמת IMAP" + +-#: ../ui/preferences.glade.h:7 +-msgid "Notifications" +-msgstr "התרעות" ++#~ msgid "Encr_yption" ++#~ msgstr "ה_צפנה" + +-#: ../ui/preferences.glade.h:8 +-msgid "_Play notification sounds" +-msgstr "ה_שמעת צלילי התרעה" ++#~ msgid "Encrypt_ion" ++#~ msgstr "ה_צפנה" + +-#: ../ui/preferences.glade.h:9 +-msgid "Show _notifications for new mail" +-msgstr "הצגת התרעות על _קבלת דואר חדש" ++#~ msgid "STARTTLS" ++#~ msgstr "STARTTLS" + +-#: ../ui/preferences.glade.h:10 +-msgid "Always _watch for new mail" +-msgstr "תמיד ל_צפות עבור הודעות חדשות" ++#~ msgid "No authentication re_quired" ++#~ msgstr "לא נדרש אי_מות" + +-#: ../ui/preferences.glade.h:11 +-msgid "Geary will run in the background and notify of new mail" +-msgstr "‏Geary ירוץ ברקע ויודיע על הודעות חדשות" ++#~ msgid "Use IMAP cre_dentials" ++#~ msgstr "שימוש ב_אישורי IMAP" + +-#: ../ui/preferences.glade.h:12 +-msgid "Preferences" +-msgstr "העדפות" ++#~ msgid "Si_gn emails (HTML allowed):" ++#~ msgstr "_חתימת הודעות (HTML מאופשר):" + +-#: ../ui/remove_confirm.glade.h:1 +-msgid "" +-"Are you sure you want to remove this " +-"account? " +-msgstr "" +-"האם אכן ברצונך למחוק משתמש זה?" ++#~ msgid "Storage" ++#~ msgstr "אחסון" + +-#: ../ui/remove_confirm.glade.h:2 +-msgid "" +-"All email associated with this account will be removed from your computer. " +-"This will not affect email on the server." +-msgstr "" +-"כל ההודעות הקשורות במשתמש זה יוסרו מהמחשב שלך. התהליך לא ישפיע על ההודעות " +-"שבשרת." ++#~ msgid "Reading" ++#~ msgstr "קריאה" + +-#: ../ui/remove_confirm.glade.h:3 +-msgid "Nickname:" +-msgstr "כינוי:" ++#~ msgid "Enable _spell checking" ++#~ msgstr "הפעלת בדיקת _איות" + +-#: ../ui/remove_confirm.glade.h:4 +-msgid "Email address:" +-msgstr "כתובת דוא״ל:" ++#~ msgid "_Play notification sounds" ++#~ msgstr "ה_שמעת צלילי התרעה" + +-#: ../ui/upgrade_dialog.glade.h:1 +-msgid "Geary update in progress…" +-msgstr "‏Geary בתהליך שדרוג…" ++#~ msgid "Geary will run in the background and notify of new mail" ++#~ msgstr "‏Geary ירוץ ברקע ויודיע על הודעות חדשות" ++ ++#~ msgid "" ++#~ "Are you sure you want to remove " ++#~ "this account? " ++#~ msgstr "" ++#~ "האם אכן ברצונך למחוק משתמש זה?" ++ ++#~ msgid "" ++#~ "All email associated with this account will be removed from your " ++#~ "computer. This will not affect email on the server." ++#~ msgstr "" ++#~ "כל ההודעות הקשורות במשתמש זה יוסרו מהמחשב שלך. התהליך לא ישפיע על ההודעות " ++#~ "שבשרת." ++ ++#~ msgid "Nickname:" ++#~ msgstr "כינוי:" + + #~ msgid "Copyright 2011-2015 Yorba Foundation" + #~ msgstr "כל הזכויות שמורות 2011–2015 Yorba Foundation" +@@ -2283,18 +4483,6 @@ msgstr "‏Geary בתהליך שדרוג…" + #~ msgid "Application Menu" + #~ msgstr "תפריט יישום" + +-#~ msgid "No conversations selected" +-#~ msgstr "לא נבחרה אף תכתובת" +- +-#~ msgid "%u conversation selected" +-#~ msgid_plural "%u conversations selected" +-#~ msgstr[0] "נבחרה תכתובת אחת." +-#~ msgstr[1] "נבחרו %u תכתובות." +-#~ msgstr[2] "נבחרו שתי תכתובות." +- +-#~ msgid "Notify of new mail at start_up" +-#~ msgstr "התרעה על קבלת דואר חדש בעת ה_פעלה" +- + #~ msgid "_Delete" + #~ msgstr "_מחיקה" + +@@ -2316,9 +4504,6 @@ msgstr "‏Geary בתהליך שדרוג…" + #~ msgid "Password:" + #~ msgstr "ססמה:" + +-#~ msgid "Edit recipients" +-#~ msgstr "עריכת נמענים" +- + #~ msgid "C_lose" + #~ msgstr "_סגירה" + +@@ -2334,9 +4519,6 @@ msgstr "‏Geary בתהליך שדרוג…" + #~ msgid "Real name:" + #~ msgstr "שם אמתי:" + +-#~ msgid "General" +-#~ msgstr "כללי" +- + #~ msgid "Server:" + #~ msgstr "שרת:" + +@@ -2346,8 +4528,5 @@ msgstr "‏Geary בתהליך שדרוג…" + #~ msgid "SSL/TLS encryption:" + #~ msgstr "הצפנת SSL/TLS :" + +-#~ msgid "_Details" +-#~ msgstr "_פרטים" +- + #~ msgid "Archive conversation (Delete, Backspace, A)" + #~ msgstr "תיוק שיחה בארכיון (Delete, Backspace, ש)" +-- +2.29.2 + diff --git a/mail-client/geary/files/0035-meson_options.txt-Update-to-use-meson-best-practices.patch b/mail-client/geary/files/0035-meson_options.txt-Update-to-use-meson-best-practices.patch new file mode 100644 index 0000000..30a1030 --- /dev/null +++ b/mail-client/geary/files/0035-meson_options.txt-Update-to-use-meson-best-practices.patch @@ -0,0 +1,251 @@ +From aaa2934acfb53243d21a4a68ac6486951ae4b045 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 3 Oct 2020 21:06:43 +1000 +Subject: [PATCH 035/124] meson_options.txt: Update to use meson best practices + and clean up + +Convert to use meson features for features. Reorganise and rename +options for consistency. Make descriptions a bit less redundant. +--- + desktop/meson.build | 2 +- + meson.build | 27 +++++++--------- + meson_options.txt | 71 ++++++++++++++++++++++++------------------ + src/engine/meson.build | 2 +- + src/meson.build | 4 +-- + test/meson.build | 2 +- + 6 files changed, 57 insertions(+), 51 deletions(-) + +diff --git a/desktop/meson.build b/desktop/meson.build +index f0c8a660..712db358 100644 +--- a/desktop/meson.build ++++ b/desktop/meson.build +@@ -77,7 +77,7 @@ endif + # Contractor file (Elementary OS) + # + +-if install_contractor_file ++if get_option('contractor').enabled() + # Call msgfmt manually since gettext won't otherwise translate the + # Description field. See merge req !50. + msgfmt = find_program('msgfmt') +diff --git a/meson.build b/meson.build +index 240eacaa..82f0439d 100644 +--- a/meson.build ++++ b/meson.build +@@ -4,13 +4,6 @@ project('geary', [ 'vala', 'c' ], + meson_version: '>= 0.50', + ) + +-# Build-time configuration options +-enable_valadoc = get_option('valadoc') +-install_contractor_file = get_option('contractor') +-iso_3166_xml = get_option('iso_3166_xml') +-iso_639_xml = get_option('iso_639_xml') +-reference_tracking = get_option('ref_tracking') +- + # Build type + if get_option('profile') == 'development' + profile = '.Devel' +@@ -92,13 +85,13 @@ libpeas_gtk = dependency('libpeas-gtk-1.0', version: '>= 1.24.0') + libsecret = dependency('libsecret-1', version: '>= 0.11') + libsoup = dependency('libsoup-2.4', version: '>= 2.48') + libunwind_dep = dependency( +- 'libunwind', version: '>= 1.1', required: not get_option('libunwind_optional') ++ 'libunwind', version: '>= 1.1', required: get_option('libunwind') + ) + libunwind_generic_dep = dependency( +- 'libunwind-generic', version: '>= 1.1', required: not get_option('libunwind_optional') ++ 'libunwind-generic', version: '>= 1.1', required: get_option('libunwind') + ) + libxml = dependency('libxml-2.0', version: '>= 2.7.8') +-libytnef = dependency('libytnef', version: '>= 1.9.3', required: get_option('tnef-support')) ++libytnef = dependency('libytnef', version: '>= 1.9.3', required: get_option('tnef')) + posix = valac.find_library('posix') + webkit2gtk_web_extension = dependency('webkit2gtk-web-extension-4.0', version: '>=' + target_webkit) + +@@ -153,27 +146,31 @@ endif + # Build glue + # + ++valadoc = find_program('valadoc', required: get_option('valadoc')) ++ + vala_unit_proj = subproject( + 'vala-unit', + default_options: [ + 'install=false', +- 'valadoc=@0@'.format(enable_valadoc) ++ 'valadoc=@0@'.format(valadoc.found()) + ] + ) + vala_unit_dep = vala_unit_proj.get_variable('vala_unit_dep') + +-if enable_valadoc +- valadoc = find_program('valadoc') +-endif +- + # Language detection ++ + iso_codes_dir = iso_codes.get_pkgconfig_variable('prefix')/'share'/'xml'/'iso-codes' ++ ++iso_639_xml = get_option('iso_639_xml') + if iso_639_xml == '' + iso_639_xml = iso_codes_dir / 'iso_639.xml' + endif ++ ++iso_3166_xml = get_option('iso_3166_xml') + if iso_3166_xml == '' + iso_3166_xml = iso_codes_dir / 'iso_3166.xml' + endif ++ + files(iso_639_xml, iso_3166_xml) # Check to make sure these exist + + # Post-install scripts +diff --git a/meson_options.txt b/meson_options.txt +index a18438d4..968c2541 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,11 +1,18 @@ + # + # General build options + # ++ + option( +- 'contractor', +- type: 'boolean', +- value: false, +- description: 'Whether to install the contractor file (Elementary OS-specific).' ++ 'profile', ++ type: 'combo', ++ value: 'default', ++ choices: ['default','development','beta'], ++ description: 'Specifies the application type to be built' ++) ++option( ++ 'revno', ++ type: 'string', ++ description: 'Custom revision string (default extracted from "git describe")' + ) + option( + 'iso_639_xml', +@@ -19,41 +26,43 @@ option( + value: '', + description: 'Full path to the ISO 3166 XML file.' + ) +-option( +- 'libunwind_optional', +- type: 'boolean', +- value: false, +- description: 'Determines if libunwind is required.' +-) +-option( +- 'tnef-support', +- type: 'boolean', +- value: true, +- description: 'Whether to support TNEF attachments (requires libytnef).' +-) + option( + 'valadoc', +- type: 'boolean', +- value: false, +- description: 'Whether to build the documentation (requires valadoc).' ++ type: 'feature', ++ value: 'auto', ++ description: 'Build API documentation' + ) + ++# + # Development options ++# ++ + option( +- 'profile', +- type: 'combo', +- value: 'default', +- choices: ['default','development','beta'], +- description: 'Specifies the application type to be built' ++ 'ref_tracking', ++ type: 'feature', ++ value: 'disabled', ++ description: 'Enable Geary.BaseObject reference tracking' ++) ++ ++# ++# Optional features ++# ++ ++option( ++ 'contractor', ++ type: 'feature', ++ value: 'disabled', ++ description: 'Install an Elementary OS a contractor file' + ) + option( +- 'ref_tracking', +- type: 'boolean', +- value: false, +- description: 'Whether to use explicit reference tracking.' ++ 'libunwind', ++ type: 'feature', ++ value: 'enabled', ++ description: 'Use libunwind for back traces in problem reports.' + ) + option( +- 'revno', +- type: 'string', +- description: 'Custom revision string (default extracted from "git describe")' ++ 'tnef', ++ type: 'feature', ++ value: 'enabled', ++ description: 'Support Microsoft-proprietary TNEF attachments.' + ) +diff --git a/src/engine/meson.build b/src/engine/meson.build +index 0efd773e..1133f7b8 100644 +--- a/src/engine/meson.build ++++ b/src/engine/meson.build +@@ -349,7 +349,7 @@ if libunwind_dep.found() + ] + endif + +-if get_option('tnef-support') ++if libytnef.found() + engine_dependencies += libytnef + engine_vala_args += [ + '-D', 'WITH_TNEF_SUPPORT' +diff --git a/src/meson.build b/src/meson.build +index 225777e8..14f08c18 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -33,7 +33,7 @@ endif + + # Symbols for valac's preprocessor must be defined as compiler args, + # not in the code or in config.h +-if reference_tracking ++if get_option('ref_tracking').enabled() + geary_vala_args += [ '--define=REF_TRACKING' ] + endif + +@@ -157,7 +157,7 @@ foreach dir : valadoc_vapi_dirs + valadoc_vapidir_args += '--vapidir=@0@'.format(dir) + endforeach + +-if enable_valadoc ++if valadoc.found() + docs = custom_target('valadoc', + build_by_default: true, + depends: [client_lib, engine_lib], +diff --git a/test/meson.build b/test/meson.build +index fe3040dd..a32b2a82 100644 +--- a/test/meson.build ++++ b/test/meson.build +@@ -118,7 +118,7 @@ test_engine_dependencies += engine_dependencies + + test_engine_vala_args = geary_vala_args + +-if get_option('tnef-support') ++if libytnef.found() + test_engine_dependencies += libytnef + test_engine_vala_args += [ + '-D', 'WITH_TNEF_SUPPORT' +-- +2.29.2 + diff --git a/mail-client/geary/files/0036-build-Update-how-build-profiles-are-handled.patch b/mail-client/geary/files/0036-build-Update-how-build-profiles-are-handled.patch new file mode 100644 index 0000000..e4fa8a8 --- /dev/null +++ b/mail-client/geary/files/0036-build-Update-how-build-profiles-are-handled.patch @@ -0,0 +1,143 @@ +From 23bd2507a7512664802db41b88ad375298d6b7d0 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 3 Oct 2020 21:59:01 +1000 +Subject: [PATCH 036/124] build: Update how build profiles are handled + +Default to development build profile if a `.git` directory exists, else +error out of build configuration. + +This make `auto` the default build profile and if set and a `.git` +directory is present default to `development`, else raise an error. +Add some docs to INSTALL describing build profiles and update how they +are used in the source to match. +--- + INSTALL | 26 +++++++++++++++-- + meson.build | 28 +++++++++++++------ + meson_options.txt | 8 ++++-- + .../application/application-main-window.vala | 2 +- + 4 files changed, 50 insertions(+), 14 deletions(-) + +diff --git a/INSTALL b/INSTALL +index 6572303f..e445a409 100644 +--- a/INSTALL ++++ b/INSTALL +@@ -15,6 +15,28 @@ repository: + A convenience Makefile for development only is also provided. To use + it, simply invoke make from the top-level directory. + ++Build profiles ++-------------- ++ ++Geary can be built using a number of different build profiles, which ++determine things like the application id, the location of stored data, ++the name of the application and other visual elements that distinguish ++release builds from other types. ++ ++These can be set at build configuration time using the Meson `setup` ++and `configure` commands, using the standard `-Dprofile=…` option. See ++the `profile` option in `meson_options.txt` for the current list of ++supported types. ++ ++Maintainers must select the `release` build profile when packaging ++non-test release builds, otherwise Geary will using branding and data ++locations intended for development only. ++ ++Note that setting the profile does not alter such things as cmopiler ++options, use the standard Meson `--buildtype` argument for that. ++ ++If built from ++ + Dependencies + ------------ + +@@ -94,5 +116,5 @@ the initial configuration step: + meson --prefix=/usr -C build + + --- +-Copyright 2016 Software Freedom Conservancy Inc. +-Copyright 2018 Michael Gratton ++Copyright © 2016 Software Freedom Conservancy Inc. ++Copyright © 2018-2020 Michael Gratton +diff --git a/meson.build b/meson.build +index 82f0439d..1dc9e3aa 100644 +--- a/meson.build ++++ b/meson.build +@@ -4,16 +4,26 @@ project('geary', [ 'vala', 'c' ], + meson_version: '>= 0.50', + ) + +-# Build type +-if get_option('profile') == 'development' +- profile = '.Devel' ++# Determine the type of build ++profile = get_option('profile') ++appid_suffix = '' ++name_suffix = '' ++if profile == 'auto' ++ if run_command('[', '-d', '.git', ']').returncode() == 0 ++ profile = 'development' ++ else ++ error('No build profile specified, see INSTALL') ++ endif ++endif ++ ++if profile == 'development' ++ appid_suffix = '.Devel' + name_suffix = ' (Development)' +-elif get_option('profile') == 'beta' +- profile = '.Beta' ++elif profile == 'beta' ++ appid_suffix = '.Beta' + name_suffix = ' (Beta)' +-else +- profile = '' +- name_suffix = '' ++elif profile != 'release' ++ error('Unknown build profile specified, see INSTALL') + endif + + # Configurable install dirs +@@ -120,7 +130,7 @@ libmessagingmenu_dep = dependency('messaging-menu', version: '>= 12.10', require + # + + # Build variables +-geary_id = 'org.gnome.Geary@0@'.format(profile) ++geary_id = 'org.gnome.Geary@0@'.format(appid_suffix) + geary_version = meson.project_version() + revno = get_option('revno') + if revno == '' +diff --git a/meson_options.txt b/meson_options.txt +index 968c2541..fcb8b9bf 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -5,8 +5,12 @@ + option( + 'profile', + type: 'combo', +- value: 'default', +- choices: ['default','development','beta'], ++ choices: [ ++ 'auto', ++ 'development', ++ 'beta', ++ 'release' ++ ], + description: 'Specifies the application type to be built' + ) + option( +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 47749019..aba5fa26 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -487,7 +487,7 @@ public class Application.MainWindow : + load_config(application.config); + restore_saved_window_state(); + +- if (_PROFILE != "") { ++ if (_PROFILE != "release") { + this.get_style_context().add_class("devel"); + } + +-- +2.29.2 + diff --git a/mail-client/geary/files/0037-Application.Client-Sort-external-const-alphabeticall.patch b/mail-client/geary/files/0037-Application.Client-Sort-external-const-alphabeticall.patch new file mode 100644 index 0000000..6692f36 --- /dev/null +++ b/mail-client/geary/files/0037-Application.Client-Sort-external-const-alphabeticall.patch @@ -0,0 +1,43 @@ +From 456b6cd55ab4feb5c4c079df2b6aacbcfb69f246 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 3 Oct 2020 22:04:12 +1000 +Subject: [PATCH 037/124] Application.Client: Sort external const + alphabetically + +--- + src/client/application/application-client.vala | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala +index 2bf4e094..7a450fa2 100644 +--- a/src/client/application/application-client.vala ++++ b/src/client/application/application-client.vala +@@ -7,18 +7,18 @@ + */ + + // Defined by CMake build script. +-extern const string _INSTALL_PREFIX; +-extern const string _GSETTINGS_DIR; +-extern const string _WEB_EXTENSIONS_DIR; +-extern const string _PLUGINS_DIR; +-extern const string _SOURCE_ROOT_DIR; +-extern const string _BUILD_ROOT_DIR; + extern const string GETTEXT_PACKAGE; + extern const string _APP_ID; ++extern const string _BUILD_ROOT_DIR; ++extern const string _GSETTINGS_DIR; ++extern const string _INSTALL_PREFIX; + extern const string _NAME_SUFFIX; ++extern const string _PLUGINS_DIR; + extern const string _PROFILE; +-extern const string _VERSION; + extern const string _REVNO; ++extern const string _SOURCE_ROOT_DIR; ++extern const string _VERSION; ++extern const string _WEB_EXTENSIONS_DIR; + + + /** +-- +2.29.2 + diff --git a/mail-client/geary/files/0038-Rename-INSTALLING-to-BUILDING.md.patch b/mail-client/geary/files/0038-Rename-INSTALLING-to-BUILDING.md.patch new file mode 100644 index 0000000..3646d60 --- /dev/null +++ b/mail-client/geary/files/0038-Rename-INSTALLING-to-BUILDING.md.patch @@ -0,0 +1,317 @@ +From c240884f521da7356d9c5792a7568abc2dba5b38 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 3 Oct 2020 23:31:35 +1000 +Subject: [PATCH 038/124] Rename INSTALLING to BUILDING.md + +Renamed since most people want to know how to build Geary when they +get its source, not install it. Use MD extension to get formatting in +gitlab. +--- + BUILDING.md | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + INSTALL | 120 --------------------------------------------------- + README.md | 9 ++-- + meson.build | 4 +- + 4 files changed, 129 insertions(+), 126 deletions(-) + create mode 100644 BUILDING.md + delete mode 100644 INSTALL + +diff --git a/BUILDING.md b/BUILDING.md +new file mode 100644 +index 00000000..c00b1901 +--- /dev/null ++++ b/BUILDING.md +@@ -0,0 +1,122 @@ ++Building and running Geary ++========================== ++ ++Geary uses the [Meson](http://mesonbuild.com) and ++[Ninja](https://ninja-build.org) build systems. You will need these ++and a number of other development libraries installed to build ++Geary. See the Dependencies section below for a list of packages to ++install. ++ ++Building, running, tests and documentation ++------------------------------------------ ++ ++To build Geary, run the following commands from the top-level ++directory of the source code repository: ++ ++``` ++meson build ++ninja -C build ++``` ++ ++Once built, Geary can be run directly from the build directory without ++being installed: ++ ++``` ++./build/src/geary ++``` ++ ++Note that certain desktop integration (such as being listed in an ++application menu) requires full installation to work correctly. ++ ++To run the unit tests, use the Meson `test` command: ++ ++``` ++meson test -C build ++``` ++ ++API documentation will be built if `valadoc` is installed. ++ ++Consult the Meson documentation for information about configuring the ++build, installing, and so on. ++ ++Build profiles ++-------------- ++ ++Geary can be built using a number of different build profiles, which ++determine things like the application id, the location of stored data, ++the name of the application, icon and other visual elements. ++ ++These can be set at build configuration time using the Meson `setup` ++and `configure` commands, using the standard `-Dprofile=…` option. See ++the `profile` option in `meson_options.txt` for the current list of ++supported types. ++ ++Maintainers must use the `release` build profile when packaging Geary, ++otherwise when run it will use branding and data locations intended ++for development only. ++ ++Note that setting the profile does not alter such things as compiler ++options, use the standard Meson `--buildtype` argument for that. ++ ++Consult the Meson documentation for more information about configuring ++options. ++ ++Dependencies ++------------ ++ ++Building Geary requires the following major libraries and tools: ++ ++ * GTK+ 3 ++ * WebKitGTK+ 2 ++ * SQLite 3 ++ * Vala ++ ++See the `meson.build` file in the top-level directory for the complete ++list of required dependencies and minimum versions. ++ ++Geary also requires SQLite to be built with the compiler flag ++`-DSQLITE_ENABLE_FTS3`. ++ ++All required libraries and tools are available from major Linux ++distribution's package repositories: ++ ++Installing dependencies on Fedora ++--------------------------------- ++ ++Install them by running this command: ++ ++``` ++sudo dnf install meson vala desktop-file-utils enchant2-devel \ ++ folks-devel gcr-devel glib2-devel gmime30-devel \ ++ gnome-online-accounts-devel gspell-devel gsound-devel \ ++ gtk3-devel iso-codes-devel itstool json-glib-devel \ ++ libappstream-glib-devel libgee-devel libhandy1-devel \ ++ libpeas-devel libsecret-devel libunwind-devel libxml2-devel \ ++ libytnef-devel sqlite-devel webkitgtk4-devel ++``` ++ ++Installing dependencies on Ubuntu/Debian ++---------------------------------------- ++ ++Install them by running this command: ++ ++``` ++sudo apt-get install meson build-essential valac \ ++ desktop-file-utils iso-codes gettext itstool \ ++ libappstream-glib-dev libenchant-2-dev libfolks-dev \ ++ libgcr-3-dev libgee-0.8-dev libglib2.0-dev libgmime-3.0-dev \ ++ libgoa-1.0-dev libgspell-1-dev libgsound-dev libgtk-3-dev \ ++ libjson-glib-dev libhandy-1-dev libpeas-dev libsecret-1-dev \ ++ libsqlite3-dev libunwind-dev libwebkit2gtk-4.0-dev libxml2-dev \ ++ libytnef0-dev ++``` ++ ++And for Ubuntu Messaging Menu integration: ++ ++``` ++sudo apt-get install libmessaging-menu-dev ++``` ++ ++--- ++Copyright © 2016 Software Freedom Conservancy Inc. ++Copyright © 2018-2020 Michael Gratton +diff --git a/INSTALL b/INSTALL +deleted file mode 100644 +index e445a409..00000000 +--- a/INSTALL ++++ /dev/null +@@ -1,120 +0,0 @@ +-Building & Installing Geary +-=========================== +- +-Building +--------- +- +-Geary uses the Meson and Ninja +- build systems. To build Geary, run the +-following commands from the top-level directory of the source code +-repository: +- +- meson build +- ninja -C build +- +-A convenience Makefile for development only is also provided. To use +-it, simply invoke make from the top-level directory. +- +-Build profiles +--------------- +- +-Geary can be built using a number of different build profiles, which +-determine things like the application id, the location of stored data, +-the name of the application and other visual elements that distinguish +-release builds from other types. +- +-These can be set at build configuration time using the Meson `setup` +-and `configure` commands, using the standard `-Dprofile=…` option. See +-the `profile` option in `meson_options.txt` for the current list of +-supported types. +- +-Maintainers must select the `release` build profile when packaging +-non-test release builds, otherwise Geary will using branding and data +-locations intended for development only. +- +-Note that setting the profile does not alter such things as cmopiler +-options, use the standard Meson `--buildtype` argument for that. +- +-If built from +- +-Dependencies +------------- +- +-Building Geary requires the following major libraries and tools: +- +- * GTK+ 3 +- * WebKitGTK+ 2 +- * SQLite 3 +- * Vala +- +-See the `meson.build` file in the top-level directory for the complete +-list of required dependencies and minimum versions. +- +-Geary also requires SQLite to be built with the compiler flag +-`-DSQLITE_ENABLE_FTS3`. +- +-All required libraries and tools are available from major Linux +-distribution's package repositories: +- +-Installing dependencies on Fedora +---------------------------------- +- +-Install them by running this command: +- +- sudo dnf install meson vala desktop-file-utils enchant2-devel \ +- folks-devel gcr-devel glib2-devel gmime30-devel \ +- gnome-online-accounts-devel gspell-devel gsound-devel \ +- gtk3-devel iso-codes-devel itstool json-glib-devel \ +- libappstream-glib-devel libgee-devel libhandy1-devel \ +- libpeas-devel libsecret-devel libunwind-devel libxml2-devel \ +- libytnef-devel sqlite-devel webkitgtk4-devel +- +-Installing dependencies on Ubuntu/Debian +----------------------------------------- +- +-Install them by running this command: +- +- sudo apt-get install meson build-essential valac \ +- desktop-file-utils iso-codes gettext itstool \ +- libappstream-glib-dev libenchant-2-dev libfolks-dev \ +- libgcr-3-dev libgee-0.8-dev libglib2.0-dev libgmime-3.0-dev \ +- libgoa-1.0-dev libgspell-1-dev libgsound-dev libgtk-3-dev \ +- libjson-glib-dev libhandy-1-dev libpeas-dev libsecret-1-dev \ +- libsqlite3-dev libunwind-dev libwebkit2gtk-4.0-dev libxml2-dev \ +- libytnef0-dev +- +-And for Ubuntu Messaging Menu integration: +- +- sudo apt-get install libmessaging-menu-dev +- +-Running +-------- +- +-If you wish to try Geary before installing it, you may execute it directly +-from its build directory: +- +- ./build/src/geary +- +-Note that certain desktop integration (such as being listed in an +-application menu) requires full installation. +- +-Installation +------------- +- +-After Geary has built, install it by invoking the install target: +- +- ninja -C build install +- +-After installation, it can be uninstalled in the same way: +- +- ninja -C build uninstall +- +-By default, Geary will install under /usr/local. To install to a +-different directory, set pass the --prefix to meson when performing +-the initial configuration step: +- +- meson --prefix=/usr -C build +- +---- +-Copyright © 2016 Software Freedom Conservancy Inc. +-Copyright © 2018-2020 Michael Gratton +diff --git a/README.md b/README.md +index d99cd8aa..73c4e595 100644 +--- a/README.md ++++ b/README.md +@@ -17,11 +17,12 @@ for more information. + + ![Geary displaying a conversation](https://wiki.gnome.org/Apps/Geary?action=AttachFile&do=get&target=geary-3-32-main-window.png) + +-Installation & Licensing +------------------------- ++Building & Licensing ++-------------------- + +-Please consult the [INSTALL](./INSTALL) and [COPYING](./COPYING) files +-for more information. ++Please consult the [BUILDING.md](./BUILDING.md) and ++[COPYING](./COPYING) files for more information about building Geary ++and the licence granted by its copyright holders for redistribution. + + Getting in Touch + ---------------- +diff --git a/meson.build b/meson.build +index 1dc9e3aa..54bccfec 100644 +--- a/meson.build ++++ b/meson.build +@@ -12,7 +12,7 @@ if profile == 'auto' + if run_command('[', '-d', '.git', ']').returncode() == 0 + profile = 'development' + else +- error('No build profile specified, see INSTALL') ++ error('No build profile specified, see BUILDING.md') + endif + endif + +@@ -23,7 +23,7 @@ elif profile == 'beta' + appid_suffix = '.Beta' + name_suffix = ' (Beta)' + elif profile != 'release' +- error('Unknown build profile specified, see INSTALL') ++ error('Unknown build profile specified, see BUILDING.md') + endif + + # Configurable install dirs +-- +2.29.2 + diff --git a/mail-client/geary/files/0039-README.md-Minor-improvements.patch b/mail-client/geary/files/0039-README.md-Minor-improvements.patch new file mode 100644 index 0000000..249a206 --- /dev/null +++ b/mail-client/geary/files/0039-README.md-Minor-improvements.patch @@ -0,0 +1,43 @@ +From 436c22a4ada3538f7a624c654557471ef0099530 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 3 Oct 2020 23:33:41 +1000 +Subject: [PATCH 039/124] README.md: Minor improvements + +--- + README.md | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/README.md b/README.md +index 73c4e595..6ffcb86b 100644 +--- a/README.md ++++ b/README.md +@@ -6,7 +6,7 @@ Geary: Send and receive email + + Geary is an email application built around conversations, for the + GNOME 3 desktop. It allows you to read, find and send email with a +-straightforward, modern interface. ++straight-forward, modern interface. + + Visit https://wiki.gnome.org/Apps/Geary for more information. + +@@ -31,7 +31,8 @@ Getting in Touch + * Support and discussion: See the `geary` tag on [GNOME Discourse](https://discourse.gnome.org/tags/c/applications/7/geary) + * Matrix channel: [#geary:gnome.org](https://gnome.element.io/#/room/#geary:gnome.org) + +-**Code Of Conduct** ++Code Of Conduct ++--------------- + + We follow the [Contributor Covenant](./code-of-conduct.md) as our + Code of Conduct. All communications in project spaces are expected to +@@ -48,5 +49,5 @@ Want to help improve Geary? Here are some ways to contribute: + * Donate: https://wiki.gnome.org/Apps/Geary/Donate + + --- +-Copyright 2016 Software Freedom Conservancy Inc. +-Copyright 2017-2020 Michael Gratton ++Copyright © 2016 Software Freedom Conservancy Inc. ++Copyright © 2017-2020 Michael Gratton +-- +2.29.2 + diff --git a/mail-client/geary/files/0041-Update-Indonesian-translation.patch b/mail-client/geary/files/0041-Update-Indonesian-translation.patch new file mode 100644 index 0000000..7e2eee9 --- /dev/null +++ b/mail-client/geary/files/0041-Update-Indonesian-translation.patch @@ -0,0 +1,582 @@ +From d2a0694866dffb73c2f42471577fb96d05e69489 Mon Sep 17 00:00:00 2001 +From: Kukuh Syafaat +Date: Sun, 4 Oct 2020 08:34:11 +0000 +Subject: [PATCH 041/124] Update Indonesian translation + +--- + po/id.po | 198 ++++++++++++++++++++++++++++--------------------------- + 1 file changed, 102 insertions(+), 96 deletions(-) + +diff --git a/po/id.po b/po/id.po +index d01d1604..0e195fee 100644 +--- a/po/id.po ++++ b/po/id.po +@@ -11,8 +11,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary mainline\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-08-18 09:04+0000\n" +-"PO-Revision-Date: 2020-08-21 23:43+0700\n" ++"POT-Creation-Date: 2020-08-27 12:37+0000\n" ++"PO-Revision-Date: 2020-08-28 22:22+0700\n" + "Last-Translator: Kukuh Syafaat \n" + "Language-Team: Indonesian\n" + "Language: id\n" +@@ -48,7 +48,7 @@ msgstr "Surel" + #: desktop/geary-autostart.desktop.in.in:5 + #: desktop/org.gnome.Geary.appdata.xml.in.in:15 + #: desktop/org.gnome.Geary.desktop.in.in:5 +-#: src/client/application/application-client.vala:32 ++#: src/client/application/application-client.vala:33 + msgid "Send and receive email" + msgstr "Kirim dan terima surel" + +@@ -813,143 +813,143 @@ msgstr "Berkas telah ada di \"%s\". Kalau ditimpa isi sebelumnya hilang." + msgid "_Replace" + msgstr "Timp_a" + +-#: src/client/application/application-client.vala:33 ++#: src/client/application/application-client.vala:34 + msgid "Copyright 2016 Software Freedom Conservancy Inc." + msgstr "Hak Cipta 2016 Software Freedom Conservancy Inc." + +-#: src/client/application/application-client.vala:34 ++#: src/client/application/application-client.vala:35 + msgid "Copyright 2016-2020 Geary Development Team." + msgstr "Hak Cipta 2016-2020 Tim Pengembang Geary." + +-#: src/client/application/application-client.vala:36 ++#: src/client/application/application-client.vala:37 + msgid "Visit the Geary web site" + msgstr "Kunjungi situs web Geary" + + #. / Command line option +-#: src/client/application/application-client.vala:96 ++#: src/client/application/application-client.vala:97 + msgid "Print debug logging" + msgstr "Cetak log awakutu" + + #. / Command line option +-#: src/client/application/application-client.vala:99 ++#: src/client/application/application-client.vala:100 + msgid "Start with the main window hidden (deprecated)" + msgstr "Mulai Geary dengan jendela utama tersembunyi (usang)" + + #. / Command line option +-#: src/client/application/application-client.vala:102 ++#: src/client/application/application-client.vala:103 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "Fungsikan WebKitGTK Inspector dalam tilikan web" + + #. / Command line option +-#: src/client/application/application-client.vala:105 ++#: src/client/application/application-client.vala:106 + msgid "Log conversation monitoring" + msgstr "Catat pemantauan percakapan" + + #. / Command line option +-#: src/client/application/application-client.vala:108 ++#: src/client/application/application-client.vala:109 + msgid "Log IMAP network deserialization" + msgstr "Log deserialisasi jaringan IMAP" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/application-client.vala:112 ++#: src/client/application/application-client.vala:113 + msgid "Log folder normalization" + msgstr "Catat normalisasi map" + + #. / Command line option +-#: src/client/application/application-client.vala:115 ++#: src/client/application/application-client.vala:116 + msgid "Log IMAP network activity" + msgstr "Log aktivitas jaringan IMAP" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could + #. / also be called the IMAP events queue. +-#: src/client/application/application-client.vala:120 ++#: src/client/application/application-client.vala:121 + msgid "Log IMAP replay queue" + msgstr "Catat antrian putar ulang IMAP" + + #. / Command line option +-#: src/client/application/application-client.vala:123 ++#: src/client/application/application-client.vala:124 + msgid "Log SMTP network activity" + msgstr "Log aktivitas jaringan SMTP" + + #. / Command line option +-#: src/client/application/application-client.vala:126 ++#: src/client/application/application-client.vala:127 + msgid "Log database queries (generates lots of messages)" + msgstr "Catat kuiri basis data (menimbulkan banyak pesan)" + + #. / Command line option +-#: src/client/application/application-client.vala:129 ++#: src/client/application/application-client.vala:130 + msgid "Perform a graceful quit" + msgstr "Keluar secara anggun" + +-#: src/client/application/application-client.vala:131 ++#: src/client/application/application-client.vala:132 + msgid "Open a new window" + msgstr "Buka suatu jendela baru" + + #. / Command line option +-#: src/client/application/application-client.vala:134 ++#: src/client/application/application-client.vala:135 + msgid "Revoke all pinned TLS server certificates" + msgstr "Cabut semua sertifikat peladen TLS yang di-pin" + + #. / Command line option +-#: src/client/application/application-client.vala:137 ++#: src/client/application/application-client.vala:138 + msgid "Display program version" + msgstr "Tampilkan versi program" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:261 ++#: src/client/application/application-client.vala:262 + msgid "Geary version" + msgstr "Versi Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:263 ++#: src/client/application/application-client.vala:264 + msgid "Geary revision" + msgstr "Revisi Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:265 ++#: src/client/application/application-client.vala:266 + msgid "GTK version" + msgstr "Versi GTK" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:272 ++#: src/client/application/application-client.vala:273 + msgid "GLib version" + msgstr "Versi GLib" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:279 ++#: src/client/application/application-client.vala:280 + msgid "WebKitGTK version" + msgstr "Versi WebKitGTK" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:286 ++#: src/client/application/application-client.vala:287 + msgid "Desktop environment" + msgstr "Lingkungan desktop" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:288 ++#: src/client/application/application-client.vala:289 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Tak dikenal" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:318 ++#: src/client/application/application-client.vala:293 + msgid "Distribution name" + msgstr "Nama distribusi" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:323 ++#: src/client/application/application-client.vala:298 + msgid "Distribution release" + msgstr "Rilis distribusi" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:331 ++#: src/client/application/application-client.vala:303 + msgid "Installation prefix" + msgstr "Prefiks instalasi" + +-#: src/client/application/application-client.vala:584 ++#: src/client/application/application-client.vala:558 + #, c-format + msgid "About %s" + msgstr "Tentang %s" +@@ -957,7 +957,7 @@ msgstr "Tentang %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:588 ++#: src/client/application/application-client.vala:562 + msgid "translator-credits" + msgstr "" + "Andika Triwidada , 2012, 2013, 2016, 2017, 2019, 2020\n" +@@ -966,13 +966,13 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1066 ++#: src/client/application/application-client.vala:1046 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "Opsi '--hidden' usang dan akan dihapus di masa mendatang." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1099 ++#: src/client/application/application-client.vala:1079 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Argumen program tidak dikenal: \"%s\"" +@@ -1079,12 +1079,12 @@ msgid_plural "Conversations un-labelled as %s" + msgstr[0] "Label %s dihapus dari percakapan" + msgstr[1] "Label %s dihapus dari percakapan" + +-#: src/client/application/application-controller.vala:1297 ++#: src/client/application/application-controller.vala:1320 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Tak bisa membuka basis data bagi %s" + +-#: src/client/application/application-controller.vala:1298 ++#: src/client/application/application-controller.vala:1321 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1108,20 +1108,20 @@ msgstr "" + "Membangun ulang basis data akan menghancurkan semua surel lokal dan " + "lampirannya. Surat pada peladen Anda tak akan terpengaruh." + +-#: src/client/application/application-controller.vala:1300 ++#: src/client/application/application-controller.vala:1323 + msgid "_Rebuild" + msgstr "_Bangun Ulang" + +-#: src/client/application/application-controller.vala:1300 ++#: src/client/application/application-controller.vala:1323 + msgid "E_xit" + msgstr "_Keluar" + +-#: src/client/application/application-controller.vala:1310 ++#: src/client/application/application-controller.vala:1333 + #, c-format + msgid "Unable to rebuild database for “%s”" + msgstr "Tak bisa membangun ulang basis data bagi \"%s\"" + +-#: src/client/application/application-controller.vala:1311 ++#: src/client/application/application-controller.vala:1334 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1134,34 +1134,34 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1478 ++#: src/client/application/application-controller.vala:1501 + #, c-format + msgid "Email sent to %s" + msgstr "Surel dikirim ke %s" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2509 ++#: src/client/application/application-controller.vala:2491 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "Surel ke %s diantrikan untuk pengiriman" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2573 ++#: src/client/application/application-controller.vala:2555 + #, c-format + msgid "Email to %s saved" + msgstr "Surel ke %s disimpan" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2588 +-#: src/client/application/application-controller.vala:2646 ++#: src/client/application/application-controller.vala:2570 ++#: src/client/application/application-controller.vala:2628 + msgid "Composer could not be restored" + msgstr "Penyusun tidak dapat dipulihkan" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2631 ++#: src/client/application/application-controller.vala:2613 + #, c-format + msgid "Email to %s discarded" + msgstr "Surel ke %s dibuang" +@@ -1304,7 +1304,7 @@ msgstr "Pemeriksa" + #. / Translators: Title for Inspector logs pane + #. / Translators: Title for problem report dialog logs pane + #: src/client/components/components-inspector.vala:93 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 + msgid "Logs" + msgstr "Log" + +@@ -1312,21 +1312,21 @@ msgstr "Log" + #. / Translators: Title for problem report system information + #. / pane + #: src/client/components/components-inspector.vala:97 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 + msgid "System" + msgstr "Sistem" + + #. Button label for saving problem report information + #: src/client/components/components-inspector.vala:226 + #: src/client/components/components-inspector.vala:229 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/problem-details-dialog.ui:42 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 ++#: ui/problem-details-dialog.ui:47 + msgid "Save As" + msgstr "Simpan sebagai" + + #: src/client/components/components-inspector.vala:230 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 + #: ui/accounts_editor_servers_pane.ui:17 + msgid "Cancel" + msgstr "Batal" +@@ -1375,7 +1375,7 @@ msgid "Preferences" + msgstr "Preferensi" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:252 ++#: src/client/components/components-preferences-window.vala:250 + msgid "Plugins" + msgstr "Pengaya" + +@@ -1448,6 +1448,22 @@ msgstr "Lihat rincian teknis tentang kesalahan tersebut" + msgid "_Retry" + msgstr "_Ulangi" + ++#: src/client/components/components-reflow-box.c:454 ++msgid "Spacing" ++msgstr "Jarak" ++ ++#: src/client/components/components-reflow-box.c:455 ++msgid "Spacing between children" ++msgstr "Jarak antara anak" ++ ++#: src/client/components/components-reflow-box.c:470 ++msgid "Row spacing" ++msgstr "Jarak antar baris" ++ ++#: src/client/components/components-reflow-box.c:471 ++msgid "Spacing between rows of children" ++msgstr "Jarak antar baris anak " ++ + #. / Translators: Search entry placeholder text + #: src/client/components/components-search-bar.vala:12 + #: src/client/folder-list/folder-list-search-branch.vala:53 +@@ -1551,7 +1567,7 @@ msgid "_OK" + msgstr "_OK" + + #: src/client/components/stock.vala:19 +-#: src/client/plugin/mail-merge/mail-merge.vala:388 ++#: src/client/plugin/mail-merge/mail-merge.vala:392 + #: ui/password-dialog.glade:196 + msgid "_Cancel" + msgstr "Ba_tal" +@@ -1577,7 +1593,7 @@ msgid "_Help" + msgstr "_Bantuan" + + #: src/client/components/stock.vala:26 +-#: src/client/plugin/mail-merge/mail-merge.vala:387 ++#: src/client/plugin/mail-merge/mail-merge.vala:391 + #: ui/components-attachment-pane-menus.ui:7 + msgid "_Open" + msgstr "_Buka" +@@ -2038,8 +2054,8 @@ msgstr "Terjadi galat saat memroses sertifikat peladen" + #. / Translators: Title for problem report dialog error + #. / information pane + #. Dialog title for displaying technical details of a problem. Same as the button that invokes it. +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:100 +-#: ui/problem-details-dialog.ui:12 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:99 ++#: ui/problem-details-dialog.ui:17 + msgid "Details" + msgstr "Detail" + +@@ -2091,12 +2107,6 @@ msgid_plural "%d results" + msgstr[0] "%d hasil" + msgstr[1] "%d hasil" + +-#. Translators: This is an internal plugin so this name does not need +-#. to be tanslated +-#: src/client/plugin/desktop-notifications/desktop-notifications.plugin.desktop.in:6 +-msgid "Desktop Notifications" +-msgstr "Pemberitahuan Desktop" +- + #. / Notification body when a message as been received + #. / and other unread messages have not been + #. / seen. First string substitution is the message +@@ -2194,17 +2204,11 @@ msgstr "Kirim" + #. Translators: Info bar button label for editing a draft + #. email + #: src/client/plugin/email-templates/email-templates.vala:305 +-#: src/client/plugin/mail-merge/mail-merge.vala:332 ++#: src/client/plugin/mail-merge/mail-merge.vala:336 + #: src/client/plugin/special-folders/special-folders.vala:187 + msgid "Edit" + msgstr "Sunting" + +-#. Translators: This is an internal plugin so this name does not need +-#. to be tanslated +-#: src/client/plugin/folder-highlight/folder-highlight.plugin.desktop.in:6 +-msgid "Folder Highlight" +-msgstr "Sorot Folder" +- + #. / Translators: Menu item label for invoking mail + #. / merge in composer + #. / Translators: File chooser title after invoking mail +@@ -2212,9 +2216,9 @@ msgstr "Sorot Folder" + #. Translators: The name of the folder used to + #. display merged email + #: src/client/plugin/mail-merge/mail-merge.plugin.desktop.in:5 +-#: src/client/plugin/mail-merge/mail-merge.vala:284 +-#: src/client/plugin/mail-merge/mail-merge.vala:385 +-#: src/client/plugin/mail-merge/mail-merge.vala:484 ++#: src/client/plugin/mail-merge/mail-merge.vala:288 ++#: src/client/plugin/mail-merge/mail-merge.vala:389 ++#: src/client/plugin/mail-merge/mail-merge.vala:488 + msgid "Mail Merge" + msgstr "Gabungan Surat" + +@@ -2237,31 +2241,33 @@ msgstr "Jeda" + #. Translators: Info bar description for the mail merge + #. folder. The first string substitution the number of email + #. already sent, the second is the total number to send. +-#: src/client/plugin/mail-merge/mail-merge.vala:239 ++#: src/client/plugin/mail-merge/mail-merge.vala:240 + #, c-format + msgid "Sent %u of %u" +-msgstr "Terkirim %u dari %u" ++msgid_plural "Sent %u of %u" ++msgstr[0] "Terkirim %u dari %u" ++msgstr[1] "Terkirim %u dari %u" + + #. Translators: Infobar status label for an email mail merge + #. template +-#: src/client/plugin/mail-merge/mail-merge.vala:320 ++#: src/client/plugin/mail-merge/mail-merge.vala:324 + msgid "Mail merge template" + msgstr "Templat gabungan surat" + + #. Translators: Info bar button label for performing a + #. mail-merge on an email template +-#: src/client/plugin/mail-merge/mail-merge.vala:324 ++#: src/client/plugin/mail-merge/mail-merge.vala:328 + msgid "Merge" + msgstr "Gabung" + + #. / Translators: Action bar menu button label for + #. / mail-merge plugin +-#: src/client/plugin/mail-merge/mail-merge.vala:373 ++#: src/client/plugin/mail-merge/mail-merge.vala:377 + msgid "Insert field" + msgstr "Sisipkan bidang" + + #. / Translators: File chooser filer label +-#: src/client/plugin/mail-merge/mail-merge.vala:392 ++#: src/client/plugin/mail-merge/mail-merge.vala:396 + msgid "Comma separated values (CSV)" + msgstr "Nilai yang dipisahkan koma (CSV)" + +@@ -2278,12 +2284,6 @@ msgstr "Menampilkan pemberitahuan Menu Perpesanan Unity atas surat baru" + msgid "%s — New Messages" + msgstr "%s - Pesan Baru" + +-#. Translators: This is an internal plugin so this name does not need +-#. to be tanslated. +-#: src/client/plugin/notification-badge/notification-badge.plugin.desktop.in:6 +-msgid "Notification Badge" +-msgstr "Lencana Pemberitahuan" +- + #: src/client/plugin/sent-sound/sent-sound.plugin.desktop.in:4 + msgid "Sent Sound" + msgstr "Suara Terkirim" +@@ -2292,12 +2292,6 @@ msgstr "Suara Terkirim" + msgid "Plays the desktop sent-mail sound when an email is sent" + msgstr "Memutar suara surat-terkirim desktopk etika surel dikirim" + +-#. Translators: This is an internal plugin so this name does not need +-#. to be tanslated. +-#: src/client/plugin/special-folders/special-folders.plugin.desktop.in:6 +-msgid "Special Folders" +-msgstr "Folder Khusus" +- + #. Translators: Info bar button label for emptying + #. trash/spam folders + #: src/client/plugin/special-folders/special-folders.vala:167 +@@ -3130,7 +3124,7 @@ msgstr "Buka lampiran yang dipilih" + msgid "Save _All" + msgstr "Simpan Semu_a" + +-#: ui/components-inspector-error-view.ui:33 ++#: ui/components-inspector-error-view.ui:31 + msgid "" + "If the problem is serious or persists, please save and send these details to " + "one of the contact " +@@ -3142,13 +3136,13 @@ msgstr "" + "lampirkan ke sebuah laporan kutu baru." + +-#: ui/components-inspector-error-view.ui:49 ++#: ui/components-inspector-error-view.ui:47 + msgid "Details:" + msgstr "Detail:" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:19 ++#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:24 + msgid "Search for matching log entries" + msgstr "Cari entri log yang cocok" + +@@ -3164,13 +3158,13 @@ msgstr "Tambahkan entri penanda ke log" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:46 ++#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:51 + msgid "Save logs entries and details" + msgstr "Simpan entri log dan rincian" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:62 ++#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:67 + msgid "Copy to clipboard" + msgstr "Salin ke papan klip" + +@@ -3731,6 +3725,18 @@ msgstr "Otentik_asikan" + msgid "Geary update in progress…" + msgstr "Pemutakhiran Geary sedang berlangsung…" + ++#~ msgid "Desktop Notifications" ++#~ msgstr "Pemberitahuan Desktop" ++ ++#~ msgid "Folder Highlight" ++#~ msgstr "Sorot Folder" ++ ++#~ msgid "Notification Badge" ++#~ msgstr "Lencana Pemberitahuan" ++ ++#~ msgid "Special Folders" ++#~ msgstr "Folder Khusus" ++ + #~ msgid "Displays desktop notifications when new email is delivered" + #~ msgstr "Menampilkan pemberitahuan desktop ketika ada surat baru terkirim" + +-- +2.29.2 + diff --git a/mail-client/geary/files/0043-Fix-accute-in-Catalan-translation.patch b/mail-client/geary/files/0043-Fix-accute-in-Catalan-translation.patch new file mode 100644 index 0000000..b44257b --- /dev/null +++ b/mail-client/geary/files/0043-Fix-accute-in-Catalan-translation.patch @@ -0,0 +1,23 @@ +From d5512753459d6c1324fae48b1e6fc08526515932 Mon Sep 17 00:00:00 2001 +From: Jordi Mas +Date: Wed, 7 Oct 2020 08:14:38 +0200 +Subject: [PATCH 043/124] Fix accute in Catalan translation + +--- + help/ca/ca.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/help/ca/ca.po b/help/ca/ca.po +index ae243358..dbacd7ea 100644 +--- a/help/ca/ca.po ++++ b/help/ca/ca.po +@@ -1508,5 +1508,5 @@ msgid "" + msgstr "" + "En el mode text pla, el text es justificarà automàticament mitjançant salts " + "de línies de manera que no tinguin més de 74 caràcters d'ample i, el text " +-"sagnat es justificarà i se citarà utilitzant el caràcter \">,\" per a cada" ++"sagnat es justificarà i se citarà utilitzant el caràcter \">\" per a cada" + " nivell de cita." +-- +2.29.2 + diff --git a/mail-client/geary/files/0044-Update-Greek-translation.patch b/mail-client/geary/files/0044-Update-Greek-translation.patch new file mode 100644 index 0000000..8e0aa6e --- /dev/null +++ b/mail-client/geary/files/0044-Update-Greek-translation.patch @@ -0,0 +1,3431 @@ +From da9ed0751201db8e8fcd0571d219cd63f0bd5c7a Mon Sep 17 00:00:00 2001 +From: Efstathios Iosifidis +Date: Wed, 7 Oct 2020 08:09:10 +0000 +Subject: [PATCH 044/124] Update Greek translation + +(cherry picked from commit 2cb7aa0394c351338fbdd110ec381479e24107ea) +--- + po/el.po | 1831 +++++++++++++++++++++++++++++------------------------- + 1 file changed, 991 insertions(+), 840 deletions(-) + +diff --git a/po/el.po b/po/el.po +index 88a3eaae..f81ec318 100644 +--- a/po/el.po ++++ b/po/el.po +@@ -14,9 +14,9 @@ msgid "" + msgstr "" + "Project-Id-Version: geary-0.4.1\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-03-21 18:58+0000\n" +-"PO-Revision-Date: 2020-04-14 10:57+0300\n" +-"Last-Translator: Efstathios Iosifidis \n" ++"POT-Creation-Date: 2020-09-19 08:49+0000\n" ++"PO-Revision-Date: 2020-10-07 11:07+0300\n" ++"Last-Translator: Efstathios Iosifidis \n" + "Language-Team: Ελληνικά <>\n" + "Language: el\n" + "MIME-Version: 1.0\n" +@@ -36,10 +36,10 @@ msgstr "Αποστολή αρχείων χρησιμοποιώντας το Gear + + #. Translators: The application name + #: desktop/geary-autostart.desktop.in.in:3 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:12 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 +-#: src/client/accounts/accounts-editor-servers-pane.vala:555 +-#: src/client/application/application-main-window.vala:555 ++#: src/client/accounts/accounts-editor-servers-pane.vala:560 ++#: src/client/application/application-main-window.vala:608 + msgid "Geary" + msgstr "Geary" + +@@ -50,9 +50,9 @@ msgstr "Ηλεκτρονικό ταχυδρομείο" + + #. Translators: The application's summary / tagline + #: desktop/geary-autostart.desktop.in.in:5 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:16 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:15 + #: desktop/org.gnome.Geary.desktop.in.in:5 +-#: src/client/application/application-client.vala:32 ++#: src/client/application/application-client.vala:33 + msgid "Send and receive email" + msgstr "Αποστολή και λήψη ηλεκτρονικού ταχυδρομείου" + +@@ -62,11 +62,11 @@ msgid "Email;E-mail;Mail;" + msgstr "μήνυμα;ηλεκτρονικό ταχυδρομείο;αλληλογραφία;Email;E-mail;Mail;" + + #. Translators: The development team's name +-#: desktop/org.gnome.Geary.appdata.xml.in.in:14 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:13 + msgid "Geary Development Team" + msgstr "Ομάδα ανάπτυξης Geary" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:18 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:17 + msgid "" + "Geary is an email application built around conversations, for the GNOME 3 " + "desktop. It allows you to read, find and send email with a straightforward, " +@@ -76,7 +76,7 @@ msgstr "" + "συνομιλίες για το GNOME 3. Σας επιτρέπει να διαβάζετε, να βρίσκετε και να " + "στέλνετε μηνύματα ηλεκτρονικού ταχυδρομείου με μια απλή, σύγχρονη διεπαφή." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:23 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:22 + msgid "" + "Conversations allow you to read a complete discussion without having to find " + "and click from message to message." +@@ -84,45 +84,44 @@ msgstr "" + "Οι συνομιλίες σάς επιτρέπουν να διαβάσετε μια πλήρη συζήτηση χωρίς να " + "χρειαστεί να βρείτε και να κάνετε κλικ από μήνυμα σε μήνυμα." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:27 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:26 + msgid "Geary’s features include:" + msgstr "Τα χαρακτηριστικά του Geary περιλαμβάνουν:" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:29 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:28 + msgid "Quick email account setup" + msgstr "Γρήγορη ρύθμιση λογαριασμού ηλεκτρονικού ταχυδρομείου" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:30 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:29 + msgid "Shows related messages together in conversations" + msgstr "Εμφανίζει τα σχετικά μηνύματα μαζί σε συνομιλίες" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:31 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:30 + msgid "Fast, full text and keyword search" + msgstr "Γρήγορη πλήρης αναζήτηση κειμένου και λέξεων-κλειδιών" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:32 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:31 + msgid "Full-featured HTML and plain text message composer" + msgstr "" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:33 +-#| msgid "Show _notifications for new mail" ++#: desktop/org.gnome.Geary.appdata.xml.in.in:32 + msgid "Desktop notification of new mail" + msgstr "Εμφάνιση ειδοποιήσεων για νέα μηνύματα" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:34 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:33 + msgid "Compatible with GMail, Yahoo! Mail, Outlook.com and other IMAP servers" + msgstr "" + "Συμβατό με το GMail, το Yahoo! Mail, Outlook.com και άλλους διακομιστές IMAP" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:48 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:47 + #, fuzzy + #| msgid "_Display conversation preview" + msgid "Geary displaying a conversation" + msgstr "Να ε_μφανίζεται η προεπισκόπηση συνομιλίας" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:59 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:58 + msgid "Geary showing the rich text composer" + msgstr "" + +@@ -215,7 +214,6 @@ msgid "Position of the message list Paned grabber." + msgstr "" + + #: desktop/org.gnome.Geary.gschema.xml:62 +-#| msgid "_Automatically select next message" + msgid "Autoselect next message" + msgstr "Αυτόματη επιλογή επόμενου μηνύματος" + +@@ -345,10 +343,18 @@ msgid "" + msgstr "" + + #: desktop/org.gnome.Geary.gschema.xml:146 +-msgid "Whether we migrated the old settings" ++msgid "List of optional plugins" + msgstr "" + + #: desktop/org.gnome.Geary.gschema.xml:147 ++msgid "Plugins listed here will be loaded on startup." ++msgstr "" ++ ++#: desktop/org.gnome.Geary.gschema.xml:152 ++msgid "Whether we migrated the old settings" ++msgstr "" ++ ++#: desktop/org.gnome.Geary.gschema.xml:153 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -364,17 +370,17 @@ msgstr "" + #. account for a generic IMAP service provider. + #: src/client/accounts/accounts-editor-add-pane.vala:108 + msgid "All others" +-msgstr "" ++msgstr "Όλοι οι άλλοι" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:195 +-#: src/client/accounts/accounts-editor-servers-pane.vala:316 ++#: src/client/accounts/accounts-editor-servers-pane.vala:321 + msgid "Check your receiving login and password" + msgstr "" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:210 +-#: src/client/accounts/accounts-editor-servers-pane.vala:329 ++#: src/client/accounts/accounts-editor-servers-pane.vala:334 + msgid "Check your receiving server details" + msgstr "" + +@@ -384,13 +390,13 @@ msgstr "" + #. specify custom creds here + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:232 +-#: src/client/accounts/accounts-editor-servers-pane.vala:350 ++#: src/client/accounts/accounts-editor-servers-pane.vala:355 + msgid "Check your sending login and password" + msgstr "" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:246 +-#: src/client/accounts/accounts-editor-servers-pane.vala:363 ++#: src/client/accounts/accounts-editor-servers-pane.vala:368 + msgid "Check your sending server details" + msgstr "" + +@@ -446,14 +452,14 @@ msgstr "person@example.com" + #. Translators: Label for the user's login name for an + #. IMAP, SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:593 +-#: src/client/accounts/accounts-editor-servers-pane.vala:884 ++#: src/client/accounts/accounts-editor-servers-pane.vala:889 + msgid "Login name" + msgstr "Όνομα εισόδου" + + #. Translators: Label for the user's password for an IMAP, + #. SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:607 +-#: src/client/accounts/accounts-editor-servers-pane.vala:1006 ++#: src/client/accounts/accounts-editor-servers-pane.vala:1011 + #: ui/password-dialog.glade:108 + msgid "Password" + msgstr "Συνθηματικό" +@@ -463,7 +469,7 @@ msgstr "Συνθηματικό" + #. Translators: This label describes the host name or IP + #. address and port used by an account's IMAP service. + #: src/client/accounts/accounts-editor-add-pane.vala:629 +-#: src/client/accounts/accounts-editor-servers-pane.vala:728 ++#: src/client/accounts/accounts-editor-servers-pane.vala:733 + msgid "IMAP server" + msgstr "Διακομιστής IMAP" + +@@ -478,7 +484,7 @@ msgstr "imap.example.com" + #. Translators: This label describes the host name or IP + #. address and port used by an account's SMTP service. + #: src/client/accounts/accounts-editor-add-pane.vala:638 +-#: src/client/accounts/accounts-editor-servers-pane.vala:734 ++#: src/client/accounts/accounts-editor-servers-pane.vala:739 + msgid "SMTP server" + msgstr "Διακομιστής SMTP" + +@@ -624,55 +630,54 @@ msgstr[0] "πριν 1 χρόνο" + msgstr[1] "πριν 1 χρόνο" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2053 ++#: src/client/application/application-main-window.vala:2061 + msgid "Undo" + msgstr "Αναίρεση" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2036 ++#: src/client/application/application-main-window.vala:2044 + msgid "Redo" + msgstr "Επανάληψη" + + #: src/client/accounts/accounts-editor-list-pane.vala:358 +-#: src/client/accounts/accounts-editor-list-pane.vala:446 ++#: src/client/accounts/accounts-editor-list-pane.vala:454 + #: src/client/accounts/accounts-editor-row.vala:279 + msgid "Gmail" + msgstr "Gmail" + + #: src/client/accounts/accounts-editor-list-pane.vala:362 +-#: src/client/accounts/accounts-editor-list-pane.vala:450 ++#: src/client/accounts/accounts-editor-list-pane.vala:458 + #: src/client/accounts/accounts-editor-row.vala:283 + msgid "Outlook.com" + msgstr "Outlook.com" + + #: src/client/accounts/accounts-editor-list-pane.vala:366 +-#: src/client/accounts/accounts-editor-list-pane.vala:454 ++#: src/client/accounts/accounts-editor-list-pane.vala:462 + #: src/client/accounts/accounts-editor-row.vala:287 + msgid "Yahoo" + msgstr "Yahoo" + + #. Translators: Tooltip for accounts that have been + #. loaded but disabled by the user. +-#: src/client/accounts/accounts-editor-list-pane.vala:384 ++#: src/client/accounts/accounts-editor-list-pane.vala:388 + msgid "This account has been disabled" + msgstr "Ο λογαριασμός έχει απενεργοποιηθεί" + + #. Translators: Tooltip for accounts that have been + #. loaded but because of some error are not able to be + #. used. +-#: src/client/accounts/accounts-editor-list-pane.vala:393 ++#: src/client/accounts/accounts-editor-list-pane.vala:397 + msgid "This account has encountered a problem and is unavailable" + msgstr "" + +-#. Translators: Label for adding a generic email account +-#: src/client/accounts/accounts-editor-list-pane.vala:443 ++#: src/client/accounts/accounts-editor-list-pane.vala:466 + msgid "Other email providers" + msgstr "Άλλοι πάροχοι ηλεκτρονικού ταχυδρομείου" + + #. Translators: Notification shown after removing an + #. account. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:560 ++#: src/client/accounts/accounts-editor-list-pane.vala:572 + #, c-format + msgid "Account “%s” removed" + msgstr "" +@@ -680,7 +685,7 @@ msgstr "" + #. Translators: Notification shown after removing an account + #. is undone. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:567 ++#: src/client/accounts/accounts-editor-list-pane.vala:579 + #, c-format + msgid "Account “%s” restored" + msgstr "" +@@ -693,67 +698,66 @@ msgstr "" + #. Translators: Label describes the service provider + #. hosting the email account, e.g. Gmail, Yahoo, or some + #. other generic IMAP service. +-#: src/client/accounts/accounts-editor-row.vala:295 ++#: src/client/accounts/accounts-editor-row.vala:299 + msgid "Service provider" + msgstr "Πάροχος υπηρεσίας" + + #. Translators: This label describes what form of transport + #. security (TLS, StartTLS, etc) used by an account's IMAP or SMTP + #. service. +-#: src/client/accounts/accounts-editor-row.vala:468 ++#: src/client/accounts/accounts-editor-row.vala:473 + msgid "Connection security" + msgstr "" + + #. Translators: Label used when no auth scheme is used + #. by an account's IMAP or SMTP service. +-#: src/client/accounts/accounts-editor-row.vala:479 +-#: src/client/accounts/accounts-editor-servers-pane.vala:755 +-#: src/client/accounts/accounts-editor-servers-pane.vala:970 +-#: src/engine/api/geary-special-folder-type.vala:58 ++#: src/client/accounts/accounts-editor-row.vala:484 ++#: src/client/accounts/accounts-editor-servers-pane.vala:760 ++#: src/client/accounts/accounts-editor-servers-pane.vala:975 + msgid "None" + msgstr "Kανένας" + +-#: src/client/accounts/accounts-editor-row.vala:486 ++#: src/client/accounts/accounts-editor-row.vala:491 + msgid "StartTLS" + msgstr "StartTLS" + +-#: src/client/accounts/accounts-editor-row.vala:493 ++#: src/client/accounts/accounts-editor-row.vala:498 + msgid "TLS" + msgstr "TLS" + + #. Translators: Label for source of SMTP authentication + #. credentials (none, use IMAP, custom) when adding a new + #. account +-#. Button label for retrying when a login error has occurred +-#: src/client/accounts/accounts-editor-row.vala:534 +-#: ui/application-main-window.ui:346 ++#. Translators: An info bar button label ++#: src/client/accounts/accounts-editor-row.vala:539 ++#: src/client/application/application-main-window.vala:554 + msgid "Login" + msgstr "Σύνδεση" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (none) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:541 ++#: src/client/accounts/accounts-editor-row.vala:546 + msgid "No login needed" + msgstr "Δεν απαιτείται σύνδεση" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (use IMAP) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:549 ++#: src/client/accounts/accounts-editor-row.vala:554 + msgid "Use same login as receiving" + msgstr "" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (custom) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:557 ++#: src/client/accounts/accounts-editor-row.vala:562 + msgid "Use a different login" + msgstr "" + + #. Translators: In-app notification label, the + #. string substitution is a more detailed reason. +-#: src/client/accounts/accounts-editor-servers-pane.vala:377 ++#: src/client/accounts/accounts-editor-servers-pane.vala:382 + #, c-format + msgid "Account not updated: %s" + msgstr "" +@@ -761,41 +765,37 @@ msgstr "" + #. Translators: This label describes the program that + #. created the account, e.g. an SSO service like GOA, or + #. locally by Geary. +-#: src/client/accounts/accounts-editor-servers-pane.vala:540 ++#: src/client/accounts/accounts-editor-servers-pane.vala:545 + msgid "Account source" + msgstr "Πηγή λογαριασμού" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:552 ++#: src/client/accounts/accounts-editor-servers-pane.vala:557 + msgid "GNOME Online Accounts" +-msgstr "" ++msgstr "Διαδικτυακοί λογαριασμοί του GNOME" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:611 +-#, fuzzy +-#| msgid "_Save sent mail" ++#: src/client/accounts/accounts-editor-servers-pane.vala:616 + msgid "Save draft email on server" +-msgstr "Απο_θήκευση απεσταλμένων μηνυμάτων" ++msgstr "Αποθήκευση πρόχειρου μηνύματος στον διακομιστή" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:666 +-#, fuzzy +-#| msgid "_Save sent mail" ++#: src/client/accounts/accounts-editor-servers-pane.vala:671 + msgid "Save sent email on server" +-msgstr "Απο_θήκευση απεσταλμένων μηνυμάτων" ++msgstr "Αποθήκευση απεσταλμένου μηνύματος στον διακομιστή" + + #. Add a suffix for OAuth2 auth so people know they + #. shouldn't expect to be prompted for a password + #. Translators: Label used when an account's IMAP or + #. SMTP service uses OAuth2. The string replacement is + #. the service's login name. +-#: src/client/accounts/accounts-editor-servers-pane.vala:956 ++#: src/client/accounts/accounts-editor-servers-pane.vala:961 + #, c-format + msgid "%s using OAuth2" + msgstr "" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:966 ++#: src/client/accounts/accounts-editor-servers-pane.vala:971 + msgid "Use receiving server login" + msgstr "" + +@@ -832,42 +832,42 @@ msgstr "" + msgid "_Replace" + msgstr "_Αντικατάσταση" + +-#: src/client/application/application-client.vala:33 ++#: src/client/application/application-client.vala:34 + msgid "Copyright 2016 Software Freedom Conservancy Inc." + msgstr "" + +-#: src/client/application/application-client.vala:34 +-msgid "Copyright 2016-2019 Geary Development Team." +-msgstr "" ++#: src/client/application/application-client.vala:35 ++msgid "Copyright 2016-2020 Geary Development Team." ++msgstr "Πνευματικά διακαιώματα 2016-2020 Ομάδα ανάπτυξης Geary" + +-#: src/client/application/application-client.vala:36 ++#: src/client/application/application-client.vala:37 + msgid "Visit the Geary web site" + msgstr "Επισκεφθείτε την ιστοσελίδα του Geary" + + #. / Command line option +-#: src/client/application/application-client.vala:94 ++#: src/client/application/application-client.vala:97 + msgid "Print debug logging" + msgstr "" + + #. / Command line option +-#: src/client/application/application-client.vala:97 ++#: src/client/application/application-client.vala:100 + #, fuzzy + #| msgid "Start Geary with hidden main window" + msgid "Start with the main window hidden (deprecated)" + msgstr "Εκκίνηση του Geary με κρυφό κύριο παράθυρο" + + #. / Command line option +-#: src/client/application/application-client.vala:100 ++#: src/client/application/application-client.vala:103 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "" + + #. / Command line option +-#: src/client/application/application-client.vala:103 ++#: src/client/application/application-client.vala:106 + msgid "Log conversation monitoring" + msgstr "Καταγραφή παρακολούθησης της συνομιλίας" + + #. / Command line option +-#: src/client/application/application-client.vala:106 ++#: src/client/application/application-client.vala:109 + #, fuzzy + #| msgid "Log network deserialization" + msgid "Log IMAP network deserialization" +@@ -875,19 +875,16 @@ msgstr "Καταγραφή δραματοποίησης δικτύου" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/application-client.vala:110 ++#: src/client/application/application-client.vala:113 + msgid "Log folder normalization" + msgstr "Καταγραφή ομαλοποίησης φάκελου" + +-#. / Command line option +-#: src/client/application/application-client.vala:113 +-msgid "Log network activity" +-msgstr "Καταγραφή δραστηριότητας του δικτύου" +- + #. / Command line option + #: src/client/application/application-client.vala:116 +-msgid "Log periodic activity" +-msgstr "Καταγραφή περιοδικής δραστηριότητας" ++#, fuzzy ++#| msgid "Log network activity" ++msgid "Log IMAP network activity" ++msgstr "Καταγραφή δραστηριότητας του δικτύου" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could +@@ -896,95 +893,92 @@ msgstr "Καταγραφή περιοδικής δραστηριότητας" + msgid "Log IMAP replay queue" + msgstr "Καταγραφή ουράς επανάληψης IMAP" + +-#. / Command line option. Serialization is how commands and +-#. / responses are converted into a stream of bytes for +-#. / network transmission +-#: src/client/application/application-client.vala:126 ++#. / Command line option ++#: src/client/application/application-client.vala:124 + #, fuzzy +-#| msgid "Log network serialization" +-msgid "Log IMAP network serialization" +-msgstr "Καταγραφή δραματοποίησης δικτύου" ++#| msgid "Log network activity" ++msgid "Log SMTP network activity" ++msgstr "Καταγραφή δραστηριότητας του δικτύου" + + #. / Command line option +-#: src/client/application/application-client.vala:129 ++#: src/client/application/application-client.vala:127 + msgid "Log database queries (generates lots of messages)" + msgstr "Καταγραφή ερωτημάτων βάσης δεδομένων (παράγει πολλά μηνύματα)" + + #. / Command line option +-#: src/client/application/application-client.vala:132 ++#: src/client/application/application-client.vala:130 + msgid "Perform a graceful quit" + msgstr "" + +-#: src/client/application/application-client.vala:134 ++#: src/client/application/application-client.vala:132 + msgid "Open a new window" + msgstr "Άνοιγμα νέου παραθύρου" + + #. / Command line option +-#: src/client/application/application-client.vala:137 ++#: src/client/application/application-client.vala:135 + #, fuzzy + #| msgid "Revoke all server certificates with TLS warnings" + msgid "Revoke all pinned TLS server certificates" + msgstr "Ανάκληση όλων των πιστοποιητικών διακομιστή με προειδοποιήσεις TLS" + + #. / Command line option +-#: src/client/application/application-client.vala:140 ++#: src/client/application/application-client.vala:138 + msgid "Display program version" + msgstr "Εμφάνιση έκδοσης του προγράμματος" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:264 +-#| msgid "Mark conversation" ++#: src/client/application/application-client.vala:262 + msgid "Geary version" + msgstr "Έκδοση Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:266 ++#: src/client/application/application-client.vala:264 + msgid "Geary revision" + msgstr "Αναθεώρηση Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:268 ++#: src/client/application/application-client.vala:266 + msgid "GTK version" + msgstr "Έκδοση GTK" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:275 ++#: src/client/application/application-client.vala:273 + msgid "GLib version" + msgstr "Έκδοση GLib" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:282 ++#: src/client/application/application-client.vala:280 + msgid "WebKitGTK version" + msgstr "Έκδοση WebKitGTK" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:289 ++#: src/client/application/application-client.vala:287 + msgid "Desktop environment" + msgstr "" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:291 ++#: src/client/application/application-client.vala:289 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Άγνωστο" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:321 ++#: src/client/application/application-client.vala:293 + msgid "Distribution name" + msgstr "Όνομα διανομής" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:326 ++#: src/client/application/application-client.vala:298 + msgid "Distribution release" + msgstr "Κυκλοφορία διανομής" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:334 ++#: src/client/application/application-client.vala:303 + msgid "Installation prefix" + msgstr "" + +-#: src/client/application/application-client.vala:587 ++#: src/client/application/application-client.vala:559 + #, c-format + msgid "About %s" + msgstr "Σχετικά %s" +@@ -992,7 +986,7 @@ msgstr "Σχετικά %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:591 ++#: src/client/application/application-client.vala:563 + msgid "translator-credits" + msgstr "" + "Ελληνική μεταφραστική ομάδα GNOME\n" +@@ -1009,31 +1003,31 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:937 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "" + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:970 ++#: src/client/application/application-client.vala:1078 + #, fuzzy, c-format + #| msgid "Unrecognized command line option \"%s\"\n" + msgid "Unrecognised program argument: “%s”" + msgstr "Άγνωστη επιλογή της γραμμής εντολών \"%s\"\n" + + #. / Notification title. +-#: src/client/application/application-controller.vala:458 ++#: src/client/application/application-controller.vala:479 + #, c-format + msgid "A problem occurred sending email for %s" +-msgstr "" ++msgstr "Παρουσιάστηκε πρόβλημα κατά την αποστολή μηνύματος στον %s" + + #. / Notification body +-#: src/client/application/application-controller.vala:462 ++#: src/client/application/application-controller.vala:483 + msgid "Email will not be sent until re-connected" + msgstr "" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:568 ++#: src/client/application/application-controller.vala:582 + #, fuzzy + #| msgid "%s - Conversation Inspector" + msgid "Conversation marked" +@@ -1042,7 +1036,7 @@ msgstr[0] "%s - Επόπτης συνομιλίας" + msgstr[1] "%s - Επόπτης συνομιλίας" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:574 ++#: src/client/application/application-controller.vala:588 + #, fuzzy + #| msgid "No conversations in folder." + msgid "Conversation un-marked" +@@ -1053,8 +1047,8 @@ msgstr[1] "Δεν υπάρχουν συνομιλίες στον φάκελο." + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:600 +-#: src/client/application/application-controller.vala:684 ++#: src/client/application/application-controller.vala:614 ++#: src/client/application/application-controller.vala:698 + #, fuzzy, c-format + #| msgid "%s - Conversation Inspector" + msgid "Conversation moved to %s" +@@ -1067,8 +1061,8 @@ msgstr[1] "%s - Επόπτης συνομιλίας" + #. / of the source folder. + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:608 +-#: src/client/application/application-controller.vala:630 ++#: src/client/application/application-controller.vala:622 ++#: src/client/application/application-controller.vala:644 + #, fuzzy, c-format + #| msgid "%s - Conversation Inspector" + msgid "Conversation restored to %s" +@@ -1077,7 +1071,7 @@ msgstr[0] "%s - Επόπτης συνομιλίας" + msgstr[1] "%s - Επόπτης συνομιλίας" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:651 ++#: src/client/application/application-controller.vala:665 + #, fuzzy + #| msgid "%s - Conversation Inspector" + msgid "Conversation archived" +@@ -1087,7 +1081,7 @@ msgstr[1] "%s - Επόπτης συνομιλίας" + + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:707 ++#: src/client/application/application-controller.vala:721 + #, c-format + msgid "Message restored to %s" + msgid_plural "Messages restored to %s" +@@ -1095,16 +1089,16 @@ msgstr[0] "" + msgstr[1] "" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:728 ++#: src/client/application/application-controller.vala:742 + msgid "Message archived" + msgid_plural "Messages archived" +-msgstr[0] "" +-msgstr[1] "" ++msgstr[0] "Το μήνυμα αρχειοθετήθηκε" ++msgstr[1] "Τα μηνύματα αρχειοθετήθηκαν" + + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:763 ++#: src/client/application/application-controller.vala:777 + #, c-format + msgid "Message moved to %s" + msgid_plural "Messages moved to %s" +@@ -1114,7 +1108,7 @@ msgstr[1] "" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:791 ++#: src/client/application/application-controller.vala:805 + #, fuzzy, c-format + #| msgid "No conversations selected." + msgid "Conversation labelled as %s" +@@ -1125,19 +1119,19 @@ msgstr[1] "Δεν επιλέχθηκαν συνομιλίες." + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:799 ++#: src/client/application/application-controller.vala:813 + #, c-format + msgid "Conversation un-labelled as %s" + msgid_plural "Conversations un-labelled as %s" + msgstr[0] "" + msgstr[1] "" + +-#: src/client/application/application-controller.vala:1222 ++#: src/client/application/application-controller.vala:1320 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Αδύνατο το άνοιγμα της βάσης δεδομένων για το %s" + +-#: src/client/application/application-controller.vala:1223 ++#: src/client/application/application-controller.vala:1321 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1163,21 +1157,21 @@ msgstr "" + "και τα συνημμένα της. Η αλληλογραφία στον διακομιστή σας δεν θα " + "επηρεαστεί." + +-#: src/client/application/application-controller.vala:1225 ++#: src/client/application/application-controller.vala:1323 + msgid "_Rebuild" + msgstr "Αναδόμη_ση" + +-#: src/client/application/application-controller.vala:1225 ++#: src/client/application/application-controller.vala:1323 + msgid "E_xit" + msgstr "Έ_ξοδος" + +-#: src/client/application/application-controller.vala:1235 ++#: src/client/application/application-controller.vala:1333 + #, fuzzy, c-format + #| msgid "Unable to rebuild database for \"%s\"" + msgid "Unable to rebuild database for “%s”" + msgstr "Αδύνατη η αναδόμηση της βάσης δεδομένων για το \"%s\"" + +-#: src/client/application/application-controller.vala:1236 ++#: src/client/application/application-controller.vala:1334 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1190,52 +1184,121 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1560 ++#: src/client/application/application-controller.vala:1501 + #, c-format + msgid "Email sent to %s" + msgstr "Η αλληλογραφία απεστάλη στον %s" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2643 ++#: src/client/application/application-controller.vala:2491 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2707 ++#: src/client/application/application-controller.vala:2555 + #, c-format + msgid "Email to %s saved" + msgstr "" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2722 +-#: src/client/application/application-controller.vala:2780 ++#: src/client/application/application-controller.vala:2570 ++#: src/client/application/application-controller.vala:2628 + msgid "Composer could not be restored" + msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2765 ++#: src/client/application/application-controller.vala:2613 + #, c-format + msgid "Email to %s discarded" + msgstr "" + ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:540 ++msgid "Working offline" ++msgstr "Εργασία εκτός σύνδεσης" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:542 ++msgid "You will not be able to send or receive email until re-connected." ++msgstr "" ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:549 ++msgid "Login problem" ++msgstr "Πρόβλημα εισόδου" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:551 ++msgid "An account has reported an incorrect login or password." ++msgstr "" ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:558 ++msgid "Retry login, you will be prompted for your password" ++msgstr "" ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:565 ++msgid "Security problem" ++msgstr "Πρόβλημα ασφαλείας" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:567 ++msgid "An account has reported an untrusted server." ++msgstr "" ++ ++#. Translators: An info bar button label ++#: src/client/application/application-main-window.vala:570 ++msgid "Check" ++msgstr "Έλεγχος" ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:574 ++msgid "Check the security details for the connection" ++msgstr "" ++ + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:560 ++#: src/client/application/application-main-window.vala:617 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" + +-#: src/client/application/application-main-window.vala:967 ++#. Translators: The name of the folder group containing ++#. folders created by people (as opposed to special-use ++#. folders) ++#: src/client/application/application-main-window.vala:996 ++#: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Ετικέτες" + ++#: src/client/application/application-main-window.vala:1293 ++#, c-format ++msgid "Empty all email from your %s folder?" ++msgstr "Άδειασμα όλης της ηλεκτρονικής αλληλογγραφίας από το φάκελο %s;" ++ ++#: src/client/application/application-main-window.vala:1294 ++msgid "This removes the email from Geary and your email server." ++msgstr "" ++"Αυτό αφαιρεί το email από το Geary και τον διακομιστή ηλεκτρονικής " ++"αλληλογγραφίας σας." ++ ++#: src/client/application/application-main-window.vala:1295 ++msgid "This cannot be undone." ++msgstr "Αυτή η ενέργεια δεν είναι αναστρέψιμη." ++ ++#: src/client/application/application-main-window.vala:1296 ++#, c-format ++msgid "Empty %s" ++msgstr "Άδειασμα %s" ++ + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1306 ++#: src/client/application/application-main-window.vala:1353 + #, fuzzy + #| msgid "Do you want to permanently delete this message?" + #| msgid_plural "Do you want to permanently delete these messages?" +@@ -1244,39 +1307,19 @@ msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Θέλετε να διαγράψετε οριστικά αυτό το μήνυμα;" + msgstr[1] "Θέλετε να διαγράψετε οριστικά αυτά τα μηνύματα;" + +-#: src/client/application/application-main-window.vala:1311 +-#: src/client/application/application-main-window.vala:1326 ++#: src/client/application/application-main-window.vala:1358 ++#: src/client/application/application-main-window.vala:1373 + msgid "Delete" + msgstr "Διαγραφή" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1321 ++#: src/client/application/application-main-window.vala:1368 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Θέλετε να διαγράψετε οριστικά αυτό το μήνυμα;" + msgstr[1] "Θέλετε να διαγράψετε οριστικά αυτά τα μηνύματα;" + +-#: src/client/application/application-main-window.vala:1334 +-#, c-format +-msgid "Empty all email from your %s folder?" +-msgstr "Άδειασμα όλης της ηλεκτρονικής αλληλογγραφίας από το φάκελο %s;" +- +-#: src/client/application/application-main-window.vala:1337 +-msgid "This removes the email from Geary and your email server." +-msgstr "" +-"Αυτό αφαιρεί το email από το Geary και τον διακομιστή ηλεκτρονικής " +-"αλληλογγραφίας σας." +- +-#: src/client/application/application-main-window.vala:1338 +-msgid "This cannot be undone." +-msgstr "Αυτή η ενέργεια δεν είναι αναστρέψιμη." +- +-#: src/client/application/application-main-window.vala:1339 +-#, c-format +-msgid "Empty %s" +-msgstr "Άδειασμα %s" +- +-#: src/client/application/application-main-window.vala:1669 ++#: src/client/application/application-main-window.vala:1691 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1287,7 +1330,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1834 ++#: src/client/composer/composer-widget.vala:1784 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1308,82 +1351,161 @@ msgstr "" + msgid "Don’t _ask me again" + msgstr "Να μην _ερωτηθώ ξανά" + +-#: src/client/components/components-inspector.vala:72 ++#: src/client/components/components-inspector.vala:78 + msgid "Inspector" + msgstr "Επόπτης" + + #. / Translators: Title for Inspector logs pane + #. / Translators: Title for problem report dialog logs pane +-#: src/client/components/components-inspector.vala:87 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 ++#: src/client/components/components-inspector.vala:93 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 + msgid "Logs" + msgstr "Ιστορικό" + + #. / Translators: Title for Inspector system system information pane + #. / Translators: Title for problem report system information + #. / pane +-#: src/client/components/components-inspector.vala:91 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 ++#: src/client/components/components-inspector.vala:97 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 + msgid "System" + msgstr "Σύστημα" + + #. Button label for saving problem report information +-#: src/client/components/components-inspector.vala:208 +-#: src/client/components/components-inspector.vala:211 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/problem-details-dialog.ui:42 ++#: src/client/components/components-inspector.vala:226 ++#: src/client/components/components-inspector.vala:229 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 ++#: ui/problem-details-dialog.ui:47 + msgid "Save As" + msgstr "Αποθήκευση ως" + +-#: src/client/components/components-inspector.vala:212 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: src/client/components/components-inspector.vala:230 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Ακύρωση" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:43 ++#: src/client/components/components-preferences-window.vala:124 + msgid "_Automatically select next message" + msgstr "_Αυτόματη επιλογή επόμενου μηνύματας" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:53 ++#: src/client/components/components-preferences-window.vala:134 + msgid "_Display conversation preview" + msgstr "Να ε_μφανίζεται η προεπισκόπηση συνομιλίας" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:63 ++#: src/client/components/components-preferences-window.vala:144 + msgid "Use _three pane view" + msgstr "" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:73 ++#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "" + +-#: src/client/components/components-preferences-window.vala:75 ++#: src/client/components/components-preferences-window.vala:156 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" + msgstr "" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:86 ++#: src/client/components/components-preferences-window.vala:167 + #, fuzzy + #| msgid "Show _notifications for new mail" + msgid "_Watch for new mail when closed" + msgstr "Εμφάνιση ειδοποιήσεων για _νέα μηνύματα" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:90 ++#: src/client/components/components-preferences-window.vala:171 + msgid "Geary will keep running after all windows are closed" + msgstr "" + ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:189 ++msgid "Preferences" ++msgstr "Προτιμήσεις" ++ ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:250 ++msgid "Plugins" ++msgstr "Πρόσθετα" ++ ++#. Translators: Info bar title for a generic account ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:36 ++msgid "Account problem" ++msgstr "Πρόβλημα λογαριασμού" ++ ++#. Translators: Info bar sub-title for a generic account ++#. problem. String substitution is the account name. ++#: src/client/components/components-problem-report-info-bar.vala:40 ++#, c-format ++msgid "Geary has encountered a problem with %s." ++msgstr "" ++ ++#. Translators: Info bar sub-title for a generic ++#. account problem. String substitution is the ++#. account name. ++#: src/client/components/components-problem-report-info-bar.vala:53 ++#, c-format ++msgid "Geary encountered a problem checking mail for %s." ++msgstr "" ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:57 ++msgid "Try reconnecting" ++msgstr "Δοκιμή επανασύνδεσης" ++ ++#. Translators: Info bar title for an outgoing ++#. account problem. String substitution is the ++#. account name ++#: src/client/components/components-problem-report-info-bar.vala:65 ++#, c-format ++msgid "Geary encountered a problem sending email for %s." ++msgstr "" ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:69 ++msgid "Retry sending queued messages" ++msgstr "" ++ ++#. Translators: Info bar title for a generic application ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:76 ++msgid "Geary has encountered a problem" ++msgstr "" ++ ++#. Translators: Info bar sub-title for a generic ++#. application problem. ++#: src/client/components/components-problem-report-info-bar.vala:80 ++msgid "Please report the details if it persists." ++msgstr "" ++ ++#. Translators: Button label for viewing technical details ++#. for a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:94 ++msgid "_Details" ++msgstr "_Λεπτομέρειες" ++ ++#. Translators: Tooltip for viewing technical details for ++#. a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:97 ++msgid "View technical details about the error" ++msgstr "" ++ ++#. Translators: Button label for retrying a server ++#. connection ++#: src/client/components/components-problem-report-info-bar.vala:103 ++msgid "_Retry" ++msgstr "_Επανάληψη" ++ + #. / Translators: Search entry placeholder text + #: src/client/components/components-search-bar.vala:12 + #: src/client/folder-list/folder-list-search-branch.vala:53 +-#: src/engine/api/geary-special-folder-type.vala:51 ++#: src/client/util/util-i18n.vala:298 + msgid "Search" + msgstr "Αναζήτηση" + +@@ -1405,29 +1527,27 @@ msgstr "Αναζήτηση λογαριασμού %s" + + #. Translators: Tooltip used when an entry requires a valid + #. email address to be entered, but one is not provided. +-#: src/client/components/components-validator.vala:390 ++#: src/client/components/components-validator.vala:394 + msgid "An email address is required" +-msgstr "" ++msgstr "Απαιτείται διεύθυνση ηλεκτρονικού ταχυδρομείου" + + #. Translators: Tooltip used when an entry requires a valid + #. email address to be entered, but the address is invalid. +-#: src/client/components/components-validator.vala:394 +-#, fuzzy +-#| msgid "E_mail address" ++#: src/client/components/components-validator.vala:398 + msgid "Not a valid email address" +-msgstr "Διεύθυνση ηλεκτρονικού _ταχυδρομίου" ++msgstr "Μη έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομίου" + + #. Translators: Tooltip used when an entry requires a valid, + #. resolvable server name to be entered, but one is not + #. provided. +-#: src/client/components/components-validator.vala:440 ++#: src/client/components/components-validator.vala:444 + msgid "A server name is required" +-msgstr "" ++msgstr "Απαιτείται όνομα διακομιστή" + + #. Translators: Tooltip used when an entry requires a valid + #. server name to be entered, but it was unable to be + #. looked-up in the DNS. +-#: src/client/components/components-validator.vala:445 ++#: src/client/components/components-validator.vala:449 + msgid "Could not look up server name" + msgstr "" + +@@ -1448,20 +1568,16 @@ msgstr[0] "Προσθήκη ετικέτας στην συνομιλία" + msgstr[1] "Προσθήκη ετικέτας στην συνομιλία" + + #: src/client/components/main-toolbar.vala:126 +-#, fuzzy +-#| msgid "Move conversation" + msgid "Move conversation" + msgid_plural "Move conversations" + msgstr[0] "Μετακίνηση συνομιλίας" +-msgstr[1] "Μετακίνηση συνομιλίας" ++msgstr[1] "Μετακίνηση συνομιλιών" + + #: src/client/components/main-toolbar.vala:131 +-#, fuzzy +-#| msgid "Archive conversation (A)" + msgid "Archive conversation" + msgid_plural "Archive conversations" +-msgstr[0] "Αρχειοθέτηση συνομιλίας (Α)" +-msgstr[1] "Αρχειοθέτηση συνομιλίας (Α)" ++msgstr[0] "Αρχειοθέτηση συνομιλίας" ++msgstr[1] "Αρχειοθέτηση συνομιλιών" + + #: src/client/components/main-toolbar.vala:142 + #, fuzzy +@@ -1477,75 +1593,6 @@ msgid_plural "Delete conversations" + msgstr[0] "Διαγραφή συνομιλίας" + msgstr[1] "Διαγραφή συνομιλιών" + +-#. Translators: Info bar title for a generic account +-#. problem. +-#: src/client/components/main-window-info-bar.vala:44 +-msgid "Account problem" +-msgstr "Πρόβλημα λογαριασμού" +- +-#. Translators: Info bar sub-title for a generic account +-#. problem. String substitution is the account name. +-#: src/client/components/main-window-info-bar.vala:48 +-#, c-format +-msgid "Geary has encountered a problem with %s." +-msgstr "" +- +-#. Translators: Info bar sub-title for a generic +-#. account problem. String substitution is the +-#. account name. +-#: src/client/components/main-window-info-bar.vala:61 +-#, c-format +-msgid "Geary encountered a problem checking mail for %s." +-msgstr "" +- +-#. Translators: Tooltip label for Retry button +-#: src/client/components/main-window-info-bar.vala:65 +-msgid "Try reconnecting" +-msgstr "Δοκιμή επανασύνδεσης" +- +-#. Translators: Info bar title for an outgoing +-#. account problem. String substitution is the +-#. account name +-#: src/client/components/main-window-info-bar.vala:73 +-#, c-format +-msgid "Geary encountered a problem sending email for %s." +-msgstr "" +- +-#. Translators: Tooltip label for Retry button +-#: src/client/components/main-window-info-bar.vala:77 +-msgid "Retry sending queued messages" +-msgstr "" +- +-#. Translators: Info bar title for a generic application +-#. problem. +-#: src/client/components/main-window-info-bar.vala:84 +-msgid "Geary has encountered a problem" +-msgstr "" +- +-#. Translators: Info bar sub-title for a generic +-#. application problem. +-#: src/client/components/main-window-info-bar.vala:88 +-msgid "Please report the details if it persists." +-msgstr "" +- +-#. Translators: Button label for viewing technical details +-#. for a problem report. +-#: src/client/components/main-window-info-bar.vala:99 +-msgid "_Details" +-msgstr "_Λεπτομέρειες" +- +-#. Translators: Tooltip for viewing technical details for +-#. a problem report. +-#: src/client/components/main-window-info-bar.vala:102 +-msgid "View technical details about the error" +-msgstr "" +- +-#. Translators: Button label for retrying a server +-#. connection +-#: src/client/components/main-window-info-bar.vala:108 +-msgid "_Retry" +-msgstr "_Επανάληψη" +- + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1566,7 +1613,9 @@ msgstr "Σφάλμα κατά την αποθήκευση του μηνύματ + msgid "_OK" + msgstr "_Εντάξει" + +-#: src/client/components/stock.vala:19 ui/password-dialog.glade:196 ++#: src/client/components/stock.vala:19 ++#: src/client/plugin/mail-merge/mail-merge.vala:392 ++#: ui/password-dialog.glade:196 + msgid "_Cancel" + msgstr "_Ακύρωση" + +@@ -1586,15 +1635,17 @@ msgstr "_Κλείσιμο" + msgid "_Discard" + msgstr "Απόρρι_ψη" + +-#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:52 ++#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:42 + msgid "_Help" + msgstr "_Βοήθεια" + +-#: src/client/components/stock.vala:26 ui/components-attachment-pane-menus.ui:7 ++#: src/client/components/stock.vala:26 ++#: src/client/plugin/mail-merge/mail-merge.vala:391 ++#: ui/components-attachment-pane-menus.ui:7 + msgid "_Open" + msgstr "Άνοι_γμα" + +-#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:42 ++#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:32 + msgid "_Preferences" + msgstr "_Προτιμήσεις" + +@@ -1620,36 +1671,40 @@ msgstr "_Αποθήκευση" + msgid "_Keep" + msgstr "Δια_τήρηση" + ++#: src/client/composer/composer-editor.vala:675 ++msgid "Select Color" ++msgstr "Επιλογή χρώματος" ++ + #: src/client/composer/composer-link-popover.vala:139 + msgid "Link URL is not correctly formatted, e.g. http://example.com" + msgstr "" + + #: src/client/composer/composer-link-popover.vala:146 + msgid "Invalid link URL" +-msgstr "" ++msgstr "Μη έγκυρος σύνδεσμος URL" + + #: src/client/composer/composer-link-popover.vala:146 + msgid "Invalid email address" + msgstr "Μη έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου" + + #. / Translators: Title for an empty composer window +-#: src/client/composer/composer-widget.vala:30 ++#: src/client/composer/composer-widget.vala:32 + msgid "New Message" + msgstr "Νέο μήνυμα" + +-#: src/client/composer/composer-widget.vala:217 ++#: src/client/composer/composer-widget.vala:167 + msgid "Saved" + msgstr "Αποθηκεύτηκε" + +-#: src/client/composer/composer-widget.vala:218 ++#: src/client/composer/composer-widget.vala:168 + msgid "Saving" + msgstr "Αποθηκεύεται" + +-#: src/client/composer/composer-widget.vala:219 ++#: src/client/composer/composer-widget.vala:169 + msgid "Error saving" + msgstr "Σφάλμα κατά την αποθήκευση" + +-#: src/client/composer/composer-widget.vala:220 ++#: src/client/composer/composer-widget.vala:170 + msgid "Press Backspace to delete quote" + msgstr "Πατήστε το πλήκτρο Backspace για να διαγράψετε το απόσπασμα" + +@@ -1658,7 +1713,7 @@ msgstr "Πατήστε το πλήκτρο Backspace για να διαγράψ + #. checking, include all variants of each word. No spaces are + #. allowed. The words will be converted to lower case based on + #. locale and English versions included automatically. +-#: src/client/composer/composer-widget.vala:236 ++#: src/client/composer/composer-widget.vala:186 + msgid "" + "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" + "enclosing|encloses|enclosure|enclosures" +@@ -1669,7 +1724,7 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:843 ++#: src/client/composer/composer-widget.vala:862 + #, fuzzy + #| msgid "Do you want to discard this message?" + msgid "Do you want to keep or discard this draft message?" +@@ -1678,115 +1733,101 @@ msgstr "Θέλετε να απορρίψετε αυτό το μήνυμα;" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:869 ++#: src/client/composer/composer-widget.vala:888 + #, fuzzy + #| msgid "Do you want to discard this message?" + msgid "Do you want to discard this draft message?" + msgstr "Θέλετε να απορρίψετε αυτό το μήνυμα;" + +-#: src/client/composer/composer-widget.vala:1503 ++#: src/client/composer/composer-widget.vala:1440 + msgid "Send message with an empty subject and body?" + msgstr "Να αποσταλεί το μήνυμα με κενό θέμα και περιεχόμενο;" + +-#: src/client/composer/composer-widget.vala:1505 ++#: src/client/composer/composer-widget.vala:1442 + msgid "Send message with an empty subject?" + msgstr "Να αποσταλεί το μήνυμα με κενό θέμα;" + +-#: src/client/composer/composer-widget.vala:1507 ++#: src/client/composer/composer-widget.vala:1444 + msgid "Send message with an empty body?" + msgstr "Να αποσταλεί το μήνυμα με κενό περιεχόμενο;" + +-#: src/client/composer/composer-widget.vala:1516 ++#: src/client/composer/composer-widget.vala:1453 + msgid "Send message without an attachment?" + msgstr "Να αποσταλεί το μήνυμα χωρίς συνημμένο;" + +-#: src/client/composer/composer-widget.vala:1820 ++#: src/client/composer/composer-widget.vala:1772 + #, fuzzy, c-format + #| msgid "\"%s\" already attached for delivery." + msgid "“%s” already attached for delivery." + msgstr "Το αρχείο \"%s\" έχει ήδη επισυναφθεί για παράδοση." + +-#: src/client/composer/composer-widget.vala:1856 +-#: src/client/composer/composer-widget.vala:1906 +-#, fuzzy, c-format +-#| msgid "\"%s\" is an empty file." ++#: src/client/composer/composer-widget.vala:1804 ++#: src/client/composer/composer-widget.vala:1854 ++#, c-format + msgid "“%s” is an empty file." +-msgstr "Το \"%s\" είναι ένα άδειο αρχείο." ++msgstr "Το «%s» είναι ένα κενό αρχείο." + +-#: src/client/composer/composer-widget.vala:1894 +-#, fuzzy, c-format +-#| msgid "\"%s\" could not be found." ++#: src/client/composer/composer-widget.vala:1842 ++#, c-format + msgid "“%s” could not be found." +-msgstr "Το \"%s\" δεν ήταν δυνατό να βρεθεί." ++msgstr "Το «%s» δεν ήταν δυνατό να βρεθεί." + +-#: src/client/composer/composer-widget.vala:1900 +-#, fuzzy, c-format +-#| msgid "\"%s\" is a folder." ++#: src/client/composer/composer-widget.vala:1848 ++#, c-format + msgid "“%s” is a folder." +-msgstr "Το \"%s\" είναι ένας φάκελος." ++msgstr "Το «%s» είναι ένας φάκελος." + +-#: src/client/composer/composer-widget.vala:1919 +-#, fuzzy, c-format +-#| msgid "\"%s\" could not be opened for reading." ++#: src/client/composer/composer-widget.vala:1867 ++#, c-format + msgid "“%s” could not be opened for reading." +-msgstr "Το \"%s\" δεν ήταν δυνατό να ανοιχτεί για ανάγνωση." ++msgstr "Το «%s» δεν ήταν δυνατό να ανοιχτεί για ανάγνωση." + +-#: src/client/composer/composer-widget.vala:1927 ++#: src/client/composer/composer-widget.vala:1875 + msgid "Cannot add attachment" + msgstr "Δεν είναι δυνατή η προσθήκη συνημμένου" + ++#. Translators: This is the name of the file chooser filter ++#. when inserting an image in the composer. ++#: src/client/composer/composer-widget.vala:1946 ++msgid "Images" ++msgstr "Εικόνες" ++ + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:1984 +-#: src/client/conversation-viewer/conversation-email.vala:559 +-#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312 ++#: src/client/composer/composer-widget.vala:2010 ++#: src/client/conversation-viewer/conversation-email.vala:542 ++#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Προς:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:1990 +-#: src/client/conversation-viewer/conversation-email.vala:564 +-#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357 ++#: src/client/composer/composer-widget.vala:2016 ++#: src/client/conversation-viewer/conversation-email.vala:547 ++#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Κοινοποίηση:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:1996 +-#: src/client/conversation-viewer/conversation-email.vala:569 ++#: src/client/composer/composer-widget.vala:2022 ++#: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Κρυφή κοιν.:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2002 ++#: src/client/composer/composer-widget.vala:2028 + msgid "Reply-To: " + msgstr "Απάντηση σε: " + +-#: src/client/composer/composer-widget.vala:2254 +-msgid "Select Color" +-msgstr "Επιλογή χρώματος" +- + #. Displayed in the From dropdown to indicate an + #. "alternate email address" for an account. The first + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2440 ++#: src/client/composer/composer-widget.vala:2146 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s μέσω %2$s" + +-#. Composer label (with mnemonic underscore) for the account selector +-#. when choosing what address to send a message from. +-#: src/client/composer/composer-widget.vala:2496 +-msgid "_From:" +-msgstr "_Από:" +- +-#. Translators: This is the name of the file chooser filter +-#. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:2801 +-msgid "Images" +-msgstr "Εικόνες" +- + #: src/client/composer/spell-check-popover.vala:125 + msgid "Remove this language from the preferred list" + msgstr "Αφαίρεση αυτής της γλώσσας από την προτιμώμενη λίστα" +@@ -1800,55 +1841,51 @@ msgid "Search for more languages" + msgstr "Αναζήτηση για περισσότερες γλώσσες" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:335 +-#, fuzzy +-#| msgid "Move conversation" ++#: src/client/conversation-list/conversation-list-view.vala:339 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" +-msgstr[0] "Μετακίνηση συνομιλίας" +-msgstr[1] "Μετακίνηση συνομιλίας" ++msgstr[0] "Μετακίνηση συνομιλίας στα _απορρίματα" ++msgstr[1] "Μετακίνηση συνομιλιών στα _απορρίματα" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:347 +-#, fuzzy +-#| msgid "Delete conversation" ++#: src/client/conversation-list/conversation-list-view.vala:351 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" +-msgstr[0] "Διαγραφή συνομιλίας" +-msgstr[1] "Διαγραφή συνομιλίας" ++msgstr[0] "_Διαγραφή συνομιλίας" ++msgstr[1] "_Διαγραφή συνομιλιών" + +-#: src/client/conversation-list/conversation-list-view.vala:360 ++#: src/client/conversation-list/conversation-list-view.vala:364 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Σήμανση ως α_ναγνωσμένο" + +-#: src/client/conversation-list/conversation-list-view.vala:368 ++#: src/client/conversation-list/conversation-list-view.vala:372 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Σήμανση ως α_διάβαστο" + +-#: src/client/conversation-list/conversation-list-view.vala:376 ++#: src/client/conversation-list/conversation-list-view.vala:380 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "Κα_τάργηση αστεριού" + +-#: src/client/conversation-list/conversation-list-view.vala:383 ++#: src/client/conversation-list/conversation-list-view.vala:387 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "_Αστέρι" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:392 ++#: src/client/conversation-list/conversation-list-view.vala:396 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "_Απάντηση" + +-#: src/client/conversation-list/conversation-list-view.vala:398 ++#: src/client/conversation-list/conversation-list-view.vala:402 + msgid "R_eply All" + msgstr "Α_πάντηση σε όλους" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:404 ++#: src/client/conversation-list/conversation-list-view.vala:408 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Μπροστά" +@@ -1858,20 +1895,20 @@ msgid "Me" + msgstr "Εγώ" + + #. Translators: Human-readable version of the RFC 822 From header +-#: src/client/conversation-viewer/conversation-email.vala:554 +-#: src/client/util/util-email.vala:226 ++#: src/client/conversation-viewer/conversation-email.vala:537 ++#: src/client/util/util-email.vala:240 + msgid "From:" + msgstr "Από:" + + #. Translators: Human-readable version of the RFC 822 Date header +-#: src/client/conversation-viewer/conversation-email.vala:574 +-#: src/client/util/util-email.vala:231 ++#: src/client/conversation-viewer/conversation-email.vala:557 ++#: src/client/util/util-email.vala:245 + msgid "Date:" + msgstr "Ημερομηνία:" + + #. Translators: Human-readable version of the RFC 822 Subject header +-#: src/client/conversation-viewer/conversation-email.vala:584 +-#: src/client/util/util-email.vala:229 ++#: src/client/conversation-viewer/conversation-email.vala:567 ++#: src/client/util/util-email.vala:243 + msgid "Subject:" + msgstr "Θέμα:" + +@@ -1879,34 +1916,70 @@ msgstr "Θέμα:" + msgid "This email address may have been forged" + msgstr "" + ++#. Translators: Label text displayed when there are too ++#. many email addresses to be shown by default in an ++#. email's header, but they are all being shown anyway. ++#: src/client/conversation-viewer/conversation-message.vala:234 ++msgid "Show less" ++msgstr "Προβολή λιγότερων" ++ ++#. Translators: Label text displayed when there are ++#. too many email addresses to be shown by default in ++#. an email's header. The string substitution is the ++#. number of extra email to be shown. ++#: src/client/conversation-viewer/conversation-message.vala:260 ++#, c-format ++msgid "%d more…" ++msgstr "%d περισσότερα…" ++ + #. Compact headers. These are partially done here and partially + #. in load_contacts. + #. Translators: This is displayed in place of the from address + #. when the message has no from address. +-#: src/client/conversation-viewer/conversation-message.vala:439 ++#: src/client/conversation-viewer/conversation-message.vala:529 + msgid "No sender" + msgstr "Κανένας αποστολέας" + + #. Translators: This separates multiple 'from' + #. addresses in the compact header for a message. +-#: src/client/conversation-viewer/conversation-message.vala:831 ++#: src/client/conversation-viewer/conversation-message.vala:920 + msgid ", " + msgstr ", " + + #. Translators: This string is used as the HTML IMG ALT + #. attribute value when displaying an inline image in an email + #. that did not specify a file name. E.g. Imagemailing list " +-"or attach to a new bug report." ++"one of the contact " ++"channels or attach to a new bug report." + msgstr "" + +-#: ui/components-inspector-error-view.ui:49 ++#: ui/components-inspector-error-view.ui:47 + msgid "Details:" + msgstr "Λεπτομέρειες:" + + #. Tooltip for inspector button +-#: ui/components-inspector.ui:20 ++#. Tooltip for problem report button ++#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:24 ++msgid "Search for matching log entries" ++msgstr "" ++ ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:35 + msgid "Toggle appending new log entries" + msgstr "" + + #. Tooltip for inspector button +-#. Tooltip for problem report button +-#: ui/components-inspector.ui:37 ui/problem-details-dialog.ui:19 +-msgid "Search for matching log entries" ++#: ui/components-inspector.ui:55 ++msgid "Add a marker entry to the log" + msgstr "" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:63 ui/problem-details-dialog.ui:46 ++#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:51 + msgid "Save logs entries and details" + msgstr "" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:84 ui/problem-details-dialog.ui:62 ++#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:67 + msgid "Copy to clipboard" + msgstr "Αντιγραφή στο πρόχειρο" + ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:121 ++msgid "Clears all log entries" ++msgstr "Εκκαθάριση όλων των εγγραφών του ιστορικού" ++ + #: ui/conversation-contact-popover.ui:146 + msgid "New Conversation…" + msgstr "Νέα συνομιλίας…" +@@ -3160,29 +3353,6 @@ msgstr "" + msgid "Mark this message as not starred" + msgstr "" + +-#: ui/conversation-email.ui:124 +-msgid "Edit Draft" +-msgstr "Επεξεργασία πρόχειρου μηνύματος" +- +-#: ui/conversation-email.ui:151 +-msgid "Draft message" +-msgstr "Πρόχειρο μήνυμα" +- +-#: ui/conversation-email.ui:167 +-msgid "This message has not yet been sent." +-msgstr "Αυτό το μήνυμα δεν έχει αποσταλεί ακόμα." +- +-#: ui/conversation-email.ui:213 +-msgid "Message not saved" +-msgstr "Το μήνυμα δεν αποθηκεύτηκε" +- +-#: ui/conversation-email.ui:229 +-#, fuzzy +-#| msgid "This message was sent successfully, but could not be saved to %s." +-msgid "This message was sent, but has not been saved to your account." +-msgstr "" +-"Αυτό το μήνυμα στάλθηκε με επιτυχία, αλλά δεν μπόρεσε να αποθηκευτεί στο %s." +- + #. Translators: Menu item to reply to a specific message. + #: ui/conversation-email-menus.ui:15 + msgid "Reply to _All" +@@ -3248,32 +3418,24 @@ msgid "If unsure, contact the sender and ask before continuing." + msgstr "" + + #: ui/conversation-message-menus.ui:7 +-#, fuzzy +-#| msgid "_Open" + msgid "_Open Link" +-msgstr "Άνοι_γμα" ++msgstr "Άν_οιγμα συνδέσμου" + + #: ui/conversation-message-menus.ui:11 + msgid "Copy Link _Address" + msgstr "Αντιγραφή _διεύθυνσης συνδέσμου" + + #: ui/conversation-message-menus.ui:17 +-#, fuzzy +-#| msgid "Move conversation" + msgid "_New Conversation…" +-msgstr "Μετακίνηση συνομιλίας" ++msgstr "Νέα _συζήτηση…" + + #: ui/conversation-message-menus.ui:21 +-#, fuzzy +-#| msgid "Copy _Email Address" + msgid "Copy Email _Address" +-msgstr "Αντιγραφή _διεύθυνσης ηλεκτρονικού ταχυδρομείου" ++msgstr "Αντιγραφή _διεύθυνσης αλληλογραφίας" + + #: ui/conversation-message-menus.ui:27 +-#, fuzzy +-#| msgid "_Save Image As..." + msgid "Save _Image As…" +-msgstr "Αποθήκευ_ση εικόνας ως..." ++msgstr "Αποθήκευση _εικόνας ως…" + + #: ui/conversation-message-menus.ui:33 + msgid "_Select All" +@@ -3289,7 +3451,7 @@ msgstr "1/1/1970\t" + + #: ui/conversation-message.ui:102 + msgid "Preview body text." +-msgstr "" ++msgstr "Προεπισκόπηση κειμένου σώματος." + + #: ui/conversation-message.ui:202 + msgid "Sent by:" +@@ -3303,22 +3465,6 @@ msgstr "Απάντηση σε:" + msgid "Subject" + msgstr "Θέμα" + +-#: ui/conversation-message.ui:501 +-msgid "Show Images" +-msgstr "Προβολή εικόνων" +- +-#: ui/conversation-message.ui:514 +-msgid "Always Show From Sender" +-msgstr "Να εμφανίζεται πάντοτε ο αποστολέας" +- +-#: ui/conversation-message.ui:542 +-msgid "Remote images not shown" +-msgstr "Δεν εμφανίζονται οι απομακρυσμένες εικόνες" +- +-#: ui/conversation-message.ui:559 +-msgid "Only show remote images from senders you trust." +-msgstr "" +- + #: ui/conversation-viewer.ui:60 + msgid "Find in conversation" + msgstr "Εύρεση στην συνομιλία" +@@ -3355,7 +3501,7 @@ msgstr "ετικέτα" + msgid "Conversation Shortcuts" + msgstr "Συντομεύσεις συνομιλίας" + +-#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:355 ++#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:377 + msgctxt "shortcut window" + msgid "Actions" + msgstr "Ενέργειες" +@@ -3370,17 +3516,17 @@ msgctxt "shortcut window" + msgid "Reply to sender" + msgstr "Απάντηση στον αποστολέα" + +-#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:269 ++#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:281 + msgctxt "shortcut window" + msgid "Reply to all" + msgstr "Απάντηση σε όλους" + +-#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:276 ++#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:288 + msgctxt "shortcut window" + msgid "Forward" + msgstr "Προώθηση" + +-#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:283 ++#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:295 + #, fuzzy + #| msgctxt "shortcut window" + #| msgid "Mark read" +@@ -3388,22 +3534,22 @@ msgctxt "shortcut window" + msgid "Un-mark/mark read" + msgstr "Σήμανση ως ανεγνωσμένου" + +-#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:290 ++#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:302 + msgctxt "shortcut window" + msgid "Mark/un-mark starred" + msgstr "" + +-#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:297 ++#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:309 + msgctxt "shortcut window" + msgid "Archive conversations" + msgstr "Αρχειοθέτηση συνομιλιών" + +-#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:304 ++#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:326 + msgctxt "shortcut window" + msgid "Move conversations" + msgstr "Μετακίνηση συνομιλιών" + +-#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:311 ++#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:333 + #, fuzzy + #| msgid "Move conversation" + msgctxt "shortcut window" +@@ -3417,14 +3563,14 @@ msgctxt "shortcut window" + msgid "Trash conversations" + msgstr "Σήμανση συνομιλιών" + +-#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:318 ++#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:340 + #, fuzzy + #| msgid "Mark conversations" + msgctxt "shortcut window" + msgid "Junk conversations" + msgstr "Σήμανση συνομιλιών" + +-#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:325 ++#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:347 + msgctxt "shortcut window" + msgid "Delete conversations" + msgstr "Διαγραφή συνομιλιών" +@@ -3439,7 +3585,7 @@ msgctxt "shortcut window" + msgid "Search for conversations" + msgstr "Αναζήτηση για συνομιλίες" + +-#: ui/gtk/help-overlay.ui:115 ++#: ui/gtk/help-overlay.ui:115 ui/gtk/help-overlay.ui:354 + msgctxt "shortcut window" + msgid "Find in current conversation" + msgstr "Εύρεση στην τρέχουσα συνομιλία" +@@ -3479,7 +3625,7 @@ msgctxt "shortcut window" + msgid "Reset zoom" + msgstr "Επαναφορά εστίασης" + +-#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:375 ++#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:404 + msgctxt "shortcut window" + msgid "General" + msgstr "Γενικά" +@@ -3533,104 +3679,110 @@ msgctxt "shortcut window" + msgid "Focus next/previous message" + msgstr "_Αυτόματη επιλογή επόμενου μηνύματας" + +-#: ui/gtk/help-overlay.ui:258 ++#: ui/gtk/help-overlay.ui:260 ++#, fuzzy ++#| msgid "_Keyboard Shortcuts" ++msgid "Single-key Shortcuts" ++msgstr "_Συντομεύσεις πληκτρολογίου" ++ ++#: ui/gtk/help-overlay.ui:265 + msgctxt "shortcut window" +-msgid "Single-key shortcuts" ++msgid "Single-key shortcuts (if enabled)" + msgstr "" + +-#: ui/gtk/help-overlay.ui:262 ++#: ui/gtk/help-overlay.ui:274 + msgctxt "shortcut window" + msgid "Reply to sender " + msgstr "Απάντηση στον αποστολέα " + +-#: ui/gtk/help-overlay.ui:332 +-#, fuzzy +-#| msgid "Add label to conversation" +-msgctxt "shortcut window" +-msgid "Find in current conversations" +-msgstr "Προσθήκη ετικέτας στην συνομιλία" +- +-#: ui/gtk/help-overlay.ui:339 ++#: ui/gtk/help-overlay.ui:361 + #, fuzzy + #| msgid "Delete conversation" + msgctxt "shortcut window" + msgid "Select next/previous conversations" + msgstr "Διαγραφή συνομιλίας" + +-#: ui/gtk/help-overlay.ui:351 ++#: ui/gtk/help-overlay.ui:373 + #, fuzzy + #| msgid "Composer" + msgid "Composer Shortcuts" + msgstr "Συνθέτης" + +-#: ui/gtk/help-overlay.ui:359 ++#: ui/gtk/help-overlay.ui:381 + msgctxt "shortcut window" + msgid "Send" + msgstr "Αποστολή" + +-#: ui/gtk/help-overlay.ui:366 ++#: ui/gtk/help-overlay.ui:388 + msgctxt "shortcut window" + msgid "Add attachment" + msgstr "Προσθήκη συνημμένου" + +-#: ui/gtk/help-overlay.ui:379 ++#: ui/gtk/help-overlay.ui:395 ++#, fuzzy ++#| msgid "Use %s to open a new composer window" ++msgctxt "shortcut window" ++msgid "Detach the composer" ++msgstr "Χρησιμοποιήστε το % s για να ανοίξετε ένα νέο παράθυρο σύνθεσης" ++ ++#: ui/gtk/help-overlay.ui:408 + #, fuzzy + #| msgid "Use %s to open a new composer window" + msgctxt "shortcut window" + msgid "Close composer window" + msgstr "Χρησιμοποιήστε το % s για να ανοίξετε ένα νέο παράθυρο σύνθεσης" + +-#: ui/gtk/help-overlay.ui:386 ++#: ui/gtk/help-overlay.ui:415 + #, fuzzy + #| msgid "Use %s to open a new composer window" + msgctxt "shortcut window" + msgid "Detach composer window" + msgstr "Χρησιμοποιήστε το % s για να ανοίξετε ένα νέο παράθυρο σύνθεσης" + +-#: ui/gtk/help-overlay.ui:393 ++#: ui/gtk/help-overlay.ui:422 + msgctxt "shortcut window" + msgid "Editing" + msgstr "Eπεξεργασία" + +-#: ui/gtk/help-overlay.ui:398 ++#: ui/gtk/help-overlay.ui:427 + msgctxt "shortcut window" + msgid "Move selection to the clipboard" +-msgstr "" ++msgstr "Μετακίνηση επιλογής στο πρόχειρο" + +-#: ui/gtk/help-overlay.ui:405 ++#: ui/gtk/help-overlay.ui:434 + #, fuzzy + #| msgid "Copy to Clipboard" + msgctxt "shortcut window" + msgid "Copy selection to clipboard" + msgstr "Αντιγραφή στο πρόχειρο" + +-#: ui/gtk/help-overlay.ui:412 ++#: ui/gtk/help-overlay.ui:441 + msgctxt "shortcut window" + msgid "Paste from the clipboard" +-msgstr "" ++msgstr "Επικόλληση από το πρόχειρο" + +-#: ui/gtk/help-overlay.ui:419 ++#: ui/gtk/help-overlay.ui:448 + #, fuzzy + #| msgid "Quote text (Ctrl+])" + msgctxt "shortcut window" + msgid "Quote text" + msgstr "Κείμενο παραπομπής (Ctrl+])" + +-#: ui/gtk/help-overlay.ui:426 ++#: ui/gtk/help-overlay.ui:455 + #, fuzzy + #| msgid "Unquote text (Ctrl+[)" + msgctxt "shortcut window" + msgid "Unquote text" + msgstr "Κείμενο αφαίρεσης παραπομπής (Ctrl+[)" + +-#: ui/gtk/help-overlay.ui:435 ++#: ui/gtk/help-overlay.ui:464 + #, fuzzy + #| msgid "_Rich Text" + msgctxt "shortcut window" + msgid "Rich text editing" + msgstr "Κείμενο _πλούσιας μορφής" + +-#: ui/gtk/help-overlay.ui:439 ++#: ui/gtk/help-overlay.ui:468 + #, fuzzy + #| msgctxt "Clipboard paste as plain text" + #| msgid "Paste _Without Formatting" +@@ -3638,39 +3790,39 @@ msgctxt "shortcut window" + msgid "Paste without formatting" + msgstr "Επικόλληση _χωρίς μορφοποίηση" + +-#: ui/gtk/help-overlay.ui:446 ++#: ui/gtk/help-overlay.ui:475 + msgctxt "shortcut window" + msgid "Bold text" + msgstr "Κείμενο με έντονη γραφή" + +-#: ui/gtk/help-overlay.ui:453 ++#: ui/gtk/help-overlay.ui:482 + msgctxt "shortcut window" + msgid "Italicize text" + msgstr "Κείμενο με πλάγια γραφή" + +-#: ui/gtk/help-overlay.ui:460 ++#: ui/gtk/help-overlay.ui:489 + msgctxt "shortcut window" + msgid "Underline text" + msgstr "Υπογραμμισμένο κείμενο" + +-#: ui/gtk/help-overlay.ui:467 ++#: ui/gtk/help-overlay.ui:496 + msgctxt "shortcut window" + msgid "Strike text" + msgstr "Επιγράμμιση κειμένου" + +-#: ui/gtk/help-overlay.ui:474 ++#: ui/gtk/help-overlay.ui:503 + msgctxt "shortcut window" + msgid "Remove formatting" + msgstr "Κατάργηση μορφοποίησης" + +-#: ui/gtk/help-overlay.ui:481 ++#: ui/gtk/help-overlay.ui:510 + #, fuzzy + #| msgid "Underline (Ctrl+U)" + msgctxt "shortcut window" + msgid "Insert an image" + msgstr "Υπογραμμισμένη γραφή (Ctrl+U)" + +-#: ui/gtk/help-overlay.ui:488 ++#: ui/gtk/help-overlay.ui:517 + msgctxt "shortcut window" + msgid "Insert a link" + msgstr "Εισαγωγή συνδέσμου" +@@ -3709,26 +3861,18 @@ msgstr "_Αρχείο" + #: ui/main-toolbar-menus.ui:21 + #, fuzzy + #| msgid "Toggle search bar" +-msgid "Toggle as S_pam" ++msgid "Toggle as _Junk" + msgstr "Εναλλαγή γραμμή αναζήτησης" + + #: ui/main-toolbar-menus.ui:28 +-msgid "Empty _Spam…" +-msgstr "" +- +-#: ui/main-toolbar-menus.ui:32 +-msgid "Empty _Trash…" +-msgstr "" +- +-#: ui/main-toolbar-menus.ui:38 + msgid "_Accounts" + msgstr "_Λογαριασμοί" + +-#: ui/main-toolbar-menus.ui:46 ++#: ui/main-toolbar-menus.ui:36 + msgid "_Keyboard Shortcuts" + msgstr "_Συντομεύσεις πληκτρολογίου" + +-#: ui/main-toolbar-menus.ui:57 ++#: ui/main-toolbar-menus.ui:47 + msgid "_About Geary" + msgstr "_Περί του Geary" + +@@ -3752,16 +3896,37 @@ msgstr "_Πιστοποίηση" + msgid "Geary update in progress…" + msgstr "Η αναβάθμιση του Geary είναι σε εξέλιξη…" + ++#~ msgid "Log periodic activity" ++#~ msgstr "Καταγραφή περιοδικής δραστηριότητας" ++ ++#, fuzzy ++#~| msgid "Log network serialization" ++#~ msgid "Log IMAP network serialization" ++#~ msgstr "Καταγραφή δραματοποίησης δικτύου" ++ ++#~ msgid "Sent Mail" ++#~ msgstr "Απεσταλμένα" ++ ++#~ msgid "Spam" ++#~ msgstr "Ανεπιθύμητα" ++ ++#~ msgid "From" ++#~ msgstr "Από" ++ ++#~ msgid "Edit Draft" ++#~ msgstr "Επεξεργασία πρόχειρου μηνύματος" ++ ++#, fuzzy ++#~| msgid "Add label to conversation" ++#~ msgctxt "shortcut window" ++#~ msgid "Find in current conversations" ++#~ msgstr "Προσθήκη ετικέτας στην συνομιλία" ++ + #, fuzzy + #~| msgid "_Play notification sounds" + #~ msgid "Enable notification sounds" + #~ msgstr "Α_ναπαραγωγή ήχων ειδοποίησης" + +-#, fuzzy +-#~| msgid "Show _notifications for new mail" +-#~ msgid "Show notifications for new mail" +-#~ msgstr "Εμφάνιση ειδοποιήσεων για _νέα μηνύματα" +- + #, fuzzy + #~| msgid "Save dra_fts on server" + #~ msgid "Save drafts on server" +@@ -3922,11 +4087,6 @@ msgstr "Η αναβάθμιση του Geary είναι σε εξέλιξη…" + #~ msgid "Mark unread" + #~ msgstr "Σήμανση ως αδιάβαστο" + +-#~| msgid "_Star" +-#~ msgctxt "shortcut window" +-#~ msgid "Star" +-#~ msgstr "Επισήμανση με αστέρι" +- + #~| msgid "U_nstar" + #~ msgctxt "shortcut window" + #~ msgid "Unstar" +@@ -3964,9 +4124,6 @@ msgstr "Η αναβάθμιση του Geary είναι σε εξέλιξη…" + #~ msgid "Show _notifications for new mail" + #~ msgstr "Εμφάνιση ειδοποιήσεων για _νέα μηνύματα" + +-#~ msgid "Preferences" +-#~ msgstr "Προτιμήσεις" +- + #~ msgid "Mail Client" + #~ msgstr "Πελάτης αλληλογραφίας" + +@@ -4069,9 +4226,6 @@ msgstr "Η αναβάθμιση του Geary είναι σε εξέλιξη…" + #~ msgid "Forward (Ctrl+L, F)" + #~ msgstr "Προώθηση (Ctrl+F, F)" + +-#~ msgid "Empty" +-#~ msgstr "Άδειασμα" +- + #~ msgid "Empty Spam or Trash folders" + #~ msgstr "Άδειασμα φακέλων ανεπιθύμητων ή απορριμμάτων" + +@@ -4165,9 +4319,6 @@ msgstr "Η αναβάθμιση του Geary είναι σε εξέλιξη…" + #~ msgstr[0] "%i ταίριασμα (από την αρχή)" + #~ msgstr[1] "%i ταιριάσματα (από την αρχή)" + +-#~ msgid "not found" +-#~ msgstr "δεν βρέθηκε" +- + #~ msgid "To: " + #~ msgstr "Προς:" + +-- +2.29.2 + diff --git a/mail-client/geary/files/0045-Drop-saving-the-paned-width.patch b/mail-client/geary/files/0045-Drop-saving-the-paned-width.patch new file mode 100644 index 0000000..ee0e8f5 --- /dev/null +++ b/mail-client/geary/files/0045-Drop-saving-the-paned-width.patch @@ -0,0 +1,172 @@ +From a1f74d24ff11869f108dc42016a648ce45999b70 Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Thu, 16 Jan 2020 13:28:13 +0100 +Subject: [PATCH 045/124] Drop saving the paned width + +This is needed to replace GtkPaned by HdyLeaflet. This breaks syncing +the size of the headerbar with the rest of the window, it will be fixed +in a later commit. +--- + desktop/org.gnome.Geary.gschema.xml | 24 ------------------- + .../application-configuration.vala | 22 ----------------- + .../application/application-main-window.vala | 17 ------------- + src/client/components/main-toolbar.vala | 9 ------- + 4 files changed, 72 deletions(-) + +diff --git a/desktop/org.gnome.Geary.gschema.xml b/desktop/org.gnome.Geary.gschema.xml +index bbbadc36..9850dffd 100644 +--- a/desktop/org.gnome.Geary.gschema.xml ++++ b/desktop/org.gnome.Geary.gschema.xml +@@ -21,24 +21,6 @@ + The last recorded height of the application window. + + +- +- 100 +- Position of folder list pane +- Position of the folder list Paned grabber. +- +- +- +- -1 +- Position of folder list pane when horizontal +- Position of the folder list Paned grabber in the horizontal orientation. +- +- +- +- 200 +- Position of folder list pane when vertical +- Position of the folder list Paned grabber in the vertical orientation. +- +- + + true + Orientation of the folder list pane +@@ -51,12 +33,6 @@ + True if the formatting toolbar in the composer is shown. + + +- +- 250 +- Position of message list pane +- Position of the message list Paned grabber. +- +- + + true + Autoselect next message +diff --git a/src/client/application/application-configuration.vala b/src/client/application/application-configuration.vala +index 00c359c9..51a11bbf 100644 +--- a/src/client/application/application-configuration.vala ++++ b/src/client/application/application-configuration.vala +@@ -20,11 +20,7 @@ public class Application.Configuration : Geary.BaseObject { + public const string CONVERSATION_VIEWER_ZOOM_KEY = "conversation-viewer-zoom"; + public const string DISPLAY_PREVIEW_KEY = "display-preview"; + public const string FOLDER_LIST_PANE_HORIZONTAL_KEY = "folder-list-pane-horizontal"; +- public const string FOLDER_LIST_PANE_POSITION_HORIZONTAL_KEY = "folder-list-pane-position-horizontal"; +- public const string FOLDER_LIST_PANE_POSITION_KEY = "folder-list-pane-position"; +- public const string FOLDER_LIST_PANE_POSITION_VERTICAL_KEY = "folder-list-pane-position-vertical"; + public const string FORMATTING_TOOLBAR_VISIBLE = "formatting-toolbar-visible"; +- public const string MESSAGES_PANE_POSITION_KEY = "messages-pane-position"; + public const string OPTIONAL_PLUGINS = "optional-plugins"; + public const string SEARCH_STRATEGY_KEY = "search-strategy"; + public const string SINGLE_KEY_SHORTCUTS = "single-key-shortcuts"; +@@ -90,19 +86,6 @@ public class Application.Configuration : Geary.BaseObject { + get { return settings.get_boolean(WINDOW_MAXIMIZE_KEY); } + } + +- public int folder_list_pane_position_old { +- get { return settings.get_int(FOLDER_LIST_PANE_POSITION_KEY); } +- } +- +- public int folder_list_pane_position_horizontal { +- get { return settings.get_int(FOLDER_LIST_PANE_POSITION_HORIZONTAL_KEY); } +- set { settings.set_int(FOLDER_LIST_PANE_POSITION_HORIZONTAL_KEY, value); } +- } +- +- public int folder_list_pane_position_vertical { +- get { return settings.get_int(FOLDER_LIST_PANE_POSITION_VERTICAL_KEY); } +- } +- + public bool folder_list_pane_horizontal { + get { return settings.get_boolean(FOLDER_LIST_PANE_HORIZONTAL_KEY); } + } +@@ -112,11 +95,6 @@ public class Application.Configuration : Geary.BaseObject { + set { settings.set_boolean(FORMATTING_TOOLBAR_VISIBLE, value); } + } + +- public int messages_pane_position { +- get { return settings.get_int(MESSAGES_PANE_POSITION_KEY); } +- set { settings.set_int(MESSAGES_PANE_POSITION_KEY, value); } +- } +- + public bool autoselect { + get { return settings.get_boolean(AUTOSELECT_KEY); } + } +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 47749019..48f8bae6 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -1130,15 +1130,10 @@ public class Application.MainWindow : + // This code both loads AND saves the pane positions with live updating. This is more + // resilient against crashes because the value in dconf changes *immediately*, and + // stays saved in the event of a crash. +- config.bind(Configuration.MESSAGES_PANE_POSITION_KEY, this.conversations_paned, "position"); + config.bind(Configuration.WINDOW_WIDTH_KEY, this, "window-width"); + config.bind(Configuration.WINDOW_HEIGHT_KEY, this, "window-height"); + config.bind(Configuration.WINDOW_MAXIMIZE_KEY, this, "window-maximized"); + // Update to layout +- if (config.folder_list_pane_position_horizontal == -1) { +- config.folder_list_pane_position_horizontal = config.folder_list_pane_position_old; +- config.messages_pane_position += config.folder_list_pane_position_old; +- } + config.settings.changed[ + Configuration.FOLDER_LIST_PANE_HORIZONTAL_KEY + ].connect(on_change_orientation); +@@ -1655,23 +1650,11 @@ public class Application.MainWindow : + this.folder_paned.orientation = horizontal ? Gtk.Orientation.HORIZONTAL : + Gtk.Orientation.VERTICAL; + +- int folder_list_width = +- this.application.config.folder_list_pane_position_horizontal; + if (horizontal) { +- if (!initial) +- this.conversations_paned.position += folder_list_width; + this.folder_box.pack_start(status_bar, false, false); + } else { +- if (!initial) +- this.conversations_paned.position -= folder_list_width; + this.conversation_list_box.pack_start(status_bar, false, false); + } +- +- this.application.config.bind( +- horizontal +- ? Configuration.FOLDER_LIST_PANE_POSITION_HORIZONTAL_KEY +- : Configuration.FOLDER_LIST_PANE_POSITION_VERTICAL_KEY, +- this.folder_paned, "position"); + } + + private void update_headerbar() { +diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala +index 31f87df6..aa263253 100644 +--- a/src/client/components/main-toolbar.vala ++++ b/src/client/components/main-toolbar.vala +@@ -59,15 +59,6 @@ public class MainToolbar : Gtk.Box { + + + public MainToolbar(Application.Configuration config) { +- // Sync headerbar width with left pane +- config.bind( +- Application.Configuration.MESSAGES_PANE_POSITION_KEY, +- this, +- "left-pane-width", +- SettingsBindFlags.GET +- ); +- this.bind_property("left-pane-width", this.folder_header, "width-request", BindingFlags.SYNC_CREATE); +- + if (config.desktop_environment != UNITY) { + this.bind_property("account", this.folder_header, "title", BindingFlags.SYNC_CREATE); + this.bind_property("folder", this.folder_header, "subtitle", BindingFlags.SYNC_CREATE); +-- +2.29.2 + diff --git a/mail-client/geary/files/0046-Drop-the-2-panes-mode.patch b/mail-client/geary/files/0046-Drop-the-2-panes-mode.patch new file mode 100644 index 0000000..9a3a339 --- /dev/null +++ b/mail-client/geary/files/0046-Drop-the-2-panes-mode.patch @@ -0,0 +1,150 @@ +From fb311e1c822fb41782c7ff07525c77732a52a971 Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Thu, 16 Jan 2020 13:17:58 +0100 +Subject: [PATCH 046/124] Drop the 2-panes mode + +This won't be needed to save horizontal space when using HdyLeaflet, and +it would make porting to it harder. +--- + desktop/org.gnome.Geary.gschema.xml | 6 ----- + .../application-configuration.vala | 5 ---- + .../application/application-main-window.vala | 27 ++----------------- + .../components-preferences-window.vala | 16 ----------- + 4 files changed, 2 insertions(+), 52 deletions(-) + +diff --git a/desktop/org.gnome.Geary.gschema.xml b/desktop/org.gnome.Geary.gschema.xml +index 9850dffd..89354dc2 100644 +--- a/desktop/org.gnome.Geary.gschema.xml ++++ b/desktop/org.gnome.Geary.gschema.xml +@@ -21,12 +21,6 @@ + The last recorded height of the application window. + + +- +- true +- Orientation of the folder list pane +- True if the folder list Paned is in the horizontal orientation. +- +- + + false + Show/hide formatting toolbar +diff --git a/src/client/application/application-configuration.vala b/src/client/application/application-configuration.vala +index 51a11bbf..48542df6 100644 +--- a/src/client/application/application-configuration.vala ++++ b/src/client/application/application-configuration.vala +@@ -19,7 +19,6 @@ public class Application.Configuration : Geary.BaseObject { + public const string COMPOSE_AS_HTML_KEY = "compose-as-html"; + public const string CONVERSATION_VIEWER_ZOOM_KEY = "conversation-viewer-zoom"; + public const string DISPLAY_PREVIEW_KEY = "display-preview"; +- public const string FOLDER_LIST_PANE_HORIZONTAL_KEY = "folder-list-pane-horizontal"; + public const string FORMATTING_TOOLBAR_VISIBLE = "formatting-toolbar-visible"; + public const string OPTIONAL_PLUGINS = "optional-plugins"; + public const string SEARCH_STRATEGY_KEY = "search-strategy"; +@@ -86,10 +85,6 @@ public class Application.Configuration : Geary.BaseObject { + get { return settings.get_boolean(WINDOW_MAXIMIZE_KEY); } + } + +- public bool folder_list_pane_horizontal { +- get { return settings.get_boolean(FOLDER_LIST_PANE_HORIZONTAL_KEY); } +- } +- + public bool formatting_toolbar_visible { + get { return settings.get_boolean(FORMATTING_TOOLBAR_VISIBLE); } + set { settings.set_boolean(FORMATTING_TOOLBAR_VISIBLE, value); } +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 48f8bae6..0bec6614 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -511,7 +511,8 @@ public class Application.MainWindow : + }); + + setup_layout(application.config); +- on_change_orientation(); ++ this.folder_paned.orientation = Gtk.Orientation.HORIZONTAL; ++ this.folder_box.pack_start(status_bar, false, false); + + update_command_actions(); + update_conversation_actions(NONE); +@@ -1133,10 +1134,6 @@ public class Application.MainWindow : + config.bind(Configuration.WINDOW_WIDTH_KEY, this, "window-width"); + config.bind(Configuration.WINDOW_HEIGHT_KEY, this, "window-height"); + config.bind(Configuration.WINDOW_MAXIMIZE_KEY, this, "window-maximized"); +- // Update to layout +- config.settings.changed[ +- Configuration.FOLDER_LIST_PANE_HORIZONTAL_KEY +- ].connect(on_change_orientation); + } + + private void restore_saved_window_state() { +@@ -1637,26 +1634,6 @@ public class Application.MainWindow : + } + } + +- private void on_change_orientation() { +- bool horizontal = this.application.config.folder_list_pane_horizontal; +- bool initial = true; +- +- if (this.status_bar.parent != null) { +- this.status_bar.parent.remove(status_bar); +- initial = false; +- } +- +- GLib.Settings.unbind(this.folder_paned, "position"); +- this.folder_paned.orientation = horizontal ? Gtk.Orientation.HORIZONTAL : +- Gtk.Orientation.VERTICAL; +- +- if (horizontal) { +- this.folder_box.pack_start(status_bar, false, false); +- } else { +- this.conversation_list_box.pack_start(status_bar, false, false); +- } +- } +- + private void update_headerbar() { + update_title(); + if (this.selected_folder != null) { +diff --git a/src/client/components/components-preferences-window.vala b/src/client/components/components-preferences-window.vala +index b1bdfd7b..ea978a3a 100644 +--- a/src/client/components/components-preferences-window.vala ++++ b/src/client/components/components-preferences-window.vala +@@ -136,16 +136,6 @@ public class Components.PreferencesWindow : Hdy.PreferencesWindow { + display_preview_row.activatable_widget = display_preview; + display_preview_row.add(display_preview); + +- var three_pane_view = new Gtk.Switch(); +- three_pane_view.valign = CENTER; +- +- var three_pane_view_row = new Hdy.ActionRow(); +- /// Translators: Preferences label +- three_pane_view_row.title = _("Use _three pane view"); +- three_pane_view_row.use_underline = true; +- three_pane_view_row.activatable_widget = three_pane_view; +- three_pane_view_row.add(three_pane_view); +- + var single_key_shortucts = new Gtk.Switch(); + single_key_shortucts.valign = CENTER; + +@@ -180,7 +170,6 @@ public class Components.PreferencesWindow : Hdy.PreferencesWindow { + //group.description = _("General application preferences"); + group.add(autoselect_row); + group.add(display_preview_row); +- group.add(three_pane_view_row); + group.add(single_key_shortucts_row); + group.add(startup_notifications_row); + +@@ -210,11 +199,6 @@ public class Components.PreferencesWindow : Hdy.PreferencesWindow { + display_preview, + "state" + ); +- config.bind( +- Application.Configuration.FOLDER_LIST_PANE_HORIZONTAL_KEY, +- three_pane_view, +- "state" +- ); + config.bind( + Application.Configuration.SINGLE_KEY_SHORTCUTS, + single_key_shortucts, +-- +2.29.2 + diff --git a/mail-client/geary/files/0047-application-main-window-Move-the-conversations-searc.patch b/mail-client/geary/files/0047-application-main-window-Move-the-conversations-searc.patch new file mode 100644 index 0000000..d5e07ce --- /dev/null +++ b/mail-client/geary/files/0047-application-main-window-Move-the-conversations-searc.patch @@ -0,0 +1,186 @@ +From 850efb72380b3e2adc9f29af45a16bc1bd6e884b Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Fri, 17 Jan 2020 18:51:39 +0100 +Subject: [PATCH 047/124] application-main-window: Move the conversations + searchbar + +Move it at above the conversations but not above the folders. This is +needed to properly split the 3 panes. +--- + .../application/application-main-window.vala | 4 +- + ui/application-main-window.ui | 105 +++++++----------- + 2 files changed, 44 insertions(+), 65 deletions(-) + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 0bec6614..43289e33 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -317,8 +317,6 @@ public class Application.MainWindow : + [GtkChild] + private Gtk.Box main_layout; + [GtkChild] +- private Gtk.Box search_bar_box; +- [GtkChild] + private Gtk.Paned folder_paned; + [GtkChild] + private Gtk.Paned conversations_paned; +@@ -1210,7 +1208,7 @@ public class Application.MainWindow : + // Search bar + this.search_bar = new SearchBar(this.application.engine); + this.search_bar.search_text_changed.connect(on_search); +- this.search_bar_box.pack_start(this.search_bar, false, false, 0); ++ this.conversation_list_box.pack_start(this.search_bar, false, false, 0); + + // Folder list + this.folder_list.folder_selected.connect(on_folder_selected); +diff --git a/ui/application-main-window.ui b/ui/application-main-window.ui +index f429a5ee..4a948294 100644 +--- a/ui/application-main-window.ui ++++ b/ui/application-main-window.ui +@@ -28,100 +28,81 @@ + True + True + +- ++ + True +- False +- vertical ++ True + +- ++ + True +- True ++ False ++ vertical + +- ++ + True + False +- vertical ++ 0 ++ in + +- ++ ++ 100 + True +- False +- 0 +- in +- +- +- 100 +- True +- True +- never +- +- +- ++ True ++ never + +- +- True +- True +- 0 +- + ++ + + +- False +- False ++ True ++ True ++ 0 + + ++ ++ ++ False ++ False ++ ++ ++ ++ ++ True ++ False ++ vertical + +- ++ + True + False +- vertical ++ 0 ++ in + +- ++ ++ 250 + True +- False +- 0 +- in +- +- +- 250 +- True +- True +- +- +- ++ True + +- +- True +- True +- end +- 0 +- + + + + +- True +- False ++ True ++ True ++ end ++ 0 + + +- + + +- True +- True +- end +- 0 ++ True ++ False + + + + + +-- +2.29.2 + diff --git a/mail-client/geary/files/0048-main-toolbar-Split-the-folder-header.patch b/mail-client/geary/files/0048-main-toolbar-Split-the-folder-header.patch new file mode 100644 index 0000000..4dd510a --- /dev/null +++ b/mail-client/geary/files/0048-main-toolbar-Split-the-folder-header.patch @@ -0,0 +1,206 @@ +From 94ab7e5ac6b282e07edf8966da5c69e4fdba0cc8 Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Sat, 18 Jan 2020 09:16:32 +0100 +Subject: [PATCH 048/124] main-toolbar: Split the folder header + +Split it into a folder header and a conversations header. This is needed +to properly split the 3 panes. + +Fixes https://gitlab.gnome.org/GNOME/geary/issues/442. +--- + src/client/components/main-toolbar.vala | 12 ++- + ui/main-toolbar.ui | 108 +++++++++++++++--------- + 2 files changed, 77 insertions(+), 43 deletions(-) + +diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala +index aa263253..4ee02079 100644 +--- a/src/client/components/main-toolbar.vala ++++ b/src/client/components/main-toolbar.vala +@@ -28,10 +28,14 @@ public class MainToolbar : Gtk.Box { + [GtkChild] + private Gtk.HeaderBar folder_header; + [GtkChild] +- private Gtk.ToggleButton search_conversations_button; +- [GtkChild] + private Gtk.MenuButton main_menu_button; + ++ // Conversations header elements ++ [GtkChild] ++ private Gtk.HeaderBar conversations_header; ++ [GtkChild] ++ private Gtk.ToggleButton search_conversations_button; ++ + // Conversation header elements + [GtkChild] + private Gtk.HeaderBar conversation_header; +@@ -60,8 +64,8 @@ public class MainToolbar : Gtk.Box { + + public MainToolbar(Application.Configuration config) { + if (config.desktop_environment != UNITY) { +- this.bind_property("account", this.folder_header, "title", BindingFlags.SYNC_CREATE); +- this.bind_property("folder", this.folder_header, "subtitle", BindingFlags.SYNC_CREATE); ++ this.bind_property("account", this.conversations_header, "title", BindingFlags.SYNC_CREATE); ++ this.bind_property("folder", this.conversations_header, "subtitle", BindingFlags.SYNC_CREATE); + } + + // Assemble the main/mark menus +diff --git a/ui/main-toolbar.ui b/ui/main-toolbar.ui +index 874f5b4b..732a01b9 100644 +--- a/ui/main-toolbar.ui ++++ b/ui/main-toolbar.ui +@@ -11,68 +11,97 @@ + True + False + +- ++ + True + False +- + +- ++ + True +- True +- False +- False +- Compose Message +- app.compose +- True ++ False ++ ++ Mail + +- ++ + True +- False +- text-editor-symbolic ++ True ++ False ++ False ++ True ++ ++ ++ True ++ False ++ open-menu-symbolic ++ ++ + ++ ++ end ++ 1 ++ + + + + +- ++ + True +- True +- False +- False +- True +- +- +- True +- False +- open-menu-symbolic +- +- ++ False ++ vertical ++ + + +- end ++ False ++ True + 1 + + + +- ++ + True +- True +- False +- False +- Toggle search bar +- True ++ False ++ + +- ++ + True +- False +- preferences-system-search-symbolic ++ True ++ False ++ False ++ Compose Message ++ app.compose ++ True ++ ++ ++ True ++ False ++ text-editor-symbolic ++ ++ + + ++ ++ ++ True ++ True ++ False ++ False ++ Toggle search bar ++ True ++ ++ ++ True ++ False ++ preferences-system-search-symbolic ++ ++ ++ ++ ++ end ++ 3 ++ ++ + +- +- end +- 3 +- + + + +@@ -82,7 +111,7 @@ + + + +- ++ + True + False + vertical +@@ -342,6 +371,7 @@ + + + ++ + + + +-- +2.29.2 + diff --git a/mail-client/geary/files/0049-main-toolbar-Add-add_to_size_groups.patch b/mail-client/geary/files/0049-main-toolbar-Add-add_to_size_groups.patch new file mode 100644 index 0000000..d782784 --- /dev/null +++ b/mail-client/geary/files/0049-main-toolbar-Add-add_to_size_groups.patch @@ -0,0 +1,55 @@ +From 7d4a61d431e072dbcacda2d089b587fe52257da6 Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Thu, 16 Jan 2020 13:50:03 +0100 +Subject: [PATCH 049/124] main-toolbar: Add add_to_size_groups() + +This will be used to sync requests of the panes. +--- + src/client/components/main-toolbar.vala | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala +index 4ee02079..6ea472a8 100644 +--- a/src/client/components/main-toolbar.vala ++++ b/src/client/components/main-toolbar.vala +@@ -30,12 +30,18 @@ public class MainToolbar : Gtk.Box { + [GtkChild] + private Gtk.MenuButton main_menu_button; + ++ [GtkChild] ++ private Gtk.Separator folder_separator; ++ + // Conversations header elements + [GtkChild] + private Gtk.HeaderBar conversations_header; + [GtkChild] + private Gtk.ToggleButton search_conversations_button; + ++ [GtkChild] ++ private Gtk.Separator conversations_separator; ++ + // Conversation header elements + [GtkChild] + private Gtk.HeaderBar conversation_header; +@@ -105,6 +111,18 @@ public class MainToolbar : Gtk.Box { + update_conversation_buttons(); + } + ++ public void add_to_size_groups(Gtk.SizeGroup folder_group, ++ Gtk.SizeGroup folder_separator_group, ++ Gtk.SizeGroup conversations_group, ++ Gtk.SizeGroup conversations_separator_group, ++ Gtk.SizeGroup conversation_group) { ++ folder_group.add_widget(folder_header); ++ folder_separator_group.add_widget(folder_separator); ++ conversations_group.add_widget(conversations_header); ++ conversations_separator_group.add_widget(conversations_separator); ++ conversation_group.add_widget(conversation_header); ++ } ++ + // Updates tooltip text depending on number of conversations selected. + private void update_conversation_buttons() { + this.mark_message_button.tooltip_text = ngettext( +-- +2.29.2 + diff --git a/mail-client/geary/files/0050-application-main-window-Sync-the-pane-size-request.patch b/mail-client/geary/files/0050-application-main-window-Sync-the-pane-size-request.patch new file mode 100644 index 0000000..551dfda --- /dev/null +++ b/mail-client/geary/files/0050-application-main-window-Sync-the-pane-size-request.patch @@ -0,0 +1,82 @@ +From edfb1a2cf371ab743cbf804cbc4d34b7e4cfb8c6 Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Thu, 16 Jan 2020 13:52:03 +0100 +Subject: [PATCH 050/124] application-main-window: Sync the pane size request + +Bind each pane's elements minimum size requests via size groups. +--- + .../application/application-main-window.vala | 17 +++++++++++++++ + ui/application-main-window.ui | 21 +++++++++++++++++++ + 2 files changed, 38 insertions(+) + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 43289e33..4c6d1038 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -328,6 +328,17 @@ public class Application.MainWindow : + private Gtk.Box conversation_list_box; + [GtkChild] + private Gtk.ScrolledWindow conversation_list_scrolled; ++ [GtkChild] ++ private Gtk.SizeGroup folder_size_group; ++ [GtkChild] ++ private Gtk.SizeGroup folder_separator_size_group; ++ [GtkChild] ++ private Gtk.SizeGroup conversations_size_group; ++ [GtkChild] ++ private Gtk.SizeGroup conversations_separator_size_group; ++ [GtkChild] ++ private Gtk.SizeGroup conversation_size_group; ++ + [GtkChild] + private Gtk.Overlay overlay; + +@@ -1239,9 +1250,15 @@ public class Application.MainWindow : + ); + + this.conversations_paned.pack2(this.conversation_viewer, true, false); ++ this.conversation_size_group.add_widget(this.conversation_viewer); + + // Main toolbar + this.main_toolbar = new MainToolbar(config); ++ this.main_toolbar.add_to_size_groups(this.folder_size_group, ++ this.folder_separator_size_group, ++ this.conversations_size_group, ++ this.conversations_separator_size_group, ++ this.conversation_size_group); + this.main_toolbar.move_folder_menu.folder_selected.connect(on_move_conversation); + this.main_toolbar.copy_folder_menu.folder_selected.connect(on_copy_conversation); + this.main_toolbar.bind_property("search-open", this.search_bar, "search-mode-enabled", +diff --git a/ui/application-main-window.ui b/ui/application-main-window.ui +index 4a948294..872f31bd 100644 +--- a/ui/application-main-window.ui ++++ b/ui/application-main-window.ui +@@ -138,4 +138,25 @@ + + + ++ ++ horizontal ++ ++ ++ ++ ++ ++ horizontal ++ ++ ++ horizontal ++ ++ ++ ++ ++ ++ horizontal ++ ++ ++ horizontal ++ + +-- +2.29.2 + diff --git a/mail-client/geary/files/0051-Use-leaflets-in-the-UI.patch b/mail-client/geary/files/0051-Use-leaflets-in-the-UI.patch new file mode 100644 index 0000000..498f567 --- /dev/null +++ b/mail-client/geary/files/0051-Use-leaflets-in-the-UI.patch @@ -0,0 +1,338 @@ +From 12a7101ba55bb646161e9997485036744121f542 Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Thu, 24 Oct 2019 14:36:04 +0200 +Subject: [PATCH 051/124] Use leaflets in the UI + +There is no way to navigate into the app, but it's a start. + +v2: replace expand with child vexpand +--- + .../application/application-main-window.vala | 8 +-- + src/client/components/main-toolbar.vala | 5 +- + .../conversation-viewer.vala | 4 ++ + ui/application-main-window.ui | 52 ++++++++++++++----- + ui/geary.css | 11 ++++ + ui/main-toolbar.ui | 33 +++++++----- + 6 files changed, 81 insertions(+), 32 deletions(-) + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 4c6d1038..b56079cf 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -317,9 +317,9 @@ public class Application.MainWindow : + [GtkChild] + private Gtk.Box main_layout; + [GtkChild] +- private Gtk.Paned folder_paned; ++ private Hdy.Leaflet main_leaflet; + [GtkChild] +- private Gtk.Paned conversations_paned; ++ private Hdy.Leaflet conversations_leaflet; + [GtkChild] + private Gtk.Box folder_box; + [GtkChild] +@@ -520,7 +520,6 @@ public class Application.MainWindow : + }); + + setup_layout(application.config); +- this.folder_paned.orientation = Gtk.Orientation.HORIZONTAL; + this.folder_box.pack_start(status_bar, false, false); + + update_command_actions(); +@@ -1249,8 +1248,9 @@ public class Application.MainWindow : + on_conversation_view_added + ); + +- this.conversations_paned.pack2(this.conversation_viewer, true, false); ++ this.conversation_viewer.hexpand = true; + this.conversation_size_group.add_widget(this.conversation_viewer); ++ this.main_leaflet.add_with_properties(this.conversation_viewer, "name", "conversation", null); + + // Main toolbar + this.main_toolbar = new MainToolbar(config); +diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala +index 6ea472a8..286546d5 100644 +--- a/src/client/components/main-toolbar.vala ++++ b/src/client/components/main-toolbar.vala +@@ -6,7 +6,7 @@ + + // Draws the main toolbar. + [GtkTemplate (ui = "/org/gnome/Geary/main-toolbar.ui")] +-public class MainToolbar : Gtk.Box { ++public class MainToolbar : Hdy.Leaflet { + // How wide the left pane should be. Auto-synced with our settings + public int left_pane_width { get; set; } + // Used to form the title of the folder header +@@ -97,7 +97,8 @@ public class MainToolbar : Gtk.Box { + public void set_conversation_header(Gtk.HeaderBar header) { + conversation_header.hide(); + this.header_group.add_gtk_header_bar(header); +- pack_start(header, true, true); ++ header.hexpand = true; ++ add(header); + } + + public void remove_conversation_header(Gtk.HeaderBar header) { +diff --git a/src/client/conversation-viewer/conversation-viewer.vala b/src/client/conversation-viewer/conversation-viewer.vala +index f04a1d26..eec5f6a4 100644 +--- a/src/client/conversation-viewer/conversation-viewer.vala ++++ b/src/client/conversation-viewer/conversation-viewer.vala +@@ -68,6 +68,10 @@ public class ConversationViewer : Gtk.Stack, Geary.BaseInterface { + public signal void conversation_removed(ConversationListBox list); + + ++ static construct { ++ set_css_name("geary-conversation-viewer"); ++ } ++ + /** + * Constructs a new conversation view instance. + */ +diff --git a/ui/application-main-window.ui b/ui/application-main-window.ui +index 872f31bd..f7bb884e 100644 +--- a/ui/application-main-window.ui ++++ b/ui/application-main-window.ui +@@ -24,13 +24,18 @@ + False + vertical + +- ++ + True + True ++ True ++ over + +- ++ + True + True ++ True ++ True ++ over + + + True +@@ -40,6 +45,7 @@ + + True + False ++ True + 0 + in + +@@ -55,15 +61,26 @@ + + + +- True + True + 0 + + + + +- False +- False ++ folder ++ ++ ++ ++ ++ True ++ False ++ vertical ++ ++ ++ ++ False + + + +@@ -97,22 +114,27 @@ + + + +- True +- False ++ conversations + + ++ ++ ++ conversations ++ ++ ++ ++ ++ True ++ False ++ vertical + + + +- False +- False ++ False + + +- +- +- + + + True +@@ -146,6 +168,9 @@ + + + horizontal ++ ++ ++ + + + horizontal +@@ -155,6 +180,9 @@ + + + horizontal ++ ++ ++ + + + horizontal +diff --git a/ui/geary.css b/ui/geary.css +index 0ddfab30..2d1d48c3 100644 +--- a/ui/geary.css ++++ b/ui/geary.css +@@ -12,12 +12,23 @@ + border-left-width: 0; + border-top-width: 0; + border-right-width: 0; ++ min-width: 300px; + } + .geary-conversation-frame > border { + border-left-width: 0; + border-top-width: 0; + border-right-width: 0; ++ min-width: 360px; + } ++ ++treeview.sidebar { ++ border: none; ++} ++ ++geary-conversation-viewer { ++ min-width: 360px; ++} ++ + /* For 3-pane mode only */ + .geary-sidebar-pane-separator.vertical .conversation-frame > border { + border-bottom-width: 0; +diff --git a/ui/main-toolbar.ui b/ui/main-toolbar.ui +index 732a01b9..441cd146 100644 +--- a/ui/main-toolbar.ui ++++ b/ui/main-toolbar.ui +@@ -7,13 +7,18 @@ + False + mail-archive-symbolic + +- +- ++ ++ + + + ++ ++ ++ ++ ++ ++ + + + +-- +2.29.2 + diff --git a/mail-client/geary/files/0058-composer-Switch-leaflet-to-composer-when-folded.patch b/mail-client/geary/files/0058-composer-Switch-leaflet-to-composer-when-folded.patch new file mode 100644 index 0000000..ce2e990 --- /dev/null +++ b/mail-client/geary/files/0058-composer-Switch-leaflet-to-composer-when-folded.patch @@ -0,0 +1,72 @@ +From 1f2896e9a7ba02c0a909c91bb551e596d2d72230 Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Thu, 1 Oct 2020 10:40:41 +0200 +Subject: [PATCH 058/124] composer: Switch leaflet to composer when folded + +--- + src/client/application/application-main-window.vala | 2 ++ + src/client/components/main-toolbar.vala | 13 +++++++++++-- + 2 files changed, 13 insertions(+), 2 deletions(-) + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 97960660..c2b0954b 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -916,6 +916,8 @@ public class Application.MainWindow : + } else { + this.conversation_viewer.do_compose(composer); + } ++ // Show the correct leaflet ++ this.main_leaflet.set_visible_child_name("conversation"); + } + } + +diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala +index c7bdab8f..0ecb599a 100644 +--- a/src/client/components/main-toolbar.vala ++++ b/src/client/components/main-toolbar.vala +@@ -64,6 +64,8 @@ public class MainToolbar : Hdy.Leaflet { + [GtkChild] + private Hdy.HeaderGroup header_group; + ++ Gtk.SizeGroup conversation_group; ++ + private bool show_trash_button = true; + + // Load these at construction time +@@ -98,16 +100,22 @@ public class MainToolbar : Hdy.Leaflet { + } + + public void set_conversation_header(Gtk.HeaderBar header) { +- conversation_header.hide(); ++ remove(conversation_header); + this.header_group.add_gtk_header_bar(header); + header.hexpand = true; ++ conversation_group.remove_widget(conversation_header); ++ conversation_group.add_widget(header); + add(header); ++ child_set(header, "name", "conversation", null); + } + + public void remove_conversation_header(Gtk.HeaderBar header) { + remove(header); + this.header_group.remove_gtk_header_bar(header); +- conversation_header.show(); ++ conversation_group.remove_widget(header); ++ conversation_group.add_widget(conversation_header); ++ add(conversation_header); ++ child_set(conversation_header, "name", "conversation", null); + } + + public void update_trash_button(bool show_trash) { +@@ -125,6 +133,7 @@ public class MainToolbar : Hdy.Leaflet { + conversations_group.add_widget(conversations_header); + conversations_separator_group.add_widget(conversations_separator); + conversation_group.add_widget(conversation_header); ++ this.conversation_group = conversation_group; + } + + public void add_to_swipe_groups(Hdy.SwipeGroup conversations_group, +-- +2.29.2 + diff --git a/mail-client/geary/files/0059-conversation-list-use-shift-activate-to-open-convers.patch b/mail-client/geary/files/0059-conversation-list-use-shift-activate-to-open-convers.patch new file mode 100644 index 0000000..d82e76c --- /dev/null +++ b/mail-client/geary/files/0059-conversation-list-use-shift-activate-to-open-convers.patch @@ -0,0 +1,163 @@ +From 0b743ab0d396cbbaad5aebaebed235ecd0f1a564 Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Tue, 6 Oct 2020 13:34:30 +0200 +Subject: [PATCH 059/124] conversation-list: use shift+activate to open + conversation in new window + +Open on shift+double click and shift+space/enter the selected +conversation in a new window. +--- + .../application/application-main-window.vala | 14 ++--- + .../conversation-list-view.vala | 61 ++++++++++++++++--- + 2 files changed, 58 insertions(+), 17 deletions(-) + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index c2b0954b..01b7b9c6 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -2143,17 +2143,16 @@ public class Application.MainWindow : + focus_next_pane(); + } + +- private void on_conversation_activated(Geary.App.Conversation activated) { +- if (main_leaflet.folded) { +- focus_next_pane(); +- } +- /* TODO: find correct UX for opening the conversation in a new window +- if (this.selected_folder != null) { ++ private void on_conversation_activated(Geary.App.Conversation activated, bool single) { ++ if (single) { ++ if (main_leaflet.folded) ++ focus_next_pane(); ++ } else if (this.selected_folder != null) { + if (this.selected_folder.used_as != DRAFTS) { + this.application.new_window.begin( + this.selected_folder, + this.conversation_list_view.copy_selected() +- ); ++ ); + } else { + // TODO: Determine how to map between conversations + // and drafts correctly. +@@ -2166,7 +2165,6 @@ public class Application.MainWindow : + ); + } + } +- */ + } + + private void on_find_in_conversation_action() { +diff --git a/src/client/conversation-list/conversation-list-view.vala b/src/client/conversation-list/conversation-list-view.vala +index dcced90d..0baa66b4 100644 +--- a/src/client/conversation-list/conversation-list-view.vala ++++ b/src/client/conversation-list/conversation-list-view.vala +@@ -17,6 +17,7 @@ public class ConversationListView : Gtk.TreeView, Geary.BaseInterface { + private Geary.Scheduler.Scheduled? scheduled_update_visible_conversations = null; + private Gee.Set selected = new Gee.HashSet(); + private Geary.IdleManager selection_update; ++ private Gtk.GestureMultiPress gesture; + + // Determines if the next folder scan should avoid selecting a + // conversation when autoselect is enabled +@@ -26,7 +27,7 @@ public class ConversationListView : Gtk.TreeView, Geary.BaseInterface { + public signal void conversations_selected(Gee.Set selected); + + // Signal for when a conversation has been double-clicked, or selected and enter is pressed. +- public signal void conversation_activated(Geary.App.Conversation activated); ++ public signal void conversation_activated(Geary.App.Conversation activated, bool single = false); + + public virtual signal void load_more() { + enable_load_more = false; +@@ -42,7 +43,6 @@ public class ConversationListView : Gtk.TreeView, Geary.BaseInterface { + base_ref(); + set_show_expanders(false); + set_headers_visible(false); +- set_activate_on_single_click(true); + + this.config = config; + +@@ -53,11 +53,13 @@ public class ConversationListView : Gtk.TreeView, Geary.BaseInterface { + Gtk.TreeSelection selection = get_selection(); + selection.set_mode(Gtk.SelectionMode.MULTIPLE); + style_updated.connect(on_style_changed); +- row_activated.connect(on_row_activated); + + notify["vadjustment"].connect(on_vadjustment_changed); + ++ key_press_event.connect(on_key_press); + button_press_event.connect(on_button_press); ++ gesture = new Gtk.GestureMultiPress(this); ++ gesture.pressed.connect(on_gesture_pressed); + + // Set up drag and drop. + Gtk.drag_source_set(this, Gdk.ModifierType.BUTTON1_MASK, FolderList.Tree.TARGET_ENTRY_LIST, +@@ -270,6 +272,53 @@ public class ConversationListView : Gtk.TreeView, Geary.BaseInterface { + return parent.get_vadjustment(); + } + ++ private void on_gesture_pressed(int n_press, double x, double y) { ++ if (gesture.get_current_button() != Gdk.BUTTON_PRIMARY) ++ return; ++ ++ Gtk.TreePath? path; ++ get_path_at_pos((int) x, (int) y, out path, null, null, null); ++ ++ // If the user clicked in an empty area, do nothing. ++ if (path == null) ++ return; ++ ++ Geary.App.Conversation? c = get_model().get_conversation_at_path(path); ++ if (c == null) ++ return; ++ ++ Gdk.Event event = gesture.get_last_event(gesture.get_current_sequence()); ++ Gdk.ModifierType modifiers = Gtk.accelerator_get_default_mod_mask(); ++ ++ Gdk.ModifierType state_mask; ++ event.get_state(out state_mask); ++ ++ if ((state_mask & modifiers) == 0 && n_press == 1) { ++ conversation_activated(c, true); ++ } else if ((state_mask & modifiers) == Gdk.ModifierType.SHIFT_MASK && n_press == 2) { ++ conversation_activated(c); ++ } ++ } ++ ++ private bool on_key_press(Gdk.EventKey event) { ++ if (this.selected.size != 1) ++ return false; ++ ++ Geary.App.Conversation? c = this.selected.to_array()[0]; ++ if (c == null) ++ return false; ++ ++ Gdk.ModifierType modifiers = Gtk.accelerator_get_default_mod_mask(); ++ ++ if (event.keyval == Gdk.Key.Return || ++ event.keyval == Gdk.Key.ISO_Enter || ++ event.keyval == Gdk.Key.KP_Enter || ++ event.keyval == Gdk.Key.space || ++ event.keyval == Gdk.Key.KP_Space) ++ conversation_activated(c, !((event.state & modifiers) == Gdk.ModifierType.SHIFT_MASK)); ++ return false; ++ } ++ + private bool on_button_press(Gdk.EventButton event) { + // Get the coordinates on the cell as well as the clicked path. + int cell_x; +@@ -576,12 +625,6 @@ public class ConversationListView : Gtk.TreeView, Geary.BaseInterface { + return false; + } + +- private void on_row_activated(Gtk.TreePath path) { +- Geary.App.Conversation? c = get_model().get_conversation_at_path(path); +- if (c != null) +- conversation_activated(c); +- } +- + // Enable/disable hover effect on all selected cells. + private void set_hover_selected(bool hover) { + ConversationListCellRenderer.set_hover_selected(hover); +-- +2.29.2 + diff --git a/mail-client/geary/files/0060-composer-close-the-composer-when-navigating-back.patch b/mail-client/geary/files/0060-composer-close-the-composer-when-navigating-back.patch new file mode 100644 index 0000000..87e1cb6 --- /dev/null +++ b/mail-client/geary/files/0060-composer-close-the-composer-when-navigating-back.patch @@ -0,0 +1,65 @@ +From d6c546e2d555d20e1dd259117822b4d4c8b7152c Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Tue, 6 Oct 2020 17:31:49 +0200 +Subject: [PATCH 060/124] composer: close the composer when navigating back + +--- + src/client/application/application-main-window.vala | 11 +++++++++++ + src/client/composer/composer-widget.vala | 5 +++++ + ui/application-main-window.ui | 2 ++ + 3 files changed, 18 insertions(+) + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 01b7b9c6..e1e55d0e 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -1955,6 +1955,17 @@ public class Application.MainWindow : + return Gdk.EVENT_STOP; + } + ++ [GtkCallback] ++ private void on_main_leaflet_visible_child_changed() { ++ if (main_leaflet.child_transition_running) ++ return; ++ ++ if (main_leaflet.visible_child_name == "conversations" && main_leaflet.folded) ++ if (this.conversation_viewer.current_composer != null) { ++ this.conversation_viewer.current_composer.activate_close_action(); ++ } ++ } ++ + private void on_offline_infobar_response() { + this.info_bars.remove(this.offline_infobar); + } +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index 37e93fb4..17430021 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -1361,6 +1361,11 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + } + } + ++ /* Activate the close action */ ++ public void activate_close_action() { ++ this.actions.activate_action(ACTION_CLOSE, null); ++ } ++ + internal void set_mode(PresentationMode new_mode) { + this.current_mode = new_mode; + this.header.set_mode(new_mode); +diff --git a/ui/application-main-window.ui b/ui/application-main-window.ui +index fe66491b..cbaacbcf 100644 +--- a/ui/application-main-window.ui ++++ b/ui/application-main-window.ui +@@ -29,6 +29,8 @@ + True + True + over ++ ++ + + + True +-- +2.29.2 + diff --git a/mail-client/geary/files/0061-main-window-Block-forward-navigation-when-viewer-is-.patch b/mail-client/geary/files/0061-main-window-Block-forward-navigation-when-viewer-is-.patch new file mode 100644 index 0000000..e9bf36e --- /dev/null +++ b/mail-client/geary/files/0061-main-window-Block-forward-navigation-when-viewer-is-.patch @@ -0,0 +1,34 @@ +From f8f223da46716a0a888ef5a5a0840fb69dbc7067 Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Wed, 7 Oct 2020 10:36:50 +0200 +Subject: [PATCH 061/124] main-window: Block forward navigation when viewer is + empty + +Empty viewer includes: - no selected conversation + - no conversation in folder + - selected more then one conversation +--- + src/client/application/application-main-window.vala | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index e1e55d0e..3b7c29e7 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -1811,8 +1811,11 @@ public class Application.MainWindow : + conversations_leaflet.navigate(Hdy.NavigationDirection.FORWARD); + focus = this.conversation_list_view; + } else { +- main_leaflet.navigate(Hdy.NavigationDirection.FORWARD); +- focus = this.conversation_viewer.visible_child; ++ if (this.main_toolbar.selected_conversations == 1 && ++ this.selected_folder.properties.email_total > 0) { ++ main_leaflet.navigate(Hdy.NavigationDirection.FORWARD); ++ focus = this.conversation_viewer.visible_child; ++ } + } + } + } else if (focus != null) { +-- +2.29.2 + diff --git a/mail-client/geary/files/0062-Update-Swedish-translation.patch b/mail-client/geary/files/0062-Update-Swedish-translation.patch new file mode 100644 index 0000000..94dcc4b --- /dev/null +++ b/mail-client/geary/files/0062-Update-Swedish-translation.patch @@ -0,0 +1,2102 @@ +From 96755ab09e7145ebf5f960e9439e02cac15962b0 Mon Sep 17 00:00:00 2001 +From: Anders Jonsson +Date: Sat, 10 Oct 2020 12:07:22 +0000 +Subject: [PATCH 062/124] Update Swedish translation + +(cherry picked from commit a7f9f7a27cf8c0d12e6af2e7b04bb89576aff93b) +--- + po/sv.po | 892 +++++++++++++++++++++++++++++-------------------------- + 1 file changed, 476 insertions(+), 416 deletions(-) + +diff --git a/po/sv.po b/po/sv.po +index bfe7dee1..0c1e06a6 100644 +--- a/po/sv.po ++++ b/po/sv.po +@@ -18,8 +18,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-07-30 04:08+0000\n" +-"PO-Revision-Date: 2020-07-30 13:17+0200\n" ++"POT-Creation-Date: 2020-09-29 22:35+0000\n" ++"PO-Revision-Date: 2020-10-10 14:04+0200\n" + "Last-Translator: Anders Jonsson \n" + "Language-Team: Swedish \n" + "Language: sv\n" +@@ -27,7 +27,7 @@ msgstr "" + "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.3.1\n" ++"X-Generator: Poedit 2.4.1\n" + + #: desktop/geary-attach.contract.desktop.in:3 + msgid "Send by email" +@@ -41,8 +41,8 @@ msgstr "Skicka filer med Geary" + #: desktop/geary-autostart.desktop.in.in:3 + #: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 +-#: src/client/accounts/accounts-editor-servers-pane.vala:555 +-#: src/client/application/application-main-window.vala:601 ++#: src/client/accounts/accounts-editor-servers-pane.vala:560 ++#: src/client/application/application-main-window.vala:608 + msgid "Geary" + msgstr "Geary" + +@@ -55,7 +55,7 @@ msgstr "E-post" + #: desktop/geary-autostart.desktop.in.in:5 + #: desktop/org.gnome.Geary.appdata.xml.in.in:15 + #: desktop/org.gnome.Geary.desktop.in.in:5 +-#: src/client/application/application-client.vala:32 ++#: src/client/application/application-client.vala:33 + msgid "Send and receive email" + msgstr "Skicka och ta emot e-post" + +@@ -370,13 +370,13 @@ msgstr "Alla andra" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:195 +-#: src/client/accounts/accounts-editor-servers-pane.vala:316 ++#: src/client/accounts/accounts-editor-servers-pane.vala:321 + msgid "Check your receiving login and password" + msgstr "Kontrollera din inloggning och lösenord för mottagning" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:210 +-#: src/client/accounts/accounts-editor-servers-pane.vala:329 ++#: src/client/accounts/accounts-editor-servers-pane.vala:334 + msgid "Check your receiving server details" + msgstr "Kontrollera dina detaljer för mottagande server" + +@@ -386,13 +386,13 @@ msgstr "Kontrollera dina detaljer för mottagande server" + #. specify custom creds here + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:232 +-#: src/client/accounts/accounts-editor-servers-pane.vala:350 ++#: src/client/accounts/accounts-editor-servers-pane.vala:355 + msgid "Check your sending login and password" + msgstr "Kontrollera din inloggning och lösenord för sändning" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:246 +-#: src/client/accounts/accounts-editor-servers-pane.vala:363 ++#: src/client/accounts/accounts-editor-servers-pane.vala:368 + msgid "Check your sending server details" + msgstr "Kontrollera dina detaljer för sändande server" + +@@ -448,14 +448,14 @@ msgstr "person@example.com" + #. Translators: Label for the user's login name for an + #. IMAP, SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:593 +-#: src/client/accounts/accounts-editor-servers-pane.vala:884 ++#: src/client/accounts/accounts-editor-servers-pane.vala:889 + msgid "Login name" + msgstr "Inloggningsnamn" + + #. Translators: Label for the user's password for an IMAP, + #. SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:607 +-#: src/client/accounts/accounts-editor-servers-pane.vala:1006 ++#: src/client/accounts/accounts-editor-servers-pane.vala:1011 + #: ui/password-dialog.glade:108 + msgid "Password" + msgstr "Lösenord" +@@ -465,7 +465,7 @@ msgstr "Lösenord" + #. Translators: This label describes the host name or IP + #. address and port used by an account's IMAP service. + #: src/client/accounts/accounts-editor-add-pane.vala:629 +-#: src/client/accounts/accounts-editor-servers-pane.vala:728 ++#: src/client/accounts/accounts-editor-servers-pane.vala:733 + msgid "IMAP server" + msgstr "IMAP-server" + +@@ -480,7 +480,7 @@ msgstr "email@exempel.se" + #. Translators: This label describes the host name or IP + #. address and port used by an account's SMTP service. + #: src/client/accounts/accounts-editor-add-pane.vala:638 +-#: src/client/accounts/accounts-editor-servers-pane.vala:734 ++#: src/client/accounts/accounts-editor-servers-pane.vala:739 + msgid "SMTP server" + msgstr "SMTP-server" + +@@ -625,55 +625,54 @@ msgstr[0] "%d dag tillbaka" + msgstr[1] "%d dagar tillbaka" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2038 ++#: src/client/application/application-main-window.vala:2066 + msgid "Undo" + msgstr "Ångra" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2021 ++#: src/client/application/application-main-window.vala:2049 + msgid "Redo" + msgstr "Gör om" + + #: src/client/accounts/accounts-editor-list-pane.vala:358 +-#: src/client/accounts/accounts-editor-list-pane.vala:446 ++#: src/client/accounts/accounts-editor-list-pane.vala:454 + #: src/client/accounts/accounts-editor-row.vala:279 + msgid "Gmail" + msgstr "Gmail" + + #: src/client/accounts/accounts-editor-list-pane.vala:362 +-#: src/client/accounts/accounts-editor-list-pane.vala:450 ++#: src/client/accounts/accounts-editor-list-pane.vala:458 + #: src/client/accounts/accounts-editor-row.vala:283 + msgid "Outlook.com" + msgstr "Outlook.com" + + #: src/client/accounts/accounts-editor-list-pane.vala:366 +-#: src/client/accounts/accounts-editor-list-pane.vala:454 ++#: src/client/accounts/accounts-editor-list-pane.vala:462 + #: src/client/accounts/accounts-editor-row.vala:287 + msgid "Yahoo" + msgstr "Yahoo" + + #. Translators: Tooltip for accounts that have been + #. loaded but disabled by the user. +-#: src/client/accounts/accounts-editor-list-pane.vala:384 ++#: src/client/accounts/accounts-editor-list-pane.vala:388 + msgid "This account has been disabled" + msgstr "Detta konto har inaktiverats" + + #. Translators: Tooltip for accounts that have been + #. loaded but because of some error are not able to be + #. used. +-#: src/client/accounts/accounts-editor-list-pane.vala:393 ++#: src/client/accounts/accounts-editor-list-pane.vala:397 + msgid "This account has encountered a problem and is unavailable" + msgstr "Detta konto har stött på ett problem och är ej tillgängligt" + +-#. Translators: Label for adding a generic email account +-#: src/client/accounts/accounts-editor-list-pane.vala:443 ++#: src/client/accounts/accounts-editor-list-pane.vala:466 + msgid "Other email providers" + msgstr "Andra e-postleverantörer" + + #. Translators: Notification shown after removing an + #. account. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:560 ++#: src/client/accounts/accounts-editor-list-pane.vala:572 + #, c-format + msgid "Account “%s” removed" + msgstr "Kontot ”%s” togs bort" +@@ -681,7 +680,7 @@ msgstr "Kontot ”%s” togs bort" + #. Translators: Notification shown after removing an account + #. is undone. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:567 ++#: src/client/accounts/accounts-editor-list-pane.vala:579 + #, c-format + msgid "Account “%s” restored" + msgstr "Kontot ”%s” återställdes" +@@ -694,30 +693,30 @@ msgstr "Dra för att flytta detta objekt" + #. Translators: Label describes the service provider + #. hosting the email account, e.g. Gmail, Yahoo, or some + #. other generic IMAP service. +-#: src/client/accounts/accounts-editor-row.vala:295 ++#: src/client/accounts/accounts-editor-row.vala:299 + msgid "Service provider" + msgstr "Tjänsteleverantör" + + #. Translators: This label describes what form of transport + #. security (TLS, StartTLS, etc) used by an account's IMAP or SMTP + #. service. +-#: src/client/accounts/accounts-editor-row.vala:469 ++#: src/client/accounts/accounts-editor-row.vala:473 + msgid "Connection security" + msgstr "Anslutningssäkerhet" + + #. Translators: Label used when no auth scheme is used + #. by an account's IMAP or SMTP service. +-#: src/client/accounts/accounts-editor-row.vala:480 +-#: src/client/accounts/accounts-editor-servers-pane.vala:755 +-#: src/client/accounts/accounts-editor-servers-pane.vala:970 ++#: src/client/accounts/accounts-editor-row.vala:484 ++#: src/client/accounts/accounts-editor-servers-pane.vala:760 ++#: src/client/accounts/accounts-editor-servers-pane.vala:975 + msgid "None" + msgstr "Ingen" + +-#: src/client/accounts/accounts-editor-row.vala:487 ++#: src/client/accounts/accounts-editor-row.vala:491 + msgid "StartTLS" + msgstr "StartTLS" + +-#: src/client/accounts/accounts-editor-row.vala:494 ++#: src/client/accounts/accounts-editor-row.vala:498 + msgid "TLS" + msgstr "TLS" + +@@ -725,35 +724,35 @@ msgstr "TLS" + #. credentials (none, use IMAP, custom) when adding a new + #. account + #. Translators: An info bar button label +-#: src/client/accounts/accounts-editor-row.vala:535 +-#: src/client/application/application-main-window.vala:553 ++#: src/client/accounts/accounts-editor-row.vala:539 ++#: src/client/application/application-main-window.vala:554 + msgid "Login" + msgstr "Inloggning" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (none) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:542 ++#: src/client/accounts/accounts-editor-row.vala:546 + msgid "No login needed" + msgstr "Ingen inloggning krävs" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (use IMAP) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:550 ++#: src/client/accounts/accounts-editor-row.vala:554 + msgid "Use same login as receiving" + msgstr "Använd samma inloggning som för mottagning" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (custom) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:558 ++#: src/client/accounts/accounts-editor-row.vala:562 + msgid "Use a different login" + msgstr "Använd en annan inloggning" + + #. Translators: In-app notification label, the + #. string substitution is a more detailed reason. +-#: src/client/accounts/accounts-editor-servers-pane.vala:377 ++#: src/client/accounts/accounts-editor-servers-pane.vala:382 + #, c-format + msgid "Account not updated: %s" + msgstr "Konto inte uppdaterat: %s" +@@ -761,23 +760,23 @@ msgstr "Konto inte uppdaterat: %s" + #. Translators: This label describes the program that + #. created the account, e.g. an SSO service like GOA, or + #. locally by Geary. +-#: src/client/accounts/accounts-editor-servers-pane.vala:540 ++#: src/client/accounts/accounts-editor-servers-pane.vala:545 + msgid "Account source" + msgstr "Kontokälla" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:552 ++#: src/client/accounts/accounts-editor-servers-pane.vala:557 + msgid "GNOME Online Accounts" + msgstr "GNOME Nätkonton" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:611 ++#: src/client/accounts/accounts-editor-servers-pane.vala:616 + msgid "Save draft email on server" + msgstr "Spara meddelandeutkast på server" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:666 ++#: src/client/accounts/accounts-editor-servers-pane.vala:671 + msgid "Save sent email on server" + msgstr "Spara skickad e-post på server" + +@@ -786,12 +785,12 @@ msgstr "Spara skickad e-post på server" + #. Translators: Label used when an account's IMAP or + #. SMTP service uses OAuth2. The string replacement is + #. the service's login name. +-#: src/client/accounts/accounts-editor-servers-pane.vala:956 ++#: src/client/accounts/accounts-editor-servers-pane.vala:961 + #, c-format + msgid "%s using OAuth2" + msgstr "%s använder OAuth2" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:966 ++#: src/client/accounts/accounts-editor-servers-pane.vala:971 + msgid "Use receiving server login" + msgstr "Använd inloggning för mottagningsserver" + +@@ -824,143 +823,143 @@ msgstr "" + msgid "_Replace" + msgstr "E_rsätt" + +-#: src/client/application/application-client.vala:33 ++#: src/client/application/application-client.vala:34 + msgid "Copyright 2016 Software Freedom Conservancy Inc." + msgstr "Copyright 2016 Software Freedom Conservancy Inc." + +-#: src/client/application/application-client.vala:34 ++#: src/client/application/application-client.vala:35 + msgid "Copyright 2016-2020 Geary Development Team." + msgstr "Copyright 2016-2020 Gearys utvecklingsgrupp." + +-#: src/client/application/application-client.vala:36 ++#: src/client/application/application-client.vala:37 + msgid "Visit the Geary web site" + msgstr "Besök Gearys webbplats" + + #. / Command line option +-#: src/client/application/application-client.vala:96 ++#: src/client/application/application-client.vala:97 + msgid "Print debug logging" + msgstr "Skriv ut felsökningsloggning" + + #. / Command line option +-#: src/client/application/application-client.vala:99 ++#: src/client/application/application-client.vala:100 + msgid "Start with the main window hidden (deprecated)" + msgstr "Starta Geary med huvudfönstret dolt (föråldrat)" + + #. / Command line option +-#: src/client/application/application-client.vala:102 ++#: src/client/application/application-client.vala:103 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "Aktivera WebKitGTK-inspektör i webbvyer" + + #. / Command line option +-#: src/client/application/application-client.vala:105 ++#: src/client/application/application-client.vala:106 + msgid "Log conversation monitoring" + msgstr "Logga konversationsövervakning" + + #. / Command line option +-#: src/client/application/application-client.vala:108 ++#: src/client/application/application-client.vala:109 + msgid "Log IMAP network deserialization" + msgstr "Logga avserialisering av IMAP-nätverksdata" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/application-client.vala:112 ++#: src/client/application/application-client.vala:113 + msgid "Log folder normalization" + msgstr "Logga mappsynkronisering" + + #. / Command line option +-#: src/client/application/application-client.vala:115 ++#: src/client/application/application-client.vala:116 + msgid "Log IMAP network activity" + msgstr "Logga IMAP-nätverksaktivitet" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could + #. / also be called the IMAP events queue. +-#: src/client/application/application-client.vala:120 ++#: src/client/application/application-client.vala:121 + msgid "Log IMAP replay queue" + msgstr "Logga IMAP-händelser" + + #. / Command line option +-#: src/client/application/application-client.vala:123 ++#: src/client/application/application-client.vala:124 + msgid "Log SMTP network activity" + msgstr "Logga SMTP-nätverksaktivitet" + + #. / Command line option +-#: src/client/application/application-client.vala:126 ++#: src/client/application/application-client.vala:127 + msgid "Log database queries (generates lots of messages)" + msgstr "Logga databasförfrågningar (detta genererar många meddelanden)" + + #. / Command line option +-#: src/client/application/application-client.vala:129 ++#: src/client/application/application-client.vala:130 + msgid "Perform a graceful quit" + msgstr "Avsluta" + +-#: src/client/application/application-client.vala:131 ++#: src/client/application/application-client.vala:132 + msgid "Open a new window" + msgstr "Öppna ett nytt fönster" + + #. / Command line option +-#: src/client/application/application-client.vala:134 ++#: src/client/application/application-client.vala:135 + msgid "Revoke all pinned TLS server certificates" + msgstr "Återkalla alla nålade TLS-servercertifikat" + + #. / Command line option +-#: src/client/application/application-client.vala:137 ++#: src/client/application/application-client.vala:138 + msgid "Display program version" + msgstr "Visa programversion" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:261 ++#: src/client/application/application-client.vala:262 + msgid "Geary version" + msgstr "Geary-version" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:263 ++#: src/client/application/application-client.vala:264 + msgid "Geary revision" + msgstr "Geary-revision" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:265 ++#: src/client/application/application-client.vala:266 + msgid "GTK version" + msgstr "GTK-version" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:272 ++#: src/client/application/application-client.vala:273 + msgid "GLib version" + msgstr "GLib-version" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:279 ++#: src/client/application/application-client.vala:280 + msgid "WebKitGTK version" + msgstr "WebKitGTK-version" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:286 ++#: src/client/application/application-client.vala:287 + msgid "Desktop environment" + msgstr "Skrivbordsmiljö" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:288 ++#: src/client/application/application-client.vala:289 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Okänd" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:318 ++#: src/client/application/application-client.vala:293 + msgid "Distribution name" + msgstr "Distributionsnamn" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:323 ++#: src/client/application/application-client.vala:298 + msgid "Distribution release" + msgstr "Distributionsutgåva" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:331 ++#: src/client/application/application-client.vala:303 + msgid "Installation prefix" + msgstr "Installationsprefix" + +-#: src/client/application/application-client.vala:584 ++#: src/client/application/application-client.vala:559 + #, c-format + msgid "About %s" + msgstr "Om %s" +@@ -968,7 +967,7 @@ msgstr "Om %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:588 ++#: src/client/application/application-client.vala:563 + msgid "translator-credits" + msgstr "" + "Joachim Johansson \n" +@@ -981,37 +980,37 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1049 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "Flaggan ”--hidden” är föråldrad och kommer att tas bort i framtiden." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1082 ++#: src/client/application/application-client.vala:1078 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Okänt programargument: ”%s”" + + #. / Notification title. +-#: src/client/application/application-controller.vala:499 ++#: src/client/application/application-controller.vala:479 + #, c-format + msgid "A problem occurred sending email for %s" + msgstr "Ett problem uppstod då e-post skickades för %s" + + #. / Notification body +-#: src/client/application/application-controller.vala:503 ++#: src/client/application/application-controller.vala:483 + msgid "Email will not be sent until re-connected" + msgstr "E-post kommer inte att skickas innan du är ansluten igen" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:602 ++#: src/client/application/application-controller.vala:582 + msgid "Conversation marked" + msgid_plural "Conversations marked" + msgstr[0] "Konversation markerad" + msgstr[1] "Konversationer markerade" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:608 ++#: src/client/application/application-controller.vala:588 + msgid "Conversation un-marked" + msgid_plural "Conversations un-marked" + msgstr[0] "Konversation avmarkerad" +@@ -1020,8 +1019,8 @@ msgstr[1] "Konversationer avmarkerade" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:634 +-#: src/client/application/application-controller.vala:718 ++#: src/client/application/application-controller.vala:614 ++#: src/client/application/application-controller.vala:698 + #, c-format + msgid "Conversation moved to %s" + msgid_plural "Conversations moved to %s" +@@ -1033,8 +1032,8 @@ msgstr[1] "Konversationer flyttades till %s" + #. / of the source folder. + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:642 +-#: src/client/application/application-controller.vala:664 ++#: src/client/application/application-controller.vala:622 ++#: src/client/application/application-controller.vala:644 + #, c-format + msgid "Conversation restored to %s" + msgid_plural "Conversations restored to %s" +@@ -1042,7 +1041,7 @@ msgstr[0] "Konversation återställd till %s" + msgstr[1] "Konversationer återställda till %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:685 ++#: src/client/application/application-controller.vala:665 + msgid "Conversation archived" + msgid_plural "Conversations archived" + msgstr[0] "Konversation arkiverad" +@@ -1050,7 +1049,7 @@ msgstr[1] "Konversationer arkiverade" + + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:741 ++#: src/client/application/application-controller.vala:721 + #, c-format + msgid "Message restored to %s" + msgid_plural "Messages restored to %s" +@@ -1058,7 +1057,7 @@ msgstr[0] "Meddelande återställt till %s" + msgstr[1] "Meddelanden återställda till %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:762 ++#: src/client/application/application-controller.vala:742 + msgid "Message archived" + msgid_plural "Messages archived" + msgstr[0] "Meddelande arkiverat" +@@ -1067,7 +1066,7 @@ msgstr[1] "Meddelanden arkiverade" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:797 ++#: src/client/application/application-controller.vala:777 + #, c-format + msgid "Message moved to %s" + msgid_plural "Messages moved to %s" +@@ -1077,7 +1076,7 @@ msgstr[1] "Meddelanden flyttade till %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:825 ++#: src/client/application/application-controller.vala:805 + #, c-format + msgid "Conversation labelled as %s" + msgid_plural "Conversations labelled as %s" +@@ -1087,19 +1086,19 @@ msgstr[1] "Konversationer etiketterade som %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:833 ++#: src/client/application/application-controller.vala:813 + #, c-format + msgid "Conversation un-labelled as %s" + msgid_plural "Conversations un-labelled as %s" + msgstr[0] "Konversation inte längre etiketterad som %s" + msgstr[1] "Konversationer inte längre etiketterade som %s" + +-#: src/client/application/application-controller.vala:1319 ++#: src/client/application/application-controller.vala:1320 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Kunde inte öppna databasen för %s" + +-#: src/client/application/application-controller.vala:1320 ++#: src/client/application/application-controller.vala:1321 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1122,20 +1121,20 @@ msgstr "" + "Att bygga om databasen medför att alla lokala e-postmeddelanden och bifogade " + "filer förstörs. E-post på din server är inte berörda av felet." + +-#: src/client/application/application-controller.vala:1322 ++#: src/client/application/application-controller.vala:1323 + msgid "_Rebuild" + msgstr "_Bygg om" + +-#: src/client/application/application-controller.vala:1322 ++#: src/client/application/application-controller.vala:1323 + msgid "E_xit" + msgstr "_Avsluta" + +-#: src/client/application/application-controller.vala:1332 ++#: src/client/application/application-controller.vala:1333 + #, c-format + msgid "Unable to rebuild database for “%s”" + msgstr "Kunde inte bygga om databasen för ”%s”" + +-#: src/client/application/application-controller.vala:1333 ++#: src/client/application/application-controller.vala:1334 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1148,90 +1147,89 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1492 ++#: src/client/application/application-controller.vala:1501 + #, c-format + msgid "Email sent to %s" + msgstr "E-post skickad till %s" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2515 ++#: src/client/application/application-controller.vala:2491 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "E-post till %s köad för leverans" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2579 ++#: src/client/application/application-controller.vala:2555 + #, c-format + msgid "Email to %s saved" + msgstr "E-post till %s sparad" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2594 +-#: src/client/application/application-controller.vala:2652 ++#: src/client/application/application-controller.vala:2570 ++#: src/client/application/application-controller.vala:2628 + msgid "Composer could not be restored" + msgstr "Redigeraren kunde inte återställas" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2637 ++#: src/client/application/application-controller.vala:2613 + #, c-format + msgid "Email to %s discarded" + msgstr "E-post till %s förkastad" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:539 ++#: src/client/application/application-main-window.vala:540 + msgid "Working offline" + msgstr "Arbetar frånkopplad" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:541 ++#: src/client/application/application-main-window.vala:542 + msgid "You will not be able to send or receive email until re-connected." + msgstr "" + "Du kommer inte att kunna skicka eller ta emot e-post innan du är ansluten " + "igen." + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:548 ++#: src/client/application/application-main-window.vala:549 + msgid "Login problem" + msgstr "Inloggningsproblem" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:550 ++#: src/client/application/application-main-window.vala:551 + msgid "An account has reported an incorrect login or password." + msgstr "Ett konto har rapporterat en felaktig inloggning eller lösenord." + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:557 ++#: src/client/application/application-main-window.vala:558 + msgid "Retry login, you will be prompted for your password" + msgstr "Försök igen att logga in, du kommer att efterfrågas om ditt lösenord" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:564 ++#: src/client/application/application-main-window.vala:565 + msgid "Security problem" + msgstr "Säkerhetsproblem" + +-# TODO: Doubled period + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:566 +-msgid "An account has reported an untrusted server.." ++#: src/client/application/application-main-window.vala:567 ++msgid "An account has reported an untrusted server." + msgstr "Ett konto har rapporterat en opålitlig server." + + #. Translators: An info bar button label +-#: src/client/application/application-main-window.vala:569 ++#: src/client/application/application-main-window.vala:570 + msgid "Check" + msgstr "Kontrollera" + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:573 ++#: src/client/application/application-main-window.vala:574 + msgid "Check the security details for the connection" + msgstr "Kontrollera anslutningens säkerhetsdetaljer" + + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:606 ++#: src/client/application/application-main-window.vala:617 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" +@@ -1239,49 +1237,49 @@ msgstr "%s — %s" + #. Translators: The name of the folder group containing + #. folders created by people (as opposed to special-use + #. folders) +-#: src/client/application/application-main-window.vala:983 ++#: src/client/application/application-main-window.vala:996 + #: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Etiketter" + +-#: src/client/application/application-main-window.vala:1272 ++#: src/client/application/application-main-window.vala:1298 + #, c-format + msgid "Empty all email from your %s folder?" + msgstr "Ta bort alla e-postmeddelanden från din mapp %s?" + +-#: src/client/application/application-main-window.vala:1273 ++#: src/client/application/application-main-window.vala:1299 + msgid "This removes the email from Geary and your email server." + msgstr "Detta tar bort e-postmeddelanden från Geary och din e-postserver." + +-#: src/client/application/application-main-window.vala:1274 ++#: src/client/application/application-main-window.vala:1300 + msgid "This cannot be undone." + msgstr "Detta kan inte ångras." + +-#: src/client/application/application-main-window.vala:1275 ++#: src/client/application/application-main-window.vala:1301 + #, c-format + msgid "Empty %s" + msgstr "Töm %s" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1332 ++#: src/client/application/application-main-window.vala:1358 + msgid "Do you want to permanently delete this conversation?" + msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Vill du radera denna konversation permanent?" + msgstr[1] "Vill du radera dessa konversationer permanent?" + +-#: src/client/application/application-main-window.vala:1337 +-#: src/client/application/application-main-window.vala:1352 ++#: src/client/application/application-main-window.vala:1363 ++#: src/client/application/application-main-window.vala:1378 + msgid "Delete" + msgstr "Radera" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1347 ++#: src/client/application/application-main-window.vala:1373 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Vill du radera detta meddelande permanent?" + msgstr[1] "Vill du radera dessa meddelanden permanent?" + +-#: src/client/application/application-main-window.vala:1670 ++#: src/client/application/application-main-window.vala:1696 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1292,7 +1290,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1930 ++#: src/client/composer/composer-widget.vala:1787 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1320,7 +1318,7 @@ msgstr "Inspektör" + #. / Translators: Title for Inspector logs pane + #. / Translators: Title for problem report dialog logs pane + #: src/client/components/components-inspector.vala:93 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 + msgid "Logs" + msgstr "Loggar" + +@@ -1328,46 +1326,46 @@ msgstr "Loggar" + #. / Translators: Title for problem report system information + #. / pane + #: src/client/components/components-inspector.vala:97 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 + msgid "System" + msgstr "System" + + #. Button label for saving problem report information + #: src/client/components/components-inspector.vala:226 + #: src/client/components/components-inspector.vala:229 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/problem-details-dialog.ui:42 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 ++#: ui/problem-details-dialog.ui:47 + msgid "Save As" + msgstr "Spara som" + + #: src/client/components/components-inspector.vala:230 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Avbryt" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:52 ++#: src/client/components/components-preferences-window.vala:124 + msgid "_Automatically select next message" + msgstr "Välj nästa meddelande _automatiskt" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:62 ++#: src/client/components/components-preferences-window.vala:134 + msgid "_Display conversation preview" + msgstr "_Visa förhandsvisning av konversation" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:72 ++#: src/client/components/components-preferences-window.vala:144 + msgid "Use _three pane view" + msgstr "Använd tredelad vy" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:82 ++#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "Använd e-po_stkortkommandon med en tangent" + +-#: src/client/components/components-preferences-window.vala:84 ++#: src/client/components/components-preferences-window.vala:156 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" +@@ -1376,22 +1374,22 @@ msgstr "" + "ned" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:95 ++#: src/client/components/components-preferences-window.vala:167 + msgid "_Watch for new mail when closed" + msgstr "_Kontrollera om det finns ny e-post vid avslut" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:99 ++#: src/client/components/components-preferences-window.vala:171 + msgid "Geary will keep running after all windows are closed" + msgstr "Geary kommer att fortsätta köra efter att alla fönster stängts" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:117 ++#: src/client/components/components-preferences-window.vala:189 + msgid "Preferences" + msgstr "Inställningar" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:180 ++#: src/client/components/components-preferences-window.vala:250 + msgid "Plugins" + msgstr "Insticksmoduler" + +@@ -1486,27 +1484,27 @@ msgstr "Sök i konto %s" + + #. Translators: Tooltip used when an entry requires a valid + #. email address to be entered, but one is not provided. +-#: src/client/components/components-validator.vala:390 ++#: src/client/components/components-validator.vala:394 + msgid "An email address is required" + msgstr "En e-postadress krävs" + + #. Translators: Tooltip used when an entry requires a valid + #. email address to be entered, but the address is invalid. +-#: src/client/components/components-validator.vala:394 ++#: src/client/components/components-validator.vala:398 + msgid "Not a valid email address" + msgstr "Inte en giltig e-postadress" + + #. Translators: Tooltip used when an entry requires a valid, + #. resolvable server name to be entered, but one is not + #. provided. +-#: src/client/components/components-validator.vala:440 ++#: src/client/components/components-validator.vala:444 + msgid "A server name is required" + msgstr "Ett servernamn krävs" + + #. Translators: Tooltip used when an entry requires a valid + #. server name to be entered, but it was unable to be + #. looked-up in the DNS. +-#: src/client/components/components-validator.vala:445 ++#: src/client/components/components-validator.vala:449 + msgid "Could not look up server name" + msgstr "Det gick inte att slå upp servernamn" + +@@ -1566,7 +1564,9 @@ msgstr "Misslyckades med att spara skickat e-postmeddelande" + msgid "_OK" + msgstr "_OK" + +-#: src/client/components/stock.vala:19 ui/password-dialog.glade:196 ++#: src/client/components/stock.vala:19 ++#: src/client/plugin/mail-merge/mail-merge.vala:392 ++#: ui/password-dialog.glade:196 + msgid "_Cancel" + msgstr "_Avbryt" + +@@ -1590,7 +1590,9 @@ msgstr "_Förkasta" + msgid "_Help" + msgstr "_Hjälp" + +-#: src/client/components/stock.vala:26 ui/components-attachment-pane-menus.ui:7 ++#: src/client/components/stock.vala:26 ++#: src/client/plugin/mail-merge/mail-merge.vala:391 ++#: ui/components-attachment-pane-menus.ui:7 + msgid "_Open" + msgstr "_Öppna" + +@@ -1620,6 +1622,10 @@ msgstr "_Spara" + msgid "_Keep" + msgstr "_Behåll" + ++#: src/client/composer/composer-editor.vala:675 ++msgid "Select Color" ++msgstr "Välj färg" ++ + #: src/client/composer/composer-link-popover.vala:139 + msgid "Link URL is not correctly formatted, e.g. http://example.com" + msgstr "" +@@ -1634,23 +1640,23 @@ msgid "Invalid email address" + msgstr "Ogiltig e-postadress" + + #. / Translators: Title for an empty composer window +-#: src/client/composer/composer-widget.vala:35 ++#: src/client/composer/composer-widget.vala:32 + msgid "New Message" + msgstr "Nytt meddelande" + +-#: src/client/composer/composer-widget.vala:239 ++#: src/client/composer/composer-widget.vala:167 + msgid "Saved" + msgstr "Sparat" + +-#: src/client/composer/composer-widget.vala:240 ++#: src/client/composer/composer-widget.vala:168 + msgid "Saving" + msgstr "Sparar" + +-#: src/client/composer/composer-widget.vala:241 ++#: src/client/composer/composer-widget.vala:169 + msgid "Error saving" + msgstr "Misslyckades med att spara" + +-#: src/client/composer/composer-widget.vala:242 ++#: src/client/composer/composer-widget.vala:170 + msgid "Press Backspace to delete quote" + msgstr "Tryck på Backsteg för att ta bort citat" + +@@ -1659,7 +1665,7 @@ msgstr "Tryck på Backsteg för att ta bort citat" + #. checking, include all variants of each word. No spaces are + #. allowed. The words will be converted to lower case based on + #. locale and English versions included automatically. +-#: src/client/composer/composer-widget.vala:258 ++#: src/client/composer/composer-widget.vala:186 + msgid "" + "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" + "enclosing|encloses|enclosure|enclosures" +@@ -1670,109 +1676,105 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:913 ++#: src/client/composer/composer-widget.vala:865 + msgid "Do you want to keep or discard this draft message?" + msgstr "Vill du behålla eller förkasta detta utkast?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:939 ++#: src/client/composer/composer-widget.vala:891 + msgid "Do you want to discard this draft message?" + msgstr "Vill du förkasta detta utkast?" + +-#: src/client/composer/composer-widget.vala:1585 ++#: src/client/composer/composer-widget.vala:1443 + msgid "Send message with an empty subject and body?" + msgstr "Skicka meddelande med en tom ämnesrad och utan innehåll?" + +-#: src/client/composer/composer-widget.vala:1587 ++#: src/client/composer/composer-widget.vala:1445 + msgid "Send message with an empty subject?" + msgstr "Skicka meddelande med en tom ämnesrad?" + +-#: src/client/composer/composer-widget.vala:1589 ++#: src/client/composer/composer-widget.vala:1447 + msgid "Send message with an empty body?" + msgstr "Skicka meddelande utan innehåll?" + +-#: src/client/composer/composer-widget.vala:1598 ++#: src/client/composer/composer-widget.vala:1456 + msgid "Send message without an attachment?" + msgstr "Skicka meddelande utan att bifoga filer?" + +-#: src/client/composer/composer-widget.vala:1916 ++#: src/client/composer/composer-widget.vala:1775 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "”%s” är redan bifogad och kommer att skickas." + +-#: src/client/composer/composer-widget.vala:1952 +-#: src/client/composer/composer-widget.vala:2002 ++#: src/client/composer/composer-widget.vala:1807 ++#: src/client/composer/composer-widget.vala:1857 + #, c-format + msgid "“%s” is an empty file." + msgstr "”%s” är en tom fil." + +-#: src/client/composer/composer-widget.vala:1990 ++#: src/client/composer/composer-widget.vala:1845 + #, c-format + msgid "“%s” could not be found." + msgstr "”%s” kunde inte hittas." + +-#: src/client/composer/composer-widget.vala:1996 ++#: src/client/composer/composer-widget.vala:1851 + #, c-format + msgid "“%s” is a folder." + msgstr "”%s” är en mapp." + +-#: src/client/composer/composer-widget.vala:2015 ++#: src/client/composer/composer-widget.vala:1870 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "”%s” kunde inte öppnas för läsning." + +-#: src/client/composer/composer-widget.vala:2023 ++#: src/client/composer/composer-widget.vala:1878 + msgid "Cannot add attachment" + msgstr "Kan inte bifoga din fil" + ++#. Translators: This is the name of the file chooser filter ++#. when inserting an image in the composer. ++#: src/client/composer/composer-widget.vala:1949 ++msgid "Images" ++msgstr "Bilder" ++ + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:2083 ++#: src/client/composer/composer-widget.vala:2013 + #: src/client/conversation-viewer/conversation-email.vala:542 +-#: src/client/util/util-email.vala:236 ui/conversation-message.ui:312 ++#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Till:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:2089 ++#: src/client/composer/composer-widget.vala:2019 + #: src/client/conversation-viewer/conversation-email.vala:547 +-#: src/client/util/util-email.vala:241 ui/conversation-message.ui:357 ++#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Cc:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2095 ++#: src/client/composer/composer-widget.vala:2025 + #: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Bcc:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2101 ++#: src/client/composer/composer-widget.vala:2031 + msgid "Reply-To: " + msgstr "Svara-till: " + +-#: src/client/composer/composer-widget.vala:2353 +-msgid "Select Color" +-msgstr "Välj färg" +- + #. Displayed in the From dropdown to indicate an + #. "alternate email address" for an account. The first + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2542 ++#: src/client/composer/composer-widget.vala:2149 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s via %2$s" + +-#. Translators: This is the name of the file chooser filter +-#. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:2899 +-msgid "Images" +-msgstr "Bilder" +- + #: src/client/composer/spell-check-popover.vala:125 + msgid "Remove this language from the preferred list" + msgstr "Ta bort detta språk från listan över föredragna språk" +@@ -1786,51 +1788,51 @@ msgid "Search for more languages" + msgstr "Sök efter fler språk" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:335 ++#: src/client/conversation-list/conversation-list-view.vala:339 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "Flytta konversation till _papperskorgen" + msgstr[1] "Flytta konversationer till _papperskorgen" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:347 ++#: src/client/conversation-list/conversation-list-view.vala:351 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "_Radera konversation" + msgstr[1] "_Radera konversationer" + +-#: src/client/conversation-list/conversation-list-view.vala:360 ++#: src/client/conversation-list/conversation-list-view.vala:364 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Markera som _läst" + +-#: src/client/conversation-list/conversation-list-view.vala:368 ++#: src/client/conversation-list/conversation-list-view.vala:372 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Markera som _oläst" + +-#: src/client/conversation-list/conversation-list-view.vala:376 ++#: src/client/conversation-list/conversation-list-view.vala:380 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "Markera som ov_iktigt" + +-#: src/client/conversation-list/conversation-list-view.vala:383 ++#: src/client/conversation-list/conversation-list-view.vala:387 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "Markera som _viktigt" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:392 ++#: src/client/conversation-list/conversation-list-view.vala:396 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "Sva_ra" + +-#: src/client/conversation-list/conversation-list-view.vala:398 ++#: src/client/conversation-list/conversation-list-view.vala:402 + msgid "R_eply All" + msgstr "Svara _alla" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:404 ++#: src/client/conversation-list/conversation-list-view.vala:408 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "Vidare_befordra" +@@ -1841,19 +1843,19 @@ msgstr "Jag" + + #. Translators: Human-readable version of the RFC 822 From header + #: src/client/conversation-viewer/conversation-email.vala:537 +-#: src/client/util/util-email.vala:227 ++#: src/client/util/util-email.vala:240 + msgid "From:" + msgstr "Från:" + + #. Translators: Human-readable version of the RFC 822 Date header + #: src/client/conversation-viewer/conversation-email.vala:557 +-#: src/client/util/util-email.vala:232 ++#: src/client/util/util-email.vala:245 + msgid "Date:" + msgstr "Datum:" + + #. Translators: Human-readable version of the RFC 822 Subject header + #: src/client/conversation-viewer/conversation-email.vala:567 +-#: src/client/util/util-email.vala:230 ++#: src/client/util/util-email.vala:243 + msgid "Subject:" + msgstr "Ämne:" + +@@ -2050,8 +2052,8 @@ msgstr "Ett fel har uppstått när serverns certifikat hanterades" + #. / Translators: Title for problem report dialog error + #. / information pane + #. Dialog title for displaying technical details of a problem. Same as the button that invokes it. +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:100 +-#: ui/problem-details-dialog.ui:12 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:99 ++#: ui/problem-details-dialog.ui:17 + msgid "Details" + msgstr "Detaljer" + +@@ -2103,14 +2105,6 @@ msgid_plural "%d results" + msgstr[0] "%d resultat" + msgstr[1] "%d resultat" + +-#: src/client/plugin/desktop-notifications/desktop-notifications.plugin.desktop.in:4 +-msgid "Desktop Notifications" +-msgstr "Skrivbordsaviseringar" +- +-#: src/client/plugin/desktop-notifications/desktop-notifications.plugin.desktop.in:5 +-msgid "Displays desktop notifications when new email is delivered" +-msgstr "Visar skrivbordsaviseringar då ny e-post levereras" +- + #. / Notification body when a message as been received + #. / and other unread messages have not been + #. / seen. First string substitution is the message +@@ -2176,29 +2170,30 @@ msgstr "Skapa återanvändbara mallar för att skicka e-post" + #. the front for the default. English names do not need to be + #. included. + #: src/client/plugin/email-templates/email-templates.vala:29 ++#: src/client/plugin/mail-merge/mail-merge.vala:29 + msgid "Templates | Template Mail | Template Email | Template E-Mail" + msgstr "Mallar | E-postmallar | Meddelandemallar" + + #. Translators: The name of the folder used to + #. store email templates +-#: src/client/plugin/email-templates/email-templates.vala:195 ++#: src/client/plugin/email-templates/email-templates.vala:201 + msgid "Templates" + msgstr "Mallar" + + #. Translators: Info bar button label for creating a + #. new email template +-#: src/client/plugin/email-templates/email-templates.vala:276 ++#: src/client/plugin/email-templates/email-templates.vala:282 + msgid "New" + msgstr "Ny" + + #. Translators: Infobar status label for an email template +-#: src/client/plugin/email-templates/email-templates.vala:287 ++#: src/client/plugin/email-templates/email-templates.vala:293 + msgid "Message template" + msgstr "Meddelandemall" + + #. Translators: Info bar button label for sending an + #. email template +-#: src/client/plugin/email-templates/email-templates.vala:291 ++#: src/client/plugin/email-templates/email-templates.vala:297 + msgid "Send" + msgstr "Skicka" + +@@ -2206,18 +2201,73 @@ msgstr "Skicka" + #. existing email template + #. Translators: Info bar button label for editing a draft + #. email +-#: src/client/plugin/email-templates/email-templates.vala:299 +-#: src/client/plugin/special-folders/special-folders.vala:180 ++#: src/client/plugin/email-templates/email-templates.vala:305 ++#: src/client/plugin/mail-merge/mail-merge.vala:336 ++#: src/client/plugin/special-folders/special-folders.vala:187 + msgid "Edit" + msgstr "Redigera" + +-#: src/client/plugin/folder-highlight/folder-highlight.plugin.desktop.in:4 +-msgid "Folder Highlight" +-msgstr "Mappfärgmarkering" +- +-#: src/client/plugin/folder-highlight/folder-highlight.plugin.desktop.in:5 +-msgid "Highlights folders that have newly delivered mail" +-msgstr "Färgmarkerar mappar som har nyligen levererad e-post" ++#. / Translators: Menu item label for invoking mail ++#. / merge in composer ++#. / Translators: File chooser title after invoking mail ++#. / merge in composer ++#. Translators: The name of the folder used to ++#. display merged email ++#: src/client/plugin/mail-merge/mail-merge.plugin.desktop.in:5 ++#: src/client/plugin/mail-merge/mail-merge.vala:288 ++#: src/client/plugin/mail-merge/mail-merge.vala:389 ++#: src/client/plugin/mail-merge/mail-merge.vala:488 ++msgid "Mail Merge" ++msgstr "Koppla e-post" ++ ++#: src/client/plugin/mail-merge/mail-merge.plugin.desktop.in:6 ++msgid "Fill in and send email templates using a spreadsheet" ++msgstr "Fyll i och skicka e-postmallar med ett kalkylblad" ++ ++#. Translators: Info bar label for starting sending a mail ++#. merge ++#: src/client/plugin/mail-merge/mail-merge.vala:118 ++msgid "Start" ++msgstr "Starta" ++ ++#. Translators: Info bar label for pausing sending a mail ++#. merge ++#: src/client/plugin/mail-merge/mail-merge.vala:130 ++msgid "Pause" ++msgstr "Pausa" ++ ++#. Translators: Info bar description for the mail merge ++#. folder. The first string substitution the number of email ++#. already sent, the second is the total number to send. ++#: src/client/plugin/mail-merge/mail-merge.vala:240 ++#, c-format ++msgid "Sent %u of %u" ++msgid_plural "Sent %u of %u" ++msgstr[0] "%u av %u skickat" ++msgstr[1] "%u av %u skickade" ++ ++#. Translators: Infobar status label for an email mail merge ++#. template ++#: src/client/plugin/mail-merge/mail-merge.vala:324 ++msgid "Mail merge template" ++msgstr "Mall för e-postkoppling" ++ ++#. Translators: Info bar button label for performing a ++#. mail-merge on an email template ++#: src/client/plugin/mail-merge/mail-merge.vala:328 ++msgid "Merge" ++msgstr "Koppla" ++ ++#. / Translators: Action bar menu button label for ++#. / mail-merge plugin ++#: src/client/plugin/mail-merge/mail-merge.vala:377 ++msgid "Insert field" ++msgstr "Infoga fält" ++ ++#. / Translators: File chooser filer label ++#: src/client/plugin/mail-merge/mail-merge.vala:396 ++msgid "Comma separated values (CSV)" ++msgstr "Kommaseparerade värden (CSV)" + + #: src/client/plugin/messaging-menu/messaging-menu.plugin.desktop.in:4 + msgid "Messaging Menu" +@@ -2227,19 +2277,11 @@ msgstr "Meddelandemeny" + msgid "Displays Unity Messaging Menu notifications for new email" + msgstr "Visar Unitys meddelandemenyaviseringar för ny e-post" + +-#: src/client/plugin/messaging-menu/messaging-menu.vala:75 ++#: src/client/plugin/messaging-menu/messaging-menu.vala:79 + #, c-format + msgid "%s — New Messages" + msgstr "%s — Nya meddelanden" + +-#: src/client/plugin/notification-badge/notification-badge.plugin.desktop.in:4 +-msgid "Notification Badge" +-msgstr "Aviseringsikon" +- +-#: src/client/plugin/notification-badge/notification-badge.plugin.desktop.in:5 +-msgid "Displays a dock badge showing the number of new messages" +-msgstr "Visar en ikon i dockan som visar antalet nya meddelanden" +- + #: src/client/plugin/sent-sound/sent-sound.plugin.desktop.in:4 + msgid "Sent Sound" + msgstr "Skickat-ljud" +@@ -2249,36 +2291,32 @@ msgid "Plays the desktop sent-mail sound when an email is sent" + msgstr "" + "Spelar skrivbordets ljud för skickad e-post när ett e-postmeddelande skickas" + +-#: src/client/plugin/special-folders/special-folders.plugin.desktop.in:4 +-msgid "Special Folders" +-msgstr "Speciella mappar" +- + #. Translators: Info bar button label for emptying + #. trash/spam folders +-#: src/client/plugin/special-folders/special-folders.vala:160 ++#: src/client/plugin/special-folders/special-folders.vala:167 + msgid "Empty" + msgstr "Töm" + + #. Translators: Info bar status message for a draft email +-#: src/client/plugin/special-folders/special-folders.vala:172 ++#: src/client/plugin/special-folders/special-folders.vala:179 + msgid "Draft message" + msgstr "Utkastmeddelande" + + #. Translators: Info bar status description for a draft + #. email +-#: src/client/plugin/special-folders/special-folders.vala:175 ++#: src/client/plugin/special-folders/special-folders.vala:182 + msgid "This message has not yet been sent." + msgstr "Det här meddelandet har inte skickats ännu." + + #. Translators: Info bar status message for an sent but + #. unsaved email +-#: src/client/plugin/special-folders/special-folders.vala:191 ++#: src/client/plugin/special-folders/special-folders.vala:198 + msgid "Message not saved" + msgstr "Meddelandet sparades inte" + + #. Translators: Info bar status description for a sent but + #. unsaved email +-#: src/client/plugin/special-folders/special-folders.vala:194 ++#: src/client/plugin/special-folders/special-folders.vala:201 + msgid "This message was sent, but has not been saved to your account." + msgstr "Detta meddelande har skickats, men sparades inte till ditt konto." + +@@ -2350,32 +2388,37 @@ msgstr "Igår" + msgid "%A" + msgstr "%A" + +-#. / 12 hours format for datetime that a message being replied to was received +-#. / See http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format +-#: src/client/util/util-date.vala:216 ++#. / 12 hours format for datetime that a message being replied ++#. / to was received See ++#. / http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format ++#: src/client/util/util-date.vala:218 + msgid "%a, %b %-e, %Y at %l:%M %P" + msgstr "%a, %-e %b %Y klockan %l:%M %P" + +-#. / 24 hours format for the datetime that a message being replied to was received +-#. / See http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format +-#: src/client/util/util-date.vala:220 ++#. / 24 hours format for the datetime that a message being ++#. / replied to was received See ++#. / http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format ++#: src/client/util/util-date.vala:224 + msgid "%a, %b %-e, %Y at %H:%M" + msgstr "%a, %-e %b %Y klockan %H:%M" + +-#. / Format for the datetime that a message being replied to was received +-#. / See http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format +-#: src/client/util/util-date.vala:224 ++#. / Format for the datetime that a message being replied to ++#. / was received See ++#. / http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format ++#: src/client/util/util-date.vala:230 + msgid "%a, %b %-e, %Y at %X" + msgstr "%a, %-e %b %Y klockan %X" + +-#: src/client/util/util-email.vala:38 ++#. Translators: Label used when an email has a missing or ++#. an empty subject ++#: src/client/util/util-email.vala:50 + msgid "(No subject)" + msgstr "(Inget ämne)" + + #. / Translators: This is shown for displaying a list of email + #. / recipients that happens to be empty, i.e. contains no + #. / email addresses. +-#: src/client/util/util-email.vala:135 ++#: src/client/util/util-email.vala:148 + msgid "(No recipients)" + msgstr "(Inga mottagare)" + +@@ -2384,7 +2427,7 @@ msgstr "(Inga mottagare)" + #. / addresses. The first (string) substitution is + #. / address of the first, the second substitution is + #. / the number of n - 1 remaining recipients. +-#: src/client/util/util-email.vala:147 ++#: src/client/util/util-email.vala:160 + #, c-format + msgid "%s and %d other" + msgid_plural "%s and %d others" +@@ -2394,26 +2437,26 @@ msgstr[1] "%s och %d till" + #. / The quoted header for a message being replied to. + #. / %1$s will be substituted for the date, and %2$s will be substituted for + #. / the original sender. +-#: src/client/util/util-email.vala:180 ++#: src/client/util/util-email.vala:193 + #, c-format + msgid "On %1$s, %2$s wrote:" + msgstr "%1$s skrev %2$s:" + + #. / The quoted header for a message being replied to (in case the date is not known). + #. / %s will be replaced by the original sender. +-#: src/client/util/util-email.vala:187 ++#: src/client/util/util-email.vala:200 + #, c-format + msgid "%s wrote:" + msgstr "%s skrev:" + + #. / The quoted header for a message being replied to (in case the sender is not known). + #. / %s will be replaced by the original date +-#: src/client/util/util-email.vala:193 ++#: src/client/util/util-email.vala:206 + #, c-format + msgid "On %s:" + msgstr "%s:" + +-#: src/client/util/util-email.vala:222 ++#: src/client/util/util-email.vala:235 + msgid "---------- Forwarded message ----------" + msgstr "---------- Vidarebefordrat meddelande ----------" + +@@ -2653,7 +2696,7 @@ msgstr "oläst" + #. Draft mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:929 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:998 + msgid "Drafts | Draft" + msgstr "Utkast | Drafts | Draft" + +@@ -2661,13 +2704,13 @@ msgstr "Utkast | Drafts | Draft" + #. Sent mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:938 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1007 + msgid "Sent | Sent Mail | Sent Email | Sent E-Mail" + msgstr "Skickat | Skickade brev | Sent | Sent Mail | Sent Email | Sent E-Mail" + + #. The localised name(s) of the Sent folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:943 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1012 + msgctxt "Outlook localised name" + msgid "Sent Items" + msgstr "Skickat" +@@ -2676,7 +2719,7 @@ msgstr "Skickat" + #. Junk/Spam mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:953 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1022 + msgid "" + "Junk | Spam | Junk Mail | Junk Email | Junk E-Mail | Bulk Mail | Bulk Email " + "| Bulk E-Mail" +@@ -2688,13 +2731,13 @@ msgstr "" + #. Trash mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:963 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1032 + msgid "Trash | Rubbish | Rubbish Bin" + msgstr "Papperskorg | Papperskorgen | Trash | Rubbish | Rubbish Bin" + + #. The localised name(s) of the Trash folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:968 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1037 + msgctxt "Outlook localised name" + msgid "Deleted Items" + msgstr "Borttaget" +@@ -2703,21 +2746,21 @@ msgstr "Borttaget" + #. Archive mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:978 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1047 + msgid "Archive | Archives" + msgstr "Arkiv | Archive | Archives" + +-#: src/engine/rfc822/rfc822-message.vala:531 ++#: src/engine/rfc822/rfc822-message.vala:528 + #, c-format + msgid "Could not determine mime type for “%s”." + msgstr "Kunde inte avgöra mimetyp för ”%s”." + +-#: src/engine/rfc822/rfc822-message.vala:542 ++#: src/engine/rfc822/rfc822-message.vala:539 + #, c-format + msgid "Could not determine content type for mime type “%s” on “%s”." + msgstr "Kunde inte avgöra innehållstyp för mimetypen ”%s” på ”%s”." + +-#: src/engine/rfc822/rfc822-message.vala:1001 ++#: src/engine/rfc822/rfc822-message.vala:1013 + msgid "(no subject)" + msgstr "(inget ämne)" + +@@ -2821,248 +2864,248 @@ msgstr "Li_ta på denna server" + msgid "_Don’t Trust This Server" + msgstr "Lita inte på _denna server" + +-#: ui/composer-headerbar.ui:23 ui/composer-headerbar.ui:107 +-msgid "Detach the composer from the window" +-msgstr "Koppla loss redigeraren från fönstret" +- +-#: ui/composer-headerbar.ui:135 +-msgid "_Send" +-msgstr "_Skicka" +- +-#: ui/composer-headerbar.ui:162 +-msgid "Discard and Close" +-msgstr "Förkasta och stäng" +- +-#: ui/composer-headerbar.ui:186 +-msgid "Save and Close" +-msgstr "Spara och stäng" +- +-#. Note that this button and the Update button will never be shown at the same time to the user. +-#: ui/composer-link-popover.ui:42 +-msgid "Insert the new link with this URL" +-msgstr "Infoga den nya länken med denna URL" +- +-#: ui/composer-link-popover.ui:43 +-msgid "Add" +-msgstr "Lägg till" +- +-#: ui/composer-link-popover.ui:47 +-msgid "Link URL" +-msgstr "Länk-URL" +- +-#. Note that this button and the Insert button will never be shown at the same time to the user. +-#: ui/composer-link-popover.ui:61 +-msgid "Update this link’s URL" +-msgstr "Uppdatera denna länk-URL" +- +-#: ui/composer-link-popover.ui:62 +-msgid "Update" +-msgstr "Uppdatera" +- +-#: ui/composer-link-popover.ui:75 +-msgid "Delete this link" +-msgstr "Ta bort denna länk" +- +-#: ui/composer-menus.ui:8 +-msgid "_Undo" +-msgstr "_Ångra" +- +-#: ui/composer-menus.ui:12 +-msgid "_Redo" +-msgstr "_Upprepa" +- +-#: ui/composer-menus.ui:18 ui/composer-menus.ui:36 +-msgid "Cu_t" +-msgstr "Klipp u_t" +- +-#: ui/composer-menus.ui:22 ui/composer-menus.ui:40 +-#: ui/conversation-message-menus.ui:37 +-msgid "_Copy" +-msgstr "_Kopiera" +- +-#: ui/composer-menus.ui:26 ui/composer-menus.ui:44 +-msgid "_Paste" +-msgstr "_Klistra in" +- +-#: ui/composer-menus.ui:30 +-msgctxt "Clipboard paste as plain text" +-msgid "Paste _Without Formatting" +-msgstr "Klistra in _utan formatering" +- +-#: ui/composer-menus.ui:50 +-msgid "Select _All" +-msgstr "Välj _alla" +- +-#: ui/composer-menus.ui:57 ui/conversation-message-menus.ui:43 +-msgid "_Inspect…" +-msgstr "_Inspektera…" +- +-#. Geary account mail will be sent from +-#: ui/composer-widget.ui:60 +-msgid "_From" +-msgstr "_Från" +- +-#. Address(es) e-mail is to be sent to +-#: ui/composer-widget.ui:130 +-msgid "_To" +-msgstr "_Till" +- +-#: ui/composer-widget.ui:158 +-msgid "Show Cc, Bcc, and Reply-To fields" +-msgstr "Visa fälten Cc, Bcc och Svara-till" +- +-#: ui/composer-widget.ui:219 +-msgid "_Cc" +-msgstr "_Cc" +- +-#: ui/composer-widget.ui:267 +-msgid "_Bcc" +-msgstr "_Bcc" +- +-#: ui/composer-widget.ui:315 +-msgid "_Reply-To" +-msgstr "Sva_ra-till" +- +-#: ui/composer-widget.ui:372 +-msgid "_Subject" +-msgstr "_Ämne" +- +-#: ui/composer-widget.ui:445 +-msgid "Drop files here" +-msgstr "Släpp filer här" +- +-#: ui/composer-widget.ui:461 +-msgid "To add them as attachments" +-msgstr "För att bifoga dem" +- +-#: ui/composer-widget.ui:602 ++#: ui/composer-editor.ui:100 + msgid "Bold text" + msgstr "Fet text" + +-#: ui/composer-widget.ui:626 ++#: ui/composer-editor.ui:124 + msgid "Italic text" + msgstr "Kursiv text" + +-#: ui/composer-widget.ui:650 ++#: ui/composer-editor.ui:148 + msgid "Underline text" + msgstr "Understryk text" + +-#: ui/composer-widget.ui:674 ++#: ui/composer-editor.ui:172 + msgid "Strikethrough text" + msgstr "Genomstruken text" + +-#: ui/composer-widget.ui:707 ++#: ui/composer-editor.ui:205 + msgid "Insert bulleted list" + msgstr "Infoga punktlista" + +-#: ui/composer-widget.ui:731 ++#: ui/composer-editor.ui:229 + msgid "Insert numbered list" + msgstr "Infoga numrerad lista" + +-#: ui/composer-widget.ui:764 ++#: ui/composer-editor.ui:262 + msgid "Indent or quote text" + msgstr "Indentera eller citera text" + +-#: ui/composer-widget.ui:788 ++#: ui/composer-editor.ui:286 + msgid "Un-indent or unquote text" + msgstr "Avindentera eller avcitera text" + +-#: ui/composer-widget.ui:817 ++#: ui/composer-editor.ui:315 + msgid "Remove text formatting" + msgstr "Ta bort textformatering" + +-#: ui/composer-widget.ui:836 ++#: ui/composer-editor.ui:334 + msgid "Change font type" + msgstr "Ändra typsnittets typ" + +-#: ui/composer-widget.ui:851 ++#: ui/composer-editor.ui:349 + msgid "Sans Serif" + msgstr "Sans Serif" + +-#: ui/composer-widget.ui:862 ++#: ui/composer-editor.ui:360 + msgid "Serif" + msgstr "Serif" + +-#: ui/composer-widget.ui:873 ++#: ui/composer-editor.ui:371 + msgid "Fixed Width" + msgstr "Fast bredd" + +-#: ui/composer-widget.ui:899 ++#: ui/composer-editor.ui:397 + msgid "Change font color" + msgstr "Ändra typsnittsfärg" + +-#: ui/composer-widget.ui:914 ++#: ui/composer-editor.ui:412 + msgid "Change font size" + msgstr "Ändra typsnittsstorlek" + +-#: ui/composer-widget.ui:949 ++#: ui/composer-editor.ui:447 + msgid "Insert or update text link" + msgstr "Infoga eller uppdatera textlänk" + +-#: ui/composer-widget.ui:973 ++#: ui/composer-editor.ui:471 + msgid "Insert an image" + msgstr "Infoga en bild" + +-#: ui/composer-widget.ui:1015 ++#: ui/composer-editor.ui:513 + msgid "Undo last edit" + msgstr "Ångra senaste redigering" + +-#: ui/composer-widget.ui:1039 ++#: ui/composer-editor.ui:537 + msgid "Redo last edit" + msgstr "Gör om senaste redigering" + +-#: ui/composer-widget.ui:1068 ui/composer-widget.ui:1093 ++#: ui/composer-editor.ui:566 ui/composer-editor.ui:591 + msgid "Attach a file" + msgstr "Bifoga en fil" + +-#: ui/composer-widget.ui:1117 ++#: ui/composer-editor.ui:615 + msgid "Add original attachments" + msgstr "Lägg till ursprungliga bilagor" + +-#: ui/composer-widget.ui:1162 ++#: ui/composer-editor.ui:660 + msgid "More options" + msgstr "Fler inställningar" + +-#: ui/composer-widget.ui:1182 ++#: ui/composer-editor.ui:680 + msgid "Show formatting toolbar" + msgstr "Visa formateringsverktygsfält" + +-#: ui/composer-widget.ui:1200 ++#: ui/composer-editor.ui:698 + msgid "Select spell checking languages" + msgstr "Välj språk för stavningskontroll" + +-#: ui/composer-widget.ui:1263 ++#: ui/composer-editor.ui:723 + msgid "S_ans Serif" + msgstr "S_ans Serif" + +-#: ui/composer-widget.ui:1268 ++#: ui/composer-editor.ui:728 + msgid "S_erif" + msgstr "S_erif" + +-#: ui/composer-widget.ui:1273 ++#: ui/composer-editor.ui:733 + msgid "_Fixed Width" + msgstr "_Fast bredd" + +-#: ui/composer-widget.ui:1283 ++#: ui/composer-editor.ui:743 + msgid "_Small" + msgstr "_Liten" + +-#: ui/composer-widget.ui:1288 ++#: ui/composer-editor.ui:748 + msgid "_Medium" + msgstr "_Medel" + +-#: ui/composer-widget.ui:1293 ++#: ui/composer-editor.ui:753 + msgid "Lar_ge" + msgstr "_Stor" + +-#: ui/composer-widget.ui:1303 ++#: ui/composer-editor.ui:763 + msgid "_Rich Text" + msgstr "_Rich Text" + +-#: ui/composer-widget.ui:1308 ++#: ui/composer-editor.ui:768 + msgid "_Plain Text" + msgstr "_Vanlig text" + ++#: ui/composer-editor-menus.ui:8 ++msgid "_Undo" ++msgstr "_Ångra" ++ ++#: ui/composer-editor-menus.ui:12 ++msgid "_Redo" ++msgstr "_Upprepa" ++ ++#: ui/composer-editor-menus.ui:18 ui/composer-editor-menus.ui:36 ++msgid "Cu_t" ++msgstr "Klipp u_t" ++ ++#: ui/composer-editor-menus.ui:22 ui/composer-editor-menus.ui:40 ++#: ui/conversation-message-menus.ui:37 ++msgid "_Copy" ++msgstr "_Kopiera" ++ ++#: ui/composer-editor-menus.ui:26 ui/composer-editor-menus.ui:44 ++msgid "_Paste" ++msgstr "_Klistra in" ++ ++#: ui/composer-editor-menus.ui:30 ++msgctxt "Clipboard paste as plain text" ++msgid "Paste _Without Formatting" ++msgstr "Klistra in _utan formatering" ++ ++#: ui/composer-editor-menus.ui:50 ++msgid "Select _All" ++msgstr "Välj _alla" ++ ++#: ui/composer-editor-menus.ui:57 ui/conversation-message-menus.ui:43 ++msgid "_Inspect…" ++msgstr "_Inspektera…" ++ ++#: ui/composer-headerbar.ui:23 ui/composer-headerbar.ui:107 ++msgid "Detach the composer from the window" ++msgstr "Koppla loss redigeraren från fönstret" ++ ++#: ui/composer-headerbar.ui:135 ++msgid "_Send" ++msgstr "_Skicka" ++ ++#: ui/composer-headerbar.ui:162 ++msgid "Discard and Close" ++msgstr "Förkasta och stäng" ++ ++#: ui/composer-headerbar.ui:186 ++msgid "Save and Close" ++msgstr "Spara och stäng" ++ ++#. Note that this button and the Update button will never be shown at the same time to the user. ++#: ui/composer-link-popover.ui:42 ++msgid "Insert the new link with this URL" ++msgstr "Infoga den nya länken med denna URL" ++ ++#: ui/composer-link-popover.ui:43 ++msgid "Add" ++msgstr "Lägg till" ++ ++#: ui/composer-link-popover.ui:47 ++msgid "Link URL" ++msgstr "Länk-URL" ++ ++#. Note that this button and the Insert button will never be shown at the same time to the user. ++#: ui/composer-link-popover.ui:61 ++msgid "Update this link’s URL" ++msgstr "Uppdatera denna länk-URL" ++ ++#: ui/composer-link-popover.ui:62 ++msgid "Update" ++msgstr "Uppdatera" ++ ++#: ui/composer-link-popover.ui:75 ++msgid "Delete this link" ++msgstr "Ta bort denna länk" ++ ++#. Geary account mail will be sent from ++#: ui/composer-widget.ui:61 ++msgid "_From" ++msgstr "_Från" ++ ++#. Address(es) e-mail is to be sent to ++#: ui/composer-widget.ui:131 ++msgid "_To" ++msgstr "_Till" ++ ++#: ui/composer-widget.ui:159 ++msgid "Show Cc, Bcc, and Reply-To fields" ++msgstr "Visa fälten Cc, Bcc och Svara-till" ++ ++#: ui/composer-widget.ui:220 ++msgid "_Cc" ++msgstr "_Cc" ++ ++#: ui/composer-widget.ui:268 ++msgid "_Bcc" ++msgstr "_Bcc" ++ ++#: ui/composer-widget.ui:316 ++msgid "_Reply-To" ++msgstr "Sva_ra-till" ++ ++#: ui/composer-widget.ui:373 ++msgid "_Subject" ++msgstr "_Ämne" ++ ++#: ui/composer-widget.ui:446 ++msgid "Drop files here" ++msgstr "Släpp filer här" ++ ++#: ui/composer-widget.ui:462 ++msgid "To add them as attachments" ++msgstr "För att bifoga dem" ++ + #: ui/components-attachment-pane.ui:29 ui/components-attachment-pane.ui:47 + msgid "Select all attachments" + msgstr "Markera alla bifogade filer" +@@ -3079,7 +3122,7 @@ msgstr "Öppna markerade bifogade filer" + msgid "Save _All" + msgstr "Spara _alla" + +-#: ui/components-inspector-error-view.ui:33 ++#: ui/components-inspector-error-view.ui:31 + msgid "" + "If the problem is serious or persists, please save and send these details to " + "one of the contact " +@@ -3091,13 +3134,13 @@ msgstr "" + "\">kontaktvägarna eller bifoga dem till en ny felrapport." + +-#: ui/components-inspector-error-view.ui:49 ++#: ui/components-inspector-error-view.ui:47 + msgid "Details:" + msgstr "Detaljer:" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:19 ++#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:24 + msgid "Search for matching log entries" + msgstr "Sök matchande loggposter" + +@@ -3113,13 +3156,13 @@ msgstr "Lägg till en markörpost till loggen" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:46 ++#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:51 + msgid "Save logs entries and details" + msgstr "Spara loggposter och detaljer" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:62 ++#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:67 + msgid "Copy to clipboard" + msgstr "Kopiera till urklipp" + +@@ -3680,6 +3723,27 @@ msgstr "_Autentisera" + msgid "Geary update in progress…" + msgstr "Geary-uppgradering pågår…" + ++#~ msgid "Desktop Notifications" ++#~ msgstr "Skrivbordsaviseringar" ++ ++#~ msgid "Displays desktop notifications when new email is delivered" ++#~ msgstr "Visar skrivbordsaviseringar då ny e-post levereras" ++ ++#~ msgid "Folder Highlight" ++#~ msgstr "Mappfärgmarkering" ++ ++#~ msgid "Highlights folders that have newly delivered mail" ++#~ msgstr "Färgmarkerar mappar som har nyligen levererad e-post" ++ ++#~ msgid "Notification Badge" ++#~ msgstr "Aviseringsikon" ++ ++#~ msgid "Displays a dock badge showing the number of new messages" ++#~ msgstr "Visar en ikon i dockan som visar antalet nya meddelanden" ++ ++#~ msgid "Special Folders" ++#~ msgstr "Speciella mappar" ++ + #~ msgctxt "shortcut window" + #~ msgid "Find in current conversations" + #~ msgstr "Hitta i aktuella konversationer" +@@ -4059,10 +4123,6 @@ msgstr "Geary-uppgradering pågår…" + #~ msgid "Additional Shortcuts" + #~ msgstr "Ytterligare genvägar" + +-#~ msgctxt "shortcut window" +-#~ msgid "Star" +-#~ msgstr "Stjärnmärk" +- + #~ msgctxt "shortcut window" + #~ msgid "Unstar" + #~ msgstr "Ta bort stjärnmärkning" +-- +2.29.2 + diff --git a/mail-client/geary/files/0063-Util.Email-Use-a-single-unambiguous-date-format-for-.patch b/mail-client/geary/files/0063-Util.Email-Use-a-single-unambiguous-date-format-for-.patch new file mode 100644 index 0000000..c593a69 --- /dev/null +++ b/mail-client/geary/files/0063-Util.Email-Use-a-single-unambiguous-date-format-for-.patch @@ -0,0 +1,139 @@ +From 51b8c501be7d952e0023a72b24c91254b98fc48c Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 10 Oct 2020 23:55:02 +1100 +Subject: [PATCH 063/124] Util.Email: Use a single unambiguous date format for + reply quote dates + +Rather than using the UI pref for 12/24h clocks, use a single format +string that should be reasonably unambiguous and that includes the +time zone. + +Fixes #888 +--- + src/client/composer/composer-widget.vala | 9 +-- + src/client/util/util-email.vala | 78 ++++++++++++++---------- + 2 files changed, 49 insertions(+), 38 deletions(-) + +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index 37e93fb4..503727a9 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -740,7 +740,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + ); + add_recipients_and_ids(type, full_context); + complete_quote = Util.Email.quote_email_for_reply( +- full_context, quote, this.config.clock_format, HTML ++ full_context, quote, HTML + ); + if (!Geary.String.is_empty(quote)) { + this.top_posting = false; +@@ -1291,12 +1291,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + // Always use reply styling, since forward styling doesn't + // work for inline quotes + this.editor.body.insert_html( +- Util.Email.quote_email_for_reply( +- referred, +- to_quote, +- this.config.clock_format, +- Geary.RFC822.TextFormat.HTML +- ) ++ Util.Email.quote_email_for_reply(referred, to_quote, HTML) + ); + } + +diff --git a/src/client/util/util-email.vala b/src/client/util/util-email.vala +index a18a45cf..4a1754a7 100644 +--- a/src/client/util/util-email.vala ++++ b/src/client/util/util-email.vala +@@ -177,41 +177,57 @@ namespace Util.Email { + */ + public string quote_email_for_reply(Geary.Email email, + string? quote, +- Util.Date.ClockFormat clock_format, + Geary.RFC822.TextFormat format) { +- if (email.body == null && quote == null) +- return ""; +- + string quoted = ""; ++ if (email.body != null || quote != null) { ++ /// GLib g_date_time_format format string for the date and ++ /// time that a message being replied to was ++ /// received. This should be roughly similar to an RFC ++ /// 822-style date header value with optional additional ++ /// punctuation for readability. Note that this date may ++ /// be sent to someone in a different locale than the ++ /// sender, so should be unambiguous (for example, do not ++ /// use mm/dd/yyyy since it could be confused with ++ /// dd/mm/yyyy) and must include the time zone. ++ string date_format = _("%a, %b %-e %Y at %X %Z"); + +- string DATE_FORMAT = Util.Date.get_full_date(clock_format); +- +- if (email.date != null && email.from != null) { +- /// The quoted header for a message being replied to. +- /// %1$s will be substituted for the date, and %2$s will be substituted for +- /// the original sender. +- string QUOTED_LABEL = _("On %1$s, %2$s wrote:"); +- quoted += QUOTED_LABEL.printf(email.date.value.format(DATE_FORMAT), +- Geary.RFC822.Utils.email_addresses_for_reply(email.from, format)); +- +- } else if (email.from != null) { +- /// The quoted header for a message being replied to (in case the date is not known). +- /// %s will be replaced by the original sender. +- string QUOTED_LABEL = _("%s wrote:"); +- quoted += QUOTED_LABEL.printf(Geary.RFC822.Utils.email_addresses_for_reply(email.from, format)); +- +- } else if (email.date != null) { +- /// The quoted header for a message being replied to (in case the sender is not known). +- /// %s will be replaced by the original date +- string QUOTED_LABEL = _("On %s:"); +- quoted += QUOTED_LABEL.printf(email.date.value.format(DATE_FORMAT)); +- } ++ if (email.date != null && email.from != null) { ++ /// The quoted header for a message being replied to. ++ /// %1$s will be substituted for the date, and %2$s ++ /// will be substituted for the original sender. ++ string QUOTED_LABEL = _("On %1$s, %2$s wrote:"); ++ quoted += QUOTED_LABEL.printf( ++ email.date.value.format(date_format), ++ Geary.RFC822.Utils.email_addresses_for_reply( ++ email.from, format ++ ) ++ ); ++ } else if (email.from != null) { ++ /// The quoted header for a message being replied to ++ /// (in case the date is not known). %s will be ++ /// replaced by the original sender. ++ string QUOTED_LABEL = _("%s wrote:"); ++ quoted += QUOTED_LABEL.printf( ++ Geary.RFC822.Utils.email_addresses_for_reply( ++ email.from, format ++ ) ++ ); ++ } else if (email.date != null) { ++ /// The quoted header for a message being replied to ++ /// (in case the sender is not known). %s will be ++ /// replaced by the original date ++ string QUOTED_LABEL = _("On %s:"); ++ quoted += QUOTED_LABEL.printf( ++ email.date.value.format(date_format) ++ ); ++ } + +- quoted += "
"; +- try { +- quoted += quote_body(email, quote, true, format); +- } catch (Error err) { +- debug("Failed to quote body for replying: %s".printf(err.message)); ++ quoted += "
"; ++ try { ++ quoted += quote_body(email, quote, true, format); ++ } catch (Error err) { ++ debug("Failed to quote body for replying: %s".printf(err.message)); ++ } + } + + return quoted; +-- +2.29.2 + diff --git a/mail-client/geary/files/0064-Util.Date-Remove-now-unused-function.patch b/mail-client/geary/files/0064-Util.Date-Remove-now-unused-function.patch new file mode 100644 index 0000000..02ab944 --- /dev/null +++ b/mail-client/geary/files/0064-Util.Date-Remove-now-unused-function.patch @@ -0,0 +1,49 @@ +From 4be51e01c02f57fe68121603888ca012000d845d Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 10 Oct 2020 23:57:11 +1100 +Subject: [PATCH 064/124] Util.Date: Remove now unused function + +--- + src/client/util/util-date.vala | 28 ---------------------------- + 1 file changed, 28 deletions(-) + +diff --git a/src/client/util/util-date.vala b/src/client/util/util-date.vala +index 88948916..322a4cf2 100644 +--- a/src/client/util/util-date.vala ++++ b/src/client/util/util-date.vala +@@ -208,32 +208,4 @@ public string get_clock_format(ClockFormat clock_format) { + return xlat_pretty_clocks[clock_format.to_index()]; + } + +-public string get_full_date(ClockFormat clock_format) { +- var value = ""; +- switch (clock_format) { +- case TWELVE_HOURS: +- /// 12 hours format for datetime that a message being replied +- /// to was received See +- /// http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format +- value = _("%a, %b %-e, %Y at %l:%M %P"); +- break; +- case TWENTY_FOUR_HOURS: +- /// 24 hours format for the datetime that a message being +- /// replied to was received See +- /// http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format +- value = _("%a, %b %-e, %Y at %H:%M"); +- break; +- case LOCALE_DEFAULT: +- /// Format for the datetime that a message being replied to +- /// was received See +- /// http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format +- value = _("%a, %b %-e, %Y at %X"); +- break; +- case TOTAL: +- // noop +- break; +- } +- return value; +-} +- + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0065-main-toolbar-Create-object-containing-conversation-a.patch b/mail-client/geary/files/0065-main-toolbar-Create-object-containing-conversation-a.patch new file mode 100644 index 0000000..671ba47 --- /dev/null +++ b/mail-client/geary/files/0065-main-toolbar-Create-object-containing-conversation-a.patch @@ -0,0 +1,1037 @@ +From 98017cfb390dd13dd5688711f8164e1a5e9bdcdf Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Thu, 8 Oct 2020 14:38:31 +0200 +Subject: [PATCH 065/124] main-toolbar: Create object containing conversation + actions + +This creates a new object that contain the 4 groups of actions that used +to be in the conversation-viewer headerbar. +This allows the widgets to be moved to differen locations, e.g. to an +action bar that will be added in a later commit. +--- + po/POTFILES.in | 2 + + .../application/application-main-window.vala | 61 +++-- + .../components-conversation-actions.vala | 132 ++++++++++ + src/client/components/main-toolbar.vala | 96 +------- + src/client/meson.build | 1 + + ui/application-main-window.ui | 2 +- + ui/components-conversation-actions.ui | 221 +++++++++++++++++ + ui/main-toolbar.ui | 230 ------------------ + ui/org.gnome.Geary.gresource.xml | 1 + + 9 files changed, 405 insertions(+), 341 deletions(-) + create mode 100644 src/client/components/components-conversation-actions.vala + create mode 100644 ui/components-conversation-actions.ui + +diff --git a/po/POTFILES.in b/po/POTFILES.in +index 09c3c970..7ef4e050 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -39,6 +39,7 @@ src/client/application/secret-mediator.vala + src/client/client-action.vala + src/client/components/client-web-view.vala + src/client/components/components-attachment-pane.vala ++src/client/components/components-conversation-actions.vala + src/client/components/components-entry-undo.vala + src/client/components/components-in-app-notification.vala + src/client/components/components-info-bar-stack.vala +@@ -455,6 +456,7 @@ ui/composer-widget.ui + ui/components-attachment-pane.ui + ui/components-attachment-pane-menus.ui + ui/components-attachment-view.ui ++ui/components-conversation-actions.ui + ui/components-in-app-notification.ui + ui/components-inspector-error-view.ui + ui/components-inspector-log-view.ui +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 3b7c29e7..20fc3758 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -284,6 +284,9 @@ public class Application.MainWindow : + public ConversationListView conversation_list_view { get; private set; } + public ConversationViewer conversation_viewer { get; private set; } + ++ // Actions in the Conversation HeaderBar or ActionBar ++ private Components.ConversationActions conversation_actions; ++ + public Components.InfoBarStack conversation_list_info_bars { + get; private set; default = new Components.InfoBarStack(PRIORITY_QUEUE); + } +@@ -692,10 +695,10 @@ public class Application.MainWindow : + // selected model. + + if (this.selected_folder != null) { +- this.main_toolbar.copy_folder_menu.enable_disable_folder( ++ this.conversation_actions.copy_folder_menu.enable_disable_folder( + this.selected_folder, true + ); +- this.main_toolbar.move_folder_menu.enable_disable_folder( ++ this.conversation_actions.move_folder_menu.enable_disable_folder( + this.selected_folder, true + ); + +@@ -740,9 +743,10 @@ public class Application.MainWindow : + + update_conversation_actions(NONE); + update_title(); +- this.main_toolbar.update_trash_button( ++ this.conversation_actions.update_trash_button( + !this.is_shift_down && this.selected_folder_supports_trash + ); ++ + this.conversation_viewer.show_loading(); + this.previous_selection_was_interactive = is_interactive; + +@@ -779,10 +783,10 @@ public class Application.MainWindow : + this.conversation_list_view.set_model(conversations_model); + + // disable copy/move to the new folder +- this.main_toolbar.copy_folder_menu.enable_disable_folder( ++ this.conversation_actions.copy_folder_menu.enable_disable_folder( + to_select, false + ); +- this.main_toolbar.move_folder_menu.enable_disable_folder( ++ this.conversation_actions.move_folder_menu.enable_disable_folder( + to_select, false + ); + +@@ -1090,8 +1094,8 @@ public class Application.MainWindow : + foreach (var context in to_add) { + this.folder_list.add_folder(context); + if (context.folder.account == this.selected_account) { +- this.main_toolbar.copy_folder_menu.add_folder(context.folder); +- this.main_toolbar.move_folder_menu.add_folder(context.folder); ++ this.conversation_actions.copy_folder_menu.add_folder(context.folder); ++ this.conversation_actions.move_folder_menu.add_folder(context.folder); + } + context.folder.use_changed.connect(on_use_changed); + } +@@ -1111,8 +1115,8 @@ public class Application.MainWindow : + + folder.use_changed.disconnect(on_use_changed); + if (folder.account == this.selected_account) { +- this.main_toolbar.copy_folder_menu.remove_folder(folder); +- this.main_toolbar.move_folder_menu.remove_folder(folder); ++ this.conversation_actions.copy_folder_menu.remove_folder(folder); ++ this.conversation_actions.move_folder_menu.remove_folder(folder); + } + this.folder_list.remove_folder(context); + } +@@ -1228,6 +1232,7 @@ public class Application.MainWindow : + this.search_bar.search_text_changed.connect(on_search); + this.conversation_list_box.pack_start(this.search_bar, false, false, 0); + ++ + // Folder list + this.folder_list.folder_selected.connect(on_folder_selected); + this.folder_list.move_conversation.connect(on_move_conversation); +@@ -1261,6 +1266,16 @@ public class Application.MainWindow : + this.conversation_size_group.add_widget(this.conversation_viewer); + this.main_leaflet.add_with_properties(this.conversation_viewer, "name", "conversation", null); + ++ ++ // Setup conversation actions ++ this.conversation_actions = new Components.ConversationActions(); ++ this.conversation_actions.move_folder_menu.folder_selected.connect(on_move_conversation); ++ this.conversation_actions.copy_folder_menu.folder_selected.connect(on_copy_conversation); ++ this.conversation_actions.bind_property("find-open", ++ this.conversation_viewer.conversation_find_bar, ++ "search-mode-enabled", ++ BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); ++ + // Main toolbar + this.main_toolbar = new MainToolbar(config); + this.main_toolbar.add_to_size_groups(this.folder_size_group, +@@ -1270,12 +1285,8 @@ public class Application.MainWindow : + this.conversation_size_group); + this.main_toolbar.add_to_swipe_groups(this.conversations_swipe_group, + this.conversation_swipe_group); +- this.main_toolbar.move_folder_menu.folder_selected.connect(on_move_conversation); +- this.main_toolbar.copy_folder_menu.folder_selected.connect(on_copy_conversation); + this.main_toolbar.bind_property("search-open", this.search_bar, "search-mode-enabled", + BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); +- this.main_toolbar.bind_property("find-open", this.conversation_viewer.conversation_find_bar, +- "search-mode-enabled", BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); + if (config.desktop_environment == UNITY) { + this.main_toolbar.show_close_button = false; + this.main_layout.pack_start(main_toolbar, false, true, 0); +@@ -1286,6 +1297,8 @@ public class Application.MainWindow : + set_titlebar(titlebar); + } + ++ this.main_toolbar.add_conversation_actions(this.conversation_actions); ++ + this.main_layout.pack_start(this.info_bars, false, true, 0); + + // Status bar +@@ -1462,8 +1475,8 @@ public class Application.MainWindow : + private void select_account(Geary.Account? account) { + if (this.selected_account != account) { + if (this.selected_account != null) { +- this.main_toolbar.copy_folder_menu.clear(); +- this.main_toolbar.move_folder_menu.clear(); ++ this.conversation_actions.copy_folder_menu.clear(); ++ this.conversation_actions.move_folder_menu.clear(); + } + + this.selected_account = account; +@@ -1471,8 +1484,8 @@ public class Application.MainWindow : + + if (account != null) { + foreach (Geary.Folder folder in account.list_folders()) { +- this.main_toolbar.copy_folder_menu.add_folder(folder); +- this.main_toolbar.move_folder_menu.add_folder(folder); ++ this.conversation_actions.copy_folder_menu.add_folder(folder); ++ this.conversation_actions.move_folder_menu.add_folder(folder); + } + } + +@@ -1494,7 +1507,7 @@ public class Application.MainWindow : + // setting it again. + this.conversation_list_view.select_conversations(to_select); + +- this.main_toolbar.selected_conversations = to_select.size; ++ this.conversation_actions.selected_conversations = to_select.size; + if (this.selected_folder != null && !this.has_composer) { + switch(to_select.size) { + case 0: +@@ -1707,13 +1720,13 @@ public class Application.MainWindow : + bool move_enabled = ( + sensitive && (selected_folder is Geary.FolderSupport.Move) + ); +- this.main_toolbar.move_message_button.set_sensitive(move_enabled); ++ this.conversation_actions.move_message_button.set_sensitive(move_enabled); + get_window_action(ACTION_SHOW_MOVE_MENU).set_enabled(move_enabled); + + bool copy_enabled = ( + sensitive && (selected_folder is Geary.FolderSupport.Copy) + ); +- this.main_toolbar.copy_message_button.set_sensitive(copy_enabled); ++ this.conversation_actions.copy_message_button.set_sensitive(copy_enabled); + get_window_action(ACTION_SHOW_COPY_MENU).set_enabled(move_enabled); + + get_window_action(ACTION_ARCHIVE_CONVERSATION).set_enabled( +@@ -1782,7 +1795,7 @@ public class Application.MainWindow : + + private void set_shift_key_down(bool down) { + this.is_shift_down = down; +- this.main_toolbar.update_trash_button( ++ this.conversation_actions.update_trash_button( + !down && this.selected_folder_supports_trash + ); + } +@@ -1811,7 +1824,7 @@ public class Application.MainWindow : + conversations_leaflet.navigate(Hdy.NavigationDirection.FORWARD); + focus = this.conversation_list_view; + } else { +- if (this.main_toolbar.selected_conversations == 1 && ++ if (this.conversation_actions.selected_conversations == 1 && + this.selected_folder.properties.email_total > 0) { + main_leaflet.navigate(Hdy.NavigationDirection.FORWARD); + focus = this.conversation_viewer.visible_child; +@@ -2215,11 +2228,11 @@ public class Application.MainWindow : + } + + private void on_show_copy_menu() { +- this.main_toolbar.copy_message_button.clicked(); ++ this.conversation_actions.copy_message_button.clicked(); + } + + private void on_show_move_menu() { +- this.main_toolbar.move_message_button.clicked(); ++ this.conversation_actions.move_message_button.clicked(); + } + + private void on_conversation_up() { +diff --git a/src/client/components/components-conversation-actions.vala b/src/client/components/components-conversation-actions.vala +new file mode 100644 +index 00000000..a8cdaed9 +--- /dev/null ++++ b/src/client/components/components-conversation-actions.vala +@@ -0,0 +1,132 @@ ++/* Copyright 2017 Software Freedom Conservancy Inc. ++ * ++ * This software is licensed under the GNU Lesser General Public License ++ * (version 2.1 or later). See the COPYING file in this distribution. ++ */ ++ ++/** ++ * Container for actions for a conversation generally placed into the ActionBar or HeaderBar ++ * The user of the actions needs to take ownership before they can place the actions in a container ++ */ ++public class Components.ConversationActions : GLib.Object { ++ public Gtk.Widget? owner { get; private set; } ++ // Copy and Move popovers ++ public FolderPopover copy_folder_menu { get; private set; default = new FolderPopover(); } ++ public FolderPopover move_folder_menu { get; private set; default = new FolderPopover(); } ++ // How many conversations are selected right now. Should automatically be updated. ++ public int selected_conversations { get; set; } ++ public bool find_open { get; set; } ++ ++ public Gtk.Box mark_copy_move_buttons { get; private set; } ++ public Gtk.MenuButton mark_message_button { get; private set; } ++ public Gtk.MenuButton copy_message_button { get; private set; } ++ public Gtk.MenuButton move_message_button { get; private set; } ++ ++ public Gtk.Box reply_forward_buttons { get; private set; } ++ ++ public Gtk.Box archive_trash_delete_buttons { get; private set; } ++ private Gtk.Button archive_button; ++ private Gtk.Button trash_delete_button; ++ ++ public Gtk.ToggleButton find_button { get; private set; } ++ ++ private bool show_trash_button = true; ++ ++ // Load these at construction time ++ private Gtk.Image trash_image = new Gtk.Image.from_icon_name("user-trash-symbolic", Gtk.IconSize.MENU); ++ private Gtk.Image delete_image = new Gtk.Image.from_icon_name("edit-delete-symbolic", Gtk.IconSize.MENU); ++ ++ public ConversationActions() { ++ Gtk.Builder builder = ++ new Gtk.Builder.from_resource("/org/gnome/Geary/components-conversation-actions.ui"); ++ // Assemble the mark menus ++ Gtk.Builder menu_builder = ++ new Gtk.Builder.from_resource("/org/gnome/Geary/main-toolbar-menus.ui"); ++ MenuModel mark_menu = (MenuModel) menu_builder.get_object("mark_message_menu"); ++ ++ this.mark_copy_move_buttons = (Gtk.Box) builder.get_object("mark_copy_move_buttons"); ++ this.mark_message_button = (Gtk.MenuButton) builder.get_object("mark_message_button"); ++ this.copy_message_button = (Gtk.MenuButton) builder.get_object("copy_message_button"); ++ this.move_message_button = (Gtk.MenuButton) builder.get_object("move_message_button"); ++ ++ this.reply_forward_buttons = (Gtk.Box) builder.get_object("reply_forward_buttons"); ++ ++ this.archive_trash_delete_buttons = (Gtk.Box) builder.get_object("archive_trash_delete_buttons"); ++ this.archive_button = (Gtk.Button) builder.get_object("archive_button"); ++ this.trash_delete_button = (Gtk.Button) builder.get_object("trash_delete_button"); ++ ++ this.find_button = (Gtk.ToggleButton) builder.get_object("find_button"); ++ ++ this.bind_property("find-open", this.find_button, "active", ++ BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); ++ this.notify["selected-conversations"].connect(() => update_conversation_buttons()); ++ this.mark_message_button.popover = new Gtk.Popover.from_model(null, mark_menu); ++ this.copy_message_button.popover = copy_folder_menu; ++ this.move_message_button.popover = move_folder_menu; ++ } ++ ++ /** Sets the new owner and removes the previous owner and parents of the single actions */ ++ public void take_ownership(Gtk.Widget? new_owner) { ++ remove_parent(mark_copy_move_buttons); ++ remove_parent(reply_forward_buttons); ++ remove_parent(archive_trash_delete_buttons); ++ remove_parent(find_button); ++ owner = new_owner; ++ } ++ ++ private void remove_parent (Gtk.Widget widget) { ++ if (widget.parent != null) ++ widget.parent.remove(widget); ++ } ++ ++ public void update_trash_button(bool show_trash) { ++ this.show_trash_button = show_trash; ++ update_conversation_buttons(); ++ } ++ ++ /** Updates tooltip text depending on number of conversations selected. */ ++ private void update_conversation_buttons() { ++ this.mark_message_button.tooltip_text = ngettext( ++ "Mark conversation", ++ "Mark conversations", ++ this.selected_conversations ++ ); ++ this.copy_message_button.tooltip_text = ngettext( ++ "Add label to conversation", ++ "Add label to conversations", ++ this.selected_conversations ++ ); ++ this.move_message_button.tooltip_text = ngettext( ++ "Move conversation", ++ "Move conversations", ++ this.selected_conversations ++ ); ++ this.archive_button.tooltip_text = ngettext( ++ "Archive conversation", ++ "Archive conversations", ++ this.selected_conversations ++ ); ++ ++ if (this.show_trash_button) { ++ this.trash_delete_button.action_name = Action.Window.prefix( ++ Application.MainWindow.ACTION_TRASH_CONVERSATION ++ ); ++ this.trash_delete_button.image = trash_image; ++ this.trash_delete_button.tooltip_text = ngettext( ++ "Move conversation to Trash", ++ "Move conversations to Trash", ++ this.selected_conversations ++ ); ++ } else { ++ this.trash_delete_button.action_name = Action.Window.prefix( ++ Application.MainWindow.ACTION_DELETE_CONVERSATION ++ ); ++ this.trash_delete_button.image = delete_image; ++ this.trash_delete_button.tooltip_text = ngettext( ++ "Delete conversation", ++ "Delete conversations", ++ this.selected_conversations ++ ); ++ } ++ } ++} +diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala +index 0ecb599a..6458b7fb 100644 +--- a/src/client/components/main-toolbar.vala ++++ b/src/client/components/main-toolbar.vala +@@ -14,15 +14,8 @@ public class MainToolbar : Hdy.Leaflet { + public string folder { get; set; } + // Close button settings + public bool show_close_button { get; set; default = true; } +- // Search and find bar ++ // Search bar + public bool search_open { get; set; default = false; } +- public bool find_open { get; set; default = false; } +- // Copy and Move popovers +- public FolderPopover copy_folder_menu { get; private set; default = new FolderPopover(); } +- public FolderPopover move_folder_menu { get; private set; default = new FolderPopover(); } +- // How many conversations are selected right now. Should automatically be updated. +- public int selected_conversations { get; set; } +- + + [GtkChild] + private Hdy.Leaflet conversations_leaflet; +@@ -48,31 +41,12 @@ public class MainToolbar : Hdy.Leaflet { + // Conversation header elements + [GtkChild] + private Gtk.HeaderBar conversation_header; +- [GtkChild] +- private Gtk.MenuButton mark_message_button; +- [GtkChild] +- public Gtk.MenuButton copy_message_button; +- [GtkChild] +- public Gtk.MenuButton move_message_button; +- [GtkChild] +- private Gtk.Button archive_button; +- [GtkChild] +- private Gtk.Button trash_delete_button; +- [GtkChild] +- private Gtk.ToggleButton find_button; + + [GtkChild] + private Hdy.HeaderGroup header_group; + + Gtk.SizeGroup conversation_group; + +- private bool show_trash_button = true; +- +- // Load these at construction time +- private Gtk.Image trash_image = new Gtk.Image.from_icon_name("user-trash-symbolic", Gtk.IconSize.MENU); +- private Gtk.Image delete_image = new Gtk.Image.from_icon_name("edit-delete-symbolic", Gtk.IconSize.MENU); +- +- + public MainToolbar(Application.Configuration config) { + if (config.desktop_environment != UNITY) { + this.bind_property("account", this.conversations_header, "title", BindingFlags.SYNC_CREATE); +@@ -82,21 +56,22 @@ public class MainToolbar : Hdy.Leaflet { + // Assemble the main/mark menus + Gtk.Builder builder = new Gtk.Builder.from_resource("/org/gnome/Geary/main-toolbar-menus.ui"); + MenuModel main_menu = (MenuModel) builder.get_object("main_menu"); +- MenuModel mark_menu = (MenuModel) builder.get_object("mark_message_menu"); + + // Setup folder header elements + this.main_menu_button.popover = new Gtk.Popover.from_model(null, main_menu); + this.bind_property("search-open", this.search_conversations_button, "active", + BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); ++ } + +- // Setup conversation header elements +- this.notify["selected-conversations"].connect(() => update_conversation_buttons()); +- this.mark_message_button.popover = new Gtk.Popover.from_model(null, mark_menu); +- this.copy_message_button.popover = copy_folder_menu; +- this.move_message_button.popover = move_folder_menu; ++ public void add_conversation_actions(Components.ConversationActions actions) { ++ if (actions.owner == this) ++ return; + +- this.bind_property("find-open", this.find_button, "active", +- BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); ++ actions.take_ownership(this); ++ conversation_header.pack_start(actions.mark_copy_move_buttons); ++ conversation_header.pack_start(actions.reply_forward_buttons); ++ conversation_header.pack_end(actions.find_button); ++ conversation_header.pack_end(actions.archive_trash_delete_buttons); + } + + public void set_conversation_header(Gtk.HeaderBar header) { +@@ -118,11 +93,6 @@ public class MainToolbar : Hdy.Leaflet { + child_set(conversation_header, "name", "conversation", null); + } + +- public void update_trash_button(bool show_trash) { +- this.show_trash_button = show_trash; +- update_conversation_buttons(); +- } +- + public void add_to_size_groups(Gtk.SizeGroup folder_group, + Gtk.SizeGroup folder_separator_group, + Gtk.SizeGroup conversations_group, +@@ -141,50 +111,4 @@ public class MainToolbar : Hdy.Leaflet { + conversations_group.add_swipeable(this.conversations_leaflet); + conversation_group.add_swipeable(this); + } +- +- // Updates tooltip text depending on number of conversations selected. +- private void update_conversation_buttons() { +- this.mark_message_button.tooltip_text = ngettext( +- "Mark conversation", +- "Mark conversations", +- this.selected_conversations +- ); +- this.copy_message_button.tooltip_text = ngettext( +- "Add label to conversation", +- "Add label to conversations", +- this.selected_conversations +- ); +- this.move_message_button.tooltip_text = ngettext( +- "Move conversation", +- "Move conversations", +- this.selected_conversations +- ); +- this.archive_button.tooltip_text = ngettext( +- "Archive conversation", +- "Archive conversations", +- this.selected_conversations +- ); +- +- if (this.show_trash_button) { +- this.trash_delete_button.action_name = Action.Window.prefix( +- Application.MainWindow.ACTION_TRASH_CONVERSATION +- ); +- this.trash_delete_button.image = trash_image; +- this.trash_delete_button.tooltip_text = ngettext( +- "Move conversation to Trash", +- "Move conversations to Trash", +- this.selected_conversations +- ); +- } else { +- this.trash_delete_button.action_name = Action.Window.prefix( +- Application.MainWindow.ACTION_DELETE_CONVERSATION +- ); +- this.trash_delete_button.image = delete_image; +- this.trash_delete_button.tooltip_text = ngettext( +- "Delete conversation", +- "Delete conversations", +- this.selected_conversations +- ); +- } +- } + } +diff --git a/src/client/meson.build b/src/client/meson.build +index 088f4e47..ed0d6b33 100644 +--- a/src/client/meson.build ++++ b/src/client/meson.build +@@ -48,6 +48,7 @@ client_vala_sources = files( + + 'components/client-web-view.vala', + 'components/components-attachment-pane.vala', ++ 'components/components-conversation-actions.vala', + 'components/components-entry-undo.vala', + 'components/components-info-bar-stack.vala', + 'components/components-info-bar.vala', +diff --git a/ui/application-main-window.ui b/ui/application-main-window.ui +index cbaacbcf..547b063f 100644 +--- a/ui/application-main-window.ui ++++ b/ui/application-main-window.ui +@@ -111,7 +111,7 @@ + True + True + end +- 0 ++ 1 + + +
+diff --git a/ui/components-conversation-actions.ui b/ui/components-conversation-actions.ui +new file mode 100644 +index 00000000..b554deda +--- /dev/null ++++ b/ui/components-conversation-actions.ui +@@ -0,0 +1,221 @@ ++ ++ ++ ++ ++ ++ True ++ False ++ ++ ++ True ++ True ++ False ++ False ++ True ++ ++ ++ True ++ False ++ marker-symbolic ++ ++ ++ ++ ++ False ++ True ++ 0 ++ ++ ++ ++ ++ True ++ True ++ False ++ False ++ True ++ ++ ++ True ++ False ++ tag-symbolic ++ ++ ++ ++ ++ False ++ True ++ 1 ++ ++ ++ ++ ++ True ++ True ++ False ++ False ++ True ++ ++ ++ True ++ False ++ folder-symbolic ++ ++ ++ ++ ++ False ++ True ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ ++ ++ True ++ True ++ False ++ False ++ Reply ++ win.reply-conversation ++ True ++ ++ ++ True ++ False ++ mail-reply-sender-symbolic ++ ++ ++ ++ ++ False ++ True ++ 0 ++ ++ ++ ++ ++ True ++ True ++ False ++ False ++ Reply All ++ win.reply-all-conversation ++ True ++ ++ ++ True ++ False ++ mail-reply-all-symbolic ++ ++ ++ ++ ++ False ++ True ++ 1 ++ ++ ++ ++ ++ True ++ True ++ False ++ False ++ Forward ++ win.forward-conversation ++ True ++ ++ ++ True ++ False ++ mail-forward-symbolic ++ ++ ++ ++ ++ False ++ True ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ mail-archive-symbolic ++ ++ ++ True ++ False ++ ++ ++ _Archive ++ True ++ True ++ False ++ False ++ win.archive-conversation ++ archive_image ++ True ++ True ++ ++ ++ False ++ True ++ 0 ++ ++ ++ ++ ++ True ++ True ++ False ++ False ++ win.trash-conversation ++ True ++ ++ ++ True ++ False ++ user-trash-symbolic ++ ++ ++ ++ ++ False ++ True ++ 1 ++ ++ ++ ++ ++ ++ True ++ True ++ False ++ False ++ Toggle find bar ++ True ++ ++ ++ True ++ False ++ preferences-system-search-symbolic ++ ++ ++ ++ +diff --git a/ui/main-toolbar.ui b/ui/main-toolbar.ui +index 5d58af6f..64f888ee 100644 +--- a/ui/main-toolbar.ui ++++ b/ui/main-toolbar.ui +@@ -189,236 +189,6 @@ +
+
+
+- +- +- True +- False +- +- +- True +- True +- False +- False +- Reply +- win.reply-conversation +- True +- +- +- True +- False +- mail-reply-sender-symbolic +- +- +- +- +- False +- True +- 0 +- +- +- +- +- True +- True +- False +- False +- Reply All +- win.reply-all-conversation +- True +- +- +- True +- False +- mail-reply-all-symbolic +- +- +- +- +- False +- True +- 1 +- +- +- +- +- True +- True +- False +- False +- Forward +- win.forward-conversation +- True +- +- +- True +- False +- mail-forward-symbolic +- +- +- +- +- False +- True +- 2 +- +- +- +- +- +- +- +- True +- False +- +- +- True +- True +- False +- False +- True +- +- +- True +- False +- marker-symbolic +- +- +- +- +- False +- True +- 0 +- +- +- +- +- True +- True +- False +- False +- True +- +- +- True +- False +- tag-symbolic +- +- +- +- +- False +- True +- 1 +- +- +- +- +- True +- True +- False +- False +- True +- +- +- True +- False +- folder-symbolic +- +- +- +- +- False +- True +- 2 +- +- +- +- +- +- 1 +- +- +- +- +- True +- True +- False +- False +- Toggle find bar +- True +- +- +- True +- False +- preferences-system-search-symbolic +- +- +- +- +- end +- 2 +- +- +- +- +- True +- False +- +- +- _Archive +- True +- True +- False +- False +- win.archive-conversation +- archive_image +- True +- True +- +- +- False +- True +- 0 +- +- +- +- +- True +- True +- False +- False +- win.trash-conversation +- True +- +- +- True +- False +- user-trash-symbolic +- +- +- +- +- False +- True +- 1 +- +- +- +- +- +- end +- 4 +- +- +
+ + conversation +diff --git a/ui/org.gnome.Geary.gresource.xml b/ui/org.gnome.Geary.gresource.xml +index 0cdca875..481bbff4 100644 +--- a/ui/org.gnome.Geary.gresource.xml ++++ b/ui/org.gnome.Geary.gresource.xml +@@ -14,6 +14,7 @@ + components-attachment-pane.ui + components-attachment-pane-menus.ui + components-attachment-view.ui ++ components-conversation-actions.ui + components-in-app-notification.ui + components-inspector.ui + components-inspector-error-view.ui +-- +2.29.2 + diff --git a/mail-client/geary/files/0066-action-bar-Add-an-action-bar-to-the-conversations-li.patch b/mail-client/geary/files/0066-action-bar-Add-an-action-bar-to-the-conversations-li.patch new file mode 100644 index 0000000..a7e7096 --- /dev/null +++ b/mail-client/geary/files/0066-action-bar-Add-an-action-bar-to-the-conversations-li.patch @@ -0,0 +1,187 @@ +From 70a40893a3f41483fbc607512d311f4c0c44c79a Mon Sep 17 00:00:00 2001 +From: Julian Sparber +Date: Thu, 8 Oct 2020 14:50:58 +0200 +Subject: [PATCH 066/124] action-bar: Add an action bar to the conversations + list (2-panel) + +This moves the actions from the headerbar to the action bar at the +bottom of the conversations list when multiple conversations are +selected. This changes is needed so that the user can still interact +with the conversations when folded. +This also hides the actions from the Headerbar and action bar when +no conversation is selected. +--- + po/POTFILES.in | 2 + + .../application/application-main-window.vala | 19 +++++++++ + .../components-conversation-action-bar.vala | 39 +++++++++++++++++++ + src/client/meson.build | 1 + + ui/components-conversation-action-bar.ui | 22 +++++++++++ + ui/org.gnome.Geary.gresource.xml | 1 + + 6 files changed, 84 insertions(+) + create mode 100644 src/client/components/components-conversation-action-bar.vala + create mode 100644 ui/components-conversation-action-bar.ui + +diff --git a/po/POTFILES.in b/po/POTFILES.in +index 7ef4e050..68e3ca34 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -40,6 +40,7 @@ src/client/client-action.vala + src/client/components/client-web-view.vala + src/client/components/components-attachment-pane.vala + src/client/components/components-conversation-actions.vala ++src/client/components/components-conversation-action-bar.vala + src/client/components/components-entry-undo.vala + src/client/components/components-in-app-notification.vala + src/client/components/components-info-bar-stack.vala +@@ -457,6 +458,7 @@ ui/components-attachment-pane.ui + ui/components-attachment-pane-menus.ui + ui/components-attachment-view.ui + ui/components-conversation-actions.ui ++ui/components-conversation-action-bar.ui + ui/components-in-app-notification.ui + ui/components-inspector-error-view.ui + ui/components-inspector-log-view.ui +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 20fc3758..0e6a89e1 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -351,6 +351,8 @@ public class Application.MainWindow : + [GtkChild] + private Gtk.Overlay overlay; + ++ private Components.ConversationActionBar action_bar; ++ + private Components.InfoBarStack info_bars = + new Components.InfoBarStack(SINGLE); + +@@ -1308,6 +1310,12 @@ public class Application.MainWindow : + this.spinner.set_progress_monitor(progress_monitor); + this.status_bar.add(this.spinner); + this.status_bar.show_all(); ++ ++ // Action bar ++ this.action_bar = new Components.ConversationActionBar(); ++ this.conversation_list_box.add_with_properties(action_bar, ++ "pack-type", Gtk.PackType.END, ++ "position", 0); + } + + /** {@inheritDoc} */ +@@ -1740,6 +1748,17 @@ public class Application.MainWindow : + ); + + this.update_context_dependent_actions.begin(sensitive); ++ switch (count) { ++ case NONE: ++ conversation_actions.take_ownership(null); ++ break; ++ case SINGLE: ++ this.main_toolbar.add_conversation_actions(this.conversation_actions); ++ break; ++ case MULTIPLE: ++ this.action_bar.add_conversation_actions(this.conversation_actions); ++ break; ++ } + } + + private async void update_context_dependent_actions(bool sensitive) { +diff --git a/src/client/components/components-conversation-action-bar.vala b/src/client/components/components-conversation-action-bar.vala +new file mode 100644 +index 00000000..cb574521 +--- /dev/null ++++ b/src/client/components/components-conversation-action-bar.vala +@@ -0,0 +1,39 @@ ++/* ++ * Copyright © 2016 Software Freedom Conservancy Inc. ++ * Copyright © 2020 Purism SPC ++ * ++ * This software is licensed under the GNU Lesser General Public License ++ * (version 2.1 or later). See the COPYING file in this distribution. ++ */ ++ ++// Draws the conversation action bar. ++[GtkTemplate (ui = "/org/gnome/Geary/components-conversation-action-bar.ui")] ++public class Components.ConversationActionBar : Gtk.Revealer { ++ private ulong owner_notify; ++ ++ [GtkChild] ++ private Gtk.Box action_box; ++ ++ public ConversationActionBar() { ++ } ++ ++ /** ++ * This takes ownership of the ConversationActions and places some of ++ * the buttons into the ActionBar. ++ */ ++ public void add_conversation_actions(Components.ConversationActions actions) { ++ if (actions.owner == this) ++ return; ++ ++ actions.take_ownership(this); ++ action_box.pack_start(actions.mark_copy_move_buttons, false, false); ++ action_box.pack_end(actions.archive_trash_delete_buttons, false, false); ++ reveal_child = true; ++ this.owner_notify = actions.notify["owner"].connect(() => { ++ if (actions.owner != this) { ++ reveal_child = false; ++ actions.disconnect (this.owner_notify); ++ } ++ }); ++ } ++} +diff --git a/src/client/meson.build b/src/client/meson.build +index ed0d6b33..c0eb0c16 100644 +--- a/src/client/meson.build ++++ b/src/client/meson.build +@@ -49,6 +49,7 @@ client_vala_sources = files( + 'components/client-web-view.vala', + 'components/components-attachment-pane.vala', + 'components/components-conversation-actions.vala', ++ 'components/components-conversation-action-bar.vala', + 'components/components-entry-undo.vala', + 'components/components-info-bar-stack.vala', + 'components/components-info-bar.vala', +diff --git a/ui/components-conversation-action-bar.ui b/ui/components-conversation-action-bar.ui +new file mode 100644 +index 00000000..ae49683f +--- /dev/null ++++ b/ui/components-conversation-action-bar.ui +@@ -0,0 +1,22 @@ ++ ++ ++ ++ ++ True ++ False ++ mail-archive-symbolic ++ ++ ++ +diff --git a/ui/org.gnome.Geary.gresource.xml b/ui/org.gnome.Geary.gresource.xml +index 481bbff4..e064d331 100644 +--- a/ui/org.gnome.Geary.gresource.xml ++++ b/ui/org.gnome.Geary.gresource.xml +@@ -14,6 +14,7 @@ + components-attachment-pane.ui + components-attachment-pane-menus.ui + components-attachment-view.ui ++ components-conversation-action-bar.ui + components-conversation-actions.ui + components-in-app-notification.ui + components-inspector.ui +-- +2.29.2 + diff --git a/mail-client/geary/files/0067-Application.Client-Work-around-libhandy-bug-when-ope.patch b/mail-client/geary/files/0067-Application.Client-Work-around-libhandy-bug-when-ope.patch new file mode 100644 index 0000000..24a3265 --- /dev/null +++ b/mail-client/geary/files/0067-Application.Client-Work-around-libhandy-bug-when-ope.patch @@ -0,0 +1,34 @@ +From 0010550ad6f7d053b83f1857215294ce2b69f833 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Mon, 12 Oct 2020 23:22:47 +1100 +Subject: [PATCH 067/124] Application.Client: Work around libhandy bug when + opening main windows + +GNOME/libhandy#305 +--- + src/client/application/application-client.vala | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala +index 2bf4e094..46469086 100644 +--- a/src/client/application/application-client.vala ++++ b/src/client/application/application-client.vala +@@ -892,6 +892,15 @@ public class Application.Client : Gtk.Application { + } + + private MainWindow new_main_window(bool select_first_inbox) { ++ // Work around warning caused by GNOME/libhandy#305 which ++ // makes it a pita to run with G_DEBUG=fatal-warnings. Remove ++ // once the fix for that issue has been released and packaged. ++ GLib.Test.expect_message( ++ "GLib-GObject", ++ LEVEL_WARNING, ++ "g_object_weak_unref: couldn't find weak ref *" ++ ); ++ + MainWindow window = new MainWindow(this); + this.controller.register_window(window); + window.focus_in_event.connect(on_main_window_focus_in); +-- +2.29.2 + diff --git a/mail-client/geary/files/0068-Revert-Revert-Merge-branch-mjog-558-webkit-shared-pr.patch b/mail-client/geary/files/0068-Revert-Revert-Merge-branch-mjog-558-webkit-shared-pr.patch new file mode 100644 index 0000000..64b5068 --- /dev/null +++ b/mail-client/geary/files/0068-Revert-Revert-Merge-branch-mjog-558-webkit-shared-pr.patch @@ -0,0 +1,1574 @@ +From d7af23201c3b6a8e4e9bf4887ddb3df7d46e5de4 Mon Sep 17 00:00:00 2001 +From: Michael James Gratton +Date: Tue, 25 Aug 2020 22:10:28 +1000 +Subject: [PATCH 068/124] Revert "Revert "Merge branch + 'mjog/558-webkit-shared-process' into 'mainline'"" + +This reverts commit cbe6e0ba9bc7d83a8a6c3eb2372f1c8fefd735b4, which reinstates +commit e4a5b85698835549d823d3f501d398b411241a37. + +See !411 and !374 +--- + desktop/org.gnome.Geary.appdata.xml.in.in | 8 + + po/POTFILES.in | 2 +- + .../accounts/accounts-editor-edit-pane.vala | 4 +- + .../accounts/accounts-signature-web-view.vala | 4 +- + .../application/application-controller.vala | 5 +- + src/client/application/main.vala | 6 - + ...web-view.vala => components-web-view.vala} | 156 ++++++------- + src/client/composer/composer-web-view.vala | 6 +- + src/client/composer/composer-widget.vala | 8 +- + .../conversation-email.vala | 26 +-- + .../conversation-list-box.vala | 14 +- + .../conversation-message.vala | 207 +++++++++++++++--- + .../conversation-viewer.vala | 24 +- + .../conversation-web-view.vala | 41 +++- + src/client/meson.build | 12 +- + .../web-process/web-process-extension.vala | 43 ++-- + ...ala => components-web-view-test-case.vala} | 23 +- + ...est.vala => components-web-view-test.vala} | 10 +- + .../composer/composer-web-view-test.vala | 2 +- + ...t.vala => components-page-state-test.vala} | 16 +- + test/js/composer-page-state-test.vala | 2 +- + test/js/conversation-page-state-test.vala | 2 +- + test/meson.build | 6 +- + test/test-client.vala | 6 +- + ui/client-web-view-allow-remote-images.js | 11 - + ...ent-web-view.js => components-web-view.js} | 5 +- + ui/conversation-message.ui | 1 + + ui/org.gnome.Geary.gresource.xml | 3 +- + 28 files changed, 413 insertions(+), 240 deletions(-) + rename src/client/components/{client-web-view.vala => components-web-view.vala} (92%) + rename test/client/components/{client-web-view-test-case.vala => components-web-view-test-case.vala} (74%) + rename test/client/components/{client-web-view-test.vala => components-web-view-test.vala} (79%) + rename test/js/{client-page-state-test.vala => components-page-state-test.vala} (73%) + delete mode 100644 ui/client-web-view-allow-remote-images.js + rename ui/{client-web-view.js => components-web-view.js} (98%) + +diff --git a/desktop/org.gnome.Geary.appdata.xml.in.in b/desktop/org.gnome.Geary.appdata.xml.in.in +index 7c1ddcab..471b69c4 100644 +--- a/desktop/org.gnome.Geary.appdata.xml.in.in ++++ b/desktop/org.gnome.Geary.appdata.xml.in.in +@@ -88,6 +88,14 @@ + geary + + ++ ++ ++

Enhancements included in this release:

++
    ++
  • Conversation loading performance improvements
  • ++
++
++
+ + +

Enhancements included in this release:

+diff --git a/po/POTFILES.in b/po/POTFILES.in +index 68e3ca34..cd8b339d 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -37,7 +37,6 @@ src/client/application/goa-mediator.vala + src/client/application/main.vala + src/client/application/secret-mediator.vala + src/client/client-action.vala +-src/client/components/client-web-view.vala + src/client/components/components-attachment-pane.vala + src/client/components/components-conversation-actions.vala + src/client/components/components-conversation-action-bar.vala +@@ -52,6 +51,7 @@ src/client/components/components-problem-report-info-bar.vala + src/client/components/components-reflow-box.c + src/client/components/components-search-bar.vala + src/client/components/components-validator.vala ++src/client/components/components-web-view.vala + src/client/components/count-badge.vala + src/client/components/folder-popover.vala + src/client/components/icon-factory.vala +diff --git a/src/client/accounts/accounts-editor-edit-pane.vala b/src/client/accounts/accounts-editor-edit-pane.vala +index c1df9a95..2722db6e 100644 +--- a/src/client/accounts/accounts-editor-edit-pane.vala ++++ b/src/client/accounts/accounts-editor-edit-pane.vala +@@ -718,7 +718,7 @@ internal class Accounts.RemoveMailboxCommand : Application.Command { + internal class Accounts.SignatureChangedCommand : Application.Command { + + +- private ClientWebView signature_view; ++ private Components.WebView signature_view; + private Geary.AccountInformation account; + + private string old_value; +@@ -728,7 +728,7 @@ internal class Accounts.SignatureChangedCommand : Application.Command { + private bool new_enabled = false; + + +- public SignatureChangedCommand(ClientWebView signature_view, ++ public SignatureChangedCommand(Components.WebView signature_view, + Geary.AccountInformation account) { + this.signature_view = signature_view; + this.account = account; +diff --git a/src/client/accounts/accounts-signature-web-view.vala b/src/client/accounts/accounts-signature-web-view.vala +index ca31ad5e..d424dd64 100644 +--- a/src/client/accounts/accounts-signature-web-view.vala ++++ b/src/client/accounts/accounts-signature-web-view.vala +@@ -8,14 +8,14 @@ + /** + * A class for editing signatures in the accounts editor. + */ +-public class Accounts.SignatureWebView : ClientWebView { ++public class Accounts.SignatureWebView : Components.WebView { + + + private static WebKit.UserScript? app_script = null; + + public static new void load_resources() + throws GLib.Error { +- SignatureWebView.app_script = ClientWebView.load_app_script( ++ SignatureWebView.app_script = Components.WebView.load_app_script( + "signature-web-view.js" + ); + } +diff --git a/src/client/application/application-controller.vala b/src/client/application/application-controller.vala +index 234c7485..55864cda 100644 +--- a/src/client/application/application-controller.vala ++++ b/src/client/application/application-controller.vala +@@ -134,13 +134,12 @@ internal class Application.Controller : + this.upgrade_dialog = new UpgradeDialog(application); + + // Initialise WebKit and WebViews +- ClientWebView.init_web_context( ++ Components.WebView.init_web_context( + this.application.config, + this.application.get_web_extensions_dir(), + this.application.get_user_cache_directory().get_child("web-resources") + ); +- +- ClientWebView.load_resources( ++ Components.WebView.load_resources( + this.application.get_user_config_directory() + ); + Composer.WebView.load_resources(); +diff --git a/src/client/application/main.vala b/src/client/application/main.vala +index 741c0212..06b155dd 100644 +--- a/src/client/application/main.vala ++++ b/src/client/application/main.vala +@@ -5,12 +5,6 @@ + */ + + int main(string[] args) { +- // Temporary workaround for WebKitGTK deprecation of the +- // shared-secondary process model. Pull this out in 3.36 when the +- // proper fix lands. See GNOME/geary#558. +- Environment.set_variable("WEBKIT_USE_SINGLE_WEB_PROCESS", "1", true); +- +- + // Init logging right up front so as to capture as many log + // messages as possible + Geary.Logging.init(); +diff --git a/src/client/components/client-web-view.vala b/src/client/components/components-web-view.vala +similarity index 92% +rename from src/client/components/client-web-view.vala +rename to src/client/components/components-web-view.vala +index b65f2150..4bda1c11 100644 +--- a/src/client/components/client-web-view.vala ++++ b/src/client/components/components-web-view.vala +@@ -1,6 +1,6 @@ + /* + * Copyright 2016 Software Freedom Conservancy Inc. +- * Copyright 2016 Michael Gratton ++ * Copyright 2016-2019 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. +@@ -14,7 +14,7 @@ + * integration, Inspector support, and remote and inline image + * handling. + */ +-public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { ++public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + + + /** URI Scheme and delimiter for internal resource loads. */ +@@ -65,7 +65,6 @@ public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { + private static WebKit.UserStyleSheet? user_stylesheet = null; + + private static WebKit.UserScript? script = null; +- private static WebKit.UserScript? allow_remote_images = null; + + + /** +@@ -76,23 +75,18 @@ public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { + File cache_dir) { + WebsiteDataManager data_manager = new WebsiteDataManager(cache_dir.get_path()); + WebKit.WebContext context = new WebKit.WebContext.with_website_data_manager(data_manager); +-#if HAS_WEBKIT_SHARED_PROC +- // Use a shared process so we don't spawn N WebProcess instances +- // when showing N messages in a conversation. +- context.set_process_model(WebKit.ProcessModel.SHARED_SECONDARY_PROCESS); +-#endif + // Use the doc viewer model since each web view instance only + // ever shows a single HTML document. + context.set_cache_model(WebKit.CacheModel.DOCUMENT_VIEWER); + + context.register_uri_scheme("cid", (req) => { +- ClientWebView? view = req.get_web_view() as ClientWebView; ++ WebView? view = req.get_web_view() as WebView; + if (view != null) { + view.handle_cid_request(req); + } + }); + context.register_uri_scheme("geary", (req) => { +- ClientWebView? view = req.get_web_view() as ClientWebView; ++ WebView? view = req.get_web_view() as WebView; + if (view != null) { + view.handle_internal_request(req); + } +@@ -113,25 +107,22 @@ public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { + update_spellcheck(context, config); + }); + +- ClientWebView.default_context = context; ++ WebView.default_context = context; + } + + /** +- * Loads static resources used by ClientWebView. ++ * Loads static resources used by WebView. + */ + public static void load_resources(GLib.File user_dir) + throws GLib.Error { +- ClientWebView.script = load_app_script( +- "client-web-view.js" +- ); +- ClientWebView.allow_remote_images = load_app_script( +- "client-web-view-allow-remote-images.js" ++ WebView.script = load_app_script( ++ "components-web-view.js" + ); + + foreach (string name in new string[] { USER_CSS, USER_CSS_LEGACY }) { + GLib.File stylesheet = user_dir.get_child(name); + try { +- ClientWebView.user_stylesheet = load_user_stylesheet(stylesheet); ++ WebView.user_stylesheet = load_user_stylesheet(stylesheet); + break; + } catch (GLib.IOError.NOT_FOUND err) { + // All good, try the next one or just exit +@@ -299,8 +290,9 @@ public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { + public signal void remote_image_load_blocked(); + + +- protected ClientWebView(Application.Configuration config, +- WebKit.UserContentManager? custom_manager = null) { ++ protected WebView(Application.Configuration config, ++ WebKit.UserContentManager? custom_manager = null, ++ WebView? related = null) { + WebKit.Settings setts = new WebKit.Settings(); + setts.allow_modal_dialogs = false; + setts.default_charset = "UTF-8"; +@@ -321,62 +313,40 @@ public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { + + WebKit.UserContentManager content_manager = + custom_manager ?? new WebKit.UserContentManager(); +- content_manager.add_script(ClientWebView.script); +- if (ClientWebView.user_stylesheet != null) { +- content_manager.add_style_sheet(ClientWebView.user_stylesheet); ++ content_manager.add_script(WebView.script); ++ if (WebView.user_stylesheet != null) { ++ content_manager.add_style_sheet(WebView.user_stylesheet); + } + + Object( +- web_context: ClientWebView.default_context, ++ settings: setts, + user_content_manager: content_manager, +- settings: setts ++ web_context: WebView.default_context + ); + base_ref(); ++ init(config); ++ } + +- // XXX get the allow prefix from the extension somehow +- +- this.decide_policy.connect(on_decide_policy); +- this.web_process_terminated.connect((reason) => { +- warning("Web process crashed: %s", reason.to_string()); +- }); +- +- register_message_handler( +- COMMAND_STACK_CHANGED, on_command_stack_changed +- ); +- register_message_handler( +- CONTENT_LOADED, on_content_loaded +- ); +- register_message_handler( +- DOCUMENT_MODIFIED, on_document_modified +- ); +- register_message_handler( +- PREFERRED_HEIGHT_CHANGED, on_preferred_height_changed +- ); +- register_message_handler( +- REMOTE_IMAGE_LOAD_BLOCKED, on_remote_image_load_blocked +- ); +- register_message_handler( +- SELECTION_CHANGED, on_selection_changed ++ /** ++ * Constructs a new web view with a new shared WebProcess. ++ * ++ * The new view will use the same WebProcess, settings and content ++ * manager as the given related view's. ++ * ++ * @see WebKit.WebView.with_related_view ++ */ ++ protected WebView.with_related_view(Application.Configuration config, ++ WebView related) { ++ Object( ++ related_view: related, ++ settings: related.get_settings(), ++ user_content_manager: related.user_content_manager + ); +- +- // Manage zoom level, ensure it's sane +- config.bind(Application.Configuration.CONVERSATION_VIEWER_ZOOM_KEY, this, "zoom_level"); +- if (this.zoom_level < ZOOM_MIN) { +- this.zoom_level = ZOOM_MIN; +- } else if (this.zoom_level > ZOOM_MAX) { +- this.zoom_level = ZOOM_MAX; +- } +- this.scroll_event.connect(on_scroll_event); +- +- // Watch desktop font settings +- Settings system_settings = config.gnome_interface; +- system_settings.bind("document-font-name", this, +- "document-font", SettingsBindFlags.DEFAULT); +- system_settings.bind("monospace-font-name", this, +- "monospace-font", SettingsBindFlags.DEFAULT); ++ base_ref(); ++ init(config); + } + +- ~ClientWebView() { ++ ~WebView() { + base_unref(); + } + +@@ -433,13 +403,7 @@ public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { + * effect. + */ + public void allow_remote_image_loading() { +- // Use a separate script here since we need to update the +- // value of window.geary.allow_remote_image_loading after it +- // was first created by client-web-view.js (which is loaded at +- // the start of page load), but before the page load is +- // started (so that any remote images present are actually +- // loaded). +- this.user_content_manager.add_script(ClientWebView.allow_remote_images); ++ this.run_javascript.begin("_gearyAllowRemoteResourceLoads = true", null); + } + + /** +@@ -515,7 +479,7 @@ public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { + JavaScriptMessageHandler handler) { + // XXX can't use the delegate directly, see b.g.o Bug + // 604781. However the workaround below creates a circular +- // reference, causing ClientWebView instances to leak. So to ++ // reference, causing WebView instances to leak. So to + // work around that we need to record handler ids and + // disconnect them when being destroyed. + ulong id = this.user_content_manager.script_message_received[name].connect( +@@ -527,6 +491,50 @@ public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { + } + } + ++ private void init(Application.Configuration config) { ++ // XXX get the allow prefix from the extension somehow ++ ++ this.decide_policy.connect(on_decide_policy); ++ this.web_process_terminated.connect((reason) => { ++ warning("Web process crashed: %s", reason.to_string()); ++ }); ++ ++ register_message_handler( ++ COMMAND_STACK_CHANGED, on_command_stack_changed ++ ); ++ register_message_handler( ++ CONTENT_LOADED, on_content_loaded ++ ); ++ register_message_handler( ++ DOCUMENT_MODIFIED, on_document_modified ++ ); ++ register_message_handler( ++ PREFERRED_HEIGHT_CHANGED, on_preferred_height_changed ++ ); ++ register_message_handler( ++ REMOTE_IMAGE_LOAD_BLOCKED, on_remote_image_load_blocked ++ ); ++ register_message_handler( ++ SELECTION_CHANGED, on_selection_changed ++ ); ++ ++ // Manage zoom level, ensure it's sane ++ config.bind(Application.Configuration.CONVERSATION_VIEWER_ZOOM_KEY, this, "zoom_level"); ++ if (this.zoom_level < ZOOM_MIN) { ++ this.zoom_level = ZOOM_MIN; ++ } else if (this.zoom_level > ZOOM_MAX) { ++ this.zoom_level = ZOOM_MAX; ++ } ++ this.scroll_event.connect(on_scroll_event); ++ ++ // Watch desktop font settings ++ Settings system_settings = config.gnome_interface; ++ system_settings.bind("document-font-name", this, ++ "document-font", SettingsBindFlags.DEFAULT); ++ system_settings.bind("monospace-font-name", this, ++ "monospace-font", SettingsBindFlags.DEFAULT); ++ } ++ + private void handle_cid_request(WebKit.URISchemeRequest request) { + if (!handle_internal_response(request)) { + request.finish_error(new FileError.NOENT("Unknown CID")); +diff --git a/src/client/composer/composer-web-view.vala b/src/client/composer/composer-web-view.vala +index aea46978..f8ecccf6 100644 +--- a/src/client/composer/composer-web-view.vala ++++ b/src/client/composer/composer-web-view.vala +@@ -9,7 +9,7 @@ + /** + * A WebView for editing messages in the composer. + */ +-public class Composer.WebView : ClientWebView { ++public class Composer.WebView : Components.WebView { + + /** HTML id used for the main text section of the message body. */ + public const string BODY_HTML_ID = "geary-body"; +@@ -112,10 +112,10 @@ public class Composer.WebView : ClientWebView { + + public static new void load_resources() + throws Error { +- WebView.app_style = ClientWebView.load_app_stylesheet( ++ WebView.app_style = Components.WebView.load_app_stylesheet( + "composer-web-view.css" + ); +- WebView.app_script = ClientWebView.load_app_script( ++ WebView.app_script = Components.WebView.load_app_script( + "composer-web-view.js" + ); + } +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index 17430021..4c4d0caf 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -1252,7 +1252,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + email.inline_files.set_all(this.inline_files); + email.cid_files.set_all(this.cid_files); + +- email.img_src_prefix = ClientWebView.INTERNAL_URL_PREFIX; ++ email.img_src_prefix = Components.WebView.INTERNAL_URL_PREFIX; + + try { + email.body_text = yield this.editor.body.get_text(); +@@ -1924,7 +1924,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + string unique_filename; + add_inline_part(byte_buffer, filename, out unique_filename); + this.editor.body.insert_image( +- ClientWebView.INTERNAL_URL_PREFIX + unique_filename ++ Components.WebView.INTERNAL_URL_PREFIX + unique_filename + ); + } catch (Error error) { + this.application.report_problem( +@@ -1964,7 +1964,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + string unique_filename; + add_inline_part(file_buffer, path, out unique_filename); + this.editor.body.insert_image( +- ClientWebView.INTERNAL_URL_PREFIX + unique_filename ++ Components.WebView.INTERNAL_URL_PREFIX + unique_filename + ); + } catch (Error err) { + attachment_failed(err.message); +@@ -2459,7 +2459,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + } + + this.editor.body.insert_image( +- ClientWebView.INTERNAL_URL_PREFIX + unique_filename ++ Components.WebView.INTERNAL_URL_PREFIX + unique_filename + ); + } + +diff --git a/src/client/conversation-viewer/conversation-email.vala b/src/client/conversation-viewer/conversation-email.vala +index e9d09286..868f33a3 100644 +--- a/src/client/conversation-viewer/conversation-email.vala ++++ b/src/client/conversation-viewer/conversation-email.vala +@@ -462,7 +462,7 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface { + if (this.body_selection_message != null) { + try { + selection = +- yield this.body_selection_message.web_view.get_selection_for_quoting(); ++ yield this.body_selection_message.get_selection_for_quoting(); + } catch (Error err) { + debug("Failed to get selection for quoting: %s", err.message); + } +@@ -478,7 +478,7 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface { + if (this.body_selection_message != null) { + try { + selection = +- yield this.body_selection_message.web_view.get_selection_for_find(); ++ yield this.body_selection_message.get_selection_for_find(); + } catch (Error err) { + debug("Failed to get selection for find: %s", err.message); + } +@@ -571,12 +571,10 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface { + Json.Generator generator = new Json.Generator(); + generator.set_root(builder.get_root()); + string js = "geary.addPrintHeaders(" + generator.to_data(null) + ");"; +- yield this.primary_message.web_view.run_javascript(js, null); ++ yield this.primary_message.run_javascript(js, null); + + Gtk.Window? window = get_toplevel() as Gtk.Window; +- WebKit.PrintOperation op = new WebKit.PrintOperation( +- this.primary_message.web_view +- ); ++ WebKit.PrintOperation op = this.primary_message.new_print_operation(); + Gtk.PrintSettings settings = new Gtk.PrintSettings(); + + if (this.email.subject != null) { +@@ -603,14 +601,14 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface { + } + + private void connect_message_view_signals(ConversationMessage view) { ++ view.content_loaded.connect(on_content_loaded); + view.flag_remote_images.connect(on_flag_remote_images); + view.internal_link_activated.connect((y) => { + internal_link_activated(y); + }); ++ view.internal_resource_loaded.connect(on_resource_loaded); + view.save_image.connect(on_save_image); +- view.web_view.internal_resource_loaded.connect(on_resource_loaded); +- view.web_view.content_loaded.connect(on_content_loaded); +- view.web_view.selection_changed.connect((has_selection) => { ++ view.selection_changed.connect((has_selection) => { + this.body_selection_message = has_selection ? view : null; + body_selection_changed(has_selection); + }); +@@ -686,7 +684,7 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface { + + // Load all messages + +- this.primary_message.web_view.add_internal_resources(cid_resources); ++ this.primary_message.add_internal_resources(cid_resources); + yield this.primary_message.load_message_body( + message, this.load_cancellable + ); +@@ -704,7 +702,7 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface { + this.config + ); + connect_message_view_signals(attached_message); +- attached_message.web_view.add_internal_resources(cid_resources); ++ attached_message.add_internal_resources(cid_resources); + this.sub_messages.add(attached_message); + this._attached_messages.add(attached_message); + attached_message.load_contacts.begin(this.load_cancellable); +@@ -886,8 +884,8 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface { + Geary.Memory.Buffer? content) { + var main = get_toplevel() as Application.MainWindow; + if (main != null) { +- if (uri.has_prefix(ClientWebView.CID_URL_PREFIX)) { +- string cid = uri.substring(ClientWebView.CID_URL_PREFIX.length); ++ if (uri.has_prefix(Components.WebView.CID_URL_PREFIX)) { ++ string cid = uri.substring(Components.WebView.CID_URL_PREFIX.length); + try { + Geary.Attachment attachment = this.email.get_attachment_by_content_id( + cid +@@ -934,7 +932,7 @@ public class ConversationEmail : Gtk.Box, Geary.BaseInterface { + private void on_content_loaded() { + bool all_loaded = true; + foreach (ConversationMessage message in this) { +- if (!message.web_view.is_content_loaded) { ++ if (!message.is_content_loaded) { + all_loaded = false; + break; + } +diff --git a/src/client/conversation-viewer/conversation-list-box.vala b/src/client/conversation-viewer/conversation-list-box.vala +index 005b8f10..3eb8240b 100644 +--- a/src/client/conversation-viewer/conversation-list-box.vala ++++ b/src/client/conversation-viewer/conversation-list-box.vala +@@ -957,7 +957,7 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + */ + public void zoom_in() { + message_view_iterator().foreach((msg_view) => { +- msg_view.web_view.zoom_in(); ++ msg_view.zoom_in(); + return true; + }); + } +@@ -967,7 +967,7 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + */ + public void zoom_out() { + message_view_iterator().foreach((msg_view) => { +- msg_view.web_view.zoom_out(); ++ msg_view.zoom_out(); + return true; + }); + } +@@ -977,7 +977,7 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + */ + public void zoom_reset() { + message_view_iterator().foreach((msg_view) => { +- msg_view.web_view.zoom_reset(); ++ msg_view.zoom_reset(); + return true; + }); + } +@@ -1182,8 +1182,7 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + row.get_allocation(out alloc); + + int x = 0, y = 0; +- ConversationWebView web_view = row.view.primary_message.web_view; +- web_view.translate_coordinates(row, x, anchor_y, out x, out y); ++ row.view.primary_message.web_view_translate_coordinates(row, x, anchor_y, out x, out y); + + Gtk.Adjustment adj = get_adjustment(); + y = alloc.y + y; +@@ -1216,14 +1215,13 @@ public class ConversationListBox : Gtk.ListBox, Geary.BaseInterface { + ConversationMessage conversation_message = view.primary_message; + int body_top = 0; + int body_left = 0; +- ConversationWebView web_view = conversation_message.web_view; +- web_view.translate_coordinates( ++ conversation_message.web_view_translate_coordinates( + this, + 0, 0, + out body_left, out body_top + ); + +- int body_height = web_view.get_allocated_height(); ++ int body_height = conversation_message.web_view_get_allocated_height(); + int body_bottom = body_top + body_height; + + // Only mark the email as read if it's actually visible +diff --git a/src/client/conversation-viewer/conversation-message.vala b/src/client/conversation-viewer/conversation-message.vala +index 50ac031e..a11ece01 100644 +--- a/src/client/conversation-viewer/conversation-message.vala ++++ b/src/client/conversation-viewer/conversation-message.vala +@@ -310,8 +310,19 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + [GtkChild] + internal Components.InfoBarStack info_bars; + ++ /** ++ * Emitted when web_view's content has finished loaded. ++ * ++ * See {@link Components.WebView.is_content_loaded} for details. ++ */ ++ internal bool is_content_loaded { ++ get { ++ return this.web_view != null && this.web_view.is_content_loaded; ++ } ++ } ++ + /** HTML view that displays the message body. */ +- internal ConversationWebView web_view { get; private set; } ++ private ConversationWebView? web_view { get; private set; } + + // The message headers represented by this view + private Geary.EmailHeaderSet headers; +@@ -426,6 +437,19 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + string uri, string? alt_text, Geary.Memory.Buffer? buffer + ); + ++ /** Emitted when web_view has loaded a resource added to it. */ ++ public signal void internal_resource_loaded(string name); ++ ++ /** Emitted when web_view's selection has changed. */ ++ public signal void selection_changed(bool has_selection); ++ ++ /** ++ * Emitted when web_view's content has finished loaded. ++ * ++ * See {@link Components.WebView.is_content_loaded} for details. ++ */ ++ public signal void content_loaded(); ++ + + /** + * Constructs a new view from an email's headers and body. +@@ -467,6 +491,18 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + ); + } + ++ private void trigger_internal_resource_loaded(string name) { ++ internal_resource_loaded(name); ++ } ++ ++ private void trigger_content_loaded() { ++ content_loaded(); ++ } ++ ++ private void trigger_selection_changed(bool has_selection) { ++ selection_changed(has_selection); ++ } ++ + private ConversationMessage(Geary.EmailHeaderSet headers, + string? preview, + bool load_remote_resources, +@@ -487,19 +523,10 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + .activate.connect(on_copy_email_address); + add_action(ACTION_COPY_LINK, true, VariantType.STRING) + .activate.connect(on_copy_link); +- add_action(ACTION_COPY_SELECTION, false).activate.connect(() => { +- web_view.copy_clipboard(); +- }); +- add_action(ACTION_OPEN_INSPECTOR, config.enable_inspector).activate.connect(() => { +- this.web_view.get_inspector().show(); +- }); + add_action(ACTION_OPEN_LINK, true, VariantType.STRING) + .activate.connect(on_link_activated); + add_action(ACTION_SAVE_IMAGE, true, new VariantType("(sms)")) + .activate.connect(on_save_image); +- add_action(ACTION_SELECT_ALL, true).activate.connect(() => { +- web_view.select_all(); +- }); + insert_action_group("msg", message_actions); + + // Context menu +@@ -552,9 +579,37 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + this.subject_searchable = headers.subject.value.casefold(); + } + +- // Web view ++ this.body_container.set_has_tooltip(true); // Used to show link URLs ++ this.show_progress_timeout = new Geary.TimeoutManager.milliseconds( ++ Util.Gtk.SHOW_PROGRESS_TIMEOUT_MSEC, this.on_show_progress_timeout ++ ); ++ this.hide_progress_timeout = new Geary.TimeoutManager.milliseconds( ++ Util.Gtk.HIDE_PROGRESS_TIMEOUT_MSEC, this.on_hide_progress_timeout ++ ); ++ ++ this.progress_pulse = new Geary.TimeoutManager.milliseconds( ++ Util.Gtk.PROGRESS_PULSE_TIMEOUT_MSEC, this.body_progress.pulse ++ ); ++ this.progress_pulse.repetition = FOREVER; ++ } ++ ++ private void initialize_web_view() { ++ var viewer = get_ancestor(typeof(ConversationViewer)) as ConversationViewer; ++ ++ // Ensure we share the same WebProcess with the last one ++ // constructed if possible. ++ if (viewer != null && viewer.previous_web_view != null) { ++ this.web_view = new ConversationWebView.with_related_view( ++ this.config, ++ viewer.previous_web_view ++ ); ++ } else { ++ this.web_view = new ConversationWebView(this.config); ++ } ++ if (viewer != null) { ++ viewer.previous_web_view = this.web_view; ++ } + +- this.web_view = new ConversationWebView(config); + this.web_view.context_menu.connect(on_context_menu); + this.web_view.deceptive_link_clicked.connect(on_deceptive_link_clicked); + this.web_view.link_activated.connect((link) => { +@@ -565,23 +620,22 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + this.web_view.resource_load_started.connect(on_resource_load_started); + this.web_view.remote_image_load_blocked.connect(on_remote_images_blocked); + this.web_view.selection_changed.connect(on_selection_changed); ++ this.web_view.internal_resource_loaded.connect(trigger_internal_resource_loaded); ++ this.web_view.content_loaded.connect(trigger_content_loaded); ++ this.web_view.selection_changed.connect(trigger_selection_changed); + this.web_view.set_hexpand(true); + this.web_view.set_vexpand(true); + this.web_view.show(); +- +- this.body_container.set_has_tooltip(true); // Used to show link URLs + this.body_container.add(this.web_view); +- this.show_progress_timeout = new Geary.TimeoutManager.milliseconds( +- Util.Gtk.SHOW_PROGRESS_TIMEOUT_MSEC, this.on_show_progress_timeout +- ); +- this.hide_progress_timeout = new Geary.TimeoutManager.milliseconds( +- Util.Gtk.HIDE_PROGRESS_TIMEOUT_MSEC, this.on_hide_progress_timeout +- ); +- +- this.progress_pulse = new Geary.TimeoutManager.milliseconds( +- Util.Gtk.PROGRESS_PULSE_TIMEOUT_MSEC, this.body_progress.pulse +- ); +- this.progress_pulse.repetition = FOREVER; ++ add_action(ACTION_COPY_SELECTION, false).activate.connect(() => { ++ web_view.copy_clipboard(); ++ }); ++ add_action(ACTION_OPEN_INSPECTOR, config.enable_inspector).activate.connect(() => { ++ this.web_view.get_inspector().show(); ++ }); ++ add_action(ACTION_SELECT_ALL, true).activate.connect(() => { ++ web_view.select_all(); ++ }); + } + + ~ConversationMessage() { +@@ -597,10 +651,77 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + base.destroy(); + } + ++ public async string? get_selection_for_quoting() throws Error { ++ if (this.web_view == null) ++ initialize_web_view(); ++ return yield web_view.get_selection_for_quoting(); ++ } ++ ++ public async string? get_selection_for_find() throws Error { ++ if (this.web_view == null) ++ initialize_web_view(); ++ return yield web_view.get_selection_for_find(); ++ } ++ ++ /** ++ * Adds a set of internal resources to web_view. ++ * ++ * @see add_internal_resource ++ */ ++ public void add_internal_resources(Gee.Map res) { ++ if (this.web_view == null) ++ initialize_web_view(); ++ web_view.add_internal_resources(res); ++ } ++ ++ public WebKit.PrintOperation new_print_operation() { ++ if (this.web_view == null) ++ initialize_web_view(); ++ return new WebKit.PrintOperation(web_view); ++ } ++ ++ public async void run_javascript (string script, Cancellable? cancellable) throws Error { ++ if (this.web_view == null) ++ initialize_web_view(); ++ yield web_view.run_javascript(script, cancellable); ++ } ++ ++ public void zoom_in() { ++ if (this.web_view == null) ++ initialize_web_view(); ++ web_view.zoom_in(); ++ } ++ ++ public void zoom_out() { ++ if (this.web_view == null) ++ initialize_web_view(); ++ web_view.zoom_out(); ++ } ++ ++ public void zoom_reset() { ++ if (this.web_view == null) ++ initialize_web_view(); ++ web_view.zoom_reset(); ++ } ++ ++ public void web_view_translate_coordinates(Gtk.Widget widget, int x, int anchor_y, out int x1, out int y1) { ++ if (this.web_view == null) ++ initialize_web_view(); ++ web_view.translate_coordinates(widget, x, anchor_y, out x1, out y1); ++ } ++ ++ public int web_view_get_allocated_height() { ++ if (this.web_view == null) ++ initialize_web_view(); ++ return web_view.get_allocated_height(); ++ } ++ + /** + * Shows the complete message and hides the compact headers. + */ + public void show_message_body(bool include_transitions=true) { ++ if (this.web_view == null) ++ initialize_web_view(); + set_revealer(this.compact_revealer, false, include_transitions); + set_revealer(this.header_revealer, true, include_transitions); + set_revealer(this.body_revealer, true, include_transitions); +@@ -785,6 +906,10 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + throw new GLib.IOError.CANCELLED("Conversation load cancelled"); + } + ++ if (this.web_view == null) { ++ initialize_web_view(); ++ } ++ + bool contact_load_images = ( + this.primary_contact != null && + this.primary_contact.load_remote_resources +@@ -835,6 +960,8 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + } + } + ++ if (this.web_view == null) ++ initialize_web_view(); + uint webkit_found = yield this.web_view.highlight_search_terms( + search_matches, cancellable + ); +@@ -848,7 +975,9 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + foreach (ContactFlowBoxChild address in this.searchable_addresses) { + address.unmark_search_terms(); + } +- this.web_view.unmark_search_terms(); ++ ++ if (this.web_view != null) ++ this.web_view.unmark_search_terms(); + } + + /** +@@ -1011,6 +1140,8 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + // returns HTML that is placed into the document in the position + // where the MIME part was found + private string? inline_image_replacer(Geary.RFC822.Part part) { ++ if (this.web_view == null) ++ initialize_web_view(); + Geary.Mime.ContentType content_type = part.content_type; + if (content_type.media_type != "image" || + !this.web_view.can_show_mime_type(content_type.to_string())) { +@@ -1045,7 +1176,7 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + return "\"%s\"".printf( + clean_filename, + REPLACED_IMAGE_CLASS, +- ClientWebView.CID_URL_PREFIX, ++ Components.WebView.CID_URL_PREFIX, + Geary.HTML.escape_markup(id) + ); + } +@@ -1059,7 +1190,9 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + this.load_remote_resources = true; + this.remote_resources_requested = 0; + this.remote_resources_loaded = 0; +- this.web_view.load_remote_images(); ++ if (this.web_view != null) { ++ this.web_view.load_remote_images(); ++ } + if (update_email_flag) { + flag_remote_images(); + } +@@ -1074,11 +1207,13 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + + if (placeholder != null) { + this.body_placeholder = placeholder; +- this.web_view.hide(); ++ if (this.web_view != null) ++ this.web_view.hide(); + this.body_container.add(placeholder); + show_message_body(true); + } else { +- this.web_view.show(); ++ if (this.web_view != null) ++ this.web_view.show(); + } + } + +@@ -1106,10 +1241,12 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + } + + private void on_is_loading_notify() { +- if (this.web_view.is_loading) { +- start_progress_loading(); +- } else { +- stop_progress_loading(); ++ if (this.web_view != null) { ++ if (this.web_view.is_loading) { ++ start_progress_loading(); ++ } else { ++ stop_progress_loading(); ++ } + } + } + +@@ -1369,7 +1506,7 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + alt_text = (string) alt_maybe; + } + +- if (uri.has_prefix(ClientWebView.CID_URL_PREFIX)) { ++ if (uri.has_prefix(Components.WebView.CID_URL_PREFIX)) { + // We can get the data directly from the attachment, so + // don't bother getting it from the web view + save_image(uri, alt_text, null); +diff --git a/src/client/conversation-viewer/conversation-viewer.vala b/src/client/conversation-viewer/conversation-viewer.vala +index eec5f6a4..a5098764 100644 +--- a/src/client/conversation-viewer/conversation-viewer.vala ++++ b/src/client/conversation-viewer/conversation-viewer.vala +@@ -24,6 +24,14 @@ public class ConversationViewer : Gtk.Stack, Geary.BaseInterface { + get; private set; default = null; + } + ++ /** ++ * The most recent web view created in this viewer. ++ * ++ * Keep the last created web view around so others can share the ++ * same WebKitGTK WebProcess. ++ */ ++ internal ConversationWebView? previous_web_view { get; set; default = null; } ++ + private Application.Configuration config; + + private Gee.Set? selection_while_composing = null; +@@ -251,7 +259,10 @@ public class ConversationViewer : Gtk.Stack, Geary.BaseInterface { + Application.ContactStore contacts, + bool start_mark_timer) + throws GLib.Error { +- remove_current_list(); ++ // Keep the old ScrolledWindow around long enough for its ++ // descendant web views to be kept so their WebProcess can be ++ // re-used. ++ var old_scroller = remove_current_list(); + + ConversationListBox new_list = new ConversationListBox( + conversation, +@@ -297,6 +308,9 @@ public class ConversationViewer : Gtk.Stack, Geary.BaseInterface { + } + + yield new_list.load_conversation(scroll_to, query); ++ ++ // Not strictly necessary, but keeps the compiler happy ++ old_scroller.destroy(); + } + + // Add a new conversation list to the UI +@@ -316,7 +330,7 @@ public class ConversationViewer : Gtk.Stack, Geary.BaseInterface { + } + + // Remove any existing conversation list, cancelling its loading +- private void remove_current_list() { ++ private Gtk.ScrolledWindow remove_current_list() { + if (this.find_cancellable != null) { + this.find_cancellable.cancel(); + this.find_cancellable = null; +@@ -328,15 +342,17 @@ public class ConversationViewer : Gtk.Stack, Geary.BaseInterface { + this.current_list = null; + } + ++ var old_scroller = this.conversation_scroller; + // XXX GTK+ Bug 778190 workaround +- this.conversation_scroller.destroy(); // removes the list ++ this.conversation_page.remove(old_scroller); + new_conversation_scroller(); ++ return old_scroller; + } + + private void new_conversation_scroller() { + // XXX Work around for GTK+ Bug 778190: Instead of replacing + // the Viewport that contains the current list, replace the +- // complete ScrolledWindow. Need to put remove this method and ++ // complete ScrolledWindow. Need to remove this method and + // put the settings back into conversation-viewer.ui when we + // can rely on it being fixed again. + Gtk.ScrolledWindow scroller = new Gtk.ScrolledWindow(null, null); +diff --git a/src/client/conversation-viewer/conversation-web-view.vala b/src/client/conversation-viewer/conversation-web-view.vala +index 70e5c633..ffa36394 100644 +--- a/src/client/conversation-viewer/conversation-web-view.vala ++++ b/src/client/conversation-viewer/conversation-web-view.vala +@@ -6,7 +6,7 @@ + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +-public class ConversationWebView : ClientWebView { ++public class ConversationWebView : Components.WebView { + + + private const string DECEPTIVE_LINK_CLICKED = "deceptiveLinkClicked"; +@@ -41,10 +41,10 @@ public class ConversationWebView : ClientWebView { + + public static new void load_resources() + throws Error { +- ConversationWebView.app_script = ClientWebView.load_app_script( ++ ConversationWebView.app_script = Components.WebView.load_app_script( + "conversation-web-view.js" + ); +- ConversationWebView.app_stylesheet = ClientWebView.load_app_stylesheet( ++ ConversationWebView.app_stylesheet = Components.WebView.load_app_stylesheet( + "conversation-web-view.css" + ); + } +@@ -56,16 +56,33 @@ public class ConversationWebView : ClientWebView { + ); + + ++ /** ++ * Constructs a new web view for displaying an email message body. ++ * ++ * A new WebKitGTK WebProcess will be constructed for this view. ++ */ + public ConversationWebView(Application.Configuration config) { + base(config); ++ init(); ++ ++ // These only need to be added when creating a new WebProcess, ++ // not when sharing one + this.user_content_manager.add_script(ConversationWebView.app_script); + this.user_content_manager.add_style_sheet(ConversationWebView.app_stylesheet); ++ } + +- register_message_handler( +- DECEPTIVE_LINK_CLICKED, on_deceptive_link_clicked +- ); +- +- this.notify["preferred-height"].connect(() => queue_resize()); ++ /** ++ * Constructs a new web view for displaying an email message body. ++ * ++ * The WebKitGTK WebProcess will be shared with the related view's ++ * process. ++ */ ++ internal ConversationWebView.with_related_view( ++ Application.Configuration config, ++ ConversationWebView related ++ ) { ++ base.with_related_view(config, related); ++ init(); + } + + /** +@@ -206,6 +223,14 @@ public class ConversationWebView : ClientWebView { + minimum_height = natural_height = 0; + } + ++ private void init() { ++ register_message_handler( ++ DECEPTIVE_LINK_CLICKED, on_deceptive_link_clicked ++ ); ++ ++ this.notify["preferred-height"].connect(() => queue_resize()); ++ } ++ + private void on_deceptive_link_clicked(WebKit.JavascriptResult result) { + try { + JSC.Value object = result.get_js_value(); +diff --git a/src/client/meson.build b/src/client/meson.build +index c0eb0c16..335964f1 100644 +--- a/src/client/meson.build ++++ b/src/client/meson.build +@@ -46,7 +46,6 @@ client_vala_sources = files( + + 'client-action.vala', + +- 'components/client-web-view.vala', + 'components/components-attachment-pane.vala', + 'components/components-conversation-actions.vala', + 'components/components-conversation-action-bar.vala', +@@ -64,6 +63,7 @@ client_vala_sources = files( + 'components/components-reflow-box.c', + 'components/components-search-bar.vala', + 'components/components-validator.vala', ++ 'components/components-web-view.vala', + 'components/count-badge.vala', + 'components/folder-popover.vala', + 'components/icon-factory.vala', +@@ -191,16 +191,6 @@ client_vala_args += [ + ) + ] + +-# Enable shared shecondary process if available. +-# See issues #558 and #559 +-webkit_version = webkit2gtk.version().split('.') +-if webkit_version[0].to_int() <= 2 and webkit_version[1].to_int() <= 24 +- message('Enabling WebKitGTK shared process model') +- client_vala_args += [ +- '-D', 'HAS_WEBKIT_SHARED_PROC' +- ] +-endif +- + # Main client application library + client_lib = shared_library( + client_package, +diff --git a/src/client/web-process/web-process-extension.vala b/src/client/web-process/web-process-extension.vala +index b2b29bf9..4bba5154 100644 +--- a/src/client/web-process/web-process-extension.vala ++++ b/src/client/web-process/web-process-extension.vala +@@ -32,22 +32,14 @@ public class GearyWebExtension : Object { + + private const string[] ALLOWED_SCHEMES = { "cid", "geary", "data", "blob" }; + ++ private const string REMOTE_LOAD_VAR = "_gearyAllowRemoteResourceLoads"; ++ + private WebKit.WebExtension extension; + + + public GearyWebExtension(WebKit.WebExtension extension) { + this.extension = extension; +- extension.page_created.connect((extension, web_page) => { +- web_page.console_message_sent.connect(on_console_message); +- web_page.send_request.connect(on_send_request); +- // XXX investigate whether the earliest supported +- // version of WK supports the DOM "selectionchanged" +- // event, and if so use that rather that doing it in +- // here in the extension +- web_page.get_editor().selection_changed.connect(() => { +- selection_changed(web_page); +- }); +- }); ++ extension.page_created.connect(on_page_created); + } + + // XXX Conditionally enable while we still depend on WK2 <2.12 +@@ -89,14 +81,7 @@ public class GearyWebExtension : Object { + WebKit.Frame frame = page.get_main_frame(); + JSC.Context context = frame.get_js_context(); + try { +- JSC.Value ret = execute_script( +- context, +- "geary.allowRemoteImages", +- GLib.Log.FILE, +- GLib.Log.METHOD, +- GLib.Log.LINE +- ); +- should_load = Util.JS.to_bool(ret); ++ should_load = Util.JS.to_bool(context.get_value(REMOTE_LOAD_VAR)); + } catch (GLib.Error err) { + debug( + "Error checking PageState::allowRemoteImages: %s", +@@ -154,4 +139,24 @@ public class GearyWebExtension : Object { + return ret; + } + ++ private void on_page_created(WebKit.WebExtension extension, ++ WebKit.WebPage page) { ++ WebKit.Frame frame = page.get_main_frame(); ++ JSC.Context context = frame.get_js_context(); ++ context.set_value( ++ REMOTE_LOAD_VAR, ++ new JSC.Value.boolean(context, false) ++ ); ++ ++ page.console_message_sent.connect(on_console_message); ++ page.send_request.connect(on_send_request); ++ // XXX investigate whether the earliest supported ++ // version of WK supports the DOM "selectionchanged" ++ // event, and if so use that rather that doing it in ++ // here in the extension ++ page.get_editor().selection_changed.connect(() => { ++ selection_changed(page); ++ }); ++ } ++ + } +diff --git a/test/client/components/client-web-view-test-case.vala b/test/client/components/components-web-view-test-case.vala +similarity index 74% +rename from test/client/components/client-web-view-test-case.vala +rename to test/client/components/components-web-view-test-case.vala +index 10d21b1f..04f1c79f 100644 +--- a/test/client/components/client-web-view-test-case.vala ++++ b/test/client/components/components-web-view-test-case.vala +@@ -6,35 +6,42 @@ + */ + + +-public abstract class ClientWebViewTestCase : TestCase { ++public abstract class Components.WebViewTestCase : TestCase { + + protected V? test_view = null; + protected Application.Configuration? config = null; + +- protected ClientWebViewTestCase(string name) { ++ protected WebViewTestCase(string name) { + base(name); ++ } ++ ++ public override void set_up() { + this.config = new Application.Configuration(Application.Client.SCHEMA_ID); + this.config.enable_debug = true; +- ClientWebView.init_web_context( ++ ++ WebView.init_web_context( + this.config, + File.new_for_path(_BUILD_ROOT_DIR).get_child("src"), + File.new_for_path("/tmp") // XXX use something better here + ); + try { +- ClientWebView.load_resources(GLib.File.new_for_path("/tmp")); ++ WebView.load_resources(GLib.File.new_for_path("/tmp")); + } catch (GLib.Error err) { + GLib.assert_not_reached(); + } +- } + +- public override void set_up() { + this.test_view = set_up_test_view(); + } + ++ protected override void tear_down() { ++ this.config = null; ++ this.test_view = null; ++ } ++ + protected abstract V set_up_test_view(); + + protected virtual void load_body_fixture(string html = "") { +- ClientWebView client_view = (ClientWebView) this.test_view; ++ WebView client_view = (WebView) this.test_view; + client_view.load_html(html); + while (!client_view.is_content_loaded) { + Gtk.main_iteration(); +@@ -42,7 +49,7 @@ public abstract class ClientWebViewTestCase : TestCase { + } + + protected WebKit.JavascriptResult run_javascript(string command) throws Error { +- ClientWebView view = (ClientWebView) this.test_view; ++ WebView view = (WebView) this.test_view; + view.run_javascript.begin(command, null, this.async_completion); + return view.run_javascript.end(async_result()); + } +diff --git a/test/client/components/client-web-view-test.vala b/test/client/components/components-web-view-test.vala +similarity index 79% +rename from test/client/components/client-web-view-test.vala +rename to test/client/components/components-web-view-test.vala +index d08e5192..d3e1037c 100644 +--- a/test/client/components/client-web-view-test.vala ++++ b/test/client/components/components-web-view-test.vala +@@ -5,10 +5,10 @@ + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +-public class ClientWebViewTest : TestCase { ++public class Components.WebViewTest : TestCase { + +- public ClientWebViewTest() { +- base("ClientWebViewTest"); ++ public WebViewTest() { ++ base("Components.WebViewTest"); + add_test("init_web_context", init_web_context); + add_test("load_resources", load_resources); + } +@@ -18,7 +18,7 @@ public class ClientWebViewTest : TestCase { + Application.Client.SCHEMA_ID + ); + config.enable_debug = true; +- ClientWebView.init_web_context( ++ WebView.init_web_context( + config, + File.new_for_path(_BUILD_ROOT_DIR).get_child("src"), + File.new_for_path("/tmp") // XXX use something better here +@@ -27,7 +27,7 @@ public class ClientWebViewTest : TestCase { + + public void load_resources() throws GLib.Error { + try { +- ClientWebView.load_resources(GLib.File.new_for_path("/tmp")); ++ WebView.load_resources(GLib.File.new_for_path("/tmp")); + } catch (GLib.Error err) { + assert_not_reached(); + } +diff --git a/test/client/composer/composer-web-view-test.vala b/test/client/composer/composer-web-view-test.vala +index ab935f0a..31005d5f 100644 +--- a/test/client/composer/composer-web-view-test.vala ++++ b/test/client/composer/composer-web-view-test.vala +@@ -5,7 +5,7 @@ + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +-public class Composer.WebViewTest : ClientWebViewTestCase { ++public class Composer.WebViewTest : Components.WebViewTestCase { + + + public WebViewTest() { +diff --git a/test/js/client-page-state-test.vala b/test/js/components-page-state-test.vala +similarity index 73% +rename from test/js/client-page-state-test.vala +rename to test/js/components-page-state-test.vala +index 5f41f9d7..5ec75746 100644 +--- a/test/js/client-page-state-test.vala ++++ b/test/js/components-page-state-test.vala +@@ -5,24 +5,24 @@ + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +-class ClientPageStateTest : ClientWebViewTestCase { ++class Components.PageStateTest : WebViewTestCase { + + +- private class TestClientWebView : ClientWebView { ++ private class TestWebView : Components.WebView { + +- public TestClientWebView(Application.Configuration config) { ++ public TestWebView(Application.Configuration config) { + base(config); + } + + } + + +- public ClientPageStateTest() { +- base("ClientPageStateTest"); ++ public PageStateTest() { ++ base("Components.PageStateTest"); + add_test("content_loaded", content_loaded); + + try { +- ClientWebView.load_resources(GLib.File.new_for_path("/tmp")); ++ WebView.load_resources(GLib.File.new_for_path("/tmp")); + } catch (GLib.Error err) { + GLib.assert_not_reached(); + } +@@ -45,7 +45,7 @@ class ClientPageStateTest : ClientWebViewTestCase { + assert(content_loaded_triggered); + } + +- protected override ClientWebView set_up_test_view() { ++ protected override WebView set_up_test_view() { + WebKit.UserScript test_script; + test_script = new WebKit.UserScript( + "var geary = new PageState()", +@@ -55,7 +55,7 @@ class ClientPageStateTest : ClientWebViewTestCase { + null + ); + +- ClientWebView view = new TestClientWebView(this.config); ++ WebView view = new TestWebView(this.config); + view.get_user_content_manager().add_script(test_script); + return view; + } +diff --git a/test/js/composer-page-state-test.vala b/test/js/composer-page-state-test.vala +index 86382fc4..1a2e2df3 100644 +--- a/test/js/composer-page-state-test.vala ++++ b/test/js/composer-page-state-test.vala +@@ -5,7 +5,7 @@ + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +-class Composer.PageStateTest : ClientWebViewTestCase { ++class Composer.PageStateTest : Components.WebViewTestCase { + + public const string COMPLETE_BODY_TEMPLATE = + """
%s


"""; +diff --git a/test/js/conversation-page-state-test.vala b/test/js/conversation-page-state-test.vala +index 25d91f2b..e46783e3 100644 +--- a/test/js/conversation-page-state-test.vala ++++ b/test/js/conversation-page-state-test.vala +@@ -5,7 +5,7 @@ + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +-class ConversationPageStateTest : ClientWebViewTestCase { ++class ConversationPageStateTest : Components.WebViewTestCase { + + public ConversationPageStateTest() { + base("ConversationPageStateTest"); +diff --git a/test/meson.build b/test/meson.build +index fe3040dd..43bc2a4c 100644 +--- a/test/meson.build ++++ b/test/meson.build +@@ -82,9 +82,9 @@ test_client_sources = [ + 'client/application/application-certificate-manager-test.vala', + 'client/application/application-client-test.vala', + 'client/application/application-configuration-test.vala', +- 'client/components/client-web-view-test.vala', +- 'client/components/client-web-view-test-case.vala', + 'client/components/components-validator-test.vala', ++ 'client/components/components-web-view-test-case.vala', ++ 'client/components/components-web-view-test.vala', + 'client/composer/composer-web-view-test.vala', + 'client/composer/composer-widget-test.vala', + 'client/util/util-avatar-test.vala', +@@ -92,7 +92,7 @@ test_client_sources = [ + 'client/util/util-email-test.vala', + 'client/util/util-js-test.vala', + +- 'js/client-page-state-test.vala', ++ 'js/components-page-state-test.vala', + 'js/composer-page-state-test.vala', + 'js/conversation-page-state-test.vala', + +diff --git a/test/test-client.vala b/test/test-client.vala +index 573aaac1..08949b4c 100644 +--- a/test/test-client.vala ++++ b/test/test-client.vala +@@ -53,10 +53,10 @@ int main(string[] args) { + client.add_suite(new Application.CertificateManagerTest().suite); + client.add_suite(new Application.ClientTest().suite); + client.add_suite(new Application.ConfigurationTest().suite); +- client.add_suite(new ClientWebViewTest().suite); ++ client.add_suite(new Components.WebViewTest().suite); ++ client.add_suite(new Components.ValidatorTest().suite); + client.add_suite(new Composer.WebViewTest().suite); + client.add_suite(new Composer.WidgetTest().suite); +- client.add_suite(new Components.ValidatorTest().suite); + client.add_suite(new Util.Avatar.Test().suite); + client.add_suite(new Util.Cache.Test().suite); + client.add_suite(new Util.Email.Test().suite); +@@ -64,7 +64,7 @@ int main(string[] args) { + + TestSuite js = new TestSuite("js"); + +- js.add_suite(new ClientPageStateTest().suite); ++ js.add_suite(new Components.PageStateTest().suite); + js.add_suite(new Composer.PageStateTest().suite); + js.add_suite(new ConversationPageStateTest().suite); + +diff --git a/ui/client-web-view-allow-remote-images.js b/ui/client-web-view-allow-remote-images.js +deleted file mode 100644 +index 1fb05606..00000000 +--- a/ui/client-web-view-allow-remote-images.js ++++ /dev/null +@@ -1,11 +0,0 @@ +-/* +- * Copyright 2016 Michael Gratton +- * +- * This software is licensed under the GNU Lesser General Public License +- * (version 2.1 or later). See the COPYING file in this distribution. +- */ +- +-/** +- * Enables remote image loading in a client web view. +- */ +-geary.allowRemoteImages = true; +diff --git a/ui/client-web-view.js b/ui/components-web-view.js +similarity index 98% +rename from ui/client-web-view.js +rename to ui/components-web-view.js +index 75bdecf1..80e86d7c 100644 +--- a/ui/client-web-view.js ++++ b/ui/components-web-view.js +@@ -6,7 +6,7 @@ + */ + + /** +- * Application logic for ClientWebView and subclasses. ++ * Application logic for Components.WebView and subclasses. + */ + + let PageState = function() { +@@ -14,7 +14,6 @@ let PageState = function() { + }; + PageState.prototype = { + init: function() { +- this.allowRemoteImages = false; + this.isLoaded = false; + this.undoEnabled = false; + this.redoEnabled = false; +@@ -108,7 +107,7 @@ PageState.prototype = { + window.webkit.messageHandlers.contentLoaded.postMessage(null); + }, + loadRemoteImages: function() { +- this.allowRemoteImages = true; ++ window._gearyAllowRemoteResourceLoads = true; + let images = document.getElementsByTagName("IMG"); + for (let i = 0; i < images.length; i++) { + let img = images.item(i); +diff --git a/ui/conversation-message.ui b/ui/conversation-message.ui +index 1e520801..95560939 100644 +--- a/ui/conversation-message.ui ++++ b/ui/conversation-message.ui +@@ -473,6 +473,7 @@ + + True + False ++ slide-up + + + True +diff --git a/ui/org.gnome.Geary.gresource.xml b/ui/org.gnome.Geary.gresource.xml +index e064d331..0b9e900f 100644 +--- a/ui/org.gnome.Geary.gresource.xml ++++ b/ui/org.gnome.Geary.gresource.xml +@@ -9,8 +9,7 @@ + accounts_editor_servers_pane.ui + application-main-window.ui + certificate_warning_dialog.glade +- client-web-view.js +- client-web-view-allow-remote-images.js ++ components-web-view.js + components-attachment-pane.ui + components-attachment-pane-menus.ui + components-attachment-view.ui +-- +2.29.2 + diff --git a/mail-client/geary/files/0069-Util.JS-Support-converting-between-JSC.Value-and-GLi.patch b/mail-client/geary/files/0069-Util.JS-Support-converting-between-JSC.Value-and-GLi.patch new file mode 100644 index 0000000..c2f717a --- /dev/null +++ b/mail-client/geary/files/0069-Util.JS-Support-converting-between-JSC.Value-and-GLi.patch @@ -0,0 +1,330 @@ +From 1ba2bd0f5ba655b38aff63d6332b0bb52c704119 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 26 Aug 2020 15:20:12 +1000 +Subject: [PATCH 069/124] Util.JS: Support converting between JSC.Value and + GLib.Variant objects + +Add `variant_to_value` and `value_to_variant` methods, document them +and add tests. +--- + src/client/util/util-js.vala | 159 +++++++++++++++++++++++++++++ + test/client/util/util-js-test.vala | 125 +++++++++++++++++++++++ + 2 files changed, 284 insertions(+) + +diff --git a/src/client/util/util-js.vala b/src/client/util/util-js.vala +index 52c9428b..2f05a3e2 100644 +--- a/src/client/util/util-js.vala ++++ b/src/client/util/util-js.vala +@@ -127,6 +127,165 @@ namespace Util.JS { + } + } + ++ /** ++ * Converts a JS value to a GLib variant. ++ * ++ * Simple value objects (string, number, and Boolean values), ++ * arrays of these, and objects with these types as properties are ++ * supported. Arrays are converted to arrays of variants, and ++ * objects to dictionaries containing string keys and variant ++ * values. Null or undefined values are returned as an empty maybe ++ * variant type, since it is not possible to determine the actual ++ * type. ++ * ++ * Throws a type error if the given value's type is not supported. ++ */ ++ public inline GLib.Variant value_to_variant(JSC.Value value) ++ throws Error { ++ if (value.is_null() || value.is_undefined()) { ++ return new GLib.Variant.maybe(GLib.VariantType.VARIANT, null); ++ } ++ if (value.is_boolean()) { ++ return new GLib.Variant.boolean(value.to_boolean()); ++ } ++ if (value.is_number()) { ++ return new GLib.Variant.double(value.to_double()); ++ } ++ if (value.is_string()) { ++ return new GLib.Variant.string(value.to_string()); ++ } ++ if (value.is_array()) { ++ int len = to_int32(value.object_get_property("length")); ++ GLib.Variant[] values = new GLib.Variant[len]; ++ for (int i = 0; i < len; i++) { ++ values[i] = new GLib.Variant.variant( ++ value_to_variant(value.object_get_property_at_index(i)) ++ ); ++ } ++ return new GLib.Variant.array(GLib.VariantType.VARIANT, values); ++ } ++ if (value.is_object()) { ++ GLib.VariantDict dict = new GLib.VariantDict(); ++ string[] names = value.object_enumerate_properties(); ++ if (names != null) { ++ foreach (var name in names) { ++ try { ++ dict.insert_value( ++ name, ++ new GLib.Variant.variant( ++ value_to_variant( ++ value.object_get_property(name) ++ ) ++ ) ++ ); ++ } catch (Error.TYPE err) { ++ // ignored ++ } ++ } ++ } ++ return dict.end(); ++ } ++ throw new Error.TYPE("Unsupported JS type: %s", value.to_string()); ++ } ++ ++ /** ++ * Converts a GLib variant to a JS value. ++ * ++ * Simple value objects (string, number, and Boolean values), ++ * arrays and tuples of these, and dictionaries with string keys ++ * are supported. Tuples and arrays are converted to JS arrays, ++ * and dictionaries or tuples containing dictionary entries are ++ * converted to JS objects. ++ * ++ * Throws a type error if the given variant's type is not supported. ++ */ ++ public inline JSC.Value variant_to_value(JSC.Context context, ++ GLib.Variant variant) ++ throws Error.TYPE { ++ JSC.Value? value = null; ++ GLib.Variant.Class type = variant.classify(); ++ if (type == MAYBE) { ++ GLib.Variant? maybe = variant.get_maybe(); ++ if (maybe != null) { ++ value = variant_to_value(context, maybe); ++ } else { ++ value = new JSC.Value.null(context); ++ } ++ } else if (type == VARIANT) { ++ value = variant_to_value(context, variant.get_variant()); ++ } else if (type == STRING) { ++ value = new JSC.Value.string(context, variant.get_string()); ++ } else if (type == BOOLEAN) { ++ value = new JSC.Value.boolean(context, variant.get_boolean()); ++ } else if (type == DOUBLE) { ++ value = new JSC.Value.number(context, variant.get_double()); ++ } else if (type == INT64) { ++ value = new JSC.Value.number(context, (double) variant.get_int64()); ++ } else if (type == INT32) { ++ value = new JSC.Value.number(context, (double) variant.get_int32()); ++ } else if (type == INT16) { ++ value = new JSC.Value.number(context, (double) variant.get_int16()); ++ } else if (type == UINT64) { ++ value = new JSC.Value.number(context, (double) variant.get_uint64()); ++ } else if (type == UINT32) { ++ value = new JSC.Value.number(context, (double) variant.get_uint32()); ++ } else if (type == UINT16) { ++ value = new JSC.Value.number(context, (double) variant.get_uint16()); ++ } else if (type == BYTE) { ++ value = new JSC.Value.number(context, (double) variant.get_byte()); ++ } else if (type == ARRAY || ++ type == TUPLE) { ++ size_t len = variant.n_children(); ++ if (len == 0) { ++ if (type == ARRAY || ++ type == TUPLE) { ++ value = new JSC.Value.array_from_garray(context, null); ++ } else { ++ value = new JSC.Value.object(context, null, null); ++ } ++ } else { ++ var first = variant.get_child_value(0); ++ if (first.classify() == DICT_ENTRY) { ++ value = new JSC.Value.object(context, null, null); ++ for (size_t i = 0; i < len; i++) { ++ var entry = variant.get_child_value(i); ++ if (entry.classify() != DICT_ENTRY) { ++ throw new Error.TYPE( ++ "Variant mixes dict entries with others: %s", ++ variant.print(true) ++ ); ++ } ++ var key = entry.get_child_value(0); ++ if (key.classify() != STRING) { ++ throw new Error.TYPE( ++ "Dict entry key is not a string: %s", ++ entry.print(true) ++ ); ++ } ++ value.object_set_property( ++ key.get_string(), ++ variant_to_value(context, entry.get_child_value(1)) ++ ); ++ } ++ } else { ++ var values = new GLib.GenericArray((uint) len); ++ for (size_t i = 0; i < len; i++) { ++ values.add( ++ variant_to_value(context, variant.get_child_value(i)) ++ ); ++ } ++ value = new JSC.Value.array_from_garray(context, values); ++ } ++ } ++ } ++ if (value == null) { ++ throw new Error.TYPE( ++ "Unsupported variant type %s", variant.print(true) ++ ); ++ } ++ return value; ++ } ++ + /** + * Escapes a string so as to be safe to use as a JS string literal. + * +diff --git a/test/client/util/util-js-test.vala b/test/client/util/util-js-test.vala +index 1fbe5276..16a01d83 100644 +--- a/test/client/util/util-js-test.vala ++++ b/test/client/util/util-js-test.vala +@@ -7,9 +7,23 @@ + + public class Util.JS.Test : TestCase { + ++ ++ private JSC.Context? context = null; ++ ++ + public Test() { + base("Util.JS.Test"); + add_test("escape_string", escape_string); ++ add_test("to_variant", to_variant); ++ add_test("to_value", to_value); ++ } ++ ++ public override void set_up() throws GLib.Error { ++ this.context = new JSC.Context(); ++ } ++ ++ public override void tear_down() throws GLib.Error { ++ this.context = null; + } + + public void escape_string() throws GLib.Error { +@@ -21,4 +35,115 @@ public class Util.JS.Test : TestCase { + + assert(Util.JS.escape_string("something…\n") == """something…\n"""); + } ++ ++ public void to_variant() throws GLib.Error { ++ assert_equal( ++ value_to_variant(new JSC.Value.null(this.context)).print(true), ++ "@mv nothing" ++ ); ++ assert_equal( ++ value_to_variant(new JSC.Value.string(this.context, "test")).print(true), ++ "'test'" ++ ); ++ assert_equal( ++ value_to_variant(new JSC.Value.number(this.context, 1.0)).print(true), ++ "1.0" ++ ); ++ assert_equal( ++ value_to_variant(new JSC.Value.boolean(this.context, true)).print(true), ++ "true" ++ ); ++ assert_equal( ++ value_to_variant(new JSC.Value.boolean(this.context, false)).print(true), ++ "false" ++ ); ++ ++ var value = new JSC.Value.array_from_garray(this.context, null); ++ assert_equal( ++ value_to_variant(value).print(true), ++ "@av []" ++ ); ++ var array = new GLib.GenericArray(); ++ array.add(new JSC.Value.string(this.context, "test")); ++ value = new JSC.Value.array_from_garray(this.context, array); ++ assert_equal( ++ value_to_variant(value).print(true), ++ "[<'test'>]" ++ ); ++ value = new JSC.Value.object(this.context, null, null); ++ assert_equal( ++ value_to_variant(value).print(true), ++ "@a{sv} {}" ++ ); ++ value.object_set_property( ++ "test", new JSC.Value.boolean(this.context, true) ++ ); ++ assert_equal( ++ value_to_variant(value).print(true), ++ "{'test': <>}" ++ ); ++ } ++ ++ public void to_value() throws GLib.Error { ++ var variant = new GLib.Variant.maybe(GLib.VariantType.STRING, null); ++ var value = variant_to_value(this.context, variant); ++ assert_true(value.is_null(), variant.print(true)); ++ ++ variant = new GLib.Variant.string("test"); ++ value = variant_to_value(this.context, variant); ++ assert_true(value.is_string(), variant.print(true)); ++ assert_equal(value.to_string(), "test", variant.print(true)); ++ ++ variant = new GLib.Variant.int32(42); ++ value = variant_to_value(this.context, variant); ++ assert_true(value.is_number(), variant.print(true)); ++ assert_equal(value.to_int32(), 42, variant.print(true)); ++ ++ variant = new GLib.Variant.double(42.0); ++ value = variant_to_value(this.context, variant); ++ assert_true(value.is_number(), variant.print(true)); ++ assert_within(value.to_double(), 42.0, 0.0000001, variant.print(true)); ++ ++ variant = new GLib.Variant.boolean(true); ++ value = variant_to_value(this.context, variant); ++ assert_true(value.is_boolean(), variant.print(true)); ++ assert_true(value.to_boolean(), variant.print(true)); ++ ++ variant = new GLib.Variant.boolean(false); ++ value = variant_to_value(this.context, variant); ++ assert_true(value.is_boolean(), variant.print(true)); ++ assert_false(value.to_boolean(), variant.print(true)); ++ ++ variant = new GLib.Variant.strv({"test"}); ++ value = variant_to_value(this.context, variant); ++ assert_true(value.is_array(), variant.print(true)); ++ assert_true( ++ value.object_get_property_at_index(0).is_string(), ++ variant.print(true) ++ ); ++ assert_equal( ++ value.object_get_property_at_index(0).to_string(), ++ "test", ++ variant.print(true) ++ ); ++ ++ var dict = new GLib.VariantDict(); ++ variant = dict.end(); ++ value = variant_to_value(this.context, variant); ++ assert_true(value.is_object(), variant.print(true)); ++ ++ dict = new GLib.VariantDict(); ++ dict.insert_value("test", new GLib.Variant.boolean(true)); ++ variant = dict.end(); ++ value = variant_to_value(this.context, variant); ++ assert_true(value.is_object(), variant.print(true)); ++ assert_true( ++ value.object_get_property("test").is_boolean(), ++ value.to_string() ++ ); ++ assert_true( ++ value.object_get_property("test").to_boolean(), ++ value.to_string() ++ ); ++ } + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0070-Components.WebView-Convert-to-using-messages-for-JS-.patch b/mail-client/geary/files/0070-Components.WebView-Convert-to-using-messages-for-JS-.patch new file mode 100644 index 0000000..f1c35ac --- /dev/null +++ b/mail-client/geary/files/0070-Components.WebView-Convert-to-using-messages-for-JS-.patch @@ -0,0 +1,644 @@ +From ff565bc6efc83badbecfb48d2fbb457f4d2f681c Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Thu, 27 Aug 2020 12:12:22 +1000 +Subject: [PATCH 070/124] Components.WebView: Convert to using messages for JS + method invocation + +Use WebKitGTK UserMessage objects for invoking JS methods rather than +serialising to JS strings and running those. This is possibly slightly +less efficient, but removes the onus on serialising to and parsing from +JS and once switched over from message handlers to UserMessage objects +will be using a single uniform IPC interface for both. +--- + .../components/components-web-view.vala | 97 +++++++++++++++++-- + src/client/composer/composer-web-view.vala | 67 ++++++------- + src/client/composer/composer-widget.vala | 19 ++-- + .../conversation-web-view.vala | 15 ++- + src/client/util/util-js.vala | 36 ++++--- + .../web-process/web-process-extension.vala | 53 ++++++++++ + test/js/components-page-state-test.vala | 45 +++++++++ + ui/components-web-view.js | 10 ++ + 8 files changed, 268 insertions(+), 74 deletions(-) + +diff --git a/src/client/components/components-web-view.vala b/src/client/components/components-web-view.vala +index 4bda1c11..368b6a8d 100644 +--- a/src/client/components/components-web-view.vala ++++ b/src/client/components/components-web-view.vala +@@ -370,9 +370,7 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + * Returns the view's content as an HTML string. + */ + public async string? get_html() throws Error { +- return Util.JS.to_string( +- yield call(Util.JS.callable("geary.getHtml"), null) +- ); ++ return yield call_returning(Util.JS.callable("getHtml"), null); + } + + /** +@@ -410,7 +408,7 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + * Load any remote images previously that were blocked. + */ + public void load_remote_images() { +- this.call.begin(Util.JS.callable("geary.loadRemoteImages"), null); ++ this.call_void.begin(Util.JS.callable("loadRemoteImages"), null); + } + + /** +@@ -455,21 +453,100 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + public new async void set_editable(bool enabled, + Cancellable? cancellable) + throws Error { +- yield call( +- Util.JS.callable("geary.setEditable").bool(enabled), cancellable ++ yield call_void( ++ Util.JS.callable("setEditable").bool(enabled), cancellable + ); + } + + /** + * Invokes a {@link Util.JS.Callable} on this web view. ++ * ++ * This calls the given callable on the `geary` object for the ++ * current view, any returned value are ignored. + */ +- protected async JSC.Value call(Util.JS.Callable target, ++ protected async void call_void(Util.JS.Callable target, + GLib.Cancellable? cancellable) + throws GLib.Error { +- WebKit.JavascriptResult result = yield run_javascript( +- target.to_string(), cancellable ++ yield send_message_to_page( ++ target.to_message(), cancellable + ); +- return result.get_js_value(); ++ } ++ ++ /** ++ * Invokes a {@link Util.JS.Callable} on this web view. ++ * ++ * This calls the given callable on the `geary` object for the ++ * current view. The value returned by the call is returned by ++ * this method. ++ * ++ * The type parameter `T` must match the type returned by the ++ * call, else an error is thrown. Only simple nullable value types ++ * are supported for T, for more complex return types (arrays, ++ * dictionaries, etc) specify {@link GLib.Variant} for `T` and ++ * manually parse that. ++ */ ++ protected async T call_returning(Util.JS.Callable target, ++ GLib.Cancellable? cancellable) ++ throws GLib.Error { ++ WebKit.UserMessage? response = yield send_message_to_page( ++ target.to_message(), cancellable ++ ); ++ if (response == null) { ++ throw new Util.JS.Error.TYPE( ++ "Method call did not return a value: %s", target.to_string() ++ ); ++ } ++ GLib.Variant? param = response.parameters; ++ T ret_value = null; ++ var ret_type = typeof(T); ++ if (ret_type == typeof(GLib.Variant)) { ++ ret_value = param; ++ } else { ++ if (param != null && param.get_type().is_maybe()) { ++ param = param.get_maybe(); ++ } ++ if (param != null) { ++ // Since these replies are coming from JS via ++ // Util.JS.value_to_variant, they will only be one of ++ // string, double, bool, array or dict ++ var param_type = param.classify(); ++ if (ret_type == typeof(string) && param_type == STRING) { ++ ret_value = param.get_string(); ++ } else if (ret_type == typeof(bool) && param_type == BOOLEAN) { ++ ret_value = (bool?) param.get_boolean(); ++ } else if (ret_type == typeof(int) && param_type == DOUBLE) { ++ ret_value = (int?) ((int) param.get_double()); ++ } else if (ret_type == typeof(short) && param_type == DOUBLE) { ++ ret_value = (short?) ((short) param.get_double()); ++ } else if (ret_type == typeof(char) && param_type == DOUBLE) { ++ ret_value = (char?) ((char) param.get_double()); ++ } else if (ret_type == typeof(long) && param_type == DOUBLE) { ++ ret_value = (long?) ((long) param.get_double()); ++ } else if (ret_type == typeof(int64) && param_type == DOUBLE) { ++ ret_value = (int64?) ((int64) param.get_double()); ++ } else if (ret_type == typeof(uint) && param_type == DOUBLE) { ++ ret_value = (uint?) ((uint) param.get_double()); ++ } else if (ret_type == typeof(uchar) && param_type == DOUBLE) { ++ ret_value = (uchar?) ((uchar) param.get_double()); ++ } else if (ret_type == typeof(ushort) && param_type == DOUBLE) { ++ ret_value = (ushort?) ((ushort) param.get_double()); ++ } else if (ret_type == typeof(ulong) && param_type == DOUBLE) { ++ ret_value = (ulong?) ((ulong) param.get_double()); ++ } else if (ret_type == typeof(uint64) && param_type == DOUBLE) { ++ ret_value = (uint64?) ((uint64) param.get_double()); ++ } else if (ret_type == typeof(double) && param_type == DOUBLE) { ++ ret_value = (double?) param.get_double(); ++ } else if (ret_type == typeof(float) && param_type == DOUBLE) { ++ ret_value = (float?) ((float) param.get_double()); ++ } else { ++ throw new Util.JS.Error.TYPE( ++ "%s is not a supported type for %s", ++ ret_type.name(), param_type.to_string() ++ ); ++ } ++ } ++ } ++ return ret_value; + } + + /** +diff --git a/src/client/composer/composer-web-view.vala b/src/client/composer/composer-web-view.vala +index f8ecccf6..24a2740c 100644 +--- a/src/client/composer/composer-web-view.vala ++++ b/src/client/composer/composer-web-view.vala +@@ -202,8 +202,8 @@ public class Composer.WebView : Components.WebView { + * Returns the view's content as HTML without being cleaned. + */ + public async string? get_html_for_draft() throws Error { +- return Util.JS.to_string( +- yield call(Util.JS.callable("geary.getHtml").bool(false), null) ++ return yield call_returning( ++ Util.JS.callable("getHtml").bool(false), null + ); + } + +@@ -213,8 +213,8 @@ public class Composer.WebView : Components.WebView { + public void set_rich_text(bool enabled) { + this.is_rich_text = enabled; + if (this.is_content_loaded) { +- this.call.begin( +- Util.JS.callable("geary.setRichText").bool(enabled), null ++ this.call_void.begin( ++ Util.JS.callable("setRichText").bool(enabled), null + ); + } + } +@@ -223,14 +223,14 @@ public class Composer.WebView : Components.WebView { + * Undoes the last edit operation. + */ + public void undo() { +- this.call.begin(Util.JS.callable("geary.undo"), null); ++ this.call_void.begin(Util.JS.callable("undo"), null); + } + + /** + * Redoes the last undone edit operation. + */ + public void redo() { +- this.call.begin(Util.JS.callable("geary.redo"), null); ++ this.call_void.begin(Util.JS.callable("redo"), null); + } + + /** +@@ -239,9 +239,9 @@ public class Composer.WebView : Components.WebView { + * Returns an id to be used to refer to the selection in + * subsequent calls. + */ +- public async string save_selection() throws Error { +- return Util.JS.to_string( +- yield call(Util.JS.callable("geary.saveSelection"), null) ++ public async string? save_selection() throws Error { ++ return yield call_returning( ++ Util.JS.callable("saveSelection"), null + ); + } + +@@ -249,9 +249,7 @@ public class Composer.WebView : Components.WebView { + * Removes a saved selection. + */ + public void free_selection(string id) { +- this.call.begin( +- Util.JS.callable("geary.freeSelection").string(id), null +- ); ++ this.call_void.begin(Util.JS.callable("freeSelection").string(id), null); + } + + /** +@@ -357,9 +355,9 @@ public class Composer.WebView : Components.WebView { + * will be inserted wrapping the selection. + */ + public void insert_link(string href, string selection_id) { +- this.call.begin( ++ this.call_void.begin( + Util.JS.callable( +- "geary.insertLink" ++ "insertLink" + ).string(href).string(selection_id), + null + ); +@@ -373,8 +371,8 @@ public class Composer.WebView : Components.WebView { + * unlinked section. + */ + public void delete_link(string selection_id) { +- this.call.begin( +- Util.JS.callable("geary.deleteLink").string(selection_id), ++ this.call_void.begin( ++ Util.JS.callable("deleteLink").string(selection_id), + null + ); + } +@@ -396,23 +394,23 @@ public class Composer.WebView : Components.WebView { + * Indents the line at the current text cursor location. + */ + public void indent_line() { +- this.call.begin(Util.JS.callable("geary.indentLine"), null); ++ this.call_void.begin(Util.JS.callable("indentLine"), null); + } + + public void insert_olist() { +- this.call.begin(Util.JS.callable("geary.insertOrderedList"), null); ++ this.call_void.begin(Util.JS.callable("insertOrderedList"), null); + } + + public void insert_ulist() { +- this.call.begin(Util.JS.callable("geary.insertUnorderedList"), null); ++ this.call_void.begin(Util.JS.callable("insertUnorderedList"), null); + } + + /** + * Updates the signature block if it has not been deleted. + */ + public new void update_signature(string signature) { +- this.call.begin( +- Util.JS.callable("geary.updateSignature").string(signature), null ++ this.call_void.begin( ++ Util.JS.callable("updateSignature").string(signature), null + ); + } + +@@ -420,22 +418,21 @@ public class Composer.WebView : Components.WebView { + * Removes the quoted message (if any) from the composer. + */ + public void delete_quoted_message() { +- this.call.begin(Util.JS.callable("geary.deleteQuotedMessage"), null); ++ this.call_void.begin(Util.JS.callable("deleteQuotedMessage"), null); + } + + /** + * Determines if the editor content contains an attachment keyword. + */ +- public async bool contains_attachment_keywords(string keyword_spec, +- string subject) { ++ public async bool? contains_attachment_keywords(string keyword_spec, ++ string subject) { + try { +- return Util.JS.to_bool( +- yield call( +- Util.JS.callable("geary.containsAttachmentKeyword") +- .string(keyword_spec) +- .string(subject), +- null) +- ); ++ return yield call_returning( ++ Util.JS.callable("containsAttachmentKeyword") ++ .string(keyword_spec) ++ .string(subject), ++ null ++ ); + } catch (Error err) { + debug("Error checking or attachment keywords: %s", err.message); + return false; +@@ -449,7 +446,7 @@ public class Composer.WebView : Components.WebView { + * this. + */ + public async void clean_content() throws Error { +- this.call.begin(Util.JS.callable("geary.cleanContent"), null); ++ this.call_void.begin(Util.JS.callable("cleanContent"), null); + } + + /** +@@ -459,10 +456,10 @@ public class Composer.WebView : Components.WebView { + const int MAX_BREAKABLE_LEN = 72; // F=F recommended line limit + const int MAX_UNBREAKABLE_LEN = 998; // SMTP line limit + +- string body_text = Util.JS.to_string( +- yield call(Util.JS.callable("geary.getText"), null) ++ string? body_text = yield call_returning( ++ Util.JS.callable("getText"), null + ); +- string[] lines = body_text.split("\n"); ++ string[] lines = (body_text ?? "").split("\n"); + GLib.StringBuilder flowed = new GLib.StringBuilder.sized(body_text.length); + foreach (string line in lines) { + // Strip trailing whitespace, so it doesn't look like a +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index 4c4d0caf..9148a88e 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -1450,15 +1450,16 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + confirmation = _("Send message with an empty subject?"); + } else if (!has_body && !has_attachment) { + confirmation = _("Send message with an empty body?"); +- } else if (!has_attachment && +- yield this.editor.body.contains_attachment_keywords( +- string.join( +- "|", +- ATTACHMENT_KEYWORDS, +- ATTACHMENT_KEYWORDS_LOCALISED +- ), +- this.subject)) { +- confirmation = _("Send message without an attachment?"); ++ } else if (!has_attachment) { ++ var keywords = string.join( ++ "|", ATTACHMENT_KEYWORDS, ATTACHMENT_KEYWORDS_LOCALISED ++ ); ++ var contains = yield this.editor.body.contains_attachment_keywords( ++ keywords, this.subject ++ ); ++ if (contains != null && contains) { ++ confirmation = _("Send message without an attachment?"); ++ } + } + if (confirmation != null) { + ConfirmationDialog dialog = new ConfirmationDialog(container.top_window, +diff --git a/src/client/conversation-viewer/conversation-web-view.vala b/src/client/conversation-viewer/conversation-web-view.vala +index ffa36394..d77af642 100644 +--- a/src/client/conversation-viewer/conversation-web-view.vala ++++ b/src/client/conversation-viewer/conversation-web-view.vala +@@ -89,20 +89,18 @@ public class ConversationWebView : Components.WebView { + * Returns the current selection, for prefill as find text. + */ + public async string? get_selection_for_find() throws Error{ +- JSC.Value result = yield call( +- Util.JS.callable("geary.getSelectionForFind"), null ++ return yield call_returning( ++ Util.JS.callable("getSelectionForFind"), null + ); +- return Util.JS.to_string(result); + } + + /** + * Returns the current selection, for quoting in a message. + */ + public async string? get_selection_for_quoting() throws Error { +- JSC.Value result = yield call( +- Util.JS.callable("geary.getSelectionForQuoting"), null ++ return yield call_returning( ++ Util.JS.callable("getSelectionForQuoting"), null + ); +- return Util.JS.to_string(result); + } + + /** +@@ -110,10 +108,9 @@ public class ConversationWebView : Components.WebView { + */ + public async int? get_anchor_target_y(string anchor_body) + throws GLib.Error { +- JSC.Value result = yield call( +- Util.JS.callable("geary.getAnchorTargetY").string(anchor_body), null ++ return yield call_returning( ++ Util.JS.callable("getAnchorTargetY").string(anchor_body), null + ); +- return (int) Util.JS.to_int32(result); + } + + /** +diff --git a/src/client/util/util-js.vala b/src/client/util/util-js.vala +index 2f05a3e2..d2ce9f2e 100644 +--- a/src/client/util/util-js.vala ++++ b/src/client/util/util-js.vala +@@ -348,40 +348,54 @@ namespace Util.JS { + */ + public class Callable { + +- private string base_name; +- private string[] safe_args = new string[0]; ++ private string name; ++ private GLib.Variant[] args = {}; + + +- public Callable(string base_name) { +- this.base_name = base_name; ++ public Callable(string name) { ++ this.name = name; ++ } ++ ++ public WebKit.UserMessage to_message() { ++ GLib.Variant? args = null; ++ if (this.args.length == 1) { ++ args = this.args[0]; ++ } else if (this.args.length > 1) { ++ args = new GLib.Variant.tuple(this.args); ++ } ++ return new WebKit.UserMessage(this.name, args); + } + + public string to_string() { +- return base_name + "(" + global::string.joinv(",", safe_args) + ");"; ++ string[] args = new string[this.args.length]; ++ for (int i = 0; i < args.length; i++) { ++ args[i] = this.args[i].print(true); ++ } ++ return this.name + "(" + global::string.joinv(",", args) + ")"; + } + + public Callable string(string value) { +- add_param("\"" + escape_string(value) + "\""); ++ add_param(new GLib.Variant.string(value)); + return this; + } + + public Callable double(double value) { +- add_param(value.to_string()); ++ add_param(new GLib.Variant.double(value)); + return this; + } + + public Callable int(int value) { +- add_param(value.to_string()); ++ add_param(new GLib.Variant.int32(value)); + return this; + } + + public Callable bool(bool value) { +- add_param(value ? "true" : "false"); ++ add_param(new GLib.Variant.boolean(value)); + return this; + } + +- private inline void add_param(string value) { +- this.safe_args += value; ++ private inline void add_param(GLib.Variant value) { ++ this.args += value; + } + + } +diff --git a/src/client/web-process/web-process-extension.vala b/src/client/web-process/web-process-extension.vala +index 4bba5154..86f7f44c 100644 +--- a/src/client/web-process/web-process-extension.vala ++++ b/src/client/web-process/web-process-extension.vala +@@ -30,6 +30,10 @@ public void webkit_web_extension_initialize_with_user_data(WebKit.WebExtension e + */ + public class GearyWebExtension : Object { + ++ private const string PAGE_STATE_OBJECT_NAME = "geary"; ++ private const string MESSAGE_RETURN_VALUE_NAME = "__return__"; ++ private const string MESSAGE_EXCEPTION_NAME = "__exception__"; ++ + private const string[] ALLOWED_SCHEMES = { "cid", "geary", "data", "blob" }; + + private const string REMOTE_LOAD_VAR = "_gearyAllowRemoteResourceLoads"; +@@ -157,6 +161,55 @@ public class GearyWebExtension : Object { + page.get_editor().selection_changed.connect(() => { + selection_changed(page); + }); ++ page.user_message_received.connect(on_page_message_received); ++ } ++ ++ private bool on_page_message_received(WebKit.WebPage page, ++ WebKit.UserMessage message) { ++ WebKit.Frame frame = page.get_main_frame(); ++ JSC.Context context = frame.get_js_context(); ++ JSC.Value page_state = context.get_value(PAGE_STATE_OBJECT_NAME); ++ ++ try { ++ JSC.Value[]? call_param = null; ++ GLib.Variant? message_param = message.parameters; ++ if (message_param != null) { ++ if (message_param.is_container()) { ++ size_t len = message_param.n_children(); ++ call_param = new JSC.Value[len]; ++ for (size_t i = 0; i < len; i++) { ++ call_param[i] = Util.JS.variant_to_value( ++ context, ++ message_param.get_child_value(i) ++ ); ++ } ++ } else { ++ call_param = { ++ Util.JS.variant_to_value(context, message_param) ++ }; ++ } ++ } ++ ++ JSC.Value ret = page_state.object_invoke_methodv( ++ message.name, call_param ++ ); ++ ++ // Must send a reply, even for void calls, otherwise ++ // WebKitGTK will complain. So return a message return ++ // rain hail or shine. ++ // https://bugs.webkit.org/show_bug.cgi?id=215880 ++ ++ message.send_reply( ++ new WebKit.UserMessage( ++ MESSAGE_RETURN_VALUE_NAME, ++ Util.JS.value_to_variant(ret) ++ ) ++ ); ++ } catch (GLib.Error err) { ++ debug("Failed to handle message: %s", err.message); ++ } ++ ++ return true; + } + + } +diff --git a/test/js/components-page-state-test.vala b/test/js/components-page-state-test.vala +index 5ec75746..562c6cda 100644 +--- a/test/js/components-page-state-test.vala ++++ b/test/js/components-page-state-test.vala +@@ -14,12 +14,24 @@ class Components.PageStateTest : WebViewTestCase { + base(config); + } + ++ public new async void call_void(Util.JS.Callable callable) ++ throws GLib.Error { ++ yield base.call_void(callable, null); ++ } ++ ++ public new async string call_returning(Util.JS.Callable callable) ++ throws GLib.Error { ++ return yield base.call_returning(callable, null); ++ } ++ + } + + + public PageStateTest() { + base("Components.PageStateTest"); + add_test("content_loaded", content_loaded); ++ add_test("call_void", call_void); ++ add_test("call_returning", call_returning); + + try { + WebView.load_resources(GLib.File.new_for_path("/tmp")); +@@ -45,6 +57,30 @@ class Components.PageStateTest : WebViewTestCase { + assert(content_loaded_triggered); + } + ++ public void call_void() throws GLib.Error { ++ load_body_fixture("OHHAI"); ++ var test_article = this.test_view as TestWebView; ++ ++ test_article.call_void.begin( ++ new Util.JS.Callable("testVoid"), this.async_completion ++ ); ++ test_article.call_void.end(this.async_result()); ++ assert_test_result("void"); ++ } ++ ++ public void call_returning() throws GLib.Error { ++ load_body_fixture("OHHAI"); ++ var test_article = this.test_view as TestWebView; ++ ++ test_article.call_returning.begin( ++ new Util.JS.Callable("testReturn").string("check 1-2"), ++ this.async_completion ++ ); ++ string ret = test_article.call_returning.end(this.async_result()); ++ assert_equal(ret, "check 1-2"); ++ assert_test_result("check 1-2"); ++ } ++ + protected override WebView set_up_test_view() { + WebKit.UserScript test_script; + test_script = new WebKit.UserScript( +@@ -60,4 +96,13 @@ class Components.PageStateTest : WebViewTestCase { + return view; + } + ++ private void assert_test_result(string expected) ++ throws GLib.Error { ++ string? result = Util.JS.to_string( ++ run_javascript("geary.testResult") ++ .get_js_value() ++ ); ++ assert_equal(result, expected); ++ } ++ + } +diff --git a/ui/components-web-view.js b/ui/components-web-view.js +index 80e86d7c..289abca0 100644 +--- a/ui/components-web-view.js ++++ b/ui/components-web-view.js +@@ -87,6 +87,8 @@ PageState.prototype = { + window.addEventListener("transitionend", function(e) { + queuePreferredHeightUpdate(); + }, false); // load does not bubble ++ ++ this.testResult = null; + }, + getPreferredHeight: function() { + // Return the scroll height of the HTML element since the BODY +@@ -184,5 +186,13 @@ PageState.prototype = { + this.hasSelection = hasSelection; + window.webkit.messageHandlers.selectionChanged.postMessage(hasSelection); + } ++ }, ++ // Methods below are for unit tests. ++ testVoid: function() { ++ this.testResult = "void"; ++ }, ++ testReturn: function(value) { ++ this.testResult = value; ++ return value; + } + }; +-- +2.29.2 + diff --git a/mail-client/geary/files/0071-Components.WebView-Check-for-pass-up-exceptions-when.patch b/mail-client/geary/files/0071-Components.WebView-Check-for-pass-up-exceptions-when.patch new file mode 100644 index 0000000..be385e1 --- /dev/null +++ b/mail-client/geary/files/0071-Components.WebView-Check-for-pass-up-exceptions-when.patch @@ -0,0 +1,266 @@ +From c813aa5707acc5226a57dca82449dc709969d05a Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Thu, 27 Aug 2020 16:18:45 +1000 +Subject: [PATCH 071/124] Components.WebView: Check for pass up exceptions when + calling JS code + +Update web extension to check for errors when invoking page state +methods and pass a message back if found. Check for this, decode and +throw a vala error in the WebView if found. +--- + .../components/components-web-view.vala | 56 ++++++++++++++--- + .../web-process/web-process-extension.vala | 39 ++++++++++-- + test/js/components-page-state-test.vala | 60 +++++++++++++++++++ + ui/components-web-view.js | 4 ++ + 4 files changed, 146 insertions(+), 13 deletions(-) + +diff --git a/src/client/components/components-web-view.vala b/src/client/components/components-web-view.vala +index 368b6a8d..2b373170 100644 +--- a/src/client/components/components-web-view.vala ++++ b/src/client/components/components-web-view.vala +@@ -26,6 +26,10 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + /** URI Scheme and delimiter for images loaded by Content-ID. */ + public const string CID_URL_PREFIX = "cid:"; + ++ // Keep these in sync with GearyWebExtension ++ private const string MESSAGE_RETURN_VALUE_NAME = "__return__"; ++ private const string MESSAGE_EXCEPTION_NAME = "__exception__"; ++ + // WebKit message handler names + private const string COMMAND_STACK_CHANGED = "commandStackChanged"; + private const string CONTENT_LOADED = "contentLoaded"; +@@ -467,9 +471,7 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + protected async void call_void(Util.JS.Callable target, + GLib.Cancellable? cancellable) + throws GLib.Error { +- yield send_message_to_page( +- target.to_message(), cancellable +- ); ++ yield call_impl(target, cancellable); + } + + /** +@@ -488,12 +490,10 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + protected async T call_returning(Util.JS.Callable target, + GLib.Cancellable? cancellable) + throws GLib.Error { +- WebKit.UserMessage? response = yield send_message_to_page( +- target.to_message(), cancellable +- ); ++ WebKit.UserMessage? response = yield call_impl(target, cancellable); + if (response == null) { + throw new Util.JS.Error.TYPE( +- "Method call did not return a value: %s", target.to_string() ++ "Method call %s did not return a value", target.to_string() + ); + } + GLib.Variant? param = response.parameters; +@@ -612,6 +612,48 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + "monospace-font", SettingsBindFlags.DEFAULT); + } + ++ private async WebKit.UserMessage? call_impl(Util.JS.Callable target, ++ GLib.Cancellable? cancellable) ++ throws GLib.Error { ++ WebKit.UserMessage? response = yield send_message_to_page( ++ target.to_message(), cancellable ++ ); ++ if (response != null) { ++ var response_name = response.name; ++ if (response_name == MESSAGE_EXCEPTION_NAME) { ++ var exception = new GLib.VariantDict(response.parameters); ++ var name = exception.lookup_value("name", GLib.VariantType.STRING) as string; ++ var message = exception.lookup_value("message", GLib.VariantType.STRING) as string; ++ var backtrace = exception.lookup_value("backtrace_string", GLib.VariantType.STRING) as string; ++ var source = exception.lookup_value("source_uri", GLib.VariantType.STRING) as string; ++ var line = exception.lookup_value("line_number", GLib.VariantType.UINT32); ++ var column = exception.lookup_value("column_number", GLib.VariantType.UINT32); ++ ++ var log_message = "Method call %s raised %s exception at %s:%d:%d: %s".printf( ++ target.to_string(), ++ name ?? "unknown", ++ source ?? "unknown", ++ (line != null ? (int) line.get_uint32() : -1), ++ (column != null ? (int) column.get_uint32() : -1), ++ message ?? "unknown" ++ ); ++ debug(log_message); ++ if (backtrace != null) { ++ debug(backtrace); ++ } ++ ++ throw new Util.JS.Error.EXCEPTION(log_message); ++ } else if (response_name != MESSAGE_RETURN_VALUE_NAME) { ++ throw new Util.JS.Error.TYPE( ++ "Method call %s returned unknown name: %s", ++ target.to_string(), ++ response_name ++ ); ++ } ++ } ++ return response; ++ } ++ + private void handle_cid_request(WebKit.URISchemeRequest request) { + if (!handle_internal_response(request)) { + request.finish_error(new FileError.NOENT("Unknown CID")); +diff --git a/src/client/web-process/web-process-extension.vala b/src/client/web-process/web-process-extension.vala +index 86f7f44c..7aa6dd3c 100644 +--- a/src/client/web-process/web-process-extension.vala ++++ b/src/client/web-process/web-process-extension.vala +@@ -31,6 +31,8 @@ public void webkit_web_extension_initialize_with_user_data(WebKit.WebExtension e + public class GearyWebExtension : Object { + + private const string PAGE_STATE_OBJECT_NAME = "geary"; ++ ++ // Keep these in sync with Components.WebView + private const string MESSAGE_RETURN_VALUE_NAME = "__return__"; + private const string MESSAGE_EXCEPTION_NAME = "__exception__"; + +@@ -199,12 +201,37 @@ public class GearyWebExtension : Object { + // rain hail or shine. + // https://bugs.webkit.org/show_bug.cgi?id=215880 + +- message.send_reply( +- new WebKit.UserMessage( +- MESSAGE_RETURN_VALUE_NAME, +- Util.JS.value_to_variant(ret) +- ) +- ); ++ JSC.Exception? thrown = context.get_exception(); ++ if (thrown != null) { ++ var detail = new GLib.VariantDict(); ++ if (thrown.get_message() != null) { ++ detail.insert_value("name", new GLib.Variant.string(thrown.get_name())); ++ } ++ if (thrown.get_message() != null) { ++ detail.insert_value("message", new GLib.Variant.string(thrown.get_message())); ++ } ++ if (thrown.get_backtrace_string() != null) { ++ detail.insert_value("backtrace_string", new GLib.Variant.string(thrown.get_backtrace_string())); ++ } ++ if (thrown.get_source_uri() != null) { ++ detail.insert_value("source_uri", new GLib.Variant.string(thrown.get_source_uri())); ++ } ++ detail.insert_value("line_number", new GLib.Variant.uint32(thrown.get_line_number())); ++ detail.insert_value("column_number", new GLib.Variant.uint32(thrown.get_column_number())); ++ message.send_reply( ++ new WebKit.UserMessage( ++ MESSAGE_EXCEPTION_NAME, ++ detail.end() ++ ) ++ ); ++ } else { ++ message.send_reply( ++ new WebKit.UserMessage( ++ MESSAGE_RETURN_VALUE_NAME, ++ Util.JS.value_to_variant(ret) ++ ) ++ ); ++ } + } catch (GLib.Error err) { + debug("Failed to handle message: %s", err.message); + } +diff --git a/test/js/components-page-state-test.vala b/test/js/components-page-state-test.vala +index 562c6cda..bf952416 100644 +--- a/test/js/components-page-state-test.vala ++++ b/test/js/components-page-state-test.vala +@@ -31,7 +31,9 @@ class Components.PageStateTest : WebViewTestCase { + base("Components.PageStateTest"); + add_test("content_loaded", content_loaded); + add_test("call_void", call_void); ++ add_test("call_void_throws", call_void_throws); + add_test("call_returning", call_returning); ++ add_test("call_returning_throws", call_returning_throws); + + try { + WebView.load_resources(GLib.File.new_for_path("/tmp")); +@@ -68,6 +70,35 @@ class Components.PageStateTest : WebViewTestCase { + assert_test_result("void"); + } + ++ public void call_void_throws() throws GLib.Error { ++ load_body_fixture("OHHAI"); ++ var test_article = this.test_view as TestWebView; ++ ++ try { ++ test_article.call_void.begin( ++ new Util.JS.Callable("testThrow").string("void message"), ++ this.async_completion ++ ); ++ test_article.call_void.end(this.async_result()); ++ assert_not_reached(); ++ } catch (Util.JS.Error.EXCEPTION err) { ++ assert_string( ++ err.message ++ ).contains( ++ "testThrow" ++ // WebKitGTK doesn't actually pass any details through: ++ // https://bugs.webkit.org/show_bug.cgi?id=215877 ++ // ).contains( ++ // "Error" ++ // ).contains( ++ // "void message" ++ // ).contains( ++ // "components-web-view.js" ++ ); ++ assert_test_result("void message"); ++ } ++ } ++ + public void call_returning() throws GLib.Error { + load_body_fixture("OHHAI"); + var test_article = this.test_view as TestWebView; +@@ -81,6 +112,35 @@ class Components.PageStateTest : WebViewTestCase { + assert_test_result("check 1-2"); + } + ++ public void call_returning_throws() throws GLib.Error { ++ load_body_fixture("OHHAI"); ++ var test_article = this.test_view as TestWebView; ++ ++ try { ++ test_article.call_returning.begin( ++ new Util.JS.Callable("testThrow").string("return message"), ++ this.async_completion ++ ); ++ test_article.call_returning.end(this.async_result()); ++ assert_not_reached(); ++ } catch (Util.JS.Error.EXCEPTION err) { ++ assert_string( ++ err.message ++ ).contains( ++ "testThrow" ++ // WebKitGTK doesn't actually pass any details through: ++ // https://bugs.webkit.org/show_bug.cgi?id=215877 ++ // ).contains( ++ // "Error" ++ // ).contains( ++ // "return message" ++ // ).contains( ++ // "components-web-view.js" ++ ); ++ assert_test_result("return message"); ++ } ++ } ++ + protected override WebView set_up_test_view() { + WebKit.UserScript test_script; + test_script = new WebKit.UserScript( +diff --git a/ui/components-web-view.js b/ui/components-web-view.js +index 289abca0..0f932a19 100644 +--- a/ui/components-web-view.js ++++ b/ui/components-web-view.js +@@ -194,5 +194,9 @@ PageState.prototype = { + testReturn: function(value) { + this.testResult = value; + return value; ++ }, ++ testThrow: function(value) { ++ this.testResult = value; ++ throw this.testResult; + } + }; +-- +2.29.2 + diff --git a/mail-client/geary/files/0072-GearyWebExtension-Add-factory-method-for-error-user-.patch b/mail-client/geary/files/0072-GearyWebExtension-Add-factory-method-for-error-user-.patch new file mode 100644 index 0000000..b007b9e --- /dev/null +++ b/mail-client/geary/files/0072-GearyWebExtension-Add-factory-method-for-error-user-.patch @@ -0,0 +1,88 @@ +From db69807836cb2485af0941a83f57451c034b21a0 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 09:44:46 +1000 +Subject: [PATCH 072/124] GearyWebExtension: Add factory method for error user + messages + +--- + .../web-process/web-process-extension.vala | 56 +++++++++++++------ + 1 file changed, 38 insertions(+), 18 deletions(-) + +diff --git a/src/client/web-process/web-process-extension.vala b/src/client/web-process/web-process-extension.vala +index 7aa6dd3c..89d9a1e3 100644 +--- a/src/client/web-process/web-process-extension.vala ++++ b/src/client/web-process/web-process-extension.vala +@@ -145,6 +145,37 @@ public class GearyWebExtension : Object { + return ret; + } + ++ private WebKit.UserMessage to_exception_message(string? name, ++ string? message, ++ string? backtrace = null, ++ string? source = null, ++ int line_number = -1, ++ int column_number = -1) { ++ var detail = new GLib.VariantDict(); ++ if (name != null) { ++ detail.insert_value("name", new GLib.Variant.string(name)); ++ } ++ if (message != null) { ++ detail.insert_value("message", new GLib.Variant.string(message)); ++ } ++ if (backtrace != null) { ++ detail.insert_value("backtrace", new GLib.Variant.string(backtrace)); ++ } ++ if (source != null) { ++ detail.insert_value("source", new GLib.Variant.string(source)); ++ } ++ if (line_number > 0) { ++ detail.insert_value("line_number", new GLib.Variant.uint32(line_number)); ++ } ++ if (column_number > 0) { ++ detail.insert_value("column_number", new GLib.Variant.uint32(column_number)); ++ } ++ return new WebKit.UserMessage( ++ MESSAGE_EXCEPTION_NAME, ++ detail.end() ++ ); ++ } ++ + private void on_page_created(WebKit.WebExtension extension, + WebKit.WebPage page) { + WebKit.Frame frame = page.get_main_frame(); +@@ -203,25 +234,14 @@ public class GearyWebExtension : Object { + + JSC.Exception? thrown = context.get_exception(); + if (thrown != null) { +- var detail = new GLib.VariantDict(); +- if (thrown.get_message() != null) { +- detail.insert_value("name", new GLib.Variant.string(thrown.get_name())); +- } +- if (thrown.get_message() != null) { +- detail.insert_value("message", new GLib.Variant.string(thrown.get_message())); +- } +- if (thrown.get_backtrace_string() != null) { +- detail.insert_value("backtrace_string", new GLib.Variant.string(thrown.get_backtrace_string())); +- } +- if (thrown.get_source_uri() != null) { +- detail.insert_value("source_uri", new GLib.Variant.string(thrown.get_source_uri())); +- } +- detail.insert_value("line_number", new GLib.Variant.uint32(thrown.get_line_number())); +- detail.insert_value("column_number", new GLib.Variant.uint32(thrown.get_column_number())); + message.send_reply( +- new WebKit.UserMessage( +- MESSAGE_EXCEPTION_NAME, +- detail.end() ++ to_exception_message( ++ thrown.get_name(), ++ thrown.get_message(), ++ thrown.get_backtrace_string(), ++ thrown.get_source_uri(), ++ (int) thrown.get_line_number(), ++ (int) thrown.get_column_number() + ) + ); + } else { +-- +2.29.2 + diff --git a/mail-client/geary/files/0073-GearyWebExtension-Add-support-for-sending-messages-f.patch b/mail-client/geary/files/0073-GearyWebExtension-Add-support-for-sending-messages-f.patch new file mode 100644 index 0000000..5082fa8 --- /dev/null +++ b/mail-client/geary/files/0073-GearyWebExtension-Add-support-for-sending-messages-f.patch @@ -0,0 +1,223 @@ +From 6162785d997fcfa4efaf6ec83670b2fab8cca6bd Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 09:49:46 +1000 +Subject: [PATCH 073/124] GearyWebExtension: Add support for sending messages + from JS to client + +Define a vala-backed JS class in the extension and make that available +to pages when they are registered. Add some helper JS to PageState for +defining message sending functions. Listen for these in +Components.WebView and dispatch to the registered callback for it. +--- + .../components/components-web-view.vala | 55 ++++++++++++++++ + .../web-process/web-process-extension.vala | 63 +++++++++++++++++++ + ui/components-web-view.js | 9 +++ + 3 files changed, 127 insertions(+) + +diff --git a/src/client/components/components-web-view.vala b/src/client/components/components-web-view.vala +index 2b373170..c746c441 100644 +--- a/src/client/components/components-web-view.vala ++++ b/src/client/components/components-web-view.vala +@@ -198,6 +198,24 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + /** Delegate for UserContentManager message callbacks. */ + public delegate void JavaScriptMessageHandler(WebKit.JavascriptResult js_result); + ++ /** ++ * Delegate for message handler callbacks. ++ * ++ * @see register_message_callback ++ */ ++ protected delegate void MessageCallback(GLib.Variant? parameters); ++ ++ // Work around for not being able to put delegates in a Gee collection. ++ private class MessageCallable { ++ ++ public unowned MessageCallback handler; ++ ++ public MessageCallable(MessageCallback handler) { ++ this.handler = handler; ++ } ++ ++ } ++ + /** + * Determines if the view's content has been fully loaded. + * +@@ -263,6 +281,8 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + + private Gee.List registered_message_handlers = + new Gee.LinkedList(); ++ private Gee.Map message_handlers = ++ new Gee.HashMap(); + + private double webkit_reported_height = 0; + +@@ -359,6 +379,7 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + this.user_content_manager.disconnect(id); + } + this.registered_message_handlers.clear(); ++ this.message_handlers.clear(); + base.destroy(); + } + +@@ -568,6 +589,14 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + } + } + ++ /** ++ * Registers a callback for a specific WebKit user message. ++ */ ++ protected void register_message_callback(string name, ++ MessageCallback handler) { ++ this.message_handlers.set(name, new MessageCallable(handler)); ++ } ++ + private void init(Application.Configuration config) { + // XXX get the allow prefix from the extension somehow + +@@ -595,6 +624,8 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + SELECTION_CHANGED, on_selection_changed + ); + ++ this.user_message_received.connect(this.on_message_received); ++ + // Manage zoom level, ensure it's sane + config.bind(Application.Configuration.CONVERSATION_VIEWER_ZOOM_KEY, this, "zoom_level"); + if (this.zoom_level < ZOOM_MIN) { +@@ -803,6 +834,30 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + } + } + ++ private bool on_message_received(WebKit.UserMessage message) { ++ if (message.name == MESSAGE_EXCEPTION_NAME) { ++ var detail = new GLib.VariantDict(message.parameters); ++ var name = detail.lookup_value("name", GLib.VariantType.STRING) as string; ++ var log_message = detail.lookup_value("message", GLib.VariantType.STRING) as string; ++ warning( ++ "Error sending message from JS: %s: %s", ++ name ?? "unknown", ++ log_message ?? "unknown" ++ ); ++ } else if (this.message_handlers.has_key(message.name)) { ++ debug( ++ "Message received: %s(%s)", ++ message.name, ++ message.parameters != null ? message.parameters.print(true) : "" ++ ); ++ MessageCallable callback = this.message_handlers.get(message.name); ++ callback.handler(message.parameters); ++ } else { ++ warning("Message with unknown handler received: %s", message.name); ++ } ++ return true; ++ } ++ + } + + // XXX this needs to be moved into the libsoup bindings +diff --git a/src/client/web-process/web-process-extension.vala b/src/client/web-process/web-process-extension.vala +index 89d9a1e3..31f2b0f0 100644 +--- a/src/client/web-process/web-process-extension.vala ++++ b/src/client/web-process/web-process-extension.vala +@@ -38,6 +38,8 @@ public class GearyWebExtension : Object { + + private const string[] ALLOWED_SCHEMES = { "cid", "geary", "data", "blob" }; + ++ private const string EXTENSION_CLASS_VAR = "_GearyWebExtension"; ++ private const string EXTENSION_CLASS_SEND = "send"; + private const string REMOTE_LOAD_VAR = "_gearyAllowRemoteResourceLoads"; + + private WebKit.WebExtension extension; +@@ -180,6 +182,25 @@ public class GearyWebExtension : Object { + WebKit.WebPage page) { + WebKit.Frame frame = page.get_main_frame(); + JSC.Context context = frame.get_js_context(); ++ ++ var extension_class = context.register_class( ++ this.get_type().name(), ++ null, ++ null, ++ null ++ ); ++ extension_class.add_method( ++ EXTENSION_CLASS_SEND, ++ (instance, values) => { ++ return this.on_page_send_message(page, values); ++ }, ++ GLib.Type.NONE ++ ); ++ context.set_value( ++ EXTENSION_CLASS_VAR, ++ new JSC.Value.object(context, extension_class, extension_class) ++ ); ++ + context.set_value( + REMOTE_LOAD_VAR, + new JSC.Value.boolean(context, false) +@@ -259,4 +280,46 @@ public class GearyWebExtension : Object { + return true; + } + ++ private bool on_page_send_message(WebKit.WebPage page, ++ GLib.GenericArray args) { ++ WebKit.UserMessage? message = null; ++ if (args.length > 0) { ++ var name = args.get(0).to_string(); ++ GLib.Variant? parameters = null; ++ if (args.length > 1) { ++ JSC.Value param_value = args.get(1); ++ try { ++ int len = Util.JS.to_int32( ++ param_value.object_get_property("length") ++ ); ++ if (len == 1) { ++ parameters = Util.JS.value_to_variant( ++ param_value.object_get_property_at_index(0) ++ ); ++ } else if (len > 1) { ++ parameters = Util.JS.value_to_variant(param_value); ++ } ++ } catch (Util.JS.Error err) { ++ message = to_exception_message( ++ this.get_type().name(), err.message ++ ); ++ } ++ } ++ if (message == null) { ++ message = new WebKit.UserMessage(name, parameters); ++ } ++ } ++ if (message == null) { ++ var log_message = "Not enough parameters for JS call to %s.%s()".printf( ++ EXTENSION_CLASS_VAR, ++ EXTENSION_CLASS_SEND ++ ); ++ debug(log_message); ++ message = to_exception_message(this.get_type().name(), log_message); ++ } ++ ++ page.send_message_to_view.begin(message, null); ++ return true; ++ } ++ + } +diff --git a/ui/components-web-view.js b/ui/components-web-view.js +index 0f932a19..35e82dfc 100644 +--- a/ui/components-web-view.js ++++ b/ui/components-web-view.js +@@ -200,3 +200,12 @@ PageState.prototype = { + throw this.testResult; + } + }; ++ ++let MessageSender = function(name) { ++ return function() { ++ // Since typeof(arguments) == 'object', convert to an array so ++ // that Components.WebView.MessageCallback callbacks get ++ // arrays or tuples rather than dicts as arguments ++ _GearyWebExtension.send(name, Array.from(arguments)); ++ }; ++}; +-- +2.29.2 + diff --git a/mail-client/geary/files/0074-Util.Js-Improve-JSC-Value-to-GLib.Variant-conversion.patch b/mail-client/geary/files/0074-Util.Js-Improve-JSC-Value-to-GLib.Variant-conversion.patch new file mode 100644 index 0000000..0e634e0 --- /dev/null +++ b/mail-client/geary/files/0074-Util.Js-Improve-JSC-Value-to-GLib.Variant-conversion.patch @@ -0,0 +1,275 @@ +From 89453931bf6743049644274fc730a10e7bd2a53d Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 11:20:27 +1000 +Subject: [PATCH 074/124] Util.Js: Improve JSC Value to GLib.Variant conversion + +Stop needlessly wrapping object members and array elements in +variant variants. + +Don't wrap object values in variants since the code is already using +vardicts for these. Return a variant array if a JS array contains values +of all the same type and don't wrap these in variants, else return +a tuple, which don't need to be wrapped either. +--- + src/client/util/util-js.vala | 160 +++++++++++++++++++++-------- + test/client/util/util-js-test.vala | 28 ++++- + 2 files changed, 143 insertions(+), 45 deletions(-) + +diff --git a/src/client/util/util-js.vala b/src/client/util/util-js.vala +index d2ce9f2e..095f9da4 100644 +--- a/src/client/util/util-js.vala ++++ b/src/client/util/util-js.vala +@@ -1,5 +1,5 @@ + /* +- * Copyright 2017,2019 Michael James Gratton ++ * Copyright © 2017-2020 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. +@@ -25,6 +25,64 @@ namespace Util.JS { + TYPE + } + ++ /** Supported types of JSC values. */ ++ public enum JscType { ++ ++ /** Specifies an unsupported value type. */ ++ UNKNOWN, ++ ++ /** Specifies a JavaScript `undefined` value. */ ++ UNDEFINED, ++ ++ /** Specifies a JavaScript `null` value. */ ++ NULL, ++ FUNCTION, ++ STRING, ++ NUMBER, ++ BOOLEAN, ++ ARRAY, ++ CONSTRUCTOR, ++ OBJECT; ++ ++ /** ++ * Determines the type of a JSC value. ++ * ++ * Returns the type of the given value, or {@link UNKNOWN} if ++ * it could not be determined. ++ */ ++ public static JscType to_type(JSC.Value value) { ++ if (value.is_undefined()) { ++ return UNDEFINED; ++ } ++ if (value.is_null()) { ++ return NULL; ++ } ++ if (value.is_string()) { ++ return STRING; ++ } ++ if (value.is_number()) { ++ return NUMBER; ++ } ++ if (value.is_boolean()) { ++ return BOOLEAN; ++ } ++ if (value.is_array()) { ++ return ARRAY; ++ } ++ if (value.is_object()) { ++ return OBJECT; ++ } ++ if (value.is_function()) { ++ return FUNCTION; ++ } ++ if (value.is_constructor()) { ++ return CONSTRUCTOR; ++ } ++ return UNKNOWN; ++ } ++ ++ } ++ + /** + * Returns a JSC Value as a bool. + * +@@ -132,60 +190,80 @@ namespace Util.JS { + * + * Simple value objects (string, number, and Boolean values), + * arrays of these, and objects with these types as properties are +- * supported. Arrays are converted to arrays of variants, and +- * objects to dictionaries containing string keys and variant +- * values. Null or undefined values are returned as an empty maybe +- * variant type, since it is not possible to determine the actual +- * type. ++ * supported. Arrays containing objects of the same type are ++ * converted to arrays, otherwise they are converted to tuples, ++ * empty arrays are converted to the unit tuple, and objects are ++ * converted to vardict containing property names as keys and ++ * values. Null and undefined values are returned as an empty ++ * maybe variant type, since it is not possible to determine the ++ * actual type. + * + * Throws a type error if the given value's type is not supported. + */ + public inline GLib.Variant value_to_variant(JSC.Value value) + throws Error { +- if (value.is_null() || value.is_undefined()) { +- return new GLib.Variant.maybe(GLib.VariantType.VARIANT, null); +- } +- if (value.is_boolean()) { +- return new GLib.Variant.boolean(value.to_boolean()); +- } +- if (value.is_number()) { +- return new GLib.Variant.double(value.to_double()); +- } +- if (value.is_string()) { +- return new GLib.Variant.string(value.to_string()); +- } +- if (value.is_array()) { ++ GLib.Variant? variant = null; ++ switch (JscType.to_type(value)) { ++ case UNDEFINED: ++ case NULL: ++ variant = new GLib.Variant.maybe(GLib.VariantType.VARIANT, null); ++ break; ++ ++ case STRING: ++ variant = new GLib.Variant.string(value.to_string()); ++ break; ++ ++ case NUMBER: ++ variant = new GLib.Variant.double(value.to_double()); ++ break; ++ ++ case BOOLEAN: ++ variant = new GLib.Variant.boolean(value.to_boolean()); ++ break; ++ ++ case ARRAY: + int len = to_int32(value.object_get_property("length")); +- GLib.Variant[] values = new GLib.Variant[len]; +- for (int i = 0; i < len; i++) { +- values[i] = new GLib.Variant.variant( +- value_to_variant(value.object_get_property_at_index(i)) +- ); ++ if (len == 0) { ++ variant = new GLib.Variant.tuple({}); ++ } else { ++ JSC.Value element = value.object_get_property_at_index(0); ++ var first_type = JscType.to_type(element); ++ var all_same_type = true; ++ var values = new GLib.Variant[len]; ++ values[0] = value_to_variant(element); ++ for (int i = 1; i < len; i++) { ++ element = value.object_get_property_at_index(i); ++ values[i] = value_to_variant(element); ++ all_same_type &= (first_type == JscType.to_type(element)); ++ } ++ if (!all_same_type) { ++ variant = new GLib.Variant.tuple(values); ++ } else { ++ variant = new GLib.Variant.array( ++ values[0].get_type(), values ++ ); ++ } + } +- return new GLib.Variant.array(GLib.VariantType.VARIANT, values); +- } +- if (value.is_object()) { ++ break; ++ ++ case OBJECT: + GLib.VariantDict dict = new GLib.VariantDict(); + string[] names = value.object_enumerate_properties(); + if (names != null) { + foreach (var name in names) { +- try { +- dict.insert_value( +- name, +- new GLib.Variant.variant( +- value_to_variant( +- value.object_get_property(name) +- ) +- ) +- ); +- } catch (Error.TYPE err) { +- // ignored +- } ++ dict.insert_value( ++ name, ++ value_to_variant(value.object_get_property(name)) ++ ); + } + } +- return dict.end(); ++ variant = dict.end(); ++ break; ++ ++ default: ++ throw new Error.TYPE("Unsupported JS type: %s", value.to_string()); + } +- throw new Error.TYPE("Unsupported JS type: %s", value.to_string()); ++ return variant; + } + + /** +diff --git a/test/client/util/util-js-test.vala b/test/client/util/util-js-test.vala +index 16a01d83..f1da043d 100644 +--- a/test/client/util/util-js-test.vala ++++ b/test/client/util/util-js-test.vala +@@ -1,5 +1,5 @@ + /* +- * Copyright 2017 Michael Gratton ++ * Copyright © 2017-2020 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. +@@ -61,15 +61,35 @@ public class Util.JS.Test : TestCase { + var value = new JSC.Value.array_from_garray(this.context, null); + assert_equal( + value_to_variant(value).print(true), +- "@av []" ++ "()" + ); ++ + var array = new GLib.GenericArray(); + array.add(new JSC.Value.string(this.context, "test")); + value = new JSC.Value.array_from_garray(this.context, array); + assert_equal( + value_to_variant(value).print(true), +- "[<'test'>]" ++ "['test']" + ); ++ ++ array = new GLib.GenericArray(); ++ array.add(new JSC.Value.string(this.context, "test1")); ++ array.add(new JSC.Value.string(this.context, "test2")); ++ value = new JSC.Value.array_from_garray(this.context, array); ++ assert_equal( ++ value_to_variant(value).print(true), ++ "['test1', 'test2']" ++ ); ++ ++ array = new GLib.GenericArray(); ++ array.add(new JSC.Value.string(this.context, "test")); ++ array.add(new JSC.Value.boolean(this.context, true)); ++ value = new JSC.Value.array_from_garray(this.context, array); ++ assert_equal( ++ value_to_variant(value).print(true), ++ "('test', true)" ++ ); ++ + value = new JSC.Value.object(this.context, null, null); + assert_equal( + value_to_variant(value).print(true), +@@ -80,7 +100,7 @@ public class Util.JS.Test : TestCase { + ); + assert_equal( + value_to_variant(value).print(true), +- "{'test': <>}" ++ "{'test': }" + ); + } + +-- +2.29.2 + diff --git a/mail-client/geary/files/0075-Components.WebView-Convert-to-using-messages-for-JS-.patch b/mail-client/geary/files/0075-Components.WebView-Convert-to-using-messages-for-JS-.patch new file mode 100644 index 0000000..632fe5b --- /dev/null +++ b/mail-client/geary/files/0075-Components.WebView-Convert-to-using-messages-for-JS-.patch @@ -0,0 +1,234 @@ +From fb96676fbd4ab7f413071f18cbf444cd7a953b77 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 11:25:28 +1000 +Subject: [PATCH 075/124] =?UTF-8?q?Components.WebView:=20Convert=20to=20us?= + =?UTF-8?q?ing=20messages=20for=20JS=20=E2=86=92=20client=20comms?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + .../components/components-web-view.vala | 79 +++++++++---------- + ui/components-web-view.js | 25 +++--- + 2 files changed, 53 insertions(+), 51 deletions(-) + +diff --git a/src/client/components/components-web-view.vala b/src/client/components/components-web-view.vala +index c746c441..a5cdfe33 100644 +--- a/src/client/components/components-web-view.vala ++++ b/src/client/components/components-web-view.vala +@@ -1,6 +1,6 @@ + /* +- * Copyright 2016 Software Freedom Conservancy Inc. +- * Copyright 2016-2019 Michael Gratton ++ * Copyright © 2016 Software Freedom Conservancy Inc. ++ * Copyright © 2016-2020 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. +@@ -31,12 +31,12 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + private const string MESSAGE_EXCEPTION_NAME = "__exception__"; + + // WebKit message handler names +- private const string COMMAND_STACK_CHANGED = "commandStackChanged"; +- private const string CONTENT_LOADED = "contentLoaded"; +- private const string DOCUMENT_MODIFIED = "documentModified"; +- private const string PREFERRED_HEIGHT_CHANGED = "preferredHeightChanged"; +- private const string REMOTE_IMAGE_LOAD_BLOCKED = "remoteImageLoadBlocked"; +- private const string SELECTION_CHANGED = "selectionChanged"; ++ private const string COMMAND_STACK_CHANGED = "command_stack_changed"; ++ private const string CONTENT_LOADED = "content_loaded"; ++ private const string DOCUMENT_MODIFIED = "document_modified"; ++ private const string PREFERRED_HEIGHT_CHANGED = "preferred_height_changed"; ++ private const string REMOTE_IMAGE_LOAD_BLOCKED = "remote_image_load_blocked"; ++ private const string SELECTION_CHANGED = "selection_changed"; + + private const double ZOOM_DEFAULT = 1.0; + private const double ZOOM_FACTOR = 0.1; +@@ -605,22 +605,22 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + warning("Web process crashed: %s", reason.to_string()); + }); + +- register_message_handler( ++ register_message_callback( + COMMAND_STACK_CHANGED, on_command_stack_changed + ); +- register_message_handler( ++ register_message_callback( + CONTENT_LOADED, on_content_loaded + ); +- register_message_handler( ++ register_message_callback( + DOCUMENT_MODIFIED, on_document_modified + ); +- register_message_handler( ++ register_message_callback( + PREFERRED_HEIGHT_CHANGED, on_preferred_height_changed + ); +- register_message_handler( ++ register_message_callback( + REMOTE_IMAGE_LOAD_BLOCKED, on_remote_image_load_blocked + ); +- register_message_handler( ++ register_message_callback( + SELECTION_CHANGED, on_selection_changed + ); + +@@ -783,12 +783,12 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + return false; + } + +- private void on_preferred_height_changed(WebKit.JavascriptResult result) { ++ private void on_preferred_height_changed(GLib.Variant? parameters) { + double height = this.webkit_reported_height; +- try { +- height = Util.JS.to_double(result.get_js_value()); +- } catch (Util.JS.Error err) { +- debug("Could not get preferred height: %s", err.message); ++ if (parameters != null && parameters.classify() == DOUBLE) { ++ height = parameters.get_double(); ++ } else { ++ warning("Could not get JS preferred height"); + } + + if (this.webkit_reported_height != height) { +@@ -797,40 +797,39 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + } + } + +- private void on_command_stack_changed(WebKit.JavascriptResult result) { +- try { +- string[] values = +- Util.JS.to_string(result.get_js_value()).split(","); +- command_stack_changed(values[0] == "true", values[1] == "true"); +- } catch (Util.JS.Error err) { +- debug("Could not get command stack state: %s", err.message); ++ private void on_command_stack_changed(GLib.Variant? parameters) { ++ if (parameters != null && ++ parameters.is_container() && ++ parameters.n_children() == 2) { ++ GLib.Variant can_undo = parameters.get_child_value(0); ++ GLib.Variant can_redo = parameters.get_child_value(1); ++ command_stack_changed( ++ can_undo.classify() == BOOLEAN && can_undo.get_boolean(), ++ can_redo.classify() == BOOLEAN && can_redo.get_boolean() ++ ); ++ } else { ++ warning("Could not get JS command stack state"); + } + } + +- private void on_document_modified(WebKit.JavascriptResult result) { ++ private void on_document_modified(GLib.Variant? parameters) { + document_modified(); + } + +- private void on_remote_image_load_blocked(WebKit.JavascriptResult result) { ++ private void on_remote_image_load_blocked(GLib.Variant? parameters) { + remote_image_load_blocked(); + } + +- private void on_content_loaded(WebKit.JavascriptResult result) { ++ private void on_content_loaded(GLib.Variant? parameters) { + this.is_content_loaded = true; + content_loaded(); + } + +- private void on_selection_changed(WebKit.JavascriptResult result) { +- try { +- bool has_selection = Util.JS.to_bool(result.get_js_value()); +- // Avoid firing multiple notifies if the value hasn't +- // changed +- if (this.has_selection != has_selection) { +- this.has_selection = has_selection; +- } +- selection_changed(has_selection); +- } catch (Util.JS.Error err) { +- debug("Could not get selection content: %s", err.message); ++ private void on_selection_changed(GLib.Variant? parameters) { ++ if (parameters != null && parameters.classify() == BOOLEAN) { ++ selection_changed(parameters.get_boolean()); ++ } else { ++ warning("Could not get JS selection value"); + } + } + +diff --git a/ui/components-web-view.js b/ui/components-web-view.js +index 35e82dfc..29b6acd5 100644 +--- a/ui/components-web-view.js ++++ b/ui/components-web-view.js +@@ -1,5 +1,5 @@ + /* +- * Copyright 2016 Michael Gratton ++ * Copyright © 2016-2020 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. +@@ -20,6 +20,13 @@ PageState.prototype = { + this.hasSelection = false; + this.lastPreferredHeight = 0; + ++ this._selectionChanged = MessageSender("selection_changed"); ++ this._contentLoaded = MessageSender("content_loaded"); ++ this._remoteImageLoadBlocked = MessageSender("remote_image_load_blocked"); ++ this._preferredHeightChanged = MessageSender("preferred_height_changed"); ++ this._commandStackChanged = MessageSender("command_stack_changed"); ++ this._documentModified = MessageSender("document_modified"); ++ + let state = this; + + // Set up an observer to keep track of modifications made to +@@ -106,7 +113,7 @@ PageState.prototype = { + // be vaguegly correct when notifying of the HTML load + // completing. + this.updatePreferredHeight(); +- window.webkit.messageHandlers.contentLoaded.postMessage(null); ++ this._contentLoaded(); + }, + loadRemoteImages: function() { + window._gearyAllowRemoteResourceLoads = true; +@@ -142,7 +149,7 @@ PageState.prototype = { + this.bodyObserver.disconnect(); + }, + remoteImageLoadBlocked: function() { +- window.webkit.messageHandlers.remoteImageLoadBlocked.postMessage(null); ++ this._remoteImageLoadBlocked(); + }, + /** + * Sends "preferredHeightChanged" message if it has changed. +@@ -160,9 +167,7 @@ PageState.prototype = { + // shrink again, leading to visual flicker. + if (this.isLoaded && height > 0 && height != this.lastPreferredHeight) { + this.lastPreferredHeight = height; +- window.webkit.messageHandlers.preferredHeightChanged.postMessage( +- height +- ); ++ this._preferredHeightChanged(height); + } + }, + checkCommandStack: function() { +@@ -172,19 +177,17 @@ PageState.prototype = { + if (canUndo != this.undoEnabled || canRedo != this.redoEnabled) { + this.undoEnabled = canUndo; + this.redoEnabled = canRedo; +- window.webkit.messageHandlers.commandStackChanged.postMessage( +- this.undoEnabled + "," + this.redoEnabled +- ); ++ this._commandStackChanged(this.undoEnabled, this.redoEnabled); + } + }, + documentModified: function(element) { +- window.webkit.messageHandlers.documentModified.postMessage(null); ++ this._documentModified(); + }, + selectionChanged: function() { + let hasSelection = !window.getSelection().isCollapsed; + if (this.hasSelection != hasSelection) { + this.hasSelection = hasSelection; +- window.webkit.messageHandlers.selectionChanged.postMessage(hasSelection); ++ this._selectionChanged(hasSelection); + } + }, + // Methods below are for unit tests. +-- +2.29.2 + diff --git a/mail-client/geary/files/0076-Composer.WebView-Convert-to-using-messages-for-JS-cl.patch b/mail-client/geary/files/0076-Composer.WebView-Convert-to-using-messages-for-JS-cl.patch new file mode 100644 index 0000000..c465cf5 --- /dev/null +++ b/mail-client/geary/files/0076-Composer.WebView-Convert-to-using-messages-for-JS-cl.patch @@ -0,0 +1,185 @@ +From 3655f4896f2b33f47a94c8e7dc4f9623ba42fc2e Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 11:38:06 +1000 +Subject: [PATCH 076/124] =?UTF-8?q?Composer.WebView:=20Convert=20to=20usin?= + =?UTF-8?q?g=20messages=20for=20JS=20=E2=86=92=20client=20comms?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + src/client/composer/composer-web-view.vala | 75 ++++++++++------------ + ui/composer-web-view.js | 18 ++++-- + 2 files changed, 45 insertions(+), 48 deletions(-) + +diff --git a/src/client/composer/composer-web-view.vala b/src/client/composer/composer-web-view.vala +index 24a2740c..57b7e1e4 100644 +--- a/src/client/composer/composer-web-view.vala ++++ b/src/client/composer/composer-web-view.vala +@@ -33,8 +33,8 @@ public class Composer.WebView : Components.WebView { + private const string SPACER = "

"; + + // WebKit message handler names +- private const string CURSOR_CONTEXT_CHANGED = "cursorContextChanged"; +- private const string DRAG_DROP_RECEIVED = "dragDropReceived"; ++ private const string CURSOR_CONTEXT_CHANGED = "cursor_context_changed"; ++ private const string DRAG_DROP_RECEIVED = "drag_drop_received"; + + /** + * Encapsulates editing-related state for a specific DOM node. +@@ -152,8 +152,8 @@ public class Composer.WebView : Components.WebView { + this.user_content_manager.add_style_sheet(WebView.app_style); + this.user_content_manager.add_script(WebView.app_script); + +- register_message_handler(CURSOR_CONTEXT_CHANGED, on_cursor_context_changed); +- register_message_handler(DRAG_DROP_RECEIVED, on_drag_drop_received); ++ register_message_callback(CURSOR_CONTEXT_CHANGED, on_cursor_context_changed); ++ register_message_callback(DRAG_DROP_RECEIVED, on_drag_drop_received); + + // XXX this is a bit of a hack given the docs for is_empty, + // above +@@ -530,50 +530,43 @@ public class Composer.WebView : Components.WebView { + return ret; + } + +- private void on_cursor_context_changed(WebKit.JavascriptResult result) { +- try { +- cursor_context_changed( +- new EditContext(Util.JS.to_string(result.get_js_value())) +- ); +- } catch (Util.JS.Error err) { +- debug("Could not get text cursor style: %s", err.message); ++ private void on_cursor_context_changed(GLib.Variant? parameters) { ++ if (parameters != null && parameters.classify() == STRING) { ++ cursor_context_changed(new EditContext(parameters as string)); ++ } else { ++ warning("Could not get text cursor style"); + } + } + + /** + * Handle a dropped image + */ +- private void on_drag_drop_received(WebKit.JavascriptResult result) { +- +- try { +- JSC.Value object = result.get_js_value(); +- string filename = Util.JS.to_string( +- Util.JS.get_property(object, "fileName") +- ); +- string filename_unescaped = GLib.Uri.unescape_string(filename); +- +- string file_type = Util.JS.to_string( +- Util.JS.get_property(object, "fileType") +- ); +- +- string content_base64 = Util.JS.to_string( +- Util.JS.get_property(object, "content") +- ); +- uint8[] image = GLib.Base64.decode(content_base64); +- +- if (image.length == 0) { +- warning("%s is empty", filename); +- return; +- } ++ private void on_drag_drop_received(GLib.Variant? parameters) { ++ var dict = new GLib.VariantDict(parameters); ++ string file_name = dict.lookup_value( ++ "fileName", GLib.VariantType.STRING ++ ).get_string(); ++ string file_name_unescaped = GLib.Uri.unescape_string(file_name); ++ ++ string file_type = dict.lookup_value( ++ "fileType", GLib.VariantType.STRING ++ ).get_string(); ++ ++ string content_base64 = dict.lookup_value( ++ "content", GLib.VariantType.STRING ++ ).get_string(); ++ uint8[] image = GLib.Base64.decode(content_base64); ++ ++ if (image.length == 0) { ++ warning("%s is empty", file_name); ++ return; ++ } + +- // A simple check to see if the file looks like an image. A problem here +- // will be this accepting types which won't be supported by WebKit +- // or recipients. +- if (file_type.index_of("image/") == 0) { +- image_file_dropped(filename_unescaped, file_type, image); +- } +- } catch (Util.JS.Error err) { +- debug("Could not get deceptive link param: %s", err.message); ++ // A simple check to see if the file looks like an image. A problem here ++ // will be this accepting types which won't be supported by WebKit ++ // or recipients. ++ if (file_type.index_of("image/") == 0) { ++ image_file_dropped(file_name_unescaped, file_type, image); + } + } + } +diff --git a/ui/composer-web-view.js b/ui/composer-web-view.js +index ca918990..4fe34ad0 100644 +--- a/ui/composer-web-view.js ++++ b/ui/composer-web-view.js +@@ -1,6 +1,6 @@ + /* +- * Copyright 2016 Software Freedom Conservancy Inc. +- * Copyright 2016 Michael Gratton ++ * Copyright © 2016 Software Freedom Conservancy Inc. ++ * Copyright © 2016-2020 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. +@@ -35,6 +35,9 @@ ComposerPageState.prototype = { + this.nextSelectionId = 0; + this.cursorContext = null; + ++ this._cursorContextChanged = MessageSender("cursor_context_changed"); ++ this._dragDropReceived = MessageSender("drag_drop_received"); ++ + document.addEventListener("click", function(e) { + if (e.target.tagName == "A") { + e.preventDefault(); +@@ -99,7 +102,9 @@ ComposerPageState.prototype = { + }, true); + + // Handle file drag & drop +- document.body.addEventListener("drop", state.handleFileDrop, true); ++ document.body.addEventListener("drop", function(e) { ++ state.handleFileDrop(e); ++ }, true); + document.body.addEventListener("allowDrop", function(e) { + ev.preventDefault(); + }, true); +@@ -346,9 +351,7 @@ ComposerPageState.prototype = { + let newContext = new EditContext(cursor); + if (!newContext.equals(this.cursorContext)) { + this.cursorContext = newContext; +- window.webkit.messageHandlers.cursorContextChanged.postMessage( +- newContext.encode() +- ); ++ this._cursorContextChanged(newContext.encode()); + } + } + +@@ -396,13 +399,14 @@ ComposerPageState.prototype = { + continue; + + const reader = new FileReader(); ++ const state = this; + reader.onload = (function(filename, imageType) { return function(loadEvent) { + // Remove prefixed file type and encoding type + var parts = loadEvent.target.result.split(","); + if (parts.length < 2) + return; + +- window.webkit.messageHandlers.dragDropReceived.postMessage({ ++ state._dragDropReceived({ + fileName: encodeURIComponent(filename), + fileType: imageType, + content: parts[1] +-- +2.29.2 + diff --git a/mail-client/geary/files/0077-Conversation.WebView-Convert-to-using-messages-for-J.patch b/mail-client/geary/files/0077-Conversation.WebView-Convert-to-using-messages-for-J.patch new file mode 100644 index 0000000..0bac6fc --- /dev/null +++ b/mail-client/geary/files/0077-Conversation.WebView-Convert-to-using-messages-for-J.patch @@ -0,0 +1,142 @@ +From 7b0146274ccaad18115a66ded6753cb68bd22357 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 11:45:35 +1000 +Subject: [PATCH 077/124] =?UTF-8?q?Conversation.WebView:=20Convert=20to=20?= + =?UTF-8?q?using=20messages=20for=20JS=20=E2=86=92=20client=20comms?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + .../conversation-web-view.vala | 71 +++++++++---------- + ui/conversation-web-view.js | 4 +- + 2 files changed, 38 insertions(+), 37 deletions(-) + +diff --git a/src/client/conversation-viewer/conversation-web-view.vala b/src/client/conversation-viewer/conversation-web-view.vala +index d77af642..a1ba21a6 100644 +--- a/src/client/conversation-viewer/conversation-web-view.vala ++++ b/src/client/conversation-viewer/conversation-web-view.vala +@@ -1,6 +1,6 @@ + /* +- * Copyright 2016 Software Freedom Conservancy Inc. +- * Copyright 2017 Michael Gratton ++ * Copyright © 2016 Software Freedom Conservancy Inc. ++ * Copyright © 2017-2020 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. +@@ -9,7 +9,7 @@ + public class ConversationWebView : Components.WebView { + + +- private const string DECEPTIVE_LINK_CLICKED = "deceptiveLinkClicked"; ++ private const string DECEPTIVE_LINK_CLICKED = "deceptive_link_clicked"; + + // Key codes we don't forward on to the super class on key press + // since we want to override them elsewhere, especially +@@ -221,48 +221,47 @@ public class ConversationWebView : Components.WebView { + } + + private void init() { +- register_message_handler( ++ register_message_callback( + DECEPTIVE_LINK_CLICKED, on_deceptive_link_clicked + ); + + this.notify["preferred-height"].connect(() => queue_resize()); + } + +- private void on_deceptive_link_clicked(WebKit.JavascriptResult result) { +- try { +- JSC.Value object = result.get_js_value(); +- uint reason = (uint) Util.JS.to_int32( +- Util.JS.get_property(object, "reason") +- ); +- +- string href = Util.JS.to_string( +- Util.JS.get_property(object, "href") +- ); ++ private void on_deceptive_link_clicked(GLib.Variant? parameters) { ++ var dict = new GLib.VariantDict(parameters); ++ uint reason = (uint) dict.lookup_value( ++ "reason", GLib.VariantType.DOUBLE ++ ).get_double(); + +- string text = Util.JS.to_string( +- Util.JS.get_property(object, "text") +- ); +- +- JSC.Value js_location = Util.JS.get_property(object, "location"); ++ string href = dict.lookup_value( ++ "href", GLib.VariantType.STRING ++ ).get_string(); + +- Gdk.Rectangle location = Gdk.Rectangle(); +- location.x = Util.JS.to_int32( +- Util.JS.get_property(js_location, "x") +- ); +- location.y = Util.JS.to_int32( +- Util.JS.get_property(js_location, "y") +- ); +- location.width = Util.JS.to_int32( +- Util.JS.get_property(js_location, "width") +- ); +- location.height = Util.JS.to_int32( +- Util.JS.get_property(js_location, "height") +- ); ++ string text = dict.lookup_value( ++ "text", GLib.VariantType.STRING ++ ).get_string(); + +- deceptive_link_clicked((DeceptiveText) reason, text, href, location); +- } catch (Util.JS.Error err) { +- debug("Could not get deceptive link param: %s", err.message); +- } ++ Gdk.Rectangle location = Gdk.Rectangle(); ++ var location_dict = new GLib.VariantDict( ++ dict.lookup_value("location", GLib.VariantType.VARDICT) ++ ); ++ location.x = (int) location_dict.lookup_value( ++ "x", GLib.VariantType.DOUBLE ++ ).get_double(); ++ location.y = (int) location_dict.lookup_value( ++ "y", GLib.VariantType.DOUBLE ++ ).get_double(); ++ location.width = (int) location_dict.lookup_value( ++ "width", GLib.VariantType.DOUBLE ++ ).get_double(); ++ location.height = (int) location_dict.lookup_value( ++ "height", GLib.VariantType.DOUBLE ++ ).get_double(); ++ ++ deceptive_link_clicked( ++ (DeceptiveText) reason, text, href, location ++ ); + } + + } +diff --git a/ui/conversation-web-view.js b/ui/conversation-web-view.js +index 451db288..1d730d47 100644 +--- a/ui/conversation-web-view.js ++++ b/ui/conversation-web-view.js +@@ -26,6 +26,8 @@ ConversationPageState.prototype = { + init: function() { + PageState.prototype.init.apply(this, []); + ++ this._deceptiveLinkClicked = MessageSender("deceptive_link_clicked"); ++ + let state = this; + document.addEventListener("click", function(e) { + if (e.target.tagName == "A" && +@@ -267,7 +269,7 @@ ConversationPageState.prototype = { + let reason = ConversationPageState.isDeceptiveText(text, href); + if (reason != ConversationPageState.NOT_DECEPTIVE) { + cancelClick = true; +- window.webkit.messageHandlers.deceptiveLinkClicked.postMessage({ ++ this._deceptiveLinkClicked({ + reason: reason, + text: text, + href: href, +-- +2.29.2 + diff --git a/mail-client/geary/files/0078-GearyWebExtension-Untangle-extension-and-JS-interact.patch b/mail-client/geary/files/0078-GearyWebExtension-Untangle-extension-and-JS-interact.patch new file mode 100644 index 0000000..eabb268 --- /dev/null +++ b/mail-client/geary/files/0078-GearyWebExtension-Untangle-extension-and-JS-interact.patch @@ -0,0 +1,138 @@ +From 7950ce50c6bdb6ca77561a00d1afb9bc689278cf Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 11:59:11 +1000 +Subject: [PATCH 078/124] GearyWebExtension: Untangle extension and JS + interaction a bit + +Move selection changed event listener into JS so it doesn't have to +cross the JS/native boundary twice. + +Move sending remote load blocked from JS to the extension since we can +do that directly now and again so the JS/native boundary doesn't need +to be double-crossed again. +--- + .../web-process/web-process-extension.vala | 60 ++----------------- + ui/components-web-view.js | 8 +-- + 2 files changed, 8 insertions(+), 60 deletions(-) + +diff --git a/src/client/web-process/web-process-extension.vala b/src/client/web-process/web-process-extension.vala +index 31f2b0f0..6eed7746 100644 +--- a/src/client/web-process/web-process-extension.vala ++++ b/src/client/web-process/web-process-extension.vala +@@ -77,7 +77,10 @@ public class GearyWebExtension : Object { + if (should_load_remote_images(page)) { + should_load = true; + } else { +- remote_image_load_blocked(page); ++ page.send_message_to_view.begin( ++ new WebKit.UserMessage("remote_image_load_blocked", null), ++ null ++ ); + } + } + +@@ -99,54 +102,6 @@ public class GearyWebExtension : Object { + return should_load; + } + +- private void remote_image_load_blocked(WebKit.WebPage page) { +- WebKit.Frame frame = page.get_main_frame(); +- JSC.Context context = frame.get_js_context(); +- try { +- execute_script( +- context, +- "geary.remoteImageLoadBlocked();", +- GLib.Log.FILE, +- GLib.Log.METHOD, +- GLib.Log.LINE +- ); +- } catch (Error err) { +- debug( +- "Error calling PageState::remoteImageLoadBlocked: %s", +- err.message +- ); +- } +- } +- +- private void selection_changed(WebKit.WebPage page) { +- WebKit.Frame frame = page.get_main_frame(); +- JSC.Context context = frame.get_js_context(); +- try { +- execute_script( +- context, +- "geary.selectionChanged();", +- GLib.Log.FILE, +- GLib.Log.METHOD, +- GLib.Log.LINE +- ); +- } catch (Error err) { +- debug("Error calling PageStates::selectionChanged: %s", err.message); +- } +- } +- +- private JSC.Value execute_script(JSC.Context context, +- string script, +- string file_name, +- string method_name, +- int line_number) +- throws Util.JS.Error { +- JSC.Value ret = context.evaluate_with_source_uri( +- script, -1, "geary:%s/%s".printf(file_name, method_name), line_number +- ); +- Util.JS.check_exception(context); +- return ret; +- } +- + private WebKit.UserMessage to_exception_message(string? name, + string? message, + string? backtrace = null, +@@ -208,13 +163,6 @@ public class GearyWebExtension : Object { + + page.console_message_sent.connect(on_console_message); + page.send_request.connect(on_send_request); +- // XXX investigate whether the earliest supported +- // version of WK supports the DOM "selectionchanged" +- // event, and if so use that rather that doing it in +- // here in the extension +- page.get_editor().selection_changed.connect(() => { +- selection_changed(page); +- }); + page.user_message_received.connect(on_page_message_received); + } + +diff --git a/ui/components-web-view.js b/ui/components-web-view.js +index 29b6acd5..d0998a67 100644 +--- a/ui/components-web-view.js ++++ b/ui/components-web-view.js +@@ -22,7 +22,6 @@ PageState.prototype = { + + this._selectionChanged = MessageSender("selection_changed"); + this._contentLoaded = MessageSender("content_loaded"); +- this._remoteImageLoadBlocked = MessageSender("remote_image_load_blocked"); + this._preferredHeightChanged = MessageSender("preferred_height_changed"); + this._commandStackChanged = MessageSender("command_stack_changed"); + this._documentModified = MessageSender("document_modified"); +@@ -46,6 +45,10 @@ PageState.prototype = { + state.loaded(); + }); + ++ document.addEventListener("selectionchange", function(e) { ++ state.selectionChanged(); ++ }); ++ + // Coalesce multiple calls to updatePreferredHeight using a + // timeout to avoid the overhead of multiple JS messages sent + // to the app and hence view multiple resizes being queued. +@@ -148,9 +151,6 @@ PageState.prototype = { + stopBodyObserver: function() { + this.bodyObserver.disconnect(); + }, +- remoteImageLoadBlocked: function() { +- this._remoteImageLoadBlocked(); +- }, + /** + * Sends "preferredHeightChanged" message if it has changed. + */ +-- +2.29.2 + diff --git a/mail-client/geary/files/0079-GearyWebExtension-Trivial-code-clean-up.patch b/mail-client/geary/files/0079-GearyWebExtension-Trivial-code-clean-up.patch new file mode 100644 index 0000000..22774c6 --- /dev/null +++ b/mail-client/geary/files/0079-GearyWebExtension-Trivial-code-clean-up.patch @@ -0,0 +1,43 @@ +From eba82a1fbda18c2e567bd143862e7d687982b973 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 12:01:22 +1000 +Subject: [PATCH 079/124] GearyWebExtension: Trivial code clean up + +--- + src/client/web-process/web-process-extension.vala | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/src/client/web-process/web-process-extension.vala b/src/client/web-process/web-process-extension.vala +index 6eed7746..6785903e 100644 +--- a/src/client/web-process/web-process-extension.vala ++++ b/src/client/web-process/web-process-extension.vala +@@ -1,5 +1,5 @@ + /* +- * Copyright 2016 Michael Gratton ++ * Copyright © 2016-2020 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. +@@ -13,9 +13,9 @@ public void webkit_web_extension_initialize_with_user_data(WebKit.WebExtension e + bool logging_enabled = data.get_boolean(); + + Geary.Logging.init(); +- GLib.Log.set_writer_func(Geary.Logging.default_log_writer); + if (logging_enabled) { +- Geary.Logging.log_to(stdout); ++ GLib.Log.set_writer_func(Geary.Logging.default_log_writer); ++ Geary.Logging.log_to(GLib.stdout); + } + + debug("Initialising..."); +@@ -50,7 +50,6 @@ public class GearyWebExtension : Object { + extension.page_created.connect(on_page_created); + } + +- // XXX Conditionally enable while we still depend on WK2 <2.12 + private void on_console_message(WebKit.WebPage page, + WebKit.ConsoleMessage message) { + string source = message.get_source_id(); +-- +2.29.2 + diff --git a/mail-client/geary/files/0080-Components.WebView-Remove-now-unused-message-handler.patch b/mail-client/geary/files/0080-Components.WebView-Remove-now-unused-message-handler.patch new file mode 100644 index 0000000..c31b00b --- /dev/null +++ b/mail-client/geary/files/0080-Components.WebView-Remove-now-unused-message-handler.patch @@ -0,0 +1,82 @@ +From 47b134a04eeb502fadb80e6ae2340178645396bd Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 12:05:23 +1000 +Subject: [PATCH 080/124] Components.WebView: Remove now-unused message handler + infrastructure + +--- + .../components/components-web-view.vala | 30 +------------------ + 1 file changed, 1 insertion(+), 29 deletions(-) + +diff --git a/src/client/components/components-web-view.vala b/src/client/components/components-web-view.vala +index a5cdfe33..904c5358 100644 +--- a/src/client/components/components-web-view.vala ++++ b/src/client/components/components-web-view.vala +@@ -195,9 +195,6 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + } + + +- /** Delegate for UserContentManager message callbacks. */ +- public delegate void JavaScriptMessageHandler(WebKit.JavascriptResult js_result); +- + /** + * Delegate for message handler callbacks. + * +@@ -279,8 +276,6 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + private Gee.Map internal_resources = + new Gee.HashMap(); + +- private Gee.List registered_message_handlers = +- new Gee.LinkedList(); + private Gee.Map message_handlers = + new Gee.HashMap(); + +@@ -357,7 +352,7 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + * The new view will use the same WebProcess, settings and content + * manager as the given related view's. + * +- * @see WebKit.WebView.with_related_view ++ * @see WebKit.WebView.WebView.with_related_view + */ + protected WebView.with_related_view(Application.Configuration config, + WebView related) { +@@ -375,10 +370,6 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + } + + public override void destroy() { +- foreach (ulong id in this.registered_message_handlers) { +- this.user_content_manager.disconnect(id); +- } +- this.registered_message_handlers.clear(); + this.message_handlers.clear(); + base.destroy(); + } +@@ -570,25 +561,6 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { + return ret_value; + } + +- /** +- * Convenience function for registering and connecting JS messages. +- */ +- protected inline void register_message_handler(string name, +- JavaScriptMessageHandler handler) { +- // XXX can't use the delegate directly, see b.g.o Bug +- // 604781. However the workaround below creates a circular +- // reference, causing WebView instances to leak. So to +- // work around that we need to record handler ids and +- // disconnect them when being destroyed. +- ulong id = this.user_content_manager.script_message_received[name].connect( +- (result) => { handler(result); } +- ); +- this.registered_message_handlers.add(id); +- if (!this.user_content_manager.register_script_message_handler(name)) { +- debug("Failed to register script message handler: %s", name); +- } +- } +- + /** + * Registers a callback for a specific WebKit user message. + */ +-- +2.29.2 + diff --git a/mail-client/geary/files/0081-ConversationViewer.ConversationMessage-Fix-valadoc-w.patch b/mail-client/geary/files/0081-ConversationViewer.ConversationMessage-Fix-valadoc-w.patch new file mode 100644 index 0000000..6565345 --- /dev/null +++ b/mail-client/geary/files/0081-ConversationViewer.ConversationMessage-Fix-valadoc-w.patch @@ -0,0 +1,26 @@ +From 92e842bf083d3185e6ee94b09eab710fb2374fac Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 12:06:07 +1000 +Subject: [PATCH 081/124] ConversationViewer.ConversationMessage: Fix valadoc + warning + +--- + src/client/conversation-viewer/conversation-message.vala | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/client/conversation-viewer/conversation-message.vala b/src/client/conversation-viewer/conversation-message.vala +index a11ece01..109c4a1c 100644 +--- a/src/client/conversation-viewer/conversation-message.vala ++++ b/src/client/conversation-viewer/conversation-message.vala +@@ -666,7 +666,7 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface { + /** + * Adds a set of internal resources to web_view. + * +- * @see add_internal_resource ++ * @see Components.WebView.add_internal_resources + */ + public void add_internal_resources(Gee.Map res) { + if (this.web_view == null) +-- +2.29.2 + diff --git a/mail-client/geary/files/0082-Util.JS-Remove-now-unused-code.patch b/mail-client/geary/files/0082-Util.JS-Remove-now-unused-code.patch new file mode 100644 index 0000000..fe724c1 --- /dev/null +++ b/mail-client/geary/files/0082-Util.JS-Remove-now-unused-code.patch @@ -0,0 +1,103 @@ +From 0609fbc3d7cec05a4e5fbf4c5ca9377ea802344b Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 12:06:36 +1000 +Subject: [PATCH 082/124] Util.JS: Remove now-unused code + +--- + src/client/util/util-js.vala | 50 ------------------------------ + test/client/util/util-js-test.vala | 11 ------- + 2 files changed, 61 deletions(-) + +diff --git a/src/client/util/util-js.vala b/src/client/util/util-js.vala +index 095f9da4..193b3c7a 100644 +--- a/src/client/util/util-js.vala ++++ b/src/client/util/util-js.vala +@@ -364,56 +364,6 @@ namespace Util.JS { + return value; + } + +- /** +- * Escapes a string so as to be safe to use as a JS string literal. +- * +- * This does not append opening or closing quotes. +- */ +- public string escape_string(string value) { +- StringBuilder builder = new StringBuilder.sized(value.length); +- for (int i = 0; i < value.length; i++) { +- if (value.valid_char(i)) { +- unichar c = value.get_char(i); +- switch (c) { +- case '\x00': +- builder.append("\x00"); +- break; +- case '\'': +- builder.append("\\\'"); +- break; +- case '"': +- builder.append("\\\""); +- break; +- case '\\': +- builder.append("\\\\"); +- break; +- case '\n': +- builder.append("\\n"); +- break; +- case '\r': +- builder.append("\\r"); +- break; +- case '\x0b': +- builder.append("\x0b"); +- break; +- case '\t': +- builder.append("\\t"); +- break; +- case '\b': +- builder.append("\\b"); +- break; +- case '\f': +- builder.append("\\f"); +- break; +- default: +- builder.append_unichar(c); +- break; +- } +- } +- } +- return (string) builder.data; +- } +- + /** + * Convenience method for returning a new Callable instance. + */ +diff --git a/test/client/util/util-js-test.vala b/test/client/util/util-js-test.vala +index f1da043d..9fea3cd7 100644 +--- a/test/client/util/util-js-test.vala ++++ b/test/client/util/util-js-test.vala +@@ -13,7 +13,6 @@ public class Util.JS.Test : TestCase { + + public Test() { + base("Util.JS.Test"); +- add_test("escape_string", escape_string); + add_test("to_variant", to_variant); + add_test("to_value", to_value); + } +@@ -26,16 +25,6 @@ public class Util.JS.Test : TestCase { + this.context = null; + } + +- public void escape_string() throws GLib.Error { +- assert(Util.JS.escape_string("\n") == """\n"""); +- assert(Util.JS.escape_string("\r") == """\r"""); +- assert(Util.JS.escape_string("\t") == """\t"""); +- assert(Util.JS.escape_string("\'") == """\'"""); +- assert(Util.JS.escape_string("\"") == """\""""); +- +- assert(Util.JS.escape_string("something…\n") == """something…\n"""); +- } +- + public void to_variant() throws GLib.Error { + assert_equal( + value_to_variant(new JSC.Value.null(this.context)).print(true), +-- +2.29.2 + diff --git a/mail-client/geary/files/0083-ComposerPageState-Use-CSS-for-managing-focus-with-co.patch b/mail-client/geary/files/0083-ComposerPageState-Use-CSS-for-managing-focus-with-co.patch new file mode 100644 index 0000000..42a890c --- /dev/null +++ b/mail-client/geary/files/0083-ComposerPageState-Use-CSS-for-managing-focus-with-co.patch @@ -0,0 +1,130 @@ +From 1d80ed2034512aca7e355921c0b942d4cf651b94 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Fri, 28 Aug 2020 12:07:59 +1000 +Subject: [PATCH 083/124] ComposerPageState: Use CSS for managing focus with + composer body parts + +Now that the `:focus-within` pseudoclass is supported, use this rather +than some custom JS to update custom HTML classes. This also prevents +spurious mutation events from firing. +--- + test/js/composer-page-state-test.vala | 24 ++++++++---------------- + ui/composer-web-view.css | 6 +++--- + ui/composer-web-view.js | 25 ------------------------- + 3 files changed, 11 insertions(+), 44 deletions(-) + +diff --git a/test/js/composer-page-state-test.vala b/test/js/composer-page-state-test.vala +index 1a2e2df3..5a0a8b3c 100644 +--- a/test/js/composer-page-state-test.vala ++++ b/test/js/composer-page-state-test.vala +@@ -11,7 +11,7 @@ class Composer.PageStateTest : Components.WebViewTestCase { + """
%s


"""; + public const string DIRTY_BODY_TEMPLATE = + """ +-
%s


++
%s


+
+ """; + public const string CLEAN_BODY_TEMPLATE = """
%s


"""; +@@ -227,7 +227,7 @@ some text + } + } + +- public void clean_content() throws Error { ++ public void clean_content() throws GLib.Error { + // XXX split these up into multiple tests + load_body_fixture(""" + http://example1.com +@@ -257,20 +257,12 @@ unknown://example6.com + I can send email through smtp.gmail.com:587 or through https://www.gmail.com/ + """; + +- try { +- run_javascript("geary.cleanContent();"); +- string result = Util.JS.to_string( +- run_javascript("window.document.body.innerHTML;") +- .get_js_value() +- ); +- assert(result == DIRTY_BODY_TEMPLATE.printf(expected)); +- } catch (Util.JS.Error err) { +- print("Util.JS.Error: %s\n", err.message); +- assert_not_reached(); +- } catch (Error err) { +- print("WKError: %s\n", err.message); +- assert_not_reached(); +- } ++ run_javascript("geary.cleanContent();"); ++ string result = Util.JS.to_string( ++ run_javascript("window.document.body.innerHTML;") ++ .get_js_value() ++ ); ++ assert_equal(result, DIRTY_BODY_TEMPLATE.printf(expected)); + } + + public void get_html() throws Error { +diff --git a/ui/composer-web-view.css b/ui/composer-web-view.css +index 3cecfb3b..07ae6869 100644 +--- a/ui/composer-web-view.css ++++ b/ui/composer-web-view.css +@@ -43,12 +43,12 @@ body > div#geary-quote { + padding: 6px !important; + } + +-body > div.geary-focus { ++body > div:focus-within { + background-color: white; + } + +-body > div#geary-signature.geary-focus, +-body > div#geary-quote.geary-focus { ++body > div#geary-signature:focus-within, ++body > div#geary-quote:focus-within { + outline: 1px dashed #ccc !important; + } + +diff --git a/ui/composer-web-view.js b/ui/composer-web-view.js +index 4fe34ad0..5ee4105e 100644 +--- a/ui/composer-web-view.js ++++ b/ui/composer-web-view.js +@@ -123,7 +123,6 @@ ComposerPageState.prototype = { + + // Focus within the HTML document + document.body.focus(); +- this.updateFocusClass(this.bodyPart); + + // Set text cursor at appropriate position + let cursor = document.getElementById("cursormarker"); +@@ -354,30 +353,6 @@ ComposerPageState.prototype = { + this._cursorContextChanged(newContext.encode()); + } + } +- +- while (cursor != null) { +- let parent = cursor.parentNode; +- if (parent == document.body) { +- this.updateFocusClass(cursor); +- break; +- } +- cursor = parent; +- } +- }, +- /** +- * Work around WebKit note yet supporting :focus-inside pseudoclass. +- */ +- updateFocusClass: function(newFocus) { +- if (this.focusedPart != null) { +- this.focusedPart.classList.remove("geary-focus"); +- this.focusedPart = null; +- } +- if (newFocus == this.bodyPart || +- newFocus == this.signaturePart || +- newFocus == this.quotePart) { +- this.focusedPart = newFocus; +- this.focusedPart.classList.add("geary-focus"); +- } + }, + containedInPart: function(target) { + let inPart = false; +-- +2.29.2 + diff --git a/mail-client/geary/files/0084-build-Bump-WebKitGTK-min-version-to-include-UserMess.patch b/mail-client/geary/files/0084-build-Bump-WebKitGTK-min-version-to-include-UserMess.patch new file mode 100644 index 0000000..8b9da5d --- /dev/null +++ b/mail-client/geary/files/0084-build-Bump-WebKitGTK-min-version-to-include-UserMess.patch @@ -0,0 +1,26 @@ +From 3f7c054db085a846b550c2cbc9fb71b352add2b9 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 29 Aug 2020 12:57:08 +1000 +Subject: [PATCH 084/124] build: Bump WebKitGTK min version to include + UserMessage support + +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 240eacaa..9b55b24d 100644 +--- a/meson.build ++++ b/meson.build +@@ -53,7 +53,7 @@ valac = meson.get_compiler('vala') + target_vala = '0.48.6' + target_glib = '2.64' + target_gtk = '3.24.7' +-target_webkit = '2.26' ++target_webkit = '2.28' + + if not valac.version().version_compare('>=' + target_vala) + error('Vala does not meet minimum required version: ' + target_vala) +-- +2.29.2 + diff --git a/mail-client/geary/files/0085-Update-Ukrainian-translation.patch b/mail-client/geary/files/0085-Update-Ukrainian-translation.patch new file mode 100644 index 0000000..81af5ed --- /dev/null +++ b/mail-client/geary/files/0085-Update-Ukrainian-translation.patch @@ -0,0 +1,1546 @@ +From cef6a02953cf8e9b5ed090fa2b4545fff2bcb129 Mon Sep 17 00:00:00 2001 +From: Yuri Chornoivan +Date: Mon, 12 Oct 2020 17:41:48 +0000 +Subject: [PATCH 085/124] Update Ukrainian translation + +--- + po/uk.po | 802 +++++++++++++++++++++++++++---------------------------- + 1 file changed, 395 insertions(+), 407 deletions(-) + +diff --git a/po/uk.po b/po/uk.po +index 6037cd14..d07c78e6 100644 +--- a/po/uk.po ++++ b/po/uk.po +@@ -12,8 +12,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary-0.4.1\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-08-27 12:37+0000\n" +-"PO-Revision-Date: 2020-08-27 15:49+0300\n" ++"POT-Creation-Date: 2020-10-12 10:41+0000\n" ++"PO-Revision-Date: 2020-10-12 20:40+0300\n" + "Last-Translator: Yuri Chornoivan \n" + "Language-Team: Ukrainian \n" + "Language: uk\n" +@@ -38,7 +38,7 @@ msgstr "Надіслати файли через Geary" + #: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 + #: src/client/accounts/accounts-editor-servers-pane.vala:560 +-#: src/client/application/application-main-window.vala:608 ++#: src/client/application/application-main-window.vala:628 + msgid "Geary" + msgstr "Geary" + +@@ -166,82 +166,39 @@ msgid "The last recorded height of the application window." + msgstr "Останнє записане значення висоти вікна програми." + + #: desktop/org.gnome.Geary.gschema.xml:26 +-msgid "Position of folder list pane" +-msgstr "Розташування панелі списку тек" +- +-#: desktop/org.gnome.Geary.gschema.xml:27 +-msgid "Position of the folder list Paned grabber." +-msgstr "Розташування прив'язки панелі списку тек." +- +-#: desktop/org.gnome.Geary.gschema.xml:32 +-msgid "Position of folder list pane when horizontal" +-msgstr "Розташування панелі списку тек у горизонтальному режимі" +- +-#: desktop/org.gnome.Geary.gschema.xml:33 +-msgid "" +-"Position of the folder list Paned grabber in the horizontal orientation." +-msgstr "Розташування прив'язки панелі списку тек у горизонтальному режимі." +- +-#: desktop/org.gnome.Geary.gschema.xml:38 +-msgid "Position of folder list pane when vertical" +-msgstr "Розташування панелі списку тек у вертикальному режимі" +- +-#: desktop/org.gnome.Geary.gschema.xml:39 +-msgid "Position of the folder list Paned grabber in the vertical orientation." +-msgstr "Розташування прив'язки панелі списку тек у вертикальному режимі." +- +-#: desktop/org.gnome.Geary.gschema.xml:44 +-msgid "Orientation of the folder list pane" +-msgstr "Орієнтація панелі списку тек" +- +-#: desktop/org.gnome.Geary.gschema.xml:45 +-msgid "True if the folder list Paned is in the horizontal orientation." +-msgstr "" +-"Значення «true», якщо прив'язка панелі списку тек перебуває у " +-"горизонтальному режимі." +- +-#: desktop/org.gnome.Geary.gschema.xml:50 + msgid "Show/hide formatting toolbar" + msgstr "Показати або приховати панель форматування" + +-#: desktop/org.gnome.Geary.gschema.xml:51 ++#: desktop/org.gnome.Geary.gschema.xml:27 + msgid "True if the formatting toolbar in the composer is shown." + msgstr "" + "Якщо має значення «true», панель форматування у вікні редактора буде " + "показано." + +-#: desktop/org.gnome.Geary.gschema.xml:56 +-msgid "Position of message list pane" +-msgstr "Розташування панелі списку повідомлень" +- +-#: desktop/org.gnome.Geary.gschema.xml:57 +-msgid "Position of the message list Paned grabber." +-msgstr "Розташування прив'язки панелі списку повідомлень." +- +-#: desktop/org.gnome.Geary.gschema.xml:62 ++#: desktop/org.gnome.Geary.gschema.xml:32 + msgid "Autoselect next message" + msgstr "Автоматично вибирати наступний лист" + +-#: desktop/org.gnome.Geary.gschema.xml:63 ++#: desktop/org.gnome.Geary.gschema.xml:33 + msgid "True if we should autoselect the next available conversation." + msgstr "" + "Значення «true» означає «автоматично вибирати наступне доступне спілкування." + +-#: desktop/org.gnome.Geary.gschema.xml:68 ++#: desktop/org.gnome.Geary.gschema.xml:38 + msgid "Display message previews" + msgstr "Попередній перегляд повідомлень" + +-#: desktop/org.gnome.Geary.gschema.xml:69 ++#: desktop/org.gnome.Geary.gschema.xml:39 + msgid "True if we should display a short preview of each message." + msgstr "" + "Якщо має значення «true», програма має показувати короткий попередній " + "перегляд кожного повідомлення." + +-#: desktop/org.gnome.Geary.gschema.xml:74 ++#: desktop/org.gnome.Geary.gschema.xml:44 + msgid "Use single key shortcuts" + msgstr "Використовувати єдині клавіатурні скорочення" + +-#: desktop/org.gnome.Geary.gschema.xml:75 ++#: desktop/org.gnome.Geary.gschema.xml:45 + msgid "" + "Enables shortcuts for email actions that do not require pressing to " + "emulate those used by Gmail." +@@ -249,11 +206,11 @@ msgstr "" + "Вмикає клавіатурні скорочення, які не потребують натискання , для дій " + "з повідомленнями — імітації скорочень, які використовуються у Gmail." + +-#: desktop/org.gnome.Geary.gschema.xml:82 ++#: desktop/org.gnome.Geary.gschema.xml:52 + msgid "Languages that shall be used in the spell checker" + msgstr "Мови, які має бути використано для перевірки правопису" + +-#: desktop/org.gnome.Geary.gschema.xml:83 ++#: desktop/org.gnome.Geary.gschema.xml:53 + msgid "" + "A list of POSIX locales, with the empty list disabling spell checking and " + "the null list using desktop languages by default." +@@ -261,11 +218,11 @@ msgstr "" + "Список локалей POSIX. Порожній список вимикає перевірку правопису, а null-" + "список означає «використовувати типові мови стільничного середовища»." + +-#: desktop/org.gnome.Geary.gschema.xml:90 ++#: desktop/org.gnome.Geary.gschema.xml:60 + msgid "Languages that are displayed in the spell checker popover" + msgstr "Мови, які буде показано у накладному меню перевірки правопису" + +-#: desktop/org.gnome.Geary.gschema.xml:91 ++#: desktop/org.gnome.Geary.gschema.xml:61 + msgid "" + "List of languages that are always displayed in the popover of the spell " + "checker." +@@ -273,64 +230,64 @@ msgstr "" + "Список мов, які буде завжди показано у накладному меню засобу перевірки " + "правопису." + +-#: desktop/org.gnome.Geary.gschema.xml:96 ++#: desktop/org.gnome.Geary.gschema.xml:66 + msgid "Notify of new mail at startup" + msgstr "Сповіщати про нову пошту під час запуску" + +-#: desktop/org.gnome.Geary.gschema.xml:97 ++#: desktop/org.gnome.Geary.gschema.xml:67 + msgid "True to notify of new mail at startup." + msgstr "Значення «true» означає «сповіщати про нову пошту під час запуску»." + +-#: desktop/org.gnome.Geary.gschema.xml:102 ++#: desktop/org.gnome.Geary.gschema.xml:72 + msgid "Ask when opening an attachment" + msgstr "Питати при відкритті долучення" + +-#: desktop/org.gnome.Geary.gschema.xml:103 ++#: desktop/org.gnome.Geary.gschema.xml:73 + msgid "True to ask when opening an attachment." + msgstr "Значення «true» означає «питати при відкритті долучення»." + +-#: desktop/org.gnome.Geary.gschema.xml:108 ++#: desktop/org.gnome.Geary.gschema.xml:78 + msgid "Whether to compose emails in HTML" + msgstr "Чи слід редагувати повідомлення у форматі HTML" + +-#: desktop/org.gnome.Geary.gschema.xml:109 ++#: desktop/org.gnome.Geary.gschema.xml:79 + msgid "True to compose emails in HTML; false for plain text." + msgstr "" + "Значення «true» — редагувати повідомлення у HTML; «false» — редагувати у " + "форматі звичайного тексту." + +-#: desktop/org.gnome.Geary.gschema.xml:114 ++#: desktop/org.gnome.Geary.gschema.xml:84 + msgid "Advisory strategy for full-text searching" + msgstr "Рекомендована стратегія для повнотекстового пошуку" + +-#: desktop/org.gnome.Geary.gschema.xml:115 ++#: desktop/org.gnome.Geary.gschema.xml:85 + msgid "" + "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." + msgstr "" + "Доступні значення: «exact» («точний»), «conservative» («консервативний»), " + "«aggressive» («агресивний») і «horizon» («горизонтний»)." + +-#: desktop/org.gnome.Geary.gschema.xml:120 ++#: desktop/org.gnome.Geary.gschema.xml:90 + msgid "Zoom of conversation viewer" + msgstr "Масштаб панелі перегляду спілкувань" + +-#: desktop/org.gnome.Geary.gschema.xml:121 ++#: desktop/org.gnome.Geary.gschema.xml:91 + msgid "The zoom to apply on the conservation view." + msgstr "Масштаб для панелі перегляду спілкувань." + +-#: desktop/org.gnome.Geary.gschema.xml:126 ++#: desktop/org.gnome.Geary.gschema.xml:96 + msgid "Size of detached composer window" + msgstr "Розмір від'єднаного вікна редактора" + +-#: desktop/org.gnome.Geary.gschema.xml:127 ++#: desktop/org.gnome.Geary.gschema.xml:97 + msgid "The last recorded size of the detached composer window." + msgstr "Останній записаний розмір від'єднаного вікна редактора." + +-#: desktop/org.gnome.Geary.gschema.xml:132 ++#: desktop/org.gnome.Geary.gschema.xml:102 + msgid "Undo sending email delay" + msgstr "Скасувати затримку надсилання повідомлення" + +-#: desktop/org.gnome.Geary.gschema.xml:133 ++#: desktop/org.gnome.Geary.gschema.xml:103 + msgid "" + "The number of seconds to wait before sending an email. Set to zero or less " + "to disable." +@@ -338,29 +295,29 @@ msgstr "" + "Тривалість очікування у секундах перед надсиланням повідомлення. Встановіть " + "нульове або від'ємне значення, щоб вимкнути очікування." + +-#: desktop/org.gnome.Geary.gschema.xml:139 ++#: desktop/org.gnome.Geary.gschema.xml:109 + msgid "Brief notification display time" + msgstr "Тривалість показу короткого сповіщення" + +-#: desktop/org.gnome.Geary.gschema.xml:140 ++#: desktop/org.gnome.Geary.gschema.xml:110 + msgid "" + "The length of time in seconds for which brief notifications should be " + "displayed." + msgstr "Тривалість показу короткого сповіщення у секундах." + +-#: desktop/org.gnome.Geary.gschema.xml:146 ++#: desktop/org.gnome.Geary.gschema.xml:116 + msgid "List of optional plugins" + msgstr "Список необов'язкових додатків" + +-#: desktop/org.gnome.Geary.gschema.xml:147 ++#: desktop/org.gnome.Geary.gschema.xml:117 + msgid "Plugins listed here will be loaded on startup." + msgstr "Програма завантажуватиме додатки з цього списку під час свого запуску." + +-#: desktop/org.gnome.Geary.gschema.xml:152 ++#: desktop/org.gnome.Geary.gschema.xml:122 + msgid "Whether we migrated the old settings" + msgstr "Чи перенесено на нову версію старі параметри" + +-#: desktop/org.gnome.Geary.gschema.xml:153 ++#: desktop/org.gnome.Geary.gschema.xml:123 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -639,12 +596,12 @@ msgstr[2] "%d днів тому" + msgstr[3] "день тому" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2061 ++#: src/client/application/application-main-window.vala:2129 + msgid "Undo" + msgstr "Скасувати" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2044 ++#: src/client/application/application-main-window.vala:2112 + msgid "Redo" + msgstr "Повторити" + +@@ -739,7 +696,7 @@ msgstr "TLS" + #. account + #. Translators: An info bar button label + #: src/client/accounts/accounts-editor-row.vala:539 +-#: src/client/application/application-main-window.vala:554 ++#: src/client/application/application-main-window.vala:574 + msgid "Login" + msgstr "Увійти" + +@@ -972,7 +929,7 @@ msgstr "Поширений випуск" + msgid "Installation prefix" + msgstr "Префікс встановлення" + +-#: src/client/application/application-client.vala:558 ++#: src/client/application/application-client.vala:559 + #, c-format + msgid "About %s" + msgstr "Інформація про %s" +@@ -980,13 +937,13 @@ msgstr "Інформація про %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:562 ++#: src/client/application/application-client.vala:563 + msgid "translator-credits" + msgstr "Daniel Korostil " + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1046 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "" + "Параметр «--hidden» вважається застарілим. Його буде вилучено у майбутніх " +@@ -994,7 +951,7 @@ msgstr "" + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1079 ++#: src/client/application/application-client.vala:1078 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Нерозпізнаний аргумент команди: «%s»" +@@ -1210,61 +1167,61 @@ msgid "Email to %s discarded" + msgstr "Повідомлення до %s відкинуто" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:540 ++#: src/client/application/application-main-window.vala:560 + msgid "Working offline" + msgstr "Працюємо у автономному режимі" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:542 ++#: src/client/application/application-main-window.vala:562 + msgid "You will not be able to send or receive email until re-connected." + msgstr "" + "Ви не зможете надсилати або отримувати електронну пошту до відновлення " + "з'єднання із інтернетом." + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:549 ++#: src/client/application/application-main-window.vala:569 + msgid "Login problem" + msgstr "Проблеми із входом" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:551 ++#: src/client/application/application-main-window.vala:571 + msgid "An account has reported an incorrect login or password." + msgstr "" + "Сервером облікового запису повідомлено про помилкове ім'я користувача або " + "пароль." + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:558 ++#: src/client/application/application-main-window.vala:578 + msgid "Retry login, you will be prompted for your password" + msgstr "" + "Під час повторної спроби увійти програма попросить вас ввести ваш пароль" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:565 ++#: src/client/application/application-main-window.vala:585 + msgid "Security problem" + msgstr "Проблема із захистом" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:567 ++#: src/client/application/application-main-window.vala:587 + msgid "An account has reported an untrusted server." + msgstr "" + "Механізмами роботи із обліковими записами повідомлено про ненадійність " + "сервера." + + #. Translators: An info bar button label +-#: src/client/application/application-main-window.vala:570 ++#: src/client/application/application-main-window.vala:590 + msgid "Check" + msgstr "Перевірити" + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:574 ++#: src/client/application/application-main-window.vala:594 + msgid "Check the security details for the connection" + msgstr "Перевірте параметри захисту з'єднання" + + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:617 ++#: src/client/application/application-main-window.vala:637 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" +@@ -1272,31 +1229,31 @@ msgstr "%s — %s" + #. Translators: The name of the folder group containing + #. folders created by people (as opposed to special-use + #. folders) +-#: src/client/application/application-main-window.vala:996 ++#: src/client/application/application-main-window.vala:1019 + #: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Мітки" + +-#: src/client/application/application-main-window.vala:1293 ++#: src/client/application/application-main-window.vala:1337 + #, c-format + msgid "Empty all email from your %s folder?" + msgstr "Спорожнити всі листи з теки %s?" + +-#: src/client/application/application-main-window.vala:1294 ++#: src/client/application/application-main-window.vala:1338 + msgid "This removes the email from Geary and your email server." + msgstr "Це вилучить всі листи з Geary і з вашого сервера." + +-#: src/client/application/application-main-window.vala:1295 ++#: src/client/application/application-main-window.vala:1339 + msgid "This cannot be undone." + msgstr "Це неможливо повернути." + +-#: src/client/application/application-main-window.vala:1296 ++#: src/client/application/application-main-window.vala:1340 + #, c-format + msgid "Empty %s" + msgstr "Спорожнити %s" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1353 ++#: src/client/application/application-main-window.vala:1397 + msgid "Do you want to permanently delete this conversation?" + msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Ви справді хочете остаточно вилучити ці спілкування?" +@@ -1304,13 +1261,13 @@ msgstr[1] "Ви справді хочете остаточно вилучити + msgstr[2] "Ви справді хочете остаточно вилучити ці спілкування?" + msgstr[3] "Ви справді хочете остаточно вилучити це спілкування?" + +-#: src/client/application/application-main-window.vala:1358 +-#: src/client/application/application-main-window.vala:1373 ++#: src/client/application/application-main-window.vala:1402 ++#: src/client/application/application-main-window.vala:1417 + msgid "Delete" + msgstr "Вилучити" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1368 ++#: src/client/application/application-main-window.vala:1412 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Остаточно вилучити цей лист?" +@@ -1318,7 +1275,7 @@ msgstr[1] "Остаточно вилучити ці листи?" + msgstr[2] "Остаточно вилучити ці листи?" + msgstr[3] "Остаточно вилучити цей лист?" + +-#: src/client/application/application-main-window.vala:1691 ++#: src/client/application/application-main-window.vala:1703 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1329,7 +1286,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1989 ++#: src/client/composer/composer-widget.vala:1792 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1350,6 +1307,54 @@ msgstr "" + msgid "Don’t _ask me again" + msgstr "Більше не _запитувати" + ++#: src/client/components/components-conversation-actions.vala:90 ++msgid "Mark conversation" ++msgid_plural "Mark conversations" ++msgstr[0] "Позначити спілкування" ++msgstr[1] "Позначити спілкування" ++msgstr[2] "Позначити спілкування" ++msgstr[3] "Позначити спілкування" ++ ++#: src/client/components/components-conversation-actions.vala:95 ++msgid "Add label to conversation" ++msgid_plural "Add label to conversations" ++msgstr[0] "Додати мітку до спілкувань" ++msgstr[1] "Додати мітку до спілкувань" ++msgstr[2] "Додати мітку до спілкувань" ++msgstr[3] "Додати мітку до спілкування" ++ ++#: src/client/components/components-conversation-actions.vala:100 ++msgid "Move conversation" ++msgid_plural "Move conversations" ++msgstr[0] "Пересунути спілкування" ++msgstr[1] "Пересунути спілкування" ++msgstr[2] "Пересунути спілкування" ++msgstr[3] "Пересунути спілкування" ++ ++#: src/client/components/components-conversation-actions.vala:105 ++msgid "Archive conversation" ++msgid_plural "Archive conversations" ++msgstr[0] "Архівувати спілкування" ++msgstr[1] "Архівувати спілкування" ++msgstr[2] "Архівувати спілкування" ++msgstr[3] "Архівувати спілкування" ++ ++#: src/client/components/components-conversation-actions.vala:116 ++msgid "Move conversation to Trash" ++msgid_plural "Move conversations to Trash" ++msgstr[0] "Пересунути спілкування до смітника" ++msgstr[1] "Пересунути спілкування до смітника" ++msgstr[2] "Пересунути спілкування до смітника" ++msgstr[3] "Пересунути спілкування до смітника" ++ ++#: src/client/components/components-conversation-actions.vala:126 ++msgid "Delete conversation" ++msgid_plural "Delete conversations" ++msgstr[0] "Вилучити спілкування" ++msgstr[1] "Вилучити спілкування" ++msgstr[2] "Вилучити спілкування" ++msgstr[3] "Вилучити спілкування" ++ + #: src/client/components/components-inspector.vala:78 + msgid "Inspector" + msgstr "Ревізор" +@@ -1380,7 +1385,7 @@ msgstr "Зберегти як" + + #: src/client/components/components-inspector.vala:230 + #: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Скасувати" + +@@ -1396,15 +1401,10 @@ msgstr "_Показувати попередній перегляд спілку + + #. / Translators: Preferences label + #: src/client/components/components-preferences-window.vala:144 +-msgid "Use _three pane view" +-msgstr "Використовувати _ієрархію" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "_Одноклавішні скорочення для електронної пошти" + +-#: src/client/components/components-preferences-window.vala:156 ++#: src/client/components/components-preferences-window.vala:146 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" +@@ -1413,22 +1413,22 @@ msgstr "" + "дій з повідомленнями" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:167 ++#: src/client/components/components-preferences-window.vala:157 + msgid "_Watch for new mail when closed" + msgstr "_Шукати нові повідомлення під час закриття" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:171 ++#: src/client/components/components-preferences-window.vala:161 + msgid "Geary will keep running after all windows are closed" + msgstr "Geary продовжуватиме працювати після закриття усіх вікон програми" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:189 ++#: src/client/components/components-preferences-window.vala:178 + msgid "Preferences" + msgstr "Параметри" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:250 ++#: src/client/components/components-preferences-window.vala:234 + msgid "Plugins" + msgstr "Додатки" + +@@ -1503,22 +1503,6 @@ msgstr "Переглянути технічні подробиці щодо по + msgid "_Retry" + msgstr "_Повторити" + +-#: src/client/components/components-reflow-box.c:454 +-msgid "Spacing" +-msgstr "Інтервал" +- +-#: src/client/components/components-reflow-box.c:455 +-msgid "Spacing between children" +-msgstr "Інтервал між дочірніми об’єктами" +- +-#: src/client/components/components-reflow-box.c:470 +-msgid "Row spacing" +-msgstr "Міжрядковий інтервал" +- +-#: src/client/components/components-reflow-box.c:471 +-msgid "Spacing between rows of children" +-msgstr "Інтервал між рядками дочірніх об'єктів" +- + #. / Translators: Search entry placeholder text + #: src/client/components/components-search-bar.vala:12 + #: src/client/folder-list/folder-list-search-branch.vala:53 +@@ -1565,54 +1549,6 @@ msgstr "Слід вказати назву сервера" + msgid "Could not look up server name" + msgstr "Не вдалося виконати пошук за назвою сервера" + +-#: src/client/components/main-toolbar.vala:116 +-msgid "Mark conversation" +-msgid_plural "Mark conversations" +-msgstr[0] "Позначити спілкування" +-msgstr[1] "Позначити спілкування" +-msgstr[2] "Позначити спілкування" +-msgstr[3] "Позначити спілкування" +- +-#: src/client/components/main-toolbar.vala:121 +-msgid "Add label to conversation" +-msgid_plural "Add label to conversations" +-msgstr[0] "Додати мітку до спілкувань" +-msgstr[1] "Додати мітку до спілкувань" +-msgstr[2] "Додати мітку до спілкувань" +-msgstr[3] "Додати мітку до спілкування" +- +-#: src/client/components/main-toolbar.vala:126 +-msgid "Move conversation" +-msgid_plural "Move conversations" +-msgstr[0] "Пересунути спілкування" +-msgstr[1] "Пересунути спілкування" +-msgstr[2] "Пересунути спілкування" +-msgstr[3] "Пересунути спілкування" +- +-#: src/client/components/main-toolbar.vala:131 +-msgid "Archive conversation" +-msgid_plural "Archive conversations" +-msgstr[0] "Архівувати спілкування" +-msgstr[1] "Архівувати спілкування" +-msgstr[2] "Архівувати спілкування" +-msgstr[3] "Архівувати спілкування" +- +-#: src/client/components/main-toolbar.vala:142 +-msgid "Move conversation to Trash" +-msgid_plural "Move conversations to Trash" +-msgstr[0] "Пересунути спілкування до смітника" +-msgstr[1] "Пересунути спілкування до смітника" +-msgstr[2] "Пересунути спілкування до смітника" +-msgstr[3] "Пересунути спілкування до смітника" +- +-#: src/client/components/main-toolbar.vala:152 +-msgid "Delete conversation" +-msgid_plural "Delete conversations" +-msgstr[0] "Вилучити спілкування" +-msgstr[1] "Вилучити спілкування" +-msgstr[2] "Вилучити спілкування" +-msgstr[3] "Вилучити спілкування" +- + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1691,6 +1627,10 @@ msgstr "З_берегти" + msgid "_Keep" + msgstr "_Зберегти" + ++#: src/client/composer/composer-editor.vala:675 ++msgid "Select Color" ++msgstr "Вибрати колір" ++ + #: src/client/composer/composer-link-popover.vala:139 + msgid "Link URL is not correctly formatted, e.g. http://example.com" + msgstr "Форматування посилання є помилковим. Приклад: http://example.com" +@@ -1704,23 +1644,23 @@ msgid "Invalid email address" + msgstr "Некоректна адреса електронної пошти" + + #. / Translators: Title for an empty composer window +-#: src/client/composer/composer-widget.vala:35 ++#: src/client/composer/composer-widget.vala:32 + msgid "New Message" + msgstr "Створити лист" + +-#: src/client/composer/composer-widget.vala:239 ++#: src/client/composer/composer-widget.vala:167 + msgid "Saved" + msgstr "Збережено" + +-#: src/client/composer/composer-widget.vala:240 ++#: src/client/composer/composer-widget.vala:168 + msgid "Saving" + msgstr "Зберігання" + +-#: src/client/composer/composer-widget.vala:241 ++#: src/client/composer/composer-widget.vala:169 + msgid "Error saving" + msgstr "Помилка зберігання" + +-#: src/client/composer/composer-widget.vala:242 ++#: src/client/composer/composer-widget.vala:170 + msgid "Press Backspace to delete quote" + msgstr "Натисніть Backspace, щоб вилучити цитату" + +@@ -1729,7 +1669,7 @@ msgstr "Натисніть Backspace, щоб вилучити цитату" + #. checking, include all variants of each word. No spaces are + #. allowed. The words will be converted to lower case based on + #. locale and English versions included automatically. +-#: src/client/composer/composer-widget.vala:258 ++#: src/client/composer/composer-widget.vala:186 + msgid "" + "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" + "enclosing|encloses|enclosure|enclosures" +@@ -1740,109 +1680,105 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:997 ++#: src/client/composer/composer-widget.vala:865 + msgid "Do you want to keep or discard this draft message?" + msgstr "Хочете зберегти чи відкинути цю чернетку повідомлення?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:1023 ++#: src/client/composer/composer-widget.vala:891 + msgid "Do you want to discard this draft message?" + msgstr "Хочете відкинути цю чернетку повідомлення?" + +-#: src/client/composer/composer-widget.vala:1645 ++#: src/client/composer/composer-widget.vala:1448 + msgid "Send message with an empty subject and body?" + msgstr "Надіслати лист без теми і текстом листа?" + +-#: src/client/composer/composer-widget.vala:1647 ++#: src/client/composer/composer-widget.vala:1450 + msgid "Send message with an empty subject?" + msgstr "Надіслати лист без теми?" + +-#: src/client/composer/composer-widget.vala:1649 ++#: src/client/composer/composer-widget.vala:1452 + msgid "Send message with an empty body?" + msgstr "Надіслати лист без тексту?" + +-#: src/client/composer/composer-widget.vala:1658 ++#: src/client/composer/composer-widget.vala:1461 + msgid "Send message without an attachment?" + msgstr "Надіслати лист без долучень?" + +-#: src/client/composer/composer-widget.vala:1977 ++#: src/client/composer/composer-widget.vala:1780 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "«%s» уже долучено для доставлення." + +-#: src/client/composer/composer-widget.vala:2009 +-#: src/client/composer/composer-widget.vala:2059 ++#: src/client/composer/composer-widget.vala:1812 ++#: src/client/composer/composer-widget.vala:1862 + #, c-format + msgid "“%s” is an empty file." + msgstr "«%s» — порожній файл." + +-#: src/client/composer/composer-widget.vala:2047 ++#: src/client/composer/composer-widget.vala:1850 + #, c-format + msgid "“%s” could not be found." + msgstr "Не вдалося знайти «%s»." + +-#: src/client/composer/composer-widget.vala:2053 ++#: src/client/composer/composer-widget.vala:1856 + #, c-format + msgid "“%s” is a folder." + msgstr "«%s» — тека." + +-#: src/client/composer/composer-widget.vala:2072 ++#: src/client/composer/composer-widget.vala:1875 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "Не вдалося відкрити «%s» для читання." + +-#: src/client/composer/composer-widget.vala:2080 ++#: src/client/composer/composer-widget.vala:1883 + msgid "Cannot add attachment" + msgstr "Неможливо додати долучення" + ++#. Translators: This is the name of the file chooser filter ++#. when inserting an image in the composer. ++#: src/client/composer/composer-widget.vala:1954 ++msgid "Images" ++msgstr "Зображення" ++ + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:2140 ++#: src/client/composer/composer-widget.vala:2018 + #: src/client/conversation-viewer/conversation-email.vala:542 + #: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Кому:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:2146 ++#: src/client/composer/composer-widget.vala:2024 + #: src/client/conversation-viewer/conversation-email.vala:547 + #: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Копія:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2152 ++#: src/client/composer/composer-widget.vala:2030 + #: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Потайна копія:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2158 ++#: src/client/composer/composer-widget.vala:2036 + msgid "Reply-To: " + msgstr "Відповісти:" + +-#: src/client/composer/composer-widget.vala:2410 +-msgid "Select Color" +-msgstr "Вибрати колір" +- + #. Displayed in the From dropdown to indicate an + #. "alternate email address" for an account. The first + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2599 ++#: src/client/composer/composer-widget.vala:2154 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s через %2$s" + +-#. Translators: This is the name of the file chooser filter +-#. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:2959 +-msgid "Images" +-msgstr "Зображення" +- + #: src/client/composer/spell-check-popover.vala:125 + msgid "Remove this language from the preferred list" + msgstr "Вилучити цю мову зі списку бажаних" +@@ -1856,7 +1792,7 @@ msgid "Search for more languages" + msgstr "Шукати інші мови" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:339 ++#: src/client/conversation-list/conversation-list-view.vala:389 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "Пересунути спілкування до с_мітника" +@@ -1865,7 +1801,7 @@ msgstr[2] "Пересунути спілкування до с_мітника" + msgstr[3] "Пересунути спілкування до с_мітника" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:351 ++#: src/client/conversation-list/conversation-list-view.vala:401 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "Ви_лучити спілкування" +@@ -1873,38 +1809,38 @@ msgstr[1] "Ви_лучити спілкування" + msgstr[2] "Ви_лучити спілкування" + msgstr[3] "Ви_лучити спілкування" + +-#: src/client/conversation-list/conversation-list-view.vala:364 ++#: src/client/conversation-list/conversation-list-view.vala:414 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Зазначити як _прочитане" + +-#: src/client/conversation-list/conversation-list-view.vala:372 ++#: src/client/conversation-list/conversation-list-view.vala:422 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Зазначити як _непрочитане" + +-#: src/client/conversation-list/conversation-list-view.vala:380 ++#: src/client/conversation-list/conversation-list-view.vala:430 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "_Без зірки" + +-#: src/client/conversation-list/conversation-list-view.vala:387 ++#: src/client/conversation-list/conversation-list-view.vala:437 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "_Із зіркою" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:396 ++#: src/client/conversation-list/conversation-list-view.vala:446 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "_Відповісти" + +-#: src/client/conversation-list/conversation-list-view.vala:402 ++#: src/client/conversation-list/conversation-list-view.vala:452 + msgid "R_eply All" + msgstr "В_ідповісти всім" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:408 ++#: src/client/conversation-list/conversation-list-view.vala:458 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Переслати" +@@ -1995,25 +1931,25 @@ msgstr "Завжди показувати від відправника" + + #. Translators: Title label for placeholder when no + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:83 ++#: src/client/conversation-viewer/conversation-viewer.vala:87 + msgid "No conversations selected" + msgstr "Не позначено жодного спілкування." + + #. Translators: Sub-title label for placeholder when no + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:87 ++#: src/client/conversation-viewer/conversation-viewer.vala:91 + msgid "Selecting a conversation from the list will display it here" + msgstr "Після вибору спілкування зі списку його буде показано тут" + + #. Translators: Title label for placeholder when multiple + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:96 ++#: src/client/conversation-viewer/conversation-viewer.vala:100 + msgid "Multiple conversations selected" + msgstr "Позначено декілька спілкувань" + + #. Translators: Sub-title label for placeholder when multiple + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:100 ++#: src/client/conversation-viewer/conversation-viewer.vala:104 + msgid "Choosing an action will apply to all selected conversations" + msgstr "Вибір дії призведе до її застосування до усіх вибраних спілкувань" + +@@ -2021,20 +1957,20 @@ msgstr "Вибір дії призведе до її застосування д + #. conversations have exist in a folder. + #. Translators: Title label for placeholder when no + #. conversations have been found in a search. +-#: src/client/conversation-viewer/conversation-viewer.vala:109 +-#: src/client/conversation-viewer/conversation-viewer.vala:122 ++#: src/client/conversation-viewer/conversation-viewer.vala:113 ++#: src/client/conversation-viewer/conversation-viewer.vala:126 + msgid "No conversations found" + msgstr "Спілкувань не знайдено" + + #. Translators: Sub-title label for placeholder when no + #. conversations have exist in a folder. +-#: src/client/conversation-viewer/conversation-viewer.vala:113 ++#: src/client/conversation-viewer/conversation-viewer.vala:117 + msgid "This folder does not contain any conversations" + msgstr "У цій теці не міститься спілкувань" + + #. Translators: Sub-title label for placeholder when no + #. conversations have been found in a search. +-#: src/client/conversation-viewer/conversation-viewer.vala:126 ++#: src/client/conversation-viewer/conversation-viewer.vala:130 + msgid "Your search returned no results, try refining your search terms" + msgstr "" + "За вашими критеріями пошуку нічого не знайдено. Спробуйте змінити критерії." +@@ -2334,7 +2270,6 @@ msgstr "Пауза" + #. already sent, the second is the total number to send. + #: src/client/plugin/mail-merge/mail-merge.vala:240 + #, c-format +-#| msgid "Sent %u of %u" + msgid "Sent %u of %u" + msgid_plural "Sent %u of %u" + msgstr[0] "Надіслано %u з %u" +@@ -2801,7 +2736,7 @@ msgstr "непрочитане" + #. Draft mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:996 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:998 + msgid "Drafts | Draft" + msgstr "Чернетки | Чернетка | Draft | Drafts" + +@@ -2809,7 +2744,7 @@ msgstr "Чернетки | Чернетка | Draft | Drafts" + #. Sent mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1005 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1007 + msgid "Sent | Sent Mail | Sent Email | Sent E-Mail" + msgstr "" + "Надіслано | Надіслане | Надіслана пошта | Надісланий лист | Sent | Sent Mail " +@@ -2817,7 +2752,7 @@ msgstr "" + + #. The localised name(s) of the Sent folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1010 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1012 + msgctxt "Outlook localised name" + msgid "Sent Items" + msgstr "Надіслані" +@@ -2826,7 +2761,7 @@ msgstr "Надіслані" + #. Junk/Spam mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1020 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1022 + msgid "" + "Junk | Spam | Junk Mail | Junk Email | Junk E-Mail | Bulk Mail | Bulk Email " + "| Bulk E-Mail" +@@ -2838,13 +2773,13 @@ msgstr "" + #. Trash mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1030 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1032 + msgid "Trash | Rubbish | Rubbish Bin" + msgstr "Сміття | Смітник | Кошик | TTrash | Rubbish | Rubbish Bin" + + #. The localised name(s) of the Trash folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1035 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1037 + msgctxt "Outlook localised name" + msgid "Deleted Items" + msgstr "Вилучені записи" +@@ -2853,7 +2788,7 @@ msgstr "Вилучені записи" + #. Archive mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1045 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1047 + msgid "Archive | Archives" + msgstr "Архів | Архіви | Archive | Archives" + +@@ -2974,248 +2909,248 @@ msgstr "_Довіритись цьому серверу" + msgid "_Don’t Trust This Server" + msgstr "_Не довіряти цьому серверу" + +-#: ui/composer-headerbar.ui:23 ui/composer-headerbar.ui:107 +-msgid "Detach the composer from the window" +-msgstr "Від'єднати вікно редактора від основного вікна" +- +-#: ui/composer-headerbar.ui:135 +-msgid "_Send" +-msgstr "_Надіслати" +- +-#: ui/composer-headerbar.ui:162 +-msgid "Discard and Close" +-msgstr "Відкинути і закрити" +- +-#: ui/composer-headerbar.ui:186 +-msgid "Save and Close" +-msgstr "Зберегти і закрити" +- +-#. Note that this button and the Update button will never be shown at the same time to the user. +-#: ui/composer-link-popover.ui:42 +-msgid "Insert the new link with this URL" +-msgstr "Вставити нове посилання із цією адресою" +- +-#: ui/composer-link-popover.ui:43 +-msgid "Add" +-msgstr "Додати" +- +-#: ui/composer-link-popover.ui:47 +-msgid "Link URL" +-msgstr "Адреса посилання" +- +-#. Note that this button and the Insert button will never be shown at the same time to the user. +-#: ui/composer-link-popover.ui:61 +-msgid "Update this link’s URL" +-msgstr "Оновити цю адресу посилання" +- +-#: ui/composer-link-popover.ui:62 +-msgid "Update" +-msgstr "Оновити" +- +-#: ui/composer-link-popover.ui:75 +-msgid "Delete this link" +-msgstr "Вилучити це посилання" +- +-#: ui/composer-menus.ui:8 +-msgid "_Undo" +-msgstr "_Повернути" +- +-#: ui/composer-menus.ui:12 +-msgid "_Redo" +-msgstr "Пов_торити" +- +-#: ui/composer-menus.ui:18 ui/composer-menus.ui:36 +-msgid "Cu_t" +-msgstr "_Вирізати" +- +-#: ui/composer-menus.ui:22 ui/composer-menus.ui:40 +-#: ui/conversation-message-menus.ui:37 +-msgid "_Copy" +-msgstr "_Копіювати" +- +-#: ui/composer-menus.ui:26 ui/composer-menus.ui:44 +-msgid "_Paste" +-msgstr "Вст_авити" +- +-#: ui/composer-menus.ui:30 +-msgctxt "Clipboard paste as plain text" +-msgid "Paste _Without Formatting" +-msgstr "Вставити _без форматування" +- +-#: ui/composer-menus.ui:50 +-msgid "Select _All" +-msgstr "Вибрати _все" +- +-#: ui/composer-menus.ui:57 ui/conversation-message-menus.ui:43 +-msgid "_Inspect…" +-msgstr "Дос_лідити…" +- +-#. Geary account mail will be sent from +-#: ui/composer-widget.ui:61 +-msgid "_From" +-msgstr "_Від" +- +-#. Address(es) e-mail is to be sent to +-#: ui/composer-widget.ui:131 +-msgid "_To" +-msgstr "_Кому" +- +-#: ui/composer-widget.ui:159 +-msgid "Show Cc, Bcc, and Reply-To fields" +-msgstr "Показувати поля «Копія», «Bcc» і «Відповідати до»" +- +-#: ui/composer-widget.ui:220 +-msgid "_Cc" +-msgstr "Ко_пія" +- +-#: ui/composer-widget.ui:268 +-msgid "_Bcc" +-msgstr "По_тайна копія" +- +-#: ui/composer-widget.ui:316 +-msgid "_Reply-To" +-msgstr "_Відповісти" +- +-#: ui/composer-widget.ui:373 +-msgid "_Subject" +-msgstr "_Тема" +- +-#: ui/composer-widget.ui:446 +-msgid "Drop files here" +-msgstr "Перетягніть файли сюди" +- +-#: ui/composer-widget.ui:462 +-msgid "To add them as attachments" +-msgstr "Щоб додати їх як долучення" +- +-#: ui/composer-widget.ui:615 ++#: ui/composer-editor.ui:100 + msgid "Bold text" + msgstr "Текст напівжирним" + +-#: ui/composer-widget.ui:639 ++#: ui/composer-editor.ui:124 + msgid "Italic text" + msgstr "Текст курсивом" + +-#: ui/composer-widget.ui:663 ++#: ui/composer-editor.ui:148 + msgid "Underline text" + msgstr "Підкреслити текст" + +-#: ui/composer-widget.ui:687 ++#: ui/composer-editor.ui:172 + msgid "Strikethrough text" + msgstr "Перекреслений текст" + +-#: ui/composer-widget.ui:720 ++#: ui/composer-editor.ui:205 + msgid "Insert bulleted list" + msgstr "Вставити неупорядкований список" + +-#: ui/composer-widget.ui:744 ++#: ui/composer-editor.ui:229 + msgid "Insert numbered list" + msgstr "Вставити упорядкований список" + +-#: ui/composer-widget.ui:777 ++#: ui/composer-editor.ui:262 + msgid "Indent or quote text" + msgstr "Додати відступи або цитування тексту" + +-#: ui/composer-widget.ui:801 ++#: ui/composer-editor.ui:286 + msgid "Un-indent or unquote text" + msgstr "Скасувати відступи або цитування тексту" + +-#: ui/composer-widget.ui:830 ++#: ui/composer-editor.ui:315 + msgid "Remove text formatting" + msgstr "Вилучити форматування тексту" + +-#: ui/composer-widget.ui:849 ++#: ui/composer-editor.ui:334 + msgid "Change font type" + msgstr "Змінити тип шрифту" + +-#: ui/composer-widget.ui:864 ++#: ui/composer-editor.ui:349 + msgid "Sans Serif" + msgstr "Без засічок" + +-#: ui/composer-widget.ui:875 ++#: ui/composer-editor.ui:360 + msgid "Serif" + msgstr "З засічками" + +-#: ui/composer-widget.ui:886 ++#: ui/composer-editor.ui:371 + msgid "Fixed Width" + msgstr "Фіксована ширина" + +-#: ui/composer-widget.ui:912 ++#: ui/composer-editor.ui:397 + msgid "Change font color" + msgstr "Змінити колір шрифту" + +-#: ui/composer-widget.ui:927 ++#: ui/composer-editor.ui:412 + msgid "Change font size" + msgstr "Змінити розмір шрифту" + +-#: ui/composer-widget.ui:962 ++#: ui/composer-editor.ui:447 + msgid "Insert or update text link" + msgstr "Вставити або оновити текстове посилання" + +-#: ui/composer-widget.ui:986 ++#: ui/composer-editor.ui:471 + msgid "Insert an image" + msgstr "Вставити зображення" + +-#: ui/composer-widget.ui:1028 ++#: ui/composer-editor.ui:513 + msgid "Undo last edit" + msgstr "Скасувати останнє редагування" + +-#: ui/composer-widget.ui:1052 ++#: ui/composer-editor.ui:537 + msgid "Redo last edit" + msgstr "Повторити останнє скасоване редагування" + +-#: ui/composer-widget.ui:1081 ui/composer-widget.ui:1106 ++#: ui/composer-editor.ui:566 ui/composer-editor.ui:591 + msgid "Attach a file" + msgstr "Вкласти файл" + +-#: ui/composer-widget.ui:1130 ++#: ui/composer-editor.ui:615 + msgid "Add original attachments" + msgstr "Додати початкові долучення" + +-#: ui/composer-widget.ui:1175 ++#: ui/composer-editor.ui:660 + msgid "More options" + msgstr "Ще параметри" + +-#: ui/composer-widget.ui:1195 ++#: ui/composer-editor.ui:680 + msgid "Show formatting toolbar" + msgstr "Показувати панель форматування" + +-#: ui/composer-widget.ui:1213 ++#: ui/composer-editor.ui:698 + msgid "Select spell checking languages" + msgstr "Виберіть мови для перевірки правопису" + +-#: ui/composer-widget.ui:1273 ++#: ui/composer-editor.ui:723 + msgid "S_ans Serif" + msgstr "_Без засічок" + +-#: ui/composer-widget.ui:1278 ++#: ui/composer-editor.ui:728 + msgid "S_erif" + msgstr "_З засічками" + +-#: ui/composer-widget.ui:1283 ++#: ui/composer-editor.ui:733 + msgid "_Fixed Width" + msgstr "_Фіксованої ширини" + +-#: ui/composer-widget.ui:1293 ++#: ui/composer-editor.ui:743 + msgid "_Small" + msgstr "_Малий" + +-#: ui/composer-widget.ui:1298 ++#: ui/composer-editor.ui:748 + msgid "_Medium" + msgstr "_Середній" + +-#: ui/composer-widget.ui:1303 ++#: ui/composer-editor.ui:753 + msgid "Lar_ge" + msgstr "Ве_ликий" + +-#: ui/composer-widget.ui:1313 ++#: ui/composer-editor.ui:763 + msgid "_Rich Text" + msgstr "_Форматований текст" + +-#: ui/composer-widget.ui:1318 ++#: ui/composer-editor.ui:768 + msgid "_Plain Text" + msgstr "_Звичайний текст" + ++#: ui/composer-editor-menus.ui:8 ++msgid "_Undo" ++msgstr "_Повернути" ++ ++#: ui/composer-editor-menus.ui:12 ++msgid "_Redo" ++msgstr "Пов_торити" ++ ++#: ui/composer-editor-menus.ui:18 ui/composer-editor-menus.ui:36 ++msgid "Cu_t" ++msgstr "_Вирізати" ++ ++#: ui/composer-editor-menus.ui:22 ui/composer-editor-menus.ui:40 ++#: ui/conversation-message-menus.ui:37 ++msgid "_Copy" ++msgstr "_Копіювати" ++ ++#: ui/composer-editor-menus.ui:26 ui/composer-editor-menus.ui:44 ++msgid "_Paste" ++msgstr "Вст_авити" ++ ++#: ui/composer-editor-menus.ui:30 ++msgctxt "Clipboard paste as plain text" ++msgid "Paste _Without Formatting" ++msgstr "Вставити _без форматування" ++ ++#: ui/composer-editor-menus.ui:50 ++msgid "Select _All" ++msgstr "Вибрати _все" ++ ++#: ui/composer-editor-menus.ui:57 ui/conversation-message-menus.ui:43 ++msgid "_Inspect…" ++msgstr "Дос_лідити…" ++ ++#: ui/composer-headerbar.ui:23 ui/composer-headerbar.ui:107 ++msgid "Detach the composer from the window" ++msgstr "Від'єднати вікно редактора від основного вікна" ++ ++#: ui/composer-headerbar.ui:135 ++msgid "_Send" ++msgstr "_Надіслати" ++ ++#: ui/composer-headerbar.ui:162 ++msgid "Discard and Close" ++msgstr "Відкинути і закрити" ++ ++#: ui/composer-headerbar.ui:186 ++msgid "Save and Close" ++msgstr "Зберегти і закрити" ++ ++#. Note that this button and the Update button will never be shown at the same time to the user. ++#: ui/composer-link-popover.ui:42 ++msgid "Insert the new link with this URL" ++msgstr "Вставити нове посилання із цією адресою" ++ ++#: ui/composer-link-popover.ui:43 ++msgid "Add" ++msgstr "Додати" ++ ++#: ui/composer-link-popover.ui:47 ++msgid "Link URL" ++msgstr "Адреса посилання" ++ ++#. Note that this button and the Insert button will never be shown at the same time to the user. ++#: ui/composer-link-popover.ui:61 ++msgid "Update this link’s URL" ++msgstr "Оновити цю адресу посилання" ++ ++#: ui/composer-link-popover.ui:62 ++msgid "Update" ++msgstr "Оновити" ++ ++#: ui/composer-link-popover.ui:75 ++msgid "Delete this link" ++msgstr "Вилучити це посилання" ++ ++#. Geary account mail will be sent from ++#: ui/composer-widget.ui:61 ++msgid "_From" ++msgstr "_Від" ++ ++#. Address(es) e-mail is to be sent to ++#: ui/composer-widget.ui:131 ++msgid "_To" ++msgstr "_Кому" ++ ++#: ui/composer-widget.ui:159 ++msgid "Show Cc, Bcc, and Reply-To fields" ++msgstr "Показувати поля «Копія», «Bcc» і «Відповідати до»" ++ ++#: ui/composer-widget.ui:220 ++msgid "_Cc" ++msgstr "Ко_пія" ++ ++#: ui/composer-widget.ui:268 ++msgid "_Bcc" ++msgstr "По_тайна копія" ++ ++#: ui/composer-widget.ui:316 ++msgid "_Reply-To" ++msgstr "_Відповісти" ++ ++#: ui/composer-widget.ui:373 ++msgid "_Subject" ++msgstr "_Тема" ++ ++#: ui/composer-widget.ui:446 ++msgid "Drop files here" ++msgstr "Перетягніть файли сюди" ++ ++#: ui/composer-widget.ui:462 ++msgid "To add them as attachments" ++msgstr "Щоб додати їх як долучення" ++ + #: ui/components-attachment-pane.ui:29 ui/components-attachment-pane.ui:47 + msgid "Select all attachments" + msgstr "Вибрати усі долучення" +@@ -3232,6 +3167,26 @@ msgstr "Відкрити вибрані долучення" + msgid "Save _All" + msgstr "Зберегти _все" + ++#: ui/components-conversation-actions.ui:85 ++msgid "Reply" ++msgstr "Відповісти" ++ ++#: ui/components-conversation-actions.ui:108 ++msgid "Reply All" ++msgstr "Відповісти всім" ++ ++#: ui/components-conversation-actions.ui:131 ++msgid "Forward" ++msgstr "Переслати" ++ ++#: ui/components-conversation-actions.ui:163 ++msgid "_Archive" ++msgstr "_Архівувати" ++ ++#: ui/components-conversation-actions.ui:211 ++msgid "Toggle find bar" ++msgstr "Увімкнути або вимкнути смужку пошуку" ++ + #: ui/components-inspector-error-view.ui:31 + msgid "" + "If the problem is serious or persists, please save and send these details to " +@@ -3773,35 +3728,19 @@ msgctxt "shortcut window" + msgid "Insert a link" + msgstr "Вставити посилання" + +-#: ui/main-toolbar.ui:24 ++#: ui/main-toolbar.ui:85 ui/main-toolbar.ui:179 ++msgid "Back" ++msgstr "Назад" ++ ++#: ui/main-toolbar.ui:104 + msgctxt "tooltip" + msgid "Compose Message" + msgstr "Нове повідомлення" + +-#: ui/main-toolbar.ui:62 ++#: ui/main-toolbar.ui:122 + msgid "Toggle search bar" + msgstr "Перемкнути панель пошуку" + +-#: ui/main-toolbar.ui:114 +-msgid "Reply" +-msgstr "Відповісти" +- +-#: ui/main-toolbar.ui:137 +-msgid "Reply All" +-msgstr "Відповісти всім" +- +-#: ui/main-toolbar.ui:160 +-msgid "Forward" +-msgstr "Переслати" +- +-#: ui/main-toolbar.ui:265 +-msgid "Toggle find bar" +-msgstr "Увімкнути або вимкнути смужку пошуку" +- +-#: ui/main-toolbar.ui:286 +-msgid "_Archive" +-msgstr "_Архівувати" +- + #: ui/main-toolbar-menus.ui:21 + msgid "Toggle as _Junk" + msgstr "Перемкнути позначення як сп_ам" +@@ -3837,3 +3776,52 @@ msgstr "_Засвідчення" + #: ui/upgrade_dialog.glade:60 + msgid "Geary update in progress…" + msgstr "Виконується оновлення…" ++ ++#~ msgid "Position of folder list pane" ++#~ msgstr "Розташування панелі списку тек" ++ ++#~ msgid "Position of the folder list Paned grabber." ++#~ msgstr "Розташування прив'язки панелі списку тек." ++ ++#~ msgid "Position of folder list pane when horizontal" ++#~ msgstr "Розташування панелі списку тек у горизонтальному режимі" ++ ++#~ msgid "" ++#~ "Position of the folder list Paned grabber in the horizontal orientation." ++#~ msgstr "Розташування прив'язки панелі списку тек у горизонтальному режимі." ++ ++#~ msgid "Position of folder list pane when vertical" ++#~ msgstr "Розташування панелі списку тек у вертикальному режимі" ++ ++#~ msgid "" ++#~ "Position of the folder list Paned grabber in the vertical orientation." ++#~ msgstr "Розташування прив'язки панелі списку тек у вертикальному режимі." ++ ++#~ msgid "Orientation of the folder list pane" ++#~ msgstr "Орієнтація панелі списку тек" ++ ++#~ msgid "True if the folder list Paned is in the horizontal orientation." ++#~ msgstr "" ++#~ "Значення «true», якщо прив'язка панелі списку тек перебуває у " ++#~ "горизонтальному режимі." ++ ++#~ msgid "Position of message list pane" ++#~ msgstr "Розташування панелі списку повідомлень" ++ ++#~ msgid "Position of the message list Paned grabber." ++#~ msgstr "Розташування прив'язки панелі списку повідомлень." ++ ++#~ msgid "Use _three pane view" ++#~ msgstr "Використовувати _ієрархію" ++ ++#~ msgid "Spacing" ++#~ msgstr "Інтервал" ++ ++#~ msgid "Spacing between children" ++#~ msgstr "Інтервал між дочірніми об’єктами" ++ ++#~ msgid "Row spacing" ++#~ msgstr "Міжрядковий інтервал" ++ ++#~ msgid "Spacing between rows of children" ++#~ msgstr "Інтервал між рядками дочірніх об'єктів" +-- +2.29.2 + diff --git a/mail-client/geary/files/0086-client-Remove-perf-relnote-it-s-not-really-that-note.patch b/mail-client/geary/files/0086-client-Remove-perf-relnote-it-s-not-really-that-note.patch new file mode 100644 index 0000000..80ca78d --- /dev/null +++ b/mail-client/geary/files/0086-client-Remove-perf-relnote-it-s-not-really-that-note.patch @@ -0,0 +1,32 @@ +From 4db6d01e2356a5c9542ee394ecfaea5aaf6ccab8 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Tue, 13 Oct 2020 18:49:57 +1100 +Subject: [PATCH 086/124] client: Remove perf relnote, it's not really that + noteworthy + +--- + desktop/org.gnome.Geary.appdata.xml.in.in | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/desktop/org.gnome.Geary.appdata.xml.in.in b/desktop/org.gnome.Geary.appdata.xml.in.in +index 471b69c4..7c1ddcab 100644 +--- a/desktop/org.gnome.Geary.appdata.xml.in.in ++++ b/desktop/org.gnome.Geary.appdata.xml.in.in +@@ -88,14 +88,6 @@ + geary + + +- +- +-

Enhancements included in this release:

+-
    +-
  • Conversation loading performance improvements
  • +-
+-
+-
+ + +

Enhancements included in this release:

+-- +2.29.2 + diff --git a/mail-client/geary/files/0087-Update-Turkish-translation.patch b/mail-client/geary/files/0087-Update-Turkish-translation.patch new file mode 100644 index 0000000..0ef2d93 --- /dev/null +++ b/mail-client/geary/files/0087-Update-Turkish-translation.patch @@ -0,0 +1,973 @@ +From 1f623bf100b78667e94a75d02a2a4a43512b827c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Emin=20Tufan=20=C3=87etin?= +Date: Tue, 13 Oct 2020 13:48:40 +0000 +Subject: [PATCH 087/124] Update Turkish translation + +--- + po/tr.po | 409 +++++++++++++++++++++++++++---------------------------- + 1 file changed, 201 insertions(+), 208 deletions(-) + +diff --git a/po/tr.po b/po/tr.po +index f96666c5..51f95638 100644 +--- a/po/tr.po ++++ b/po/tr.po +@@ -16,8 +16,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary.mainline\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-08-30 09:31+0000\n" +-"PO-Revision-Date: 2020-08-30 12:32+0300\n" ++"POT-Creation-Date: 2020-10-12 10:41+0000\n" ++"PO-Revision-Date: 2020-10-13 16:47+0300\n" + "Last-Translator: Emin Tufan Çetin \n" + "Language-Team: Turkish \n" + "Language: tr\n" +@@ -25,7 +25,7 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Poedit 2.4\n" ++"X-Generator: Poedit 2.4.1\n" + + #: desktop/geary-attach.contract.desktop.in:3 + msgid "Send by email" +@@ -40,7 +40,7 @@ msgstr "Dosyaları Geary kullanarak gönderin" + #: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 + #: src/client/accounts/accounts-editor-servers-pane.vala:560 +-#: src/client/application/application-main-window.vala:608 ++#: src/client/application/application-main-window.vala:628 + msgid "Geary" + msgstr "Geary" + +@@ -161,75 +161,34 @@ msgid "The last recorded height of the application window." + msgstr "Uygulama penceresinin kaydedilen son yüksekliği." + + #: desktop/org.gnome.Geary.gschema.xml:26 +-msgid "Position of folder list pane" +-msgstr "Klasör listesi bölmesinin konumu" +- +-#: desktop/org.gnome.Geary.gschema.xml:27 +-msgid "Position of the folder list Paned grabber." +-msgstr "Klasör listesi bölmesi yakalayıcının konumu." +- +-#: desktop/org.gnome.Geary.gschema.xml:32 +-msgid "Position of folder list pane when horizontal" +-msgstr "Klasör listesi bölmesinin yataykenki konumu" +- +-#: desktop/org.gnome.Geary.gschema.xml:33 +-msgid "" +-"Position of the folder list Paned grabber in the horizontal orientation." +-msgstr "Yatay yönelimde klasör listesi bölmesi yakalayıcının konumu." +- +-#: desktop/org.gnome.Geary.gschema.xml:38 +-msgid "Position of folder list pane when vertical" +-msgstr "Klasör listesi bölmesinin dikeykenki konumu" +- +-#: desktop/org.gnome.Geary.gschema.xml:39 +-msgid "Position of the folder list Paned grabber in the vertical orientation." +-msgstr "Dikey yönelimde klasör listesi bölmesi yakalayıcının konumu." +- +-#: desktop/org.gnome.Geary.gschema.xml:44 +-msgid "Orientation of the folder list pane" +-msgstr "Klasör listesi bölmesinin konumlandırması" +- +-#: desktop/org.gnome.Geary.gschema.xml:45 +-msgid "True if the folder list Paned is in the horizontal orientation." +-msgstr "Eğer klasör listesi bölmesi yatay yönelimdeyse doğru." +- +-#: desktop/org.gnome.Geary.gschema.xml:50 + msgid "Show/hide formatting toolbar" + msgstr "Biçimlendirme araç çubuğunu göster/gizle" + +-#: desktop/org.gnome.Geary.gschema.xml:51 ++#: desktop/org.gnome.Geary.gschema.xml:27 + msgid "True if the formatting toolbar in the composer is shown." + msgstr "Eğer oluşturucudaki biçimlendirme araç çubuğu gösterilecekse doğru." + +-#: desktop/org.gnome.Geary.gschema.xml:56 +-msgid "Position of message list pane" +-msgstr "İleti listesi bölmesinin konumu" +- +-#: desktop/org.gnome.Geary.gschema.xml:57 +-msgid "Position of the message list Paned grabber." +-msgstr "İleti listesi bölmesi yakalayıcının konumu." +- +-#: desktop/org.gnome.Geary.gschema.xml:62 ++#: desktop/org.gnome.Geary.gschema.xml:32 + msgid "Autoselect next message" + msgstr "Sonraki iletiyi kendiliğinden seç" + +-#: desktop/org.gnome.Geary.gschema.xml:63 ++#: desktop/org.gnome.Geary.gschema.xml:33 + msgid "True if we should autoselect the next available conversation." + msgstr "Eğer sonraki uygun konuşmayı kendiliğinden seçmemiz gerekiyorsa doğru." + +-#: desktop/org.gnome.Geary.gschema.xml:68 ++#: desktop/org.gnome.Geary.gschema.xml:38 + msgid "Display message previews" + msgstr "İleti ön izlemelerini göster" + +-#: desktop/org.gnome.Geary.gschema.xml:69 ++#: desktop/org.gnome.Geary.gschema.xml:39 + msgid "True if we should display a short preview of each message." + msgstr "Her iletinin kısa bir ön izlemesini göstermemiz gerekiyorsa doğru." + +-#: desktop/org.gnome.Geary.gschema.xml:74 ++#: desktop/org.gnome.Geary.gschema.xml:44 + msgid "Use single key shortcuts" + msgstr "Tek tuşlu kısayolları kullan" + +-#: desktop/org.gnome.Geary.gschema.xml:75 ++#: desktop/org.gnome.Geary.gschema.xml:45 + msgid "" + "Enables shortcuts for email actions that do not require pressing to " + "emulate those used by Gmail." +@@ -237,11 +196,11 @@ msgstr "" + "Gmailʼin kullandığına benzemek için eposta eylemlerinde ʼye basmayı " + "gerektirmeyen kısayolları etkinleştirir." + +-#: desktop/org.gnome.Geary.gschema.xml:82 ++#: desktop/org.gnome.Geary.gschema.xml:52 + msgid "Languages that shall be used in the spell checker" + msgstr "Yazım denetleyicide kullanılacak diller" + +-#: desktop/org.gnome.Geary.gschema.xml:83 ++#: desktop/org.gnome.Geary.gschema.xml:53 + msgid "" + "A list of POSIX locales, with the empty list disabling spell checking and " + "the null list using desktop languages by default." +@@ -249,11 +208,11 @@ msgstr "" + "POSIX yerellerinin listesi, boş listeyle imla denetimi devre dışı bırakılır " + "ve butlan (null) listeyle öntanımlı olarak masaüstü dillerini kullanılır." + +-#: desktop/org.gnome.Geary.gschema.xml:90 ++#: desktop/org.gnome.Geary.gschema.xml:60 + msgid "Languages that are displayed in the spell checker popover" + msgstr "Yazım denetleyici açılır penceresinde gösterilecek diller" + +-#: desktop/org.gnome.Geary.gschema.xml:91 ++#: desktop/org.gnome.Geary.gschema.xml:61 + msgid "" + "List of languages that are always displayed in the popover of the spell " + "checker." +@@ -261,62 +220,62 @@ msgstr "" + "Yazım denetleyicinin açılır penceresinde her zaman gösterilecek dillerin " + "listesi." + +-#: desktop/org.gnome.Geary.gschema.xml:96 ++#: desktop/org.gnome.Geary.gschema.xml:66 + msgid "Notify of new mail at startup" + msgstr "Başlangıçta yeni postanın bildirilmesi" + +-#: desktop/org.gnome.Geary.gschema.xml:97 ++#: desktop/org.gnome.Geary.gschema.xml:67 + msgid "True to notify of new mail at startup." + msgstr "Başlangıçta yeni postaların bildirilmesi için doğru." + +-#: desktop/org.gnome.Geary.gschema.xml:102 ++#: desktop/org.gnome.Geary.gschema.xml:72 + msgid "Ask when opening an attachment" + msgstr "Ek açarken sor" + +-#: desktop/org.gnome.Geary.gschema.xml:103 ++#: desktop/org.gnome.Geary.gschema.xml:73 + msgid "True to ask when opening an attachment." + msgstr "Eki açarken sormak için doğru." + +-#: desktop/org.gnome.Geary.gschema.xml:108 ++#: desktop/org.gnome.Geary.gschema.xml:78 + msgid "Whether to compose emails in HTML" + msgstr "E-postaların HTML’de oluşturulup oluşturulmayacağı" + +-#: desktop/org.gnome.Geary.gschema.xml:109 ++#: desktop/org.gnome.Geary.gschema.xml:79 + msgid "True to compose emails in HTML; false for plain text." + msgstr "E-postaları HTML’de oluşturmak için doğru, düz metin için yanlış." + +-#: desktop/org.gnome.Geary.gschema.xml:114 ++#: desktop/org.gnome.Geary.gschema.xml:84 + msgid "Advisory strategy for full-text searching" + msgstr "Tam metin arama için tavsiye niteliğinde izlem" + +-#: desktop/org.gnome.Geary.gschema.xml:115 ++#: desktop/org.gnome.Geary.gschema.xml:85 + msgid "" + "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." + msgstr "" + "Kabul edilebilir değerler şunlardır: “exact” (birebir), " + "“conservative” (ılımlı), “aggressive” (sert) ve “horizon”." + +-#: desktop/org.gnome.Geary.gschema.xml:120 ++#: desktop/org.gnome.Geary.gschema.xml:90 + msgid "Zoom of conversation viewer" + msgstr "Konuşma göstericisinin yakınlaşması" + +-#: desktop/org.gnome.Geary.gschema.xml:121 ++#: desktop/org.gnome.Geary.gschema.xml:91 + msgid "The zoom to apply on the conservation view." + msgstr "Konuşma görünümünde uygulanacak yakınlaşma." + +-#: desktop/org.gnome.Geary.gschema.xml:126 ++#: desktop/org.gnome.Geary.gschema.xml:96 + msgid "Size of detached composer window" + msgstr "Ayrılan oluşturucu penceresinin boyutu" + +-#: desktop/org.gnome.Geary.gschema.xml:127 ++#: desktop/org.gnome.Geary.gschema.xml:97 + msgid "The last recorded size of the detached composer window." + msgstr "Ayrılmış oluşturucu penceresinin kaydedilen son boyutu." + +-#: desktop/org.gnome.Geary.gschema.xml:132 ++#: desktop/org.gnome.Geary.gschema.xml:102 + msgid "Undo sending email delay" + msgstr "Eposta göndermeyi geri alma gecikmesi" + +-#: desktop/org.gnome.Geary.gschema.xml:133 ++#: desktop/org.gnome.Geary.gschema.xml:103 + msgid "" + "The number of seconds to wait before sending an email. Set to zero or less " + "to disable." +@@ -324,29 +283,29 @@ msgstr "" + "Eposta gönderilmeden önce beklenecek saniye. Devre dışı bırakmak için sıfır " + "veya daha azına belirleyin." + +-#: desktop/org.gnome.Geary.gschema.xml:139 ++#: desktop/org.gnome.Geary.gschema.xml:109 + msgid "Brief notification display time" + msgstr "Özet bildirim gösterim zamanı" + +-#: desktop/org.gnome.Geary.gschema.xml:140 ++#: desktop/org.gnome.Geary.gschema.xml:110 + msgid "" + "The length of time in seconds for which brief notifications should be " + "displayed." + msgstr "Özet bildirimlerin gösterileceği zamanın saniye türünde uzunluğu." + +-#: desktop/org.gnome.Geary.gschema.xml:146 ++#: desktop/org.gnome.Geary.gschema.xml:116 + msgid "List of optional plugins" + msgstr "İsteğe bağlı eklenti listesi" + +-#: desktop/org.gnome.Geary.gschema.xml:147 ++#: desktop/org.gnome.Geary.gschema.xml:117 + msgid "Plugins listed here will be loaded on startup." + msgstr "Burada listelenen eklentiler başlangıçta yüklenecek." + +-#: desktop/org.gnome.Geary.gschema.xml:152 ++#: desktop/org.gnome.Geary.gschema.xml:122 + msgid "Whether we migrated the old settings" + msgstr "Eski ayarları taşıyıp taşımayacağımız" + +-#: desktop/org.gnome.Geary.gschema.xml:153 ++#: desktop/org.gnome.Geary.gschema.xml:123 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -622,12 +581,12 @@ msgid_plural "%d days back" + msgstr[0] "%d gün öncesinden" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2061 ++#: src/client/application/application-main-window.vala:2129 + msgid "Undo" + msgstr "Geri Al" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2044 ++#: src/client/application/application-main-window.vala:2112 + msgid "Redo" + msgstr "Yinele" + +@@ -722,7 +681,7 @@ msgstr "TLS" + #. account + #. Translators: An info bar button label + #: src/client/accounts/accounts-editor-row.vala:539 +-#: src/client/application/application-main-window.vala:554 ++#: src/client/application/application-main-window.vala:574 + msgid "Login" + msgstr "Giriş" + +@@ -974,13 +933,13 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1047 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "`--hidden` seçeneği terk edilmiştir ve gelecekte kaldırılacaktır." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1080 ++#: src/client/application/application-client.vala:1078 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Tanınmayan program argümanı: “%s”" +@@ -1165,54 +1124,54 @@ msgid "Email to %s discarded" + msgstr "Şun(lar)a gidecek eposta gözden çıkarıldı: %s" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:540 ++#: src/client/application/application-main-window.vala:560 + msgid "Working offline" + msgstr "Çevrim dışı çalışıyor" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:542 ++#: src/client/application/application-main-window.vala:562 + msgid "You will not be able to send or receive email until re-connected." + msgstr "Yeniden bağlanana dek e-posta gönderemez veya alamazsınız." + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:549 ++#: src/client/application/application-main-window.vala:569 + msgid "Login problem" + msgstr "Giriş sorunu" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:551 ++#: src/client/application/application-main-window.vala:571 + msgid "An account has reported an incorrect login or password." + msgstr "Hesap yanlış bir giriş veya parola bildirdi." + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:558 ++#: src/client/application/application-main-window.vala:578 + msgid "Retry login, you will be prompted for your password" + msgstr "Giriş yapmayı yeniden dene, parola girmeniz istenecek" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:565 ++#: src/client/application/application-main-window.vala:585 + msgid "Security problem" + msgstr "Güvenlik sorunu" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:567 ++#: src/client/application/application-main-window.vala:587 + msgid "An account has reported an untrusted server." + msgstr "Hesap, güvenilmeyen bir sunucu bildirdi." + + #. Translators: An info bar button label +-#: src/client/application/application-main-window.vala:570 ++#: src/client/application/application-main-window.vala:590 + msgid "Check" + msgstr "Gözden geçir" + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:574 ++#: src/client/application/application-main-window.vala:594 + msgid "Check the security details for the connection" + msgstr "Bağlantı güvenlik ayrıntılarını gözden geçirin" + + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:617 ++#: src/client/application/application-main-window.vala:637 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" +@@ -1220,47 +1179,47 @@ msgstr "%s — %s" + #. Translators: The name of the folder group containing + #. folders created by people (as opposed to special-use + #. folders) +-#: src/client/application/application-main-window.vala:996 ++#: src/client/application/application-main-window.vala:1019 + #: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Etiketler" + +-#: src/client/application/application-main-window.vala:1293 ++#: src/client/application/application-main-window.vala:1337 + #, c-format + msgid "Empty all email from your %s folder?" + msgstr "%s klasörünüzdeki tüm e-postaları boşalt?" + +-#: src/client/application/application-main-window.vala:1294 ++#: src/client/application/application-main-window.vala:1338 + msgid "This removes the email from Geary and your email server." + msgstr "Bu işlem e-postayı Geary’den ve e-posta sunucunuzdan kaldırır." + +-#: src/client/application/application-main-window.vala:1295 ++#: src/client/application/application-main-window.vala:1339 + msgid "This cannot be undone." + msgstr "Bu geri alınamaz." + +-#: src/client/application/application-main-window.vala:1296 ++#: src/client/application/application-main-window.vala:1340 + #, c-format + msgid "Empty %s" + msgstr "%s boşalt" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1353 ++#: src/client/application/application-main-window.vala:1397 + msgid "Do you want to permanently delete this conversation?" + msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Bu konuşmaları kalıcı olarak silmek istiyor musunuz?" + +-#: src/client/application/application-main-window.vala:1358 +-#: src/client/application/application-main-window.vala:1373 ++#: src/client/application/application-main-window.vala:1402 ++#: src/client/application/application-main-window.vala:1417 + msgid "Delete" + msgstr "Sil" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1368 ++#: src/client/application/application-main-window.vala:1412 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Bu ileti(ler)i kalıcı olarak silmek istiyor musunuz?" + +-#: src/client/application/application-main-window.vala:1691 ++#: src/client/application/application-main-window.vala:1703 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1271,7 +1230,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1784 ++#: src/client/composer/composer-widget.vala:1792 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1292,6 +1251,36 @@ msgstr "" + msgid "Don’t _ask me again" + msgstr "Yeniden _sorma" + ++#: src/client/components/components-conversation-actions.vala:90 ++msgid "Mark conversation" ++msgid_plural "Mark conversations" ++msgstr[0] "Konuşmayı imle" ++ ++#: src/client/components/components-conversation-actions.vala:95 ++msgid "Add label to conversation" ++msgid_plural "Add label to conversations" ++msgstr[0] "Konuşmayı etiketle" ++ ++#: src/client/components/components-conversation-actions.vala:100 ++msgid "Move conversation" ++msgid_plural "Move conversations" ++msgstr[0] "Konuşmayı taşı" ++ ++#: src/client/components/components-conversation-actions.vala:105 ++msgid "Archive conversation" ++msgid_plural "Archive conversations" ++msgstr[0] "Konuşmayı arşivle" ++ ++#: src/client/components/components-conversation-actions.vala:116 ++msgid "Move conversation to Trash" ++msgid_plural "Move conversations to Trash" ++msgstr[0] "Konuşmayı Çöpʼe taşı" ++ ++#: src/client/components/components-conversation-actions.vala:126 ++msgid "Delete conversation" ++msgid_plural "Delete conversations" ++msgstr[0] "Konuşmayı sil" ++ + #: src/client/components/components-inspector.vala:78 + msgid "Inspector" + msgstr "İnceleyici" +@@ -1322,7 +1311,7 @@ msgstr "Farklı Kaydet" + + #: src/client/components/components-inspector.vala:230 + #: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "İptal Et" + +@@ -1338,15 +1327,10 @@ msgstr "Konuşma ön izlemesini _göster" + + #. / Translators: Preferences label + #: src/client/components/components-preferences-window.vala:144 +-msgid "Use _three pane view" +-msgstr "_Üç bölmeli görünümü kullan" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "_Tek tuşlu eposta kısayolları kullan" + +-#: src/client/components/components-preferences-window.vala:156 ++#: src/client/components/components-preferences-window.vala:146 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" +@@ -1355,22 +1339,22 @@ msgstr "" + "etkinleştir" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:167 ++#: src/client/components/components-preferences-window.vala:157 + msgid "_Watch for new mail when closed" + msgstr "Kapatıldığında yeni postayı _gözetle" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:171 ++#: src/client/components/components-preferences-window.vala:161 + msgid "Geary will keep running after all windows are closed" + msgstr "Geary, tüm pencereler kapatıldıktan sonra çalışmayı sürdürecek" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:189 ++#: src/client/components/components-preferences-window.vala:178 + msgid "Preferences" + msgstr "Tercihler" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:250 ++#: src/client/components/components-preferences-window.vala:234 + msgid "Plugins" + msgstr "Eklentiler" + +@@ -1489,36 +1473,6 @@ msgstr "Sunucu adı gerekli" + msgid "Could not look up server name" + msgstr "Sunucu adı yoklanamıyor" + +-#: src/client/components/main-toolbar.vala:116 +-msgid "Mark conversation" +-msgid_plural "Mark conversations" +-msgstr[0] "Konuşmayı imle" +- +-#: src/client/components/main-toolbar.vala:121 +-msgid "Add label to conversation" +-msgid_plural "Add label to conversations" +-msgstr[0] "Konuşmayı etiketle" +- +-#: src/client/components/main-toolbar.vala:126 +-msgid "Move conversation" +-msgid_plural "Move conversations" +-msgstr[0] "Konuşmayı taşı" +- +-#: src/client/components/main-toolbar.vala:131 +-msgid "Archive conversation" +-msgid_plural "Archive conversations" +-msgstr[0] "Konuşmayı arşivle" +- +-#: src/client/components/main-toolbar.vala:142 +-msgid "Move conversation to Trash" +-msgid_plural "Move conversations to Trash" +-msgstr[0] "Konuşmayı Çöpʼe taşı" +- +-#: src/client/components/main-toolbar.vala:152 +-msgid "Delete conversation" +-msgid_plural "Delete conversations" +-msgstr[0] "Konuşmayı sil" +- + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1650,92 +1604,92 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:862 ++#: src/client/composer/composer-widget.vala:865 + msgid "Do you want to keep or discard this draft message?" + msgstr "Bu iletiyi saklamak mı yoksa gözden çıkarmak mı istersiniz?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:888 ++#: src/client/composer/composer-widget.vala:891 + msgid "Do you want to discard this draft message?" + msgstr "Bu taslak iletiyi gözden çıkarmak istiyor musunuz?" + +-#: src/client/composer/composer-widget.vala:1440 ++#: src/client/composer/composer-widget.vala:1448 + msgid "Send message with an empty subject and body?" + msgstr "İleti konusu ve gövdesi olmadan gönderilsin mi?" + +-#: src/client/composer/composer-widget.vala:1442 ++#: src/client/composer/composer-widget.vala:1450 + msgid "Send message with an empty subject?" + msgstr "İleti konusu olmadan gönderilsin mi?" + +-#: src/client/composer/composer-widget.vala:1444 ++#: src/client/composer/composer-widget.vala:1452 + msgid "Send message with an empty body?" + msgstr "İleti, ileti gövdesi olmadan gönderilsin mi?" + +-#: src/client/composer/composer-widget.vala:1453 ++#: src/client/composer/composer-widget.vala:1461 + msgid "Send message without an attachment?" + msgstr "İleti eki olmadan gönderilsin mi?" + +-#: src/client/composer/composer-widget.vala:1772 ++#: src/client/composer/composer-widget.vala:1780 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "“%s” gönderim için zaten eklendi." + +-#: src/client/composer/composer-widget.vala:1804 +-#: src/client/composer/composer-widget.vala:1854 ++#: src/client/composer/composer-widget.vala:1812 ++#: src/client/composer/composer-widget.vala:1862 + #, c-format + msgid "“%s” is an empty file." + msgstr "“%s” boş bir dosya." + +-#: src/client/composer/composer-widget.vala:1842 ++#: src/client/composer/composer-widget.vala:1850 + #, c-format + msgid "“%s” could not be found." + msgstr "“%s” bulunamadı." + +-#: src/client/composer/composer-widget.vala:1848 ++#: src/client/composer/composer-widget.vala:1856 + #, c-format + msgid "“%s” is a folder." + msgstr "“%s” bir klasör." + +-#: src/client/composer/composer-widget.vala:1867 ++#: src/client/composer/composer-widget.vala:1875 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "“%s” okuma için açılamadı." + +-#: src/client/composer/composer-widget.vala:1875 ++#: src/client/composer/composer-widget.vala:1883 + msgid "Cannot add attachment" + msgstr "Eklenti eklenemiyor" + + #. Translators: This is the name of the file chooser filter + #. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:1946 ++#: src/client/composer/composer-widget.vala:1954 + msgid "Images" + msgstr "Resimler" + + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:2010 ++#: src/client/composer/composer-widget.vala:2018 + #: src/client/conversation-viewer/conversation-email.vala:542 + #: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Kime:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:2016 ++#: src/client/composer/composer-widget.vala:2024 + #: src/client/conversation-viewer/conversation-email.vala:547 + #: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Cc:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2022 ++#: src/client/composer/composer-widget.vala:2030 + #: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Bcc:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2028 ++#: src/client/composer/composer-widget.vala:2036 + msgid "Reply-To: " + msgstr "Şuna Yanıtla: " + +@@ -1744,7 +1698,7 @@ msgstr "Şuna Yanıtla: " + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2146 ++#: src/client/composer/composer-widget.vala:2154 + #, c-format + msgid "%1$s via %2$s" + msgstr "%2$s aracılığıyla %1$s" +@@ -1762,49 +1716,49 @@ msgid "Search for more languages" + msgstr "Daha çok dil için ara" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:339 ++#: src/client/conversation-list/conversation-list-view.vala:389 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "Konuşmayı _Çöpʼe taşı" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:351 ++#: src/client/conversation-list/conversation-list-view.vala:401 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "Konuşmayı _sil" + +-#: src/client/conversation-list/conversation-list-view.vala:364 ++#: src/client/conversation-list/conversation-list-view.vala:414 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "_Okundu olarak imle" + +-#: src/client/conversation-list/conversation-list-view.vala:372 ++#: src/client/conversation-list/conversation-list-view.vala:422 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Ok_unmamış olarak imle" + +-#: src/client/conversation-list/conversation-list-view.vala:380 ++#: src/client/conversation-list/conversation-list-view.vala:430 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "Y_ıldızı kaldır" + +-#: src/client/conversation-list/conversation-list-view.vala:387 ++#: src/client/conversation-list/conversation-list-view.vala:437 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "_Yıldızla" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:396 ++#: src/client/conversation-list/conversation-list-view.vala:446 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "_Yanıtla" + +-#: src/client/conversation-list/conversation-list-view.vala:402 ++#: src/client/conversation-list/conversation-list-view.vala:452 + msgid "R_eply All" + msgstr "Tümüne _Yanıtla" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:408 ++#: src/client/conversation-list/conversation-list-view.vala:458 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Yönlendir" +@@ -1894,25 +1848,25 @@ msgstr "Gönderenden her zaman göster" + + #. Translators: Title label for placeholder when no + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:83 ++#: src/client/conversation-viewer/conversation-viewer.vala:87 + msgid "No conversations selected" + msgstr "Konuşma seçilmedi" + + #. Translators: Sub-title label for placeholder when no + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:87 ++#: src/client/conversation-viewer/conversation-viewer.vala:91 + msgid "Selecting a conversation from the list will display it here" + msgstr "Listeden bir ileti seçtiğinizde burada gösterilecek" + + #. Translators: Title label for placeholder when multiple + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:96 ++#: src/client/conversation-viewer/conversation-viewer.vala:100 + msgid "Multiple conversations selected" + msgstr "Birden çok konuşma seçildi" + + #. Translators: Sub-title label for placeholder when multiple + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:100 ++#: src/client/conversation-viewer/conversation-viewer.vala:104 + msgid "Choosing an action will apply to all selected conversations" + msgstr "Bir eylem seçtiğinizde tüm seçili konuşmalara uygulanacaktır" + +@@ -1920,20 +1874,20 @@ msgstr "Bir eylem seçtiğinizde tüm seçili konuşmalara uygulanacaktır" + #. conversations have exist in a folder. + #. Translators: Title label for placeholder when no + #. conversations have been found in a search. +-#: src/client/conversation-viewer/conversation-viewer.vala:109 +-#: src/client/conversation-viewer/conversation-viewer.vala:122 ++#: src/client/conversation-viewer/conversation-viewer.vala:113 ++#: src/client/conversation-viewer/conversation-viewer.vala:126 + msgid "No conversations found" + msgstr "Konuşma bulunamadı" + + #. Translators: Sub-title label for placeholder when no + #. conversations have exist in a folder. +-#: src/client/conversation-viewer/conversation-viewer.vala:113 ++#: src/client/conversation-viewer/conversation-viewer.vala:117 + msgid "This folder does not contain any conversations" + msgstr "Bu klasör herhangi bir konuşma içermiyor" + + #. Translators: Sub-title label for placeholder when no + #. conversations have been found in a search. +-#: src/client/conversation-viewer/conversation-viewer.vala:126 ++#: src/client/conversation-viewer/conversation-viewer.vala:130 + msgid "Your search returned no results, try refining your search terms" + msgstr "Aramanız sonuçsuz kaldı, arama terimlerinizi arıtmayı deneyin" + +@@ -2652,7 +2606,7 @@ msgstr "okunmadı" + #. Draft mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:996 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:998 + msgid "Drafts | Draft" + msgstr "Taslaklar | Taslak" + +@@ -2660,14 +2614,14 @@ msgstr "Taslaklar | Taslak" + #. Sent mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1005 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1007 + msgid "Sent | Sent Mail | Sent Email | Sent E-Mail" + msgstr "" + "Gönderilmiş | Gönderilmiş Posta | Gönderilmiş Eposta | Gönderilmiş E-Posta" + + #. The localised name(s) of the Sent folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1010 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1012 + msgctxt "Outlook localised name" + msgid "Sent Items" + msgstr "Gönderilmiş Ögeler" +@@ -2676,7 +2630,7 @@ msgstr "Gönderilmiş Ögeler" + #. Junk/Spam mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1020 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1022 + msgid "" + "Junk | Spam | Junk Mail | Junk Email | Junk E-Mail | Bulk Mail | Bulk Email " + "| Bulk E-Mail" +@@ -2688,13 +2642,13 @@ msgstr "" + #. Trash mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1030 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1032 + msgid "Trash | Rubbish | Rubbish Bin" + msgstr "Çöp | Çöp | Çöp Kutusu" + + #. The localised name(s) of the Trash folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1035 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1037 + msgctxt "Outlook localised name" + msgid "Deleted Items" + msgstr "Silinen Ögeler" +@@ -2703,7 +2657,7 @@ msgstr "Silinen Ögeler" + #. Archive mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1045 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1047 + msgid "Archive | Archives" + msgstr "Arşiv | Arşivler" + +@@ -3079,6 +3033,26 @@ msgstr "Seçilen ekleri aç" + msgid "Save _All" + msgstr "_Tümünü Kaydet" + ++#: ui/components-conversation-actions.ui:85 ++msgid "Reply" ++msgstr "Yanıtla" ++ ++#: ui/components-conversation-actions.ui:108 ++msgid "Reply All" ++msgstr "Tümüne Yanıtla" ++ ++#: ui/components-conversation-actions.ui:131 ++msgid "Forward" ++msgstr "Yönlendir" ++ ++#: ui/components-conversation-actions.ui:163 ++msgid "_Archive" ++msgstr "_Arşivle" ++ ++#: ui/components-conversation-actions.ui:211 ++msgid "Toggle find bar" ++msgstr "Bulma çubuğunu aç" ++ + #: ui/components-inspector-error-view.ui:31 + msgid "" + "If the problem is serious or persists, please save and send these details to " +@@ -3616,35 +3590,19 @@ msgctxt "shortcut window" + msgid "Insert a link" + msgstr "Bağlantı yerleştir" + +-#: ui/main-toolbar.ui:24 ++#: ui/main-toolbar.ui:85 ui/main-toolbar.ui:179 ++msgid "Back" ++msgstr "Geri" ++ ++#: ui/main-toolbar.ui:104 + msgctxt "tooltip" + msgid "Compose Message" + msgstr "İleti Oluştur" + +-#: ui/main-toolbar.ui:62 ++#: ui/main-toolbar.ui:122 + msgid "Toggle search bar" + msgstr "Arama çubuğunu aç" + +-#: ui/main-toolbar.ui:114 +-msgid "Reply" +-msgstr "Yanıtla" +- +-#: ui/main-toolbar.ui:137 +-msgid "Reply All" +-msgstr "Tümüne Yanıtla" +- +-#: ui/main-toolbar.ui:160 +-msgid "Forward" +-msgstr "Yönlendir" +- +-#: ui/main-toolbar.ui:265 +-msgid "Toggle find bar" +-msgstr "Bulma çubuğunu aç" +- +-#: ui/main-toolbar.ui:286 +-msgid "_Archive" +-msgstr "_Arşivle" +- + #: ui/main-toolbar-menus.ui:21 + msgid "Toggle as _Junk" + msgstr "_Gereksiz olarak imle" +@@ -3681,6 +3639,41 @@ msgstr "_Kimlik Doğrula" + msgid "Geary update in progress…" + msgstr "Geary güncellemesi sürüyor…" + ++#~ msgid "Position of folder list pane" ++#~ msgstr "Klasör listesi bölmesinin konumu" ++ ++#~ msgid "Position of the folder list Paned grabber." ++#~ msgstr "Klasör listesi bölmesi yakalayıcının konumu." ++ ++#~ msgid "Position of folder list pane when horizontal" ++#~ msgstr "Klasör listesi bölmesinin yataykenki konumu" ++ ++#~ msgid "" ++#~ "Position of the folder list Paned grabber in the horizontal orientation." ++#~ msgstr "Yatay yönelimde klasör listesi bölmesi yakalayıcının konumu." ++ ++#~ msgid "Position of folder list pane when vertical" ++#~ msgstr "Klasör listesi bölmesinin dikeykenki konumu" ++ ++#~ msgid "" ++#~ "Position of the folder list Paned grabber in the vertical orientation." ++#~ msgstr "Dikey yönelimde klasör listesi bölmesi yakalayıcının konumu." ++ ++#~ msgid "Orientation of the folder list pane" ++#~ msgstr "Klasör listesi bölmesinin konumlandırması" ++ ++#~ msgid "True if the folder list Paned is in the horizontal orientation." ++#~ msgstr "Eğer klasör listesi bölmesi yatay yönelimdeyse doğru." ++ ++#~ msgid "Position of message list pane" ++#~ msgstr "İleti listesi bölmesinin konumu" ++ ++#~ msgid "Position of the message list Paned grabber." ++#~ msgstr "İleti listesi bölmesi yakalayıcının konumu." ++ ++#~ msgid "Use _three pane view" ++#~ msgstr "_Üç bölmeli görünümü kullan" ++ + #~ msgid "Desktop Notifications" + #~ msgstr "Masaüstü Bildirimleri" + +-- +2.29.2 + diff --git a/mail-client/geary/files/0088-client-Move-Migrate-namespace-to-be-under-Util.patch b/mail-client/geary/files/0088-client-Move-Migrate-namespace-to-be-under-Util.patch new file mode 100644 index 0000000..a591af9 --- /dev/null +++ b/mail-client/geary/files/0088-client-Move-Migrate-namespace-to-be-under-Util.patch @@ -0,0 +1,57 @@ +From d7e05ab20e780042e6d7ee90f323a65c97b857f4 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Tue, 13 Oct 2020 19:23:58 +1100 +Subject: [PATCH 088/124] client: Move Migrate namespace to be under Util + +--- + src/client/application/application-configuration.vala | 2 +- + src/client/application/application-controller.vala | 6 ++++-- + src/client/util/util-migrate.vala | 2 +- + 3 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/src/client/application/application-configuration.vala b/src/client/application/application-configuration.vala +index 48542df6..eaaed36f 100644 +--- a/src/client/application/application-configuration.vala ++++ b/src/client/application/application-configuration.vala +@@ -146,7 +146,7 @@ public class Application.Configuration : Geary.BaseObject { + settings = new Settings(schema_id); + gnome_interface = new Settings("org.gnome.desktop.interface"); + +- Migrate.old_app_config(settings); ++ Util.Migrate.old_app_config(settings); + + this.bind(SINGLE_KEY_SHORTCUTS, this, SINGLE_KEY_SHORTCUTS); + } +diff --git a/src/client/application/application-controller.vala b/src/client/application/application-controller.vala +index 55864cda..9fd5966f 100644 +--- a/src/client/application/application-controller.vala ++++ b/src/client/application/application-controller.vala +@@ -171,8 +171,10 @@ internal class Application.Controller : + ); + + // Migrate configuration if necessary. +- Migrate.xdg_config_dir(this.application.get_user_data_directory(), +- this.application.get_user_config_directory()); ++ Util.Migrate.xdg_config_dir( ++ this.application.get_user_data_directory(), ++ this.application.get_user_config_directory() ++ ); + + // Hook up cert, accounts and credentials machinery + +diff --git a/src/client/util/util-migrate.vala b/src/client/util/util-migrate.vala +index f4a905ed..9cebcfc6 100644 +--- a/src/client/util/util-migrate.vala ++++ b/src/client/util/util-migrate.vala +@@ -4,7 +4,7 @@ + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +-namespace Migrate { ++namespace Util.Migrate { + private const string GROUP = "AccountInformation"; + private const string PRIMARY_EMAIL_KEY = "primary_email"; + private const string SETTINGS_FILENAME = Accounts.Manager.SETTINGS_FILENAME; +-- +2.29.2 + diff --git a/mail-client/geary/files/0089-Application.Controller-Clean-up-config-data-vars-in-.patch b/mail-client/geary/files/0089-Application.Controller-Clean-up-config-data-vars-in-.patch new file mode 100644 index 0000000..f17e767 --- /dev/null +++ b/mail-client/geary/files/0089-Application.Controller-Clean-up-config-data-vars-in-.patch @@ -0,0 +1,58 @@ +From e8061379ec022f8ce1ecb163a574192af5b8ac80 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Tue, 13 Oct 2020 23:32:46 +1100 +Subject: [PATCH 089/124] Application.Controller: Clean up config/data vars in + ctor + +--- + src/client/application/application-controller.vala | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/src/client/application/application-controller.vala b/src/client/application/application-controller.vala +index 9fd5966f..ef634489 100644 +--- a/src/client/application/application-controller.vala ++++ b/src/client/application/application-controller.vala +@@ -125,6 +125,9 @@ internal class Application.Controller : + this.application = application; + this.controller_open = cancellable; + ++ GLib.File config_dir = application.get_user_config_directory(); ++ GLib.File data_dir = application.get_user_data_directory(); ++ + // This initializes the IconFactory, important to do before + // the actions are created (as they refer to some of Geary's + // custom icons) +@@ -139,9 +142,7 @@ internal class Application.Controller : + this.application.get_web_extensions_dir(), + this.application.get_user_cache_directory().get_child("web-resources") + ); +- Components.WebView.load_resources( +- this.application.get_user_config_directory() +- ); ++ Components.WebView.load_resources(config_dir); + Composer.WebView.load_resources(); + ConversationWebView.load_resources(); + Accounts.SignatureWebView.load_resources(); +@@ -179,7 +180,7 @@ internal class Application.Controller : + // Hook up cert, accounts and credentials machinery + + this.certificate_manager = yield new Application.CertificateManager( +- this.application.get_user_data_directory().get_child("pinned-certs"), ++ config_dir.get_child("pinned-certs"), + cancellable + ); + +@@ -189,8 +190,8 @@ internal class Application.Controller : + + this.account_manager = new Accounts.Manager( + libsecret, +- this.application.get_user_config_directory(), +- this.application.get_user_data_directory() ++ config_dir, ++ data_dir + ); + this.account_manager.account_added.connect( + on_account_added +-- +2.29.2 + diff --git a/mail-client/geary/files/0090-Application.Controller-Clean-up-invoking-XDG-config-.patch b/mail-client/geary/files/0090-Application.Controller-Clean-up-invoking-XDG-config-.patch new file mode 100644 index 0000000..c7d4163 --- /dev/null +++ b/mail-client/geary/files/0090-Application.Controller-Clean-up-invoking-XDG-config-.patch @@ -0,0 +1,69 @@ +From 693484148432c7e23ca255e9759b1ff5b24fdfca Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Tue, 13 Oct 2020 23:33:55 +1100 +Subject: [PATCH 090/124] Application.Controller: Clean up invoking XDG config + migration + +Order args to better, create the config dir in the controller since +that is always needed, regardless of any migrations. +--- + src/client/application/application-controller.vala | 12 ++++++++---- + src/client/util/util-migrate.vala | 13 +++---------- + 2 files changed, 11 insertions(+), 14 deletions(-) + +diff --git a/src/client/application/application-controller.vala b/src/client/application/application-controller.vala +index ef634489..24c244c8 100644 +--- a/src/client/application/application-controller.vala ++++ b/src/client/application/application-controller.vala +@@ -171,11 +171,15 @@ internal class Application.Controller : + this.application.get_app_plugins_dir() + ); + ++ // Create standard config directory ++ try { ++ config_dir.make_directory_with_parents(); ++ } catch (GLib.IOError.EXISTS err) { ++ // fine ++ } ++ + // Migrate configuration if necessary. +- Util.Migrate.xdg_config_dir( +- this.application.get_user_data_directory(), +- this.application.get_user_config_directory() +- ); ++ Util.Migrate.xdg_config_dir(config_dir, data_dir); + + // Hook up cert, accounts and credentials machinery + +diff --git a/src/client/util/util-migrate.vala b/src/client/util/util-migrate.vala +index 9cebcfc6..edb07b45 100644 +--- a/src/client/util/util-migrate.vala ++++ b/src/client/util/util-migrate.vala +@@ -19,21 +19,14 @@ namespace Util.Migrate { + * It also appends a "primary_email" key to the new configuration file to reliaby keep + * track of the user's email address. + */ +- public static void xdg_config_dir(File user_data_dir, File user_config_dir) throws Error { ++ public static void xdg_config_dir(GLib.File user_config_dir, ++ GLib.File user_data_dir) ++ throws GLib.Error { + File new_config_dir; + File old_data_dir; + File new_config_file; + File old_config_file; + +- // Create ~/.config/geary +- try { +- user_config_dir.make_directory_with_parents(); +- } catch (Error err) { +- // The user may have already created the directory, so don't throw EXISTS. +- if (!(err is IOError.EXISTS)) +- throw err; +- } +- + // Return if Geary has never been run (~/.local/share/geary does not exist). + if (!user_data_dir.query_exists()) + return; +-- +2.29.2 + diff --git a/mail-client/geary/files/0091-Application.Client-Rename-app-user-dirs-to-home-dirs.patch b/mail-client/geary/files/0091-Application.Client-Rename-app-user-dirs-to-home-dirs.patch new file mode 100644 index 0000000..80a28c8 --- /dev/null +++ b/mail-client/geary/files/0091-Application.Client-Rename-app-user-dirs-to-home-dirs.patch @@ -0,0 +1,72 @@ +From 468ea6df5845b0014396114debc5ace6cbded769 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Tue, 13 Oct 2020 23:40:02 +1100 +Subject: [PATCH 091/124] Application.Client: Rename app user dirs to home dirs + +--- + src/client/application/application-client.vala | 12 ++++++------ + src/client/application/application-controller.vala | 8 +++++--- + 2 files changed, 11 insertions(+), 9 deletions(-) + +diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala +index e7f980c0..9bd05c31 100644 +--- a/src/client/application/application-client.vala ++++ b/src/client/application/application-client.vala +@@ -759,22 +759,22 @@ public class Application.Client : Gtk.Application { + } + } + +- /** Returns the application's base user configuration directory. */ +- public GLib.File get_user_config_directory() { ++ /** Returns the application's base home configuration directory. */ ++ public GLib.File get_home_config_directory() { + return GLib.File.new_for_path( + Environment.get_user_config_dir() + ).get_child("geary"); + } + +- /** Returns the application's base user cache directory. */ +- public GLib.File get_user_cache_directory() { ++ /** Returns the application's base home cache directory. */ ++ public GLib.File get_home_cache_directory() { + return GLib.File.new_for_path( + GLib.Environment.get_user_cache_dir() + ).get_child("geary"); + } + +- /** Returns the application's base user data directory. */ +- public GLib.File get_user_data_directory() { ++ /** Returns the application's base home data directory. */ ++ public GLib.File get_home_data_directory() { + return GLib.File.new_for_path( + GLib.Environment.get_user_data_dir() + ).get_child("geary"); +diff --git a/src/client/application/application-controller.vala b/src/client/application/application-controller.vala +index 24c244c8..a70b702b 100644 +--- a/src/client/application/application-controller.vala ++++ b/src/client/application/application-controller.vala +@@ -125,8 +125,8 @@ internal class Application.Controller : + this.application = application; + this.controller_open = cancellable; + +- GLib.File config_dir = application.get_user_config_directory(); +- GLib.File data_dir = application.get_user_data_directory(); ++ GLib.File config_dir = application.get_home_config_directory(); ++ GLib.File data_dir = application.get_home_data_directory(); + + // This initializes the IconFactory, important to do before + // the actions are created (as they refer to some of Geary's +@@ -140,7 +140,9 @@ internal class Application.Controller : + Components.WebView.init_web_context( + this.application.config, + this.application.get_web_extensions_dir(), +- this.application.get_user_cache_directory().get_child("web-resources") ++ this.application.get_home_cache_directory().get_child( ++ "web-resources" ++ ) + ); + Components.WebView.load_resources(config_dir); + Composer.WebView.load_resources(); +-- +2.29.2 + diff --git a/mail-client/geary/files/0092-Geary.Controller-Migrate-release-config-if-needed.patch b/mail-client/geary/files/0092-Geary.Controller-Migrate-release-config-if-needed.patch new file mode 100644 index 0000000..5362232 --- /dev/null +++ b/mail-client/geary/files/0092-Geary.Controller-Migrate-release-config-if-needed.patch @@ -0,0 +1,246 @@ +From 9658e9e3b41e9f851384c2a0ddce187fd40f1414 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Tue, 13 Oct 2020 23:42:53 +1100 +Subject: [PATCH 092/124] Geary.Controller: Migrate release config if needed + +If the current config directory is empty, go looking for config data +in other well known locations and if found, copy it all across from +the most recently modified directory. + +This supports migrating config from non-Flatpak to Flatpak locations, +and release config to devel profile locations. + +Fixes #326 +--- + .../application/application-client.vala | 28 ++++ + .../application/application-controller.vala | 3 + + src/client/util/util-migrate.vala | 149 +++++++++++++++++- + 3 files changed, 177 insertions(+), 3 deletions(-) + +diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala +index 9bd05c31..a61a6855 100644 +--- a/src/client/application/application-client.vala ++++ b/src/client/application/application-client.vala +@@ -858,6 +858,34 @@ public class Application.Client : Gtk.Application { + } + } + ++ /** ++ * Returns a set of paths of possible config locations. ++ * ++ * This is useful only for migrating configuration from ++ * non-Flatpak to Flatpak or release-builds to non-release builds. ++ */ ++ internal GLib.File[] get_config_search_path() { ++ var paths = new GLib.File[] {}; ++ var home = GLib.File.new_for_path(GLib.Environment.get_home_dir()); ++ paths += home.get_child( ++ ".config" ++ ).get_child( ++ "geary" ++ ); ++ paths += home.get_child( ++ ".var" ++ ).get_child( ++ "app" ++ ).get_child( ++ "org.gnome.Geary" ++ ).get_child( ++ "config" ++ ).get_child( ++ "geary" ++ ); ++ return paths; ++ } ++ + /** + * Displays an error notification. + * +diff --git a/src/client/application/application-controller.vala b/src/client/application/application-controller.vala +index a70b702b..2237aa61 100644 +--- a/src/client/application/application-controller.vala ++++ b/src/client/application/application-controller.vala +@@ -182,6 +182,9 @@ internal class Application.Controller : + + // Migrate configuration if necessary. + Util.Migrate.xdg_config_dir(config_dir, data_dir); ++ Util.Migrate.release_config( ++ application.get_config_search_path(), config_dir ++ ); + + // Hook up cert, accounts and credentials machinery + +diff --git a/src/client/util/util-migrate.vala b/src/client/util/util-migrate.vala +index edb07b45..31109c45 100644 +--- a/src/client/util/util-migrate.vala ++++ b/src/client/util/util-migrate.vala +@@ -1,8 +1,10 @@ +-/* Copyright 2016 Software Freedom Conservancy Inc. ++/* ++ * Copyright © 2016 Software Freedom Conservancy Inc. ++ * Copyright © 2020 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License +- * (version 2.1 or later). See the COPYING file in this distribution. +- */ ++ * (version 2.1 or later). See the COPYING file in this distribution. ++n */ + + namespace Util.Migrate { + private const string GROUP = "AccountInformation"; +@@ -102,6 +104,145 @@ namespace Util.Migrate { + } + } + ++ /** ++ * Migrates configuration from release build locations. ++ * ++ * This will migrate configuration from release build locations to ++ * the current config directory, if and only if the current config ++ * directory is empty. For example, from the standard ++ * distro-package config location to the current Flatpak location, ++ * or from either to a development config location. ++ */ ++ public static void release_config(GLib.File[] search_path, ++ GLib.File config_dir) ++ throws GLib.Error { ++ if (is_directory_empty(config_dir)) { ++ GLib.File? most_recent = null; ++ GLib.DateTime most_recent_modified = null; ++ foreach (var source in search_path) { ++ if (!source.equal(config_dir)) { ++ GLib.DateTime? src_modified = null; ++ try { ++ GLib.FileInfo? src_info = source.query_info( ++ GLib.FileAttribute.TIME_MODIFIED, 0 ++ ); ++ if (src_info != null) { ++ src_modified = ++ src_info.get_modification_date_time(); ++ } ++ } catch (GLib.IOError.NOT_FOUND err) { ++ // fine ++ } catch (GLib.Error err) { ++ debug( ++ "Error querying release config dir %s: %s", ++ source.get_path(), ++ err.message ++ ); ++ } ++ if (most_recent_modified == null || ++ (src_modified != null && ++ most_recent_modified.compare(src_modified) < 0)) { ++ most_recent = source; ++ most_recent_modified = src_modified; ++ } ++ } ++ } ++ ++ if (most_recent != null) { ++ try { ++ debug( ++ "Migrating release config from %s to %s", ++ most_recent.get_path(), ++ config_dir.get_path() ++ ); ++ recursive_copy(most_recent, config_dir); ++ } catch (GLib.Error err) { ++ debug("Error migrating release config: %s", err.message); ++ } ++ } ++ } ++ } ++ ++ private bool is_directory_empty(GLib.File dir) { ++ bool is_empty = true; ++ GLib.FileEnumerator? existing = null; ++ try { ++ existing = dir.enumerate_children( ++ GLib.FileAttribute.STANDARD_TYPE, 0 ++ ); ++ } catch (GLib.IOError.NOT_FOUND err) { ++ // fine ++ } catch (GLib.Error err) { ++ debug( ++ "Error enumerating directory %s: %s", ++ dir.get_path(), ++ err.message ++ ); ++ } ++ ++ if (existing != null) { ++ try { ++ is_empty = existing.next_file() == null; ++ } catch (GLib.Error err) { ++ debug( ++ "Error getting next child in directory %s: %s", ++ dir.get_path(), ++ err.message ++ ); ++ } ++ ++ try { ++ existing.close(); ++ } catch (GLib.Error err) { ++ debug( ++ "Error closing directory enumeration %s: %s", ++ dir.get_path(), ++ err.message ++ ); ++ } ++ } ++ ++ return is_empty; ++ } ++ ++ private static void recursive_copy(GLib.File src, ++ GLib.File dest, ++ GLib.Cancellable? cancellable = null ++ ) throws GLib.Error { ++ switch (src.query_file_type(NONE, cancellable)) { ++ case DIRECTORY: ++ try { ++ dest.make_directory(cancellable); ++ } catch (GLib.IOError.EXISTS err) { ++ // fine ++ } ++ src.copy_attributes(dest, NONE, cancellable); ++ ++ GLib.FileEnumerator children = src.enumerate_children( ++ GLib.FileAttribute.STANDARD_NAME, ++ NONE, ++ cancellable ++ ); ++ GLib.FileInfo? child = children.next_file(cancellable); ++ while (child != null) { ++ recursive_copy( ++ src.get_child(child.get_name()), ++ dest.get_child(child.get_name()) ++ ); ++ child = children.next_file(cancellable); ++ } ++ break; ++ ++ case REGULAR: ++ src.copy(dest, NONE, cancellable); ++ break; ++ ++ default: ++ // no-op ++ break; ++ } ++ } ++ + public const string OLD_APP_ID = "org.yorba.geary"; + private const string MIGRATED_CONFIG_KEY = "migrated-config"; + +@@ -130,4 +271,6 @@ namespace Util.Migrate { + + newSettings.set_boolean(MIGRATED_CONFIG_KEY, true); + } ++ ++ + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0093-org.gnome.Geary.yaml-Enable-copying-release-config-f.patch b/mail-client/geary/files/0093-org.gnome.Geary.yaml-Enable-copying-release-config-f.patch new file mode 100644 index 0000000..94d1315 --- /dev/null +++ b/mail-client/geary/files/0093-org.gnome.Geary.yaml-Enable-copying-release-config-f.patch @@ -0,0 +1,42 @@ +From 899834189cb8a077fe2b67b0088761cfae5d7452 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Tue, 13 Oct 2020 23:45:44 +1100 +Subject: [PATCH 093/124] org.gnome.Geary.yaml: Enable copying release config + for nightlies + +--- + org.gnome.Geary.json | 2 ++ + org.gnome.Geary.yaml | 4 ++++ + 2 files changed, 6 insertions(+) + +diff --git a/org.gnome.Geary.json b/org.gnome.Geary.json +index 99e41612..7f55fb1f 100644 +--- a/org.gnome.Geary.json ++++ b/org.gnome.Geary.json +@@ -25,6 +25,8 @@ + "--talk-name=org.gnome.evolution.dataserver.Sources5", + "--filesystem=xdg-cache/evolution/addressbook:ro", + "--metadata=X-DConf=migrate-path=/org/gnome/Geary/", ++ "--filesystem=~/.config/geary:ro", ++ "--filesystem=~/.var/app/org.gnome.Geary/config/geary:ro", + "--filesystem=/tmp" + ], + "cleanup": [ +diff --git a/org.gnome.Geary.yaml b/org.gnome.Geary.yaml +index 0dd89a18..f5d200f6 100644 +--- a/org.gnome.Geary.yaml ++++ b/org.gnome.Geary.yaml +@@ -57,6 +57,10 @@ finish-args: + # Migrate GSettings into the sandbox + - "--metadata=X-DConf=migrate-path=/org/gnome/Geary/" + ++ # Migrate Geary settings from other release versions ++ - "--filesystem=~/.config/geary:ro" ++ - "--filesystem=~/.var/app/org.gnome.Geary/config/geary:ro" ++ + # Let view source keep on working as-sis for now. Bug 779311. */ + - "--filesystem=/tmp" + +-- +2.29.2 + diff --git a/mail-client/geary/files/0094-Application.Client-Support-determining-if-running-un.patch b/mail-client/geary/files/0094-Application.Client-Support-determining-if-running-un.patch new file mode 100644 index 0000000..88bd543 --- /dev/null +++ b/mail-client/geary/files/0094-Application.Client-Support-determining-if-running-un.patch @@ -0,0 +1,40 @@ +From 072156096d61889cc61445738e5122ad451bad61 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 14 Oct 2020 00:53:04 +1100 +Subject: [PATCH 094/124] Application.Client: Support determining if running + under flatpak + +--- + src/client/application/application-client.vala | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala +index a61a6855..7e8d9fbd 100644 +--- a/src/client/application/application-client.vala ++++ b/src/client/application/application-client.vala +@@ -212,6 +212,14 @@ public class Application.Client : Gtk.Application { + } + } + ++ /** ++ * Determines if Geary appears to be running under Flatpak. ++ * ++ * If this returns `true`, then the application instance ++ * appears to be running inside a Flatpak sandbox. ++ */ ++ public bool is_flatpak_sandboxed { get; private set; } ++ + /** + * The global controller for this application instance. + * +@@ -317,6 +325,7 @@ public class Application.Client : Gtk.Application { + ); + this.add_main_option_entries(OPTION_ENTRIES); + this.window_removed.connect_after(on_window_removed); ++ this.is_flatpak_sandboxed = GLib.FileUtils.test("/.flatpak-info", EXISTS); + } + + public override bool local_command_line(ref unowned string[] args, +-- +2.29.2 + diff --git a/mail-client/geary/files/0095-Application.Client-Introduce-and-use-consts-for-buil.patch b/mail-client/geary/files/0095-Application.Client-Introduce-and-use-consts-for-buil.patch new file mode 100644 index 0000000..01bf6c5 --- /dev/null +++ b/mail-client/geary/files/0095-Application.Client-Introduce-and-use-consts-for-buil.patch @@ -0,0 +1,43 @@ +From 99fc14a4e590596de263ecaa7a834b80e7793fa3 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 14 Oct 2020 00:53:35 +1100 +Subject: [PATCH 095/124] Application.Client: Introduce and use consts for + build profiles + +--- + src/client/application/application-client.vala | 5 +++++ + src/client/application/application-main-window.vala | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala +index 7e8d9fbd..6b3e7113 100644 +--- a/src/client/application/application-client.vala ++++ b/src/client/application/application-client.vala +@@ -43,6 +43,11 @@ public class Application.Client : Gtk.Application { + public const string SOURCE_ROOT_DIR = _SOURCE_ROOT_DIR; + public const string BUILD_ROOT_DIR = _BUILD_ROOT_DIR; + ++ // keep these in sync with meson_options.txt ++ public const string PROFILE_RELEASE = "release"; ++ public const string PROFILE_BETA = "beta"; ++ public const string PROFILE_DEVEL = "development"; ++ + public const string[] AUTHORS = { + "Jim Nelson ", + "Eric Gregory ", +diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala +index 2b77a6d7..90d5b249 100644 +--- a/src/client/application/application-main-window.vala ++++ b/src/client/application/application-main-window.vala +@@ -507,7 +507,7 @@ public class Application.MainWindow : + load_config(application.config); + restore_saved_window_state(); + +- if (_PROFILE != "release") { ++ if (_PROFILE != Client.PROFILE_RELEASE) { + this.get_style_context().add_class("devel"); + } + +-- +2.29.2 + diff --git a/mail-client/geary/files/0096-Application.Client-Ensure-non-release-builds-don-t-c.patch b/mail-client/geary/files/0096-Application.Client-Ensure-non-release-builds-don-t-c.patch new file mode 100644 index 0000000..4d975f8 --- /dev/null +++ b/mail-client/geary/files/0096-Application.Client-Ensure-non-release-builds-don-t-c.patch @@ -0,0 +1,73 @@ +From 368a0ced9785a2270ff9ddbda37e150b3970558b Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Wed, 14 Oct 2020 00:58:51 +1100 +Subject: [PATCH 096/124] Application.Client: Ensure non-release builds don't + clobber release data + +Append the build profile to Geary's data directories when not running +a release build (or under Flatpak) so that e.g. development builds use +different config, cache and data directories. + +This allows us to perform things like database schema updates with +relative abandon, since if we ask people to test development builds +with schema updates, they can always safely go back to their release +builds again. +--- + .../application/application-client.vala | 22 ++++++++++++++++--- + 1 file changed, 19 insertions(+), 3 deletions(-) + +diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala +index 6b3e7113..db8cdfdc 100644 +--- a/src/client/application/application-client.vala ++++ b/src/client/application/application-client.vala +@@ -777,21 +777,21 @@ public class Application.Client : Gtk.Application { + public GLib.File get_home_config_directory() { + return GLib.File.new_for_path( + Environment.get_user_config_dir() +- ).get_child("geary"); ++ ).get_child(get_geary_home_dir_name()); + } + + /** Returns the application's base home cache directory. */ + public GLib.File get_home_cache_directory() { + return GLib.File.new_for_path( + GLib.Environment.get_user_cache_dir() +- ).get_child("geary"); ++ ).get_child(get_geary_home_dir_name()); + } + + /** Returns the application's base home data directory. */ + public GLib.File get_home_data_directory() { + return GLib.File.new_for_path( + GLib.Environment.get_user_data_dir() +- ).get_child("geary"); ++ ).get_child(get_geary_home_dir_name()); + } + + /** Returns the application's base static resources directory. */ +@@ -1188,6 +1188,22 @@ public class Application.Client : Gtk.Application { + } + } + ++ private string get_geary_home_dir_name() { ++ // Return the standard name if running a release build or ++ // running under Flatpak, otherwise append the build profile ++ // as a suffix so (e.g.) devel builds don't mess with release ++ // build's config and databases. ++ // ++ // Note that non-release Flatpak builds already have their own ++ // separate directories since they have different app ids, and ++ // hence don't need the suffix. ++ return ( ++ _PROFILE == PROFILE_RELEASE || this.is_flatpak_sandboxed ++ ? "geary" ++ : "geary-" + _PROFILE ++ ); ++ } ++ + private void on_activate_about() { + this.show_about.begin(); + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0097-build-Make-comment-about-system-libs-with-custom-VAP.patch b/mail-client/geary/files/0097-build-Make-comment-about-system-libs-with-custom-VAP.patch new file mode 100644 index 0000000..a81f78f --- /dev/null +++ b/mail-client/geary/files/0097-build-Make-comment-about-system-libs-with-custom-VAP.patch @@ -0,0 +1,35 @@ +From 7c0ad051bd7b59cab1f26e13004d54a6bdbf2c2e Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 13 Sep 2020 16:26:46 +1000 +Subject: [PATCH 097/124] build: Make comment about system libs with custom + VAPI more generic + +--- + meson.build | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/meson.build b/meson.build +index f8e7b741..84cb43f9 100644 +--- a/meson.build ++++ b/meson.build +@@ -105,11 +105,13 @@ libytnef = dependency('libytnef', version: '>= 1.9.3', required: get_option('tne + posix = valac.find_library('posix') + webkit2gtk_web_extension = dependency('webkit2gtk-web-extension-4.0', version: '>=' + target_webkit) + +-# Libunwind system dependencies above ensures appropriate versions, +-# but this declared dependency is what we actually build against so we +-# can include the custom VAPI correctly. We need to add unwind_lib to +-# the search path for these so Flatpak builds can find the C lib. ++# System dependencies above ensures appropriate versions for the ++# following libraries, but the declared dependency is what we actually ++# build against so we can include the custom VAPI correctly. ++ + if libunwind_dep.found() ++ # We need to add native lib to the search path for these so Flatpak ++ # builds can find it. + unwind_lib = libunwind_dep.get_pkgconfig_variable('libdir') + libunwind = declare_dependency( + dependencies: [ +-- +2.29.2 + diff --git a/mail-client/geary/files/0101-Updated-Czech-translation.patch b/mail-client/geary/files/0101-Updated-Czech-translation.patch new file mode 100644 index 0000000..9f22a9f --- /dev/null +++ b/mail-client/geary/files/0101-Updated-Czech-translation.patch @@ -0,0 +1,5085 @@ +From 104b4979a77230144aab5298a0161b091d42b2df Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20=C4=8Cernock=C3=BD?= +Date: Wed, 14 Oct 2020 11:11:09 +0200 +Subject: [PATCH 101/124] Updated Czech translation + +--- + help/cs/cs.po | 677 +++++++++---- + po/cs.po | 2551 ++++++++++++++++++++++++++++--------------------- + 2 files changed, 1924 insertions(+), 1304 deletions(-) + +diff --git a/help/cs/cs.po b/help/cs/cs.po +index 4b574fe9..6861fade 100644 +--- a/help/cs/cs.po ++++ b/help/cs/cs.po +@@ -6,7 +6,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: geary\n" +-"POT-Creation-Date: 2019-09-27 12:58+0000\n" ++"POT-Creation-Date: 2020-06-25 02:39+0000\n" + "PO-Revision-Date: 2019-10-01 17:41+0200\n" + "Last-Translator: Marek Černocký \n" + "Language-Team: čeština \n" +@@ -202,69 +202,117 @@ msgstr "" + "se do spodní části okna a zmáčkněte Odebrat účet." + + #. (itstool) path: page/title +-#: C/archive.page:10 +-msgid "Delete or archive a message" +-msgstr "Mazání a archivace zpráv" ++#: C/archive.page:8 ++msgid "Archive, trash and delete messages" ++msgstr "Archivování, vyhazování a mazání zpráv" + + #. (itstool) path: page/p +-#: C/archive.page:12 ++#: C/archive.page:10 + msgid "" +-"When you use Geary with a Gmail account, Geary lets you archive " +-"messages. The Archive toolbar button archives the selected " +-"conversation(s). Archived messages appear in the All Mail folder." ++"Geary lets you archive messages if your server supports it. Clicking the " ++"Archive toolbar button moves the conversation " ++"from the current folder to the Archive folder for most email " ++"services, or to All Mail for GMail. Archiving helps keep your " ++"email organised by moving old and replied-to email out of the way." + msgstr "" +-"Pokud používáte Geary s účtem Gmail, umožní vám Geary zprávy archivovat. Tlačítko Archivovat na nástrojové liště archivuje vybranou " +-"konverzaci. Archivované zprávy se objeví ve složce Všechny zprávy." ++"Geary vám dává možnost si zprávy archivovat, pokud to podporuje server. " ++"Kliknutím na tlačítko Archivovat na nástrojové " ++"liště přesunete konverzaci z aktuální složky do složky Archiv (u " ++"většiny poštovních služeb) nebo Všechny zprávy (GMAil). " ++"Archivování pomáhá udržet v poště pořádek přesunutím starých a zodpovězených " ++"zpráv pryč." + + #. (itstool) path: page/p +-#: C/archive.page:16 +-msgid "" +-"With other mail servers, you can trash or delete, but not archive, messages. " +-"To move one or more conversations to the Trash folder, select " +-"them and press the Trash button on the toolbar. To permanently " +-"delete the conversations, hold down Shift and press the " +-"Delete button that appears in place of the Trash " +-"button." +-msgstr "" +-"U ostatních poštovních serverů můžete zprávy mazat a přesouvat do koše, ale " +-"ne je archivovat. Když chcete jednu nebo více konverzací přesunout do složky " +-"Koš, vyberte je a zmáčkněte tlačítko Koš na nástrojové " +-"liště. Abyste konverzaci smazali trvale, držte zmáčknutý Shift a " +-"zmáčkněte tlačítko Smazat vyskytující se vedle tlačítka Koš." ++#: C/archive.page:17 ++msgid "" ++"To move conversations to the Trash folder, select them and click " ++"the Trash toolbar button. To permanently delete " ++"conversations, hold down Shift and click the Delete button that appears in place of the Trash button, " ++"or open the conversation in the Trash folder and click Delete there." ++msgstr "" ++"Když chcete konverzace přesunout do složky Koš, vyberte je a " ++"zmáčkněte tlačítko Koš na nástrojové liště. " ++"Abyste konverzaci smazali trvale, držte zmáčknutý Shift a " ++"zmáčkněte tlačítko Smazat, které se objeví " ++"namísto tlačítka Koš, nebo konverzaci ve složce Koš " ++"otevřete a klikněte na tlačítko Smazat tam." ++ ++#. (itstool) path: note/title ++#: C/archive.page:26 ++msgid "Undoing changes" ++msgstr "Vracení změn" ++ ++#. (itstool) path: note/p ++#: C/archive.page:27 ++msgid "" ++"Note that you can always undo archiving or trashing a message if you change " ++"your mind. Click Undo on the pop-up notification " ++"that appears, or type CtrlZ, or open " ++"the folder, find the message, then move it back to your Inbox" ++msgstr "" ++"Pamatujte, že archivované a vyhozené zprávy můžete vždy, kdy si to " ++"rozmyslíte, vrátit zpět. Stačí zmáčknout Zpět ve " ++"vyskakovacím upozornění, které se objeví, nebo zmáčknout Ctrl" ++"Z, a nebo otevřít složku, najít zprávu a přesunout " ++"ji zpět do Doručené." + + #. (itstool) path: page/p +-#: C/archive.page:21 +-msgid "" +-"Delete is not available from every folder, such as Search. Delete is also " +-"unavailable for Gmail. For Gmail, Trash will move messages to the " +-"Trash folder on the server, where the user can then manually delete them. " +-"The server will automatically remove trashed messages after 30 days." +-msgstr "" +-"Mázání není k dispozici u každé složky, např. není u složky Hledání. Rovněž " +-"není k dispozici pro Gmail. U něj tlačítko Koš přesune zprávy do " +-"složky koš na serveru, kde je uživatel může smazat ručně. Případně je smaže " +-"server automaticky po 30 dnech." ++#: C/archive.page:34 ++msgid "" ++"While both Archive and Trash removes conversations from your Inbox folder, " ++"there is an important difference. Clicking Archive will ensure your conversations are kept so you can find them again " ++"later. Clicking Trash will cause conversations " ++"to be hidden from , and they will likely be deleted " ++"in the future." ++msgstr "" ++"Přestože, jak Archivovat, tak Vyhodit do koše, přesune konverzaci ze složky Doručené, " ++"je mezi nimi podstatný rozdíl. Zatím co archivované konverzace se uchovávají " ++"tak, že je lze později vyhledat, vyhození do koše způsobí, že konverzace se " ++"skryje pro a v budoucnu bude nejspíše smazána." + + #. (itstool) path: page/title + #: C/bugs.page:10 +-msgid "Found a bug?" +-msgstr "Našli jste chybu?" ++msgid "Need help with Geary?" ++msgstr "Potřebujete s Geary pomoct?" + +-#. (itstool) path: page/p +-#: C/bugs.page:12 ++#. (itstool) path: section/title ++#: C/bugs.page:13 ++msgid "Getting support" ++msgstr "Získání podpory" ++ ++#. (itstool) path: section/p ++#: C/bugs.page:15 + msgid "" +-"If you suspect you've found a bug in Geary, please get in touch about it so it can be " +-"fixed." ++"If you are having trouble using Geary, please get in touch with the Geary community " ++"about the problem." + msgstr "" +-"Jestliže předpokládáte, že jste v Geary našli chybu, informujte o tom vývojáře, aby ji " +-"mohli opravit." ++"Pokud máte s používáním Geary problémy, dejte o tom prosím vědět komunitě okolo Geary." + +-#. (itstool) path: page/p +-#: C/bugs.page:16 ++#. (itstool) path: section/title ++#: C/bugs.page:21 ++msgid "Reporting bugs" ++msgstr "Hlášení chyb" ++ ++#. (itstool) path: section/p ++#: C/bugs.page:23 ++msgid "" ++"If you suspect you have found a bug in Geary, please follow the bug reporting " ++"guidelines so the problem can be diagnosed and fixed." ++msgstr "" ++"Jestliže předpokládáte, že jste v Geary našli chybu, postupujte prosím podle " ++"návodu k " ++"hlášení chyb, aby bylo možné problém diagnostikovat a opravit." ++ ++#. (itstool) path: section/p ++#: C/bugs.page:28 + msgid "" + "To help diagnose the problem as fast as possible, please include the " + "following information:" +@@ -273,47 +321,53 @@ msgstr "" + "zprávy tyto informace:" + + #. (itstool) path: item/p +-#: C/bugs.page:20 ++#: C/bugs.page:32 + msgid "Geary version and installation method (Package? Flathub? Source code?)" + msgstr "" + "Verze aplikace Geary a způsob její instalace (distribuční balíček, Flathub, " + "zdrojový kód, …)" + + #. (itstool) path: item/p +-#: C/bugs.page:22 ++#: C/bugs.page:34 + msgid "Your desktop (GNOME? KDE? Something else?)" + msgstr "Vaše uživatelské prostředí (GNOME, KDE, Xfce, …)" + + #. (itstool) path: item/p +-#: C/bugs.page:23 ++#: C/bugs.page:35 + msgid "" + "Your operating system and version (Ubuntu 16.04? Fedora 28? Rolled your own?)" + msgstr "Váš operační systém a jeho verze (Ubuntu 18.04, Fedora 28, FreeBSD, …)" + + #. (itstool) path: item/p +-#: C/bugs.page:25 ++#: C/bugs.page:37 + msgid "Email provider (Gmail, Yahoo!, Outlook.com, or someone else?)" + msgstr "Poskytovatel e-mailu (Gmail, Yahoo!, Outlook.com, …)" + + #. (itstool) path: item/p +-#: C/bugs.page:27 ++#: C/bugs.page:39 + msgid "Steps to reproduce the bug" + msgstr "Kroky vedoucí k zopakování chyby" + + #. (itstool) path: item/p +-#: C/bugs.page:28 ++#: C/bugs.page:40 + msgid "What happened?" + msgstr "Co se stalo" + + #. (itstool) path: item/p +-#: C/bugs.page:29 ++#: C/bugs.page:41 + msgid "What did you expect to happen?" + msgstr "Co jste očekávali, že se má stát" + +-#. (itstool) path: page/p +-#: C/bugs.page:32 +-msgid "Thanks for your help!" +-msgstr "Děkujeme za vaši pomoc!" ++#. (itstool) path: section/p ++#: C/bugs.page:44 ++msgid "" ++"Log files can be accessed via the Geary Inspector, press AltI to open it, select and save any relevant log " ++"files, and attach them to the bug report." ++msgstr "" ++"K souborům se záznamy se dostanete pomocí Inspektora Geary. Otevřete jej " ++"zmáčknutím AltI, vyberte a uložte " ++"příslušný soubor se záznamy a připojte jej k hlášení chyby." + + #. (itstool) path: page/title + #: C/contributing.page:10 +@@ -340,25 +394,6 @@ msgstr "" + #. (itstool) path: item/p + #: C/contributing.page:19 + msgid "" +-"User Experience " +-"Design—research and develop Geary’s user experience" +-msgstr "" +-"Návrh grafiky a " +-"ovládání — zkoumejte a rozvíjejte uživatelskou přívětivost aplikace " +-"Geary" +- +-#. (itstool) path: item/p +-#: C/contributing.page:20 +-msgid "" +-"Development—fix bugs and add new features" +-msgstr "" +-"Programátorský " +-"vývoj — opravujte chyby a přidávejte nové funkce" +- +-#. (itstool) path: item/p +-#: C/contributing.page:21 +-msgid "" + "Translating—translate Geary’s user interface and user manual into new languages" + msgstr "" +@@ -367,53 +402,43 @@ msgstr "" + "příručku do svého rodného jazyka" + + #. (itstool) path: item/p +-#: C/contributing.page:22 ++#: C/contributing.page:20 + msgid "" +-"Join the " +-"discussion—on the mailing list or IRC channel" ++"Development—fix bugs and add new features" + msgstr "" +-"Zapojení do " +-"diskuzí — v poštovní konferenci nebo na kanále IRC" ++"Programátorský " ++"vývoj — opravujte chyby a přidávejte nové funkce" + + #. (itstool) path: page/p +-#: C/contributing.page:25 +-msgid "Thanks for your help making Geary better!" +-msgstr "Děkujeme za vaši pomoc ve snaze udělat Geary stále lepším!" +- +-#. (itstool) path: title/media +-#. This is a reference to an external file such as an image or video. When +-#. the file changes, the md5 hash will change to let you know you need to +-#. update your localized copy. The msgstr is not used at all. Set it to +-#. whatever you like once you have updated your copy of the file. +-#: C/index.page:6 +-msgctxt "_" +-msgid "external ref='figures/geary.svg' md5='1c66fe237d546362fda9f209840da4a8'" ++#: C/contributing.page:23 ++msgid "" ++"See the wiki for more information and options for contributing financially to " ++"Geary's development." + msgstr "" +-"external ref='figures/geary.svg' md5='1c66fe237d546362fda9f209840da4a8'" ++"Více informací a možností finančního přispívání na vývoj Geary viz wiki" + + #. (itstool) path: page/title +-#: C/index.page:5 +-msgid "" +-" " +-"Geary" +-msgstr "" +-" " +-"Geary" ++#: C/index.page:6 ++msgid "<_:media-1/> Geary" ++msgstr "<_:media-1/> Geary" + + #. (itstool) path: section/title +-#: C/index.page:11 ++#: C/index.page:12 + msgid "Introduction" + msgstr "Úvod" + + #. (itstool) path: section/title +-#: C/index.page:15 ++#: C/index.page:16 + msgid "Using Geary" + msgstr "Používání Geary" + + #. (itstool) path: section/title +-#: C/index.page:19 +-msgid "Contributing and bug reporting" +-msgstr "Přispívání a hlášení chyb" ++#: C/index.page:20 ++msgid "Contributing and getting support" ++msgstr "Přispívání a podpora" + + #. (itstool) path: page/title + #: C/label.page:10 +@@ -529,7 +554,8 @@ msgstr "" + "\">wikistránku projektu Geary." + + #. (itstool) path: page/title +-#: C/overview.page:9 ++#. (itstool) path: section/title ++#: C/overview.page:9 C/shortcuts.page:13 + msgid "Overview" + msgstr "Přehled" + +@@ -736,14 +762,14 @@ msgstr "Předvolby" + #. (itstool) path: page/p + #: C/preferences.page:12 + msgid "" +-"Geary allows you to customise how it works via its Preferences " +-"window. To open the window, select Preferences from the " +-"application menu on the main window's toolbar. You can change the following " +-"options:" ++"Geary allows you to customise how it works via its Preferences window. To open the window, select Preferences from the application menu on the main window's toolbar. " ++"You can change the following options:" + msgstr "" +-"Pomocí okna Předvolby si můžete přizpůsobit, jak má pošťák Geary " +-"fungovat. Předvolby otevřete pomocí nabídky aplikace v záhlavní " +-"liště. Měnit můžete následující věci:" ++"Pomocí okna Předvolby si můžete přizpůsobit, jak " ++"má pošťák Geary fungovat. Předvolby otevřete " ++"pomocí nabídky aplikace v záhlavní liště. Měnit můžete následující věci:" + + #. (itstool) path: item/title + #: C/preferences.page:19 +@@ -793,11 +819,27 @@ msgstr "" + + #. (itstool) path: item/title + #: C/preferences.page:38 ++msgid "Use single key email shortcuts" ++msgstr "Používat pro e-maily jednoklávesové zkratky" ++ ++#. (itstool) path: item/p ++#: C/preferences.page:39 ++msgid "" ++"Enable keyboard shortcuts for email actions that do not require pressing " ++"Ctrl. These match the shortcuts used by GMail. See for details." ++msgstr "" ++"Povolí pro činnosti s e-maily klávesové zkratky, které nevyžadují zmáčknutí " ++"klávesy Ctrl. Jsou stejné jako klávesové zkratky v GMailu. " ++"Podrobnosti viz " ++ ++#. (itstool) path: item/title ++#: C/preferences.page:44 + msgid "Watch for new mail when closed" + msgstr "Sledovat novou poštu při zavřené aplikaci" + + #. (itstool) path: item/p +-#: C/preferences.page:39 ++#: C/preferences.page:45 + msgid "" + "Geary will watch your accounts for new mail even when the main window is not " + "open. To do this, it will silently start when you log in to your computer, " +@@ -985,21 +1027,21 @@ msgstr "" + msgid "Keyboard shortcuts" + msgstr "Klávesové zkratky" + +-#. (itstool) path: page/p +-#: C/shortcuts.page:12 ++#. (itstool) path: section/p ++#: C/shortcuts.page:14 + msgid "" + "Geary has keyboard shortcuts for most common operations. Use the built-in " +-"keyboard shortcuts help in Geary to discover the full list. This can be " +-"accessed via the application menu: GearyKeyboard " +-"Shortcuts or using the keyboard shortcuts listed below." ++"help to discover the full list. To open the shortcuts help, select Keyboard Shortcuts from the application menu on the " ++"main window's toolbar, or using the keyboard shortcuts listed below." + msgstr "" + "Geary má pro nejpoužívanější operace klávesové zkratky. Jejich seznam " +-"najdete v zabudované nápovědě ke klávesovým zkratkám. K té se dostanete přes " +-"nabídku aplikace: Geary Keyboard Shortcuts nebo pomocí níže uvedených klávesových zkratek." ++"najdete v zabudované nápovědě. Tu otevřete pomocí " ++"Klávesové zkratky v nabídce aplikace na nástrojové liště hlavního okna, " ++"nebo pomocí níže uvedené klávesové zkratky." + +-#. (itstool) path: page/p +-#: C/shortcuts.page:18 ++#. (itstool) path: section/p ++#: C/shortcuts.page:20 + msgid "" + "The following keyboard shortcuts can be used to access on-line help from " + "Geary:" +@@ -1008,28 +1050,49 @@ msgstr "" + "aplikace Geary:" + + #. (itstool) path: td/p +-#: C/shortcuts.page:22 +-msgid "Display this User Manual" +-msgstr "Zobrazit tuto uživatelskou příručku" ++#: C/shortcuts.page:24 ++msgid "Display this online help manual" ++msgstr "Zobrazit tuto příručku s nápovědou" + + #. (itstool) path: td/p +-#: C/shortcuts.page:23 ++#: C/shortcuts.page:25 + msgid "F1" + msgstr "F1" + + #. (itstool) path: td/p +-#: C/shortcuts.page:26 ++#: C/shortcuts.page:28 + msgid "Display all keyboard shortcuts" + msgstr "Zobrazit všechny klávesové zkratky" + + #. (itstool) path: td/p +-#: C/shortcuts.page:27 ++#: C/shortcuts.page:29 ++msgid "Ctrl?" ++msgstr "Ctrl?" ++ ++#. (itstool) path: section/title ++#: C/shortcuts.page:37 ++msgid "Single key shortcuts" ++msgstr "Jednoklávesové zkratky" ++ ++#. (itstool) path: section/p ++#: C/shortcuts.page:39 + msgid "" +-"Ctrl? or CtrlF1" ++"You can enable keyboard shortcuts for email actions that do not require " ++"pressing Ctrl. These match the shortcuts used by GMail. See for details." + msgstr "" +-"Ctrl? nebo CtrlF1" ++"Můžete povolit pro činnosti s e-maily klávesové zkratky, které nevyžadují " ++"zmáčknutí klávesy Ctrl. Jsou stejné jako klávesové zkratky v " ++"GMailu. Podrobnosti viz " ++ ++#. (itstool) path: section/p ++#: C/shortcuts.page:43 ++msgid "" ++"The full list of single key shortcuts enabled by this preference can be " ++"found via the keyboard shortcuts help, above." ++msgstr "" ++"Kompletní seznam jednoklávesových zkratek, které se povolí touto předvolbou, " ++"najdete výše v nápovědě ke klávesovým zkratkám." + + #. (itstool) path: page/title + #: C/star.page:10 +@@ -1100,90 +1163,195 @@ msgstr "" + "přečtené v rozbalovací nabídce." + + #. (itstool) path: page/title +-#: C/write.page:9 +-msgid "Write a message" +-msgstr "Psaní zprávy" ++#: C/write.page:7 ++msgid "Writing new email and replying" ++msgstr "Psaní nových e-mailů a odpovídání" + + #. (itstool) path: section/title +-#: C/write.page:12 ++#: C/write.page:10 + msgid "Composing and replying" + msgstr "Psaní zpráv a odpovídání" + + #. (itstool) path: section/p +-#: C/write.page:13 ++#: C/write.page:12 + msgid "" +-"To compose a new message in Geary, press the New Message button " +-"on the toolbar." ++"To start a new email conversation, click the Compose button on the toolbar. Type the email address of the people to receive " ++"the message in the To text field, and a subject " ++"line in the Subject field. You can then type your " ++"message in the text area below these. Once the message is ready to send, " ++"click Send or type CtrlEnter to send the message." ++msgstr "" ++"Abyste začali novou e-mailovou konverzaci, klikněte na tlačítko Napsat zprávu na nástrojové liště. Zadejte e-mailové adresy " ++"lidí, kterým se má zpráva poslat, do textového pole Komu" ++" a do pole Předmět zadejte předmět zprávy. " ++"Vlastní text zprávy se píše do textové oblasti pod těmito poli. Až je zpráva " ++"nachystaná k odeslání, klikněte na Odeslat, nebo " ++"zmáčkněte CtrlEnter, a zpráva se " ++"odešle." ++ ++#. (itstool) path: note/title ++#: C/write.page:23 ++msgid "Undoing sending" ++msgstr "Zrušení odesílání" ++ ++#. (itstool) path: note/p ++#: C/write.page:24 ++msgid "" ++"When sending an email, Geary will wait 5 seconds before delivering the " ++"message. During this time, you will be able to click Undo on the pop-up notification that appears or type " ++"CtrlZ to re-open the email, and make " ++"more changes to it." + msgstr "" +-"Když chcete v Geary napsat novou zprávu, zmáčkněte na nástrojové liště " +-"tlačítko Nová zpráva." ++"Při odesílání e-mailu Geary čeká 5 sekund před tím, než zprávu skutečně " ++"doručí. Během této doby máte šanci odeslání zastavit kliknutím na Zpět ve vyskakovacím upozornění, které se objeví, nebo " ++"zmáčknutím CtrlZ. Zpráva se znovu " ++"otevře v editoru a můžete pokračovat v úpravách." ++ ++#. (itstool) path: section/p ++#: C/write.page:32 ++msgid "" ++"To show the Cc, Bcc, " ++"and Reply-to fields, click the More options button at the end of the To " ++"field. Cc allows you to send a copy of the email to other, secondary " ++"recipients. Bcc is similar, but the Bcc list is hidden from recipients. The " ++"Reply-To field specifies an email address to reply to, if recipients should " ++"reply to a different email address than the sender's." ++msgstr "" ++"Aby se vám zobrazila pole Kopie, Skrytá kopie a Odpověď, klikněte " ++"na tlačítko Další volby na konci pole Komu. „Kopie“ slouží k zaslání kopie zprávy dalším příjemcům, " ++"kteří by měli vzít zprávu na vědomí. „Skrytá kopie“ funguje podobně, jen " ++"hlavní příjemci neuvidí příjmce kopií. Pole „Odpověď“ určuje e-mailovou " ++"adresu, na kterou se má odpovídat v případě, že chcete aby se lišila od " ++"adresy odesílatele." + + #. (itstool) path: section/p +-#: C/write.page:16 ++#: C/write.page:41 + msgid "" +-"To reply to a message, open the message menu in the upper right corner of " +-"the message and choose Reply, Reply All or " +-"Forward. You can also reply to the last message in a conversation " +-"via the Reply, Reply All or Forward buttons " +-"on the toolbar." ++"When entering an email address into any of these fields, Geary will provide " ++"suggestions from your desktop address book and from previously sent and " ++"received email messages. To choose one of these suggestions, simply click on " ++"it." + msgstr "" +-"Když chcete odpovědět na zprávu, otevřete nabídku zprávy v pravém horním " +-"rohu zprávy a zvolte Odpovědět, Odpovědět všem nebo " +-"Přeposlat. Můžete také odpovědět na poslední zprávu v konverzaci " +-"přes tlačítka Odpovědět, Odpovědět všem nebo " +-"Přeposlat na nástrojové liště." ++"Když zadáváte e-mailovou adresu do některého z těchto polí, Geary vám bude " ++"nabízet návrhy z vašeho adresáře a z dříve odeslaných a přijatých e-mailových " ++"zpráv. Pokud se pro některý z návrhů rozhodnete, stačí na něj kliknout." + +-#. (itstool) path: section/title +-#: C/write.page:21 +-msgid "Features" +-msgstr "Funkce" ++#. (itstool) path: section/p ++#: C/write.page:46 ++msgid "" ++"To reply to the currently selected conversation, click one of the Reply, Reply All or Forward toolbar buttons. This will open a new reply or " ++"forwarded email composer for the latest message in the conversation." ++msgstr "" ++"Pokud chcete odpovědět na právě vybranou konverzaci, klikněte na tlačítko Odpovědět, Odpovědět všem " ++"nebo Přeposlat na nástrojové liště. Otevře se " ++"editor s novou odpovědí, respektive přeposílanou zprávou, vycházející z " ++"poslední zprávy v konverzaci." + + #. (itstool) path: section/p +-#: C/write.page:23 ++#: C/write.page:52 + msgid "" +-"Geary's email composer lets you adjust the font, size and color of text. You " +-"can also insert hyperlinks into messages." ++"When replying, the message being replied to will be quoted and copied into " ++"the footer of the new reply. This can be deleted before typing a reply by " ++"pressing Backspace. Alternatively, text can be selectively quoted " ++"by selecting the desired text in a message and clicking Reply or Reply All, only the selected " ++"text will be quoted." + msgstr "" +-"Při psaní e-mailů v Geary si můžete přizpůsobit písmo, velikost a barvu " +-"textu. Rovněž můžete do zpráv vkládat hypertextové odkazy." ++"Při odpovídání je původní zpráva označena jako citace a zkopírována do spodní " ++"části odpovědi. Než začnete psát, můžet ji smazat zmáčknutím Backspace" ++". Případně lze citovat jen vybranou část zprávy tím, že ve zprávě " ++"vyberete požadovaný text a kliknete na Odpovědět, " ++"Odpovědět všem. Pak se ocituje jen vybraná část." + + #. (itstool) path: section/p +-#: C/write.page:25 ++#: C/write.page:60 + msgid "" +-"Geary can also send plain text messages. In the drop-down menu, check or " +-"uncheck \"Rich Text\" to toggle between plain text and rich text mode." ++"To reply to a specific email message, open the message menu in the top " ++"corner of the message and choose Reply, Reply All or " ++"Forward." + msgstr "" +-"Zprávy je možné posílat i jako čistě textové. V rozbalovací nabídce " +-"zaškrtněte nebo zrušte zaškrtnutí „Formátovaný text“, abyste se přepnuli " +-"mezi režimy prostého textu a formátovaného textu." ++"Když chcete odpovědět na konkrétní zprávu, otevřete nabídku zprávy v pravém " ++"horním rohu zprávy a zvolte Odpovědět, Odpovědět všem " ++"nebo Přeposlat." ++ ++#. (itstool) path: section/title ++#: C/write.page:66 ++msgid "Text formatting, images and attachments" ++msgstr "Formátování textu, obrázky a přílohy" + + #. (itstool) path: section/p +-#: C/write.page:28 ++#: C/write.page:68 + msgid "" +-"You can attach a file to a message you're writing in either of these ways:" +-msgstr "K napsané zprávě můžete přiložit soubory a to následujícími způsoby:" ++"Geary's email composer lets you use text styles such as bold and " ++"italic, indent text to quote it, and links to web pages. Simply " ++"select the text and click the appropriate button on the formatting toolbar " ++"at the bottom of the composer area." ++msgstr "" ++"V Geary v editoru zpráv můžete používat různé styly textu, jako tučný" ++" nebo kurzíva, odsazení citací a odkazy na webové stránky. " ++"Stačí text vybrat a pak kliknout na příslušné tlačítko na nástrojové liště v " ++"dolní části editoru." + +-#. (itstool) path: item/p +-#: C/write.page:30 ++#. (itstool) path: section/p ++#: C/write.page:74 + msgid "" +-"Press the Attach File button at the lower left of the composer " +-"window, then select a file to attach." ++"Bulleted and numbered lists can be inserted or removed by clicking the Bulleted list and Numbered " ++"list buttons on the formatting toolbar. The level of indentation of " ++"list items can be adjusted using the Indent and " ++"Un-indent formatting toolbar buttons." + msgstr "" +-"Zmáčkněte tlačítko Přiložit soubor v levém dolním rohu okna " +-"editoru a následně vyberte soubor, který chcete přiložit." ++"Seznamy s odrážkami a číslované seznamy lze vytvářet a rušit kliknutím na " ++"Seznam s odrážkami a " ++"Číslovaný seznam na nástrojové liště formátování. Úroveň odsazení " ++"položek seznamu se dá upravit pomocí tlačítek Osadit" ++" a Zrušit odsazení na téže liště." + +-#. (itstool) path: item/p +-#: C/write.page:32 ++#. (itstool) path: section/p ++#: C/write.page:81 + msgid "" +-"Drag the file from the Nautilus file manager to the composer window, and " +-"drop it either on the text fields at the top of the window or on the toolbar " +-"at the bottom." ++"Images can be inserted into rich text messages by clicking the Insert Image button on the formatting toolbar and selecting " ++"the image to attach, by dragging an image from the Files " ++"application into the email body and then dropping it, or by pasting an image " ++"that has been copied to the clipboard from another application." + msgstr "" +-"Přetáhněte soubor ze správce souborů Nautilus do okna editoru a upusťte jej " +-"buď na textových polích v horní části okna nebo na nástrojové liště dole." ++"Obrázky se do formátovaného textu vkládají kliknutím na tlačítko Vložit obrázek na nástrojové liště formátování a následným " ++"vybráním obrázku, nebo přetažením obrázku z aplikace Soubory do " ++"těla zprávy a následným upuštěním, a nebo vložením obrázku ze schránky, kam " ++"jste jej předtím zkopírovali z jiné aplikace." ++ ++#. (itstool) path: section/p ++#: C/write.page:88 ++msgid "" ++"Documents, music, videos, and other files can be attached to the email by " ++"clicking the Attach File button at the bottom of " ++"the composer window and selecting the document to attach, or by dragging a " ++"file from the Files application to the composer window, and " ++"dropping it either on the text fields at the top of the window or on the " ++"toolbar at the bottom." ++msgstr "" ++"Dokumenty, hudbu, videa a další soubory lze do e-mailu připojit jako přílohu " ++"kliknutím na tlačítko Přiložit soubor v dolní " ++"části okna editoru a následným vybráním souboru, který chcete přiložit. Nebo " ++"můžete soubor přetáhnout z aplikace Soubory do okna editoru a tam " ++"jej upustit buď na některé z textových polí v horní části okna nebo na " ++"nástrojovou lištu v dolní části." + + #. (itstool) path: section/p +-#: C/write.page:36 ++#: C/write.page:96 + msgid "" + "A number of keyboard shortcuts are available in the composer; see for details." +@@ -1192,41 +1360,126 @@ msgstr "" + "xref=\"shortcuts\"/>." + + #. (itstool) path: section/p +-#: C/write.page:38 ++#: C/write.page:99 + msgid "" +-"You may specify a signature to be inserted into the composer in the dialog." ++"You may specify a signature to be inserted into the footer of email in the " ++"composer via the dialog." + msgstr "" +-"V dialogovém okně můžete zadat patičku, která se " +-"bude vkládat do editoru." ++"V dialogovém okně v editoru můžete vytvořit podpis, " ++"který se bude vkládat do patičky e-mailu." + + #. (itstool) path: section/title +-#: C/write.page:43 +-msgid "Drafts" +-msgstr "Koncepty" ++#: C/write.page:104 ++msgid "Checking spelling" ++msgstr "Kontrola pravopisu" + + #. (itstool) path: section/p +-#: C/write.page:45 ++#: C/write.page:106 ++msgid "" ++"Geary supports spell-checking your composed email in one or more languages, " ++"as you type. To enable spell-checking, first ensure your computer has spell-" ++"check dictionaries installed for the desired languages. Consult your " ++"computer's help to determine how to install dictionaries if not present." ++msgstr "" ++"Geary podporuje kontrolu pravopisu během psaní e-mailu v jednom či více " ++"jazycích. Když ji chcete zapnout, nejprve si ověřte, že máte v počítači " ++"nainstalované slovníky pro kontrolu pravopisu v požadovaných jazycích. Pokud " ++"je nemáte, najdete v nápovědě svého systému, jak slovníky nainstalovat." ++ ++#. (itstool) path: section/p ++#: C/write.page:112 ++msgid "" ++"To select languages for spell-checking, click the Spell check button on the formatting toolbar, and the language " ++"selection popover will appear. Click on a language in the list to toggle it " ++"on or off, and click the - button to remove it " ++"from the list. If a language does not appear in the list, search for it by " ++"typing its name in the search box, then click the + button to add it." ++msgstr "" ++"Pro vybrání kontrolovaného jazyka klikněte na tlačítko Vybrat jazyk pro kontrolu pravopisu na nástrojové liště formátování " ++"a objeví se vyskakovací dialogové okno s výběrem jazyka. Kliknutím na jazyk v " ++"seznamu jej povolíte nebo zakážete a kliknutím na tlačítko - jej ze seznamu odeberete pryč. Jestliže se jazyk v seznamu " ++"nenachází, vyhledejte jej zapsáním jeho názvu do vyhledávacího pole a pak jej " ++"kliknutím na tlačítko + přidejte." ++ ++#. (itstool) path: section/title ++#: C/write.page:123 ++msgid "Saving drafts and restoring discarded messages" ++msgstr "Ukládání konceptů a obnovování zahozených zpráv" ++ ++#. (itstool) path: section/p ++#: C/write.page:125 + msgid "" + "For mail servers that support drafts, Geary will automatically save the " +-"message as you type. If you close the composer without sending, Geary will " +-"prompt you to keep the draft or to discard it." ++"message as you type on the server after a short delay." + msgstr "" +-"Na serverech, které podporují koncepty, ukládá Gerary zprávy automaticky " +-"během psaní. Pokud zavřete okno editoru, aniž byste zprávu odeslali, Geary " +-"se vás dotáže, jestli má zprávu uchovat v konceptech nebo ji zahodit." ++"Na poštovních serverech, které podporují koncepty, ukládá Gerary zprávy " ++"automaticky v krátkých intervalech během psaní na dotyčný server." + + #. (itstool) path: section/p +-#: C/write.page:48 ++#: C/write.page:129 + msgid "" +-"To edit an existing draft, select the Drafts folder in the folder list, " +-"select the message, and click \"Edit Draft\" in the message viewer." ++"To edit an existing draft, select the Drafts folder in the folder " ++"list, select the message, and click \"Edit Draft\" in the conversation " ++"viewer." + msgstr "" +-"Až chcete ve psaní stávajícího konceptu pokračovat, vyberte v seznamu složek " +-"složku Koncepty, vyberte zprávu a klikněte v prohlížeči zpráv na „Upravit " +-"koncept“ ." ++"Když chcete pokračovat ve psaní stávajícího konceptu, vyberte v seznamu " ++"složek složku Koncepty, vyberte zprávu a klikněte v prohlížeči " ++"konverzací na „Upravit koncept“ ." + + #. (itstool) path: section/p +-#: C/write.page:51 +-msgid "Geary deletes the draft when you send the message." ++#: C/write.page:133 ++msgid "Geary will delete the draft when you send the message." + msgstr "Po odeslání zprávy Geary koncept smaže." ++ ++#. (itstool) path: note/p ++#: C/write.page:136 ++msgid "" ++"If you save or discard a composed email, you can re-open it by clicking Undo on the pop-up notification that appears or by " ++"typing CtrlZ. Composers can be " ++"reopened for up to 30 minutes after they are closed. After that, you will " ++"need to re-open the message via the Drafts folder, if present." ++msgstr "" ++"Když uložíte nebo zahodíte rozepsaný e-mail, můžete jej znovu otevřít " ++"kliknutím na Zpět ve vyskakovacím upozornění, " ++"které se objeví, nebo zmáčknkutím CtrlZ" ++". Editor lze znovu otevřít do 30 minut od chvíle, kdy byl zavřen. Po " ++"uplynutí této doby již musíte zprávu znovu otevřít jedině ze složky " ++"Koncepty, pokud se tam nachází." ++ ++#. (itstool) path: section/title ++#: C/write.page:146 ++msgid "Plain text messages" ++msgstr "Čistě textové zprávy" ++ ++#. (itstool) path: section/p ++#: C/write.page:148 ++msgid "" ++"Geary can also send plain text messages. Press the More options button at the end of the bottom toolbar, then choose " ++"\"Rich Text\" or \"Plain Text\". Plain text mode is useful when sending " ++"email to mailing lists that prohibit rich text (HTML) messages, or when " ++"sending email to people that do no use modern clients like Geary." ++msgstr "" ++"Geary může odesílat také zprávy v podobě prostého textu. Zmáčkněte tlačítko " ++"Další volby na konci dolní nástrojové lišty a pak " ++"si vyberte mezi „Formátovaným textem“ nebo „Prostým textem“. Prostý text se " ++"hodí, když posíláte e-mail do poštovní konference, které často zprávy s " ++"formátovaným textem (HTML) zakazují, nebo když posíláte zprávy lidem, kteří " ++"nemají takový moderní poštovní program, jako je Geary." ++ ++#. (itstool) path: section/p ++#: C/write.page:155 ++msgid "" ++"In plain text mode, text will be automatically wrapped using soft line " ++"breaks so that it is no longer than 74 characters wide, and indented text " ++"will be wrapped and quoted using a “>” character for each level of " ++"quoting." ++msgstr "" ++"V režimu prostého textu bude text automaticky zalamován pomocí měkkého " ++"zalomení tak, aby nebyl širší než 74 zanků, a odsazený text bude uvozen " ++"pomocí znaku „>“ pro každou úroveň odsazení." +diff --git a/po/cs.po b/po/cs.po +index 61689282..99bdd31a 100644 +--- a/po/cs.po ++++ b/po/cs.po +@@ -5,14 +5,14 @@ + # + # Translators: + # petr.simacek , 2012, 2013. +-# Marek Černocký , 2014, 2015, 2016, 2017, 2018, 2019. ++# Marek Černocký , 2014, 2015, 2016, 2017, 2018, 2019, 2020. + # + msgid "" + msgstr "" + "Project-Id-Version: geary\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2019-09-27 12:57+0000\n" +-"PO-Revision-Date: 2019-10-01 17:48+0200\n" ++"POT-Creation-Date: 2020-08-29 01:59+0000\n" ++"PO-Revision-Date: 2020-10-11 00:33+0200\n" + "Last-Translator: Marek Černocký \n" + "Language-Team: čeština \n" + "Language: cs\n" +@@ -32,9 +32,10 @@ msgstr "Odeslat soubory pomocí Geary" + + #. Translators: The application name + #: desktop/geary-autostart.desktop.in.in:3 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:12 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 +-#: src/client/accounts/accounts-editor-servers-pane.vala:555 ++#: src/client/accounts/accounts-editor-servers-pane.vala:560 ++#: src/client/application/application-main-window.vala:608 + msgid "Geary" + msgstr "Geary" + +@@ -45,9 +46,9 @@ msgstr "E-mail" + + #. Translators: The application's summary / tagline + #: desktop/geary-autostart.desktop.in.in:5 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:16 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:15 + #: desktop/org.gnome.Geary.desktop.in.in:5 +-#: src/client/application/geary-application.vala:31 ++#: src/client/application/application-client.vala:33 + msgid "Send and receive email" + msgstr "Odesílejte a přijímejte e-maily" + +@@ -57,11 +58,11 @@ msgid "Email;E-mail;Mail;" + msgstr "email;e-mail;mail;pošta;e-pošta;zpráva;zprávy;" + + #. Translators: The development team's name +-#: desktop/org.gnome.Geary.appdata.xml.in.in:14 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:13 + msgid "Geary Development Team" + msgstr "Vývojářský tým aplikace Geary" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:18 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:17 + msgid "" + "Geary is an email application built around conversations, for the GNOME 3 " + "desktop. It allows you to read, find and send email with a straightforward, " +@@ -71,7 +72,7 @@ msgstr "" + "soustředí na konverzace jako celek. Umožňuje číst, vyhledávat a odesílat e-" + "maily v přímočarém a moderním prostředí." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:23 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:22 + msgid "" + "Conversations allow you to read a complete discussion without having to find " + "and click from message to message." +@@ -79,41 +80,41 @@ msgstr "" + "Díky zaměření na konverzace můžete číst ucelené diskuze bez nutnosti " + "vyhledávat jednotlivé navazující zprávy a klikat na ně." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:27 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:26 + msgid "Geary’s features include:" + msgstr "Mezi funkcemi aplikace Geary najdete:" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:29 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:28 + msgid "Quick email account setup" + msgstr "Rychlé nastavení poštovního účtu" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:30 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:29 + msgid "Shows related messages together in conversations" + msgstr "Zobrazení souvisejících zprávy dohromady v podobě konverzace" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:31 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:30 + msgid "Fast, full text and keyword search" + msgstr "Rychlé vyhledávání v celém textu a na základě klíčových slov" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:32 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:31 + msgid "Full-featured HTML and plain text message composer" + msgstr "Plnohodnotný editor zpráv v HTML i prostém textu" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:33 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:32 + msgid "Desktop notification of new mail" + msgstr "Upozornění na nové zprávy přímo v uživatelském prostředí" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:34 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:33 + msgid "Compatible with GMail, Yahoo! Mail, Outlook.com and other IMAP servers" + msgstr "Kompatibilitu s GMail, Yahoo! Mail, Outlook.com a dalšími servery IMAP" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:48 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:47 + msgid "Geary displaying a conversation" + msgstr "Geary zobrazující konverzaci" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:59 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:58 + msgid "Geary showing the rich text composer" + msgstr "Geary se zobrazeným editorem formátovaného textu" + +@@ -126,6 +127,10 @@ msgstr "pošta;mail;e-mail;elektronická pošta;imap;gmail;yahoo;hotmail;outlook + msgid "Compose Message" + msgstr "Napsat zprávu" + ++#: desktop/org.gnome.Geary.desktop.in.in:26 ++msgid "New Window" ++msgstr "Nové okno" ++ + #: desktop/org.gnome.Geary.gschema.xml:8 + msgid "Maximize window" + msgstr "Maximalizované okno" +@@ -186,34 +191,56 @@ msgid "True if the folder list Paned is in the horizontal orientation." + msgstr "Zapnuto, když má být panel se seznamem složek otočený vodorovně." + + #: desktop/org.gnome.Geary.gschema.xml:50 ++msgid "Show/hide formatting toolbar" ++msgstr "Zobrazovat/skrývat lištu nástrojů pro formátování" ++ ++#: desktop/org.gnome.Geary.gschema.xml:51 ++msgid "True if the formatting toolbar in the composer is shown." ++msgstr "" ++"Zapnuto, když je v editoru zobrazená nástrojová lišta s formátovacími " ++"nástroji." ++ ++#: desktop/org.gnome.Geary.gschema.xml:56 + msgid "Position of message list pane" + msgstr "Umístění panelu se seznamem zprávy" + +-#: desktop/org.gnome.Geary.gschema.xml:51 ++#: desktop/org.gnome.Geary.gschema.xml:57 + msgid "Position of the message list Paned grabber." + msgstr "Umístění úchytu panelu se seznamem zpráv." + +-#: desktop/org.gnome.Geary.gschema.xml:56 ++#: desktop/org.gnome.Geary.gschema.xml:62 + msgid "Autoselect next message" + msgstr "Automatický výběr další zprávy" + +-#: desktop/org.gnome.Geary.gschema.xml:57 ++#: desktop/org.gnome.Geary.gschema.xml:63 + msgid "True if we should autoselect the next available conversation." + msgstr "Zapnuto, pokud se má automaticky vybírat další dostupná konverzace." + +-#: desktop/org.gnome.Geary.gschema.xml:62 ++#: desktop/org.gnome.Geary.gschema.xml:68 + msgid "Display message previews" + msgstr "Zobrazit náhledy zpráv" + +-#: desktop/org.gnome.Geary.gschema.xml:63 ++#: desktop/org.gnome.Geary.gschema.xml:69 + msgid "True if we should display a short preview of each message." + msgstr "Zapnuto, když se má zobrazovat krátký náhled u jednotlivých zpráv." + +-#: desktop/org.gnome.Geary.gschema.xml:68 ++#: desktop/org.gnome.Geary.gschema.xml:74 ++msgid "Use single key shortcuts" ++msgstr "Používat jednoklávesové zkratky" ++ ++#: desktop/org.gnome.Geary.gschema.xml:75 ++msgid "" ++"Enables shortcuts for email actions that do not require pressing to " ++"emulate those used by Gmail." ++msgstr "" ++"Pro činnosti s e-maily pouvolit klávesové zkratky, které nepotřebují " ++"zmáčknutí , aby se tak emulovalo chování Gmailu." ++ ++#: desktop/org.gnome.Geary.gschema.xml:82 + msgid "Languages that shall be used in the spell checker" + msgstr "Jazyky používané v kontrole pravopisu" + +-#: desktop/org.gnome.Geary.gschema.xml:69 ++#: desktop/org.gnome.Geary.gschema.xml:83 + msgid "" + "A list of POSIX locales, with the empty list disabling spell checking and " + "the null list using desktop languages by default." +@@ -222,11 +249,11 @@ msgstr "" + "vypnutou kontrolu pravopisu a prázdná hodnota (null) znamená použití " + "výchozího nastavení z uživatelského prostředí." + +-#: desktop/org.gnome.Geary.gschema.xml:76 ++#: desktop/org.gnome.Geary.gschema.xml:90 + msgid "Languages that are displayed in the spell checker popover" + msgstr "Jazyky zobrazované ve vyskakovací nabídce kontroly pravopisu" + +-#: desktop/org.gnome.Geary.gschema.xml:77 ++#: desktop/org.gnome.Geary.gschema.xml:91 + msgid "" + "List of languages that are always displayed in the popover of the spell " + "checker." +@@ -234,37 +261,37 @@ msgstr "" + "Seznam jazyků, které se mají zobrazit ve vyskakovací nabídce kontroly " + "pravopisu." + +-#: desktop/org.gnome.Geary.gschema.xml:82 ++#: desktop/org.gnome.Geary.gschema.xml:96 + msgid "Notify of new mail at startup" + msgstr "Upozorňovat na novou poštu při spuštění" + +-#: desktop/org.gnome.Geary.gschema.xml:83 ++#: desktop/org.gnome.Geary.gschema.xml:97 + msgid "True to notify of new mail at startup." + msgstr "Zapnuto, když se má upozorňovat na novou poštu při spuštění aplikace." + +-#: desktop/org.gnome.Geary.gschema.xml:88 ++#: desktop/org.gnome.Geary.gschema.xml:102 + msgid "Ask when opening an attachment" + msgstr "Dotazovat se při otevírání přílohy" + +-#: desktop/org.gnome.Geary.gschema.xml:89 ++#: desktop/org.gnome.Geary.gschema.xml:103 + msgid "True to ask when opening an attachment." + msgstr "Zapnuto, pokud máte být dotazováni, když otevíráte přílohu." + +-#: desktop/org.gnome.Geary.gschema.xml:94 ++#: desktop/org.gnome.Geary.gschema.xml:108 + msgid "Whether to compose emails in HTML" + msgstr "Zda psát e-maily v HTML" + +-#: desktop/org.gnome.Geary.gschema.xml:95 ++#: desktop/org.gnome.Geary.gschema.xml:109 + msgid "True to compose emails in HTML; false for plain text." + msgstr "" + "Zapnuto, když se mají vytvářet e-maily ve formátu HTML, vypnuto, když v " + "prostém textu." + +-#: desktop/org.gnome.Geary.gschema.xml:100 ++#: desktop/org.gnome.Geary.gschema.xml:114 + msgid "Advisory strategy for full-text searching" + msgstr "Strategie pro hledání v celém textu" + +-#: desktop/org.gnome.Geary.gschema.xml:101 ++#: desktop/org.gnome.Geary.gschema.xml:115 + msgid "" + "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." + msgstr "" +@@ -272,27 +299,58 @@ msgstr "" + "sada variant hledaného výrazu a drobné rozdíly ve shodě), „aggresive“ (širší " + "sada variant a větší rozdíly ve shodě) a „horizon“ (všechny varianty výrazu)." + +-#: desktop/org.gnome.Geary.gschema.xml:106 ++#: desktop/org.gnome.Geary.gschema.xml:120 + msgid "Zoom of conversation viewer" + msgstr "Příblížení zobrazení konverzace" + +-#: desktop/org.gnome.Geary.gschema.xml:107 ++#: desktop/org.gnome.Geary.gschema.xml:121 + msgid "The zoom to apply on the conservation view." + msgstr "Přiblížení, které se má použit při zobrazení konverzace." + +-#: desktop/org.gnome.Geary.gschema.xml:112 ++#: desktop/org.gnome.Geary.gschema.xml:126 + msgid "Size of detached composer window" + msgstr "Velikost odpojeného okno pro psaní zprávy" + +-#: desktop/org.gnome.Geary.gschema.xml:113 ++#: desktop/org.gnome.Geary.gschema.xml:127 + msgid "The last recorded size of the detached composer window." + msgstr "Poslední zaznamenaná velikost odpojeného okna pro psaní zprávy." + +-#: desktop/org.gnome.Geary.gschema.xml:118 ++#: desktop/org.gnome.Geary.gschema.xml:132 ++msgid "Undo sending email delay" ++msgstr "Prodleva pro zrušení odeslání e-mailu" ++ ++#: desktop/org.gnome.Geary.gschema.xml:133 ++msgid "" ++"The number of seconds to wait before sending an email. Set to zero or less " ++"to disable." ++msgstr "" ++"Počet sekund, po které se bude čekat s odesláním e-mailu, aby bylo možné akci " ++"vzít zpět. Nastavením na nulu nebo méně se tato možnost zakáže." ++ ++#: desktop/org.gnome.Geary.gschema.xml:139 ++msgid "Brief notification display time" ++msgstr "Doba zobrazení stručného upozornění" ++ ++#: desktop/org.gnome.Geary.gschema.xml:140 ++msgid "" ++"The length of time in seconds for which brief notifications should be " ++"displayed." ++msgstr "" ++"Množství času v sekundách, po které se budou zobrazovat stručná upozornění." ++ ++#: desktop/org.gnome.Geary.gschema.xml:146 ++msgid "List of optional plugins" ++msgstr "Seznam volitelných zásuvných modulů" ++ ++#: desktop/org.gnome.Geary.gschema.xml:147 ++msgid "Plugins listed here will be loaded on startup." ++msgstr "Zásuvné moduly na tomto seznamu budou načteny při spuštění." ++ ++#: desktop/org.gnome.Geary.gschema.xml:152 + msgid "Whether we migrated the old settings" + msgstr "Zda bylo přeneseno staré nastavení" + +-#: desktop/org.gnome.Geary.gschema.xml:119 ++#: desktop/org.gnome.Geary.gschema.xml:153 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -302,25 +360,25 @@ msgstr "" + #. Translators: In-app notification label, when + #. the app had a problem pinning an otherwise + #. untrusted TLS certificate +-#: src/client/accounts/accounts-editor.vala:204 ++#: src/client/accounts/accounts-editor.vala:210 + msgid "Failed to store certificate" + msgstr "Selhalo uložení certifikátu" + + #. Translators: Label for adding an email account + #. account for a generic IMAP service provider. +-#: src/client/accounts/accounts-editor-add-pane.vala:109 ++#: src/client/accounts/accounts-editor-add-pane.vala:108 + msgid "All others" + msgstr "Všechny ostatní" + + #. Translators: In-app notification label +-#: src/client/accounts/accounts-editor-add-pane.vala:196 +-#: src/client/accounts/accounts-editor-servers-pane.vala:316 ++#: src/client/accounts/accounts-editor-add-pane.vala:195 ++#: src/client/accounts/accounts-editor-servers-pane.vala:321 + msgid "Check your receiving login and password" + msgstr "Zkontrolujte své přihlašovací jméno a heslo pro příjem" + + #. Translators: In-app notification label +-#: src/client/accounts/accounts-editor-add-pane.vala:211 +-#: src/client/accounts/accounts-editor-servers-pane.vala:329 ++#: src/client/accounts/accounts-editor-add-pane.vala:210 ++#: src/client/accounts/accounts-editor-servers-pane.vala:334 + msgid "Check your receiving server details" + msgstr "Zkontrolujte údaje přijimacího serveru" + +@@ -329,51 +387,51 @@ msgstr "Zkontrolujte údaje přijimacího serveru" + #. succeeded, so the user probably needs to + #. specify custom creds here + #. Translators: In-app notification label +-#: src/client/accounts/accounts-editor-add-pane.vala:233 +-#: src/client/accounts/accounts-editor-servers-pane.vala:350 ++#: src/client/accounts/accounts-editor-add-pane.vala:232 ++#: src/client/accounts/accounts-editor-servers-pane.vala:355 + msgid "Check your sending login and password" + msgstr "Zkontrolujte své přihlašovací jméno a heslo pro odesílání" + + #. Translators: In-app notification label +-#: src/client/accounts/accounts-editor-add-pane.vala:247 +-#: src/client/accounts/accounts-editor-servers-pane.vala:363 ++#: src/client/accounts/accounts-editor-add-pane.vala:246 ++#: src/client/accounts/accounts-editor-servers-pane.vala:368 + msgid "Check your sending server details" + msgstr "Zkontrolujte údaje odesilacího serveru" + + #. Translators: In-app notification label +-#: src/client/accounts/accounts-editor-add-pane.vala:262 ++#: src/client/accounts/accounts-editor-add-pane.vala:261 + msgid "Check your email address and password" + msgstr "Zkontrolujte svoji e-mailovou adresu a heslo" + + #. Translators: In-app notification label +-#: src/client/accounts/accounts-editor-add-pane.vala:273 ++#: src/client/accounts/accounts-editor-add-pane.vala:272 + msgid "Could not connect, check your network" + msgstr "Nelze se připojit, zkontrolujte svoji síť" + + #. Translators: In-app notification label for a + #. generic error creating an account +-#: src/client/accounts/accounts-editor-add-pane.vala:286 ++#: src/client/accounts/accounts-editor-add-pane.vala:285 + msgid "An unexpected problem occurred" + msgstr "Vyskytl se neočekávaný problém" + + #. Translators: In-app notification label, the + #. string substitution is a more detailed reason. +-#: src/client/accounts/accounts-editor-add-pane.vala:304 ++#: src/client/accounts/accounts-editor-add-pane.vala:303 + #, c-format + msgid "Account not created: %s" + msgstr "Účet nebyl vytvořen: %s" + + #. Translators: Label for the person's actual name when adding + #. an account +-#: src/client/accounts/accounts-editor-add-pane.vala:551 ++#: src/client/accounts/accounts-editor-add-pane.vala:558 + msgid "Your name" + msgstr "Vaše jméno" + + #. Translators: Label used for the address part of an + #. email address when editing a user's sender address + #. preferences for an account. +-#: src/client/accounts/accounts-editor-add-pane.vala:568 +-#: src/client/accounts/accounts-editor-edit-pane.vala:501 ++#: src/client/accounts/accounts-editor-add-pane.vala:575 ++#: src/client/accounts/accounts-editor-edit-pane.vala:513 + msgid "Email address" + msgstr "E-mailová adresa" + +@@ -382,8 +440,8 @@ msgstr "E-mailová adresa" + #. Translators: This is used as a placeholder for the + #. address part of an email address when editing a user's + #. sender address preferences for an account. +-#: src/client/accounts/accounts-editor-add-pane.vala:571 +-#: src/client/accounts/accounts-editor-edit-pane.vala:469 ++#: src/client/accounts/accounts-editor-add-pane.vala:579 ++#: src/client/accounts/accounts-editor-edit-pane.vala:479 + msgid "person@example.com" + msgstr "osoba@priklad.cz" + +@@ -391,15 +449,15 @@ msgstr "osoba@priklad.cz" + #. when adding an account + #. Translators: Label for the user's login name for an + #. IMAP, SMTP, etc service +-#: src/client/accounts/accounts-editor-add-pane.vala:585 +-#: src/client/accounts/accounts-editor-servers-pane.vala:880 ++#: src/client/accounts/accounts-editor-add-pane.vala:593 ++#: src/client/accounts/accounts-editor-servers-pane.vala:889 + msgid "Login name" + msgstr "Přihlašovací jméno" + + #. Translators: Label for the user's password for an IMAP, + #. SMTP, etc service +-#: src/client/accounts/accounts-editor-add-pane.vala:599 +-#: src/client/accounts/accounts-editor-servers-pane.vala:999 ++#: src/client/accounts/accounts-editor-add-pane.vala:607 ++#: src/client/accounts/accounts-editor-servers-pane.vala:1011 + #: ui/password-dialog.glade:108 + msgid "Password" + msgstr "Heslo" +@@ -408,14 +466,14 @@ msgstr "Heslo" + #. adding an account. + #. Translators: This label describes the host name or IP + #. address and port used by an account's IMAP service. +-#: src/client/accounts/accounts-editor-add-pane.vala:621 +-#: src/client/accounts/accounts-editor-servers-pane.vala:727 ++#: src/client/accounts/accounts-editor-add-pane.vala:629 ++#: src/client/accounts/accounts-editor-servers-pane.vala:733 + msgid "IMAP server" + msgstr "Server IMAP" + + #. Translators: Placeholder for the IMAP server hostname + #. when adding an account. +-#: src/client/accounts/accounts-editor-add-pane.vala:624 ++#: src/client/accounts/accounts-editor-add-pane.vala:632 + msgid "imap.example.com" + msgstr "imap.priklad.cz" + +@@ -423,20 +481,20 @@ msgstr "imap.priklad.cz" + #. adding an account. + #. Translators: This label describes the host name or IP + #. address and port used by an account's SMTP service. +-#: src/client/accounts/accounts-editor-add-pane.vala:630 +-#: src/client/accounts/accounts-editor-servers-pane.vala:733 ++#: src/client/accounts/accounts-editor-add-pane.vala:638 ++#: src/client/accounts/accounts-editor-servers-pane.vala:739 + msgid "SMTP server" + msgstr "Server SMTP" + + #. Translators: Placeholder for the SMTP server hostname + #. when adding an account. +-#: src/client/accounts/accounts-editor-add-pane.vala:633 ++#: src/client/accounts/accounts-editor-add-pane.vala:641 + msgid "smtp.example.com" + msgstr "smtp.priklad.cz" + + #. Translators: Label in the account editor for the user's + #. custom name for an account. +-#: src/client/accounts/accounts-editor-edit-pane.vala:278 ++#: src/client/accounts/accounts-editor-edit-pane.vala:277 + #: ui/accounts_editor_remove_pane.ui:123 + msgid "Account name" + msgstr "Název účtu" +@@ -445,46 +503,46 @@ msgstr "Název účtu" + #. the name of an account. The string + #. substitution is the old name of the + #. account. +-#: src/client/accounts/accounts-editor-edit-pane.vala:312 ++#: src/client/accounts/accounts-editor-edit-pane.vala:318 + #, c-format + msgid "Change account name back to “%s”" + msgstr "Změnit název účtu zpět na „%s“" + + #. Translators: Tooltip for adding a new email sender/from + #. address's address to an account +-#: src/client/accounts/accounts-editor-edit-pane.vala:336 ++#: src/client/accounts/accounts-editor-edit-pane.vala:342 + msgid "Add a new sender email address" + msgstr "Přidat novou e-mailovou adresu odesilatele" + + #. Translators: Label used to indicate the user has + #. provided no display name for one of their sender + #. email addresses in their account settings. +-#: src/client/accounts/accounts-editor-edit-pane.vala:417 ++#: src/client/accounts/accounts-editor-edit-pane.vala:423 + msgid "Name not set" + msgstr "Název není nastavený" + + #. Translators: This is used as a placeholder for the + #. display name for an email address when editing a user's + #. sender address preferences for an account. +-#: src/client/accounts/accounts-editor-edit-pane.vala:456 ++#: src/client/accounts/accounts-editor-edit-pane.vala:464 + msgid "Sender Name" + msgstr "Jméno odesilatele" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:479 ++#: src/client/accounts/accounts-editor-edit-pane.vala:491 + msgid "Remove" + msgstr "Odebrat" + + #. Translators: Label used for the display name part of an + #. email address when editing a user's sender address + #. preferences for an account. +-#: src/client/accounts/accounts-editor-edit-pane.vala:494 ++#: src/client/accounts/accounts-editor-edit-pane.vala:506 + msgid "Sender name" + msgstr "Jméno odesilatele" + + #. Translators: Label used as the undo tooltip after adding an + #. new sender email address to an account. The string + #. substitution is the email address added. +-#: src/client/accounts/accounts-editor-edit-pane.vala:561 ++#: src/client/accounts/accounts-editor-edit-pane.vala:573 + #, c-format + msgid "Remove “%s”" + msgstr "Odebrat „%s“" +@@ -492,7 +550,7 @@ msgstr "Odebrat „%s“" + #. Translators: Label used as the undo tooltip after editing a + #. sender address for an account. The string substitution is + #. the email address edited. +-#: src/client/accounts/accounts-editor-edit-pane.vala:601 ++#: src/client/accounts/accounts-editor-edit-pane.vala:613 + #, c-format + msgid "Undo changes to “%s”" + msgstr "Vrátit změny na „%s“" +@@ -500,7 +558,7 @@ msgstr "Vrátit změny na „%s“" + #. Translators: Label used as the undo tooltip after removing + #. a sender address from an account. The string substitution + #. is the email address edited. +-#: src/client/accounts/accounts-editor-edit-pane.vala:688 ++#: src/client/accounts/accounts-editor-edit-pane.vala:700 + #, c-format + msgid "Add “%s” back" + msgstr "Přidat zpět „%s“" +@@ -508,14 +566,14 @@ msgstr "Přidat zpět „%s“" + #. Translators: Label used as the undo tooltip after removing + #. a sender address from an account. The string substitution + #. is the email address edited. +-#: src/client/accounts/accounts-editor-edit-pane.vala:730 ++#: src/client/accounts/accounts-editor-edit-pane.vala:742 + msgid "Undo signature changes" + msgstr "Vrátit zpět změny v podpisu" + + #. Translators: This label describes the account + #. preference for the length of time (weeks, months or + #. years) that past email should be downloaded. +-#: src/client/accounts/accounts-editor-edit-pane.vala:778 ++#: src/client/accounts/accounts-editor-edit-pane.vala:790 + msgid "Download mail" + msgstr "Stahovat e-maily" + +@@ -524,44 +582,44 @@ msgstr "Stahovat e-maily" + #. should be downloaded for an account. The + #. string substitution is the duration, + #. e.g. "1 month back". +-#: src/client/accounts/accounts-editor-edit-pane.vala:810 ++#: src/client/accounts/accounts-editor-edit-pane.vala:822 + #, c-format + msgid "Change download period back to: %s" + msgstr "Změnit stahované období zpět na %s" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:831 ++#: src/client/accounts/accounts-editor-edit-pane.vala:843 + msgid "Everything" + msgstr "Vše" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:835 ++#: src/client/accounts/accounts-editor-edit-pane.vala:847 + msgid "2 weeks back" + msgstr "2 týdny zpětně" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:839 ++#: src/client/accounts/accounts-editor-edit-pane.vala:851 + msgid "1 month back" + msgstr "1 měsíc zpětně" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:843 ++#: src/client/accounts/accounts-editor-edit-pane.vala:855 + msgid "3 months back" + msgstr "3 měsíce zpětně" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:847 ++#: src/client/accounts/accounts-editor-edit-pane.vala:859 + msgid "6 months back" + msgstr "6 měsíců zpětně" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:851 ++#: src/client/accounts/accounts-editor-edit-pane.vala:863 + msgid "1 year back" + msgstr "1 rok zpětně" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:855 ++#: src/client/accounts/accounts-editor-edit-pane.vala:867 + msgid "2 years back" + msgstr "2 roky zpětně" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:859 ++#: src/client/accounts/accounts-editor-edit-pane.vala:871 + msgid "4 years back" + msgstr "4 roky zpětně" + +-#: src/client/accounts/accounts-editor-edit-pane.vala:865 ++#: src/client/accounts/accounts-editor-edit-pane.vala:877 + #, c-format + msgid "%d day back" + msgid_plural "%d days back" +@@ -569,55 +627,55 @@ msgstr[0] "%d den zpětně" + msgstr[1] "%d dny zpětně" + msgstr[2] "%d dní zpětně" + +-#: src/client/accounts/accounts-editor-list-pane.vala:248 +-#: src/client/application/application-controller.vala:2370 ++#: src/client/accounts/accounts-editor-list-pane.vala:255 ++#: src/client/application/application-main-window.vala:2061 + msgid "Undo" + msgstr "Zpět" + +-#: src/client/accounts/accounts-editor-list-pane.vala:257 ++#: src/client/accounts/accounts-editor-list-pane.vala:264 ++#: src/client/application/application-main-window.vala:2044 + msgid "Redo" + msgstr "Znovu" + +-#: src/client/accounts/accounts-editor-list-pane.vala:351 +-#: src/client/accounts/accounts-editor-list-pane.vala:439 ++#: src/client/accounts/accounts-editor-list-pane.vala:358 ++#: src/client/accounts/accounts-editor-list-pane.vala:454 + #: src/client/accounts/accounts-editor-row.vala:279 + msgid "Gmail" + msgstr "Gmail" + +-#: src/client/accounts/accounts-editor-list-pane.vala:355 +-#: src/client/accounts/accounts-editor-list-pane.vala:443 ++#: src/client/accounts/accounts-editor-list-pane.vala:362 ++#: src/client/accounts/accounts-editor-list-pane.vala:458 + #: src/client/accounts/accounts-editor-row.vala:283 + msgid "Outlook.com" + msgstr "Outlook.com" + +-#: src/client/accounts/accounts-editor-list-pane.vala:359 +-#: src/client/accounts/accounts-editor-list-pane.vala:447 ++#: src/client/accounts/accounts-editor-list-pane.vala:366 ++#: src/client/accounts/accounts-editor-list-pane.vala:462 + #: src/client/accounts/accounts-editor-row.vala:287 + msgid "Yahoo" + msgstr "Yahoo" + + #. Translators: Tooltip for accounts that have been + #. loaded but disabled by the user. +-#: src/client/accounts/accounts-editor-list-pane.vala:377 ++#: src/client/accounts/accounts-editor-list-pane.vala:388 + msgid "This account has been disabled" + msgstr "Tento účet byl zakázán" + + #. Translators: Tooltip for accounts that have been + #. loaded but because of some error are not able to be + #. used. +-#: src/client/accounts/accounts-editor-list-pane.vala:386 ++#: src/client/accounts/accounts-editor-list-pane.vala:397 + msgid "This account has encountered a problem and is unavailable" + msgstr "U tohoto účtu účtu se objevil problém a proto je nedostupný" + +-#. Translators: Label for adding a generic email account +-#: src/client/accounts/accounts-editor-list-pane.vala:436 ++#: src/client/accounts/accounts-editor-list-pane.vala:466 + msgid "Other email providers" + msgstr "Jiný poskytovatel e-mailu" + + #. Translators: Notification shown after removing an + #. account. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:553 ++#: src/client/accounts/accounts-editor-list-pane.vala:572 + #, c-format + msgid "Account “%s” removed" + msgstr "Účet „%s“ byl odebrán" +@@ -625,7 +683,7 @@ msgstr "Účet „%s“ byl odebrán" + #. Translators: Notification shown after removing an account + #. is undone. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:560 ++#: src/client/accounts/accounts-editor-list-pane.vala:579 + #, c-format + msgid "Account “%s” restored" + msgstr "Účet „%s“ byl obnoven" +@@ -638,66 +696,66 @@ msgstr "Položku můžete přesunout přetažením" + #. Translators: Label describes the service provider + #. hosting the email account, e.g. Gmail, Yahoo, or some + #. other generic IMAP service. +-#: src/client/accounts/accounts-editor-row.vala:295 ++#: src/client/accounts/accounts-editor-row.vala:299 + msgid "Service provider" + msgstr "Poskytovatel služby" + + #. Translators: This label describes what form of transport + #. security (TLS, StartTLS, etc) used by an account's IMAP or SMTP + #. service. +-#: src/client/accounts/accounts-editor-row.vala:468 ++#: src/client/accounts/accounts-editor-row.vala:473 + msgid "Connection security" + msgstr "Zabezpečení připojení" + + #. Translators: Label used when no auth scheme is used + #. by an account's IMAP or SMTP service. +-#: src/client/accounts/accounts-editor-row.vala:479 +-#: src/client/accounts/accounts-editor-servers-pane.vala:752 +-#: src/client/accounts/accounts-editor-servers-pane.vala:964 +-#: src/engine/api/geary-special-folder-type.vala:58 ++#: src/client/accounts/accounts-editor-row.vala:484 ++#: src/client/accounts/accounts-editor-servers-pane.vala:760 ++#: src/client/accounts/accounts-editor-servers-pane.vala:975 + msgid "None" + msgstr "Žádné" + +-#: src/client/accounts/accounts-editor-row.vala:486 ++#: src/client/accounts/accounts-editor-row.vala:491 + msgid "StartTLS" + msgstr "StartTLS" + +-#: src/client/accounts/accounts-editor-row.vala:493 ++#: src/client/accounts/accounts-editor-row.vala:498 + msgid "TLS" + msgstr "TLS" + + #. Translators: Label for source of SMTP authentication + #. credentials (none, use IMAP, custom) when adding a new + #. account +-#. Button label for retrying when a login error has occurred +-#: src/client/accounts/accounts-editor-row.vala:534 ui/main-window.ui:346 ++#. Translators: An info bar button label ++#: src/client/accounts/accounts-editor-row.vala:539 ++#: src/client/application/application-main-window.vala:554 + msgid "Login" + msgstr "Přihlášení" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (none) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:541 ++#: src/client/accounts/accounts-editor-row.vala:546 + msgid "No login needed" + msgstr "přihlášení není zapotřebí" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (use IMAP) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:549 ++#: src/client/accounts/accounts-editor-row.vala:554 + msgid "Use same login as receiving" + msgstr "používat stejné přihlášení jako pro příjem" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (custom) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:557 ++#: src/client/accounts/accounts-editor-row.vala:562 + msgid "Use a different login" + msgstr "používat jiné přihlášení" + + #. Translators: In-app notification label, the + #. string substitution is a more detailed reason. +-#: src/client/accounts/accounts-editor-servers-pane.vala:377 ++#: src/client/accounts/accounts-editor-servers-pane.vala:382 + #, c-format + msgid "Account not updated: %s" + msgstr "Účet nebyl aktualizován: %s" +@@ -705,23 +763,23 @@ msgstr "Účet nebyl aktualizován: %s" + #. Translators: This label describes the program that + #. created the account, e.g. an SSO service like GOA, or + #. locally by Geary. +-#: src/client/accounts/accounts-editor-servers-pane.vala:540 ++#: src/client/accounts/accounts-editor-servers-pane.vala:545 + msgid "Account source" + msgstr "Původ účtu" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:552 ++#: src/client/accounts/accounts-editor-servers-pane.vala:557 + msgid "GNOME Online Accounts" + msgstr "Účty on-line GNOME" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:611 ++#: src/client/accounts/accounts-editor-servers-pane.vala:616 + msgid "Save draft email on server" + msgstr "Ukládat koncepty zpráv na server" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:666 ++#: src/client/accounts/accounts-editor-servers-pane.vala:671 + msgid "Save sent email on server" + msgstr "Ukládat odeslané zpravy na server" + +@@ -730,338 +788,179 @@ msgstr "Ukládat odeslané zpravy na server" + #. Translators: Label used when an account's IMAP or + #. SMTP service uses OAuth2. The string replacement is + #. the service's login name. +-#: src/client/accounts/accounts-editor-servers-pane.vala:950 ++#: src/client/accounts/accounts-editor-servers-pane.vala:961 + #, c-format + msgid "%s using OAuth2" + msgstr "%s pomocí OAuth2" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:960 ++#: src/client/accounts/accounts-editor-servers-pane.vala:971 + msgid "Use receiving server login" + msgstr "Používat přihlášení přijimacího serveru" + + #. Translators: File name used in save chooser when saving + #. attachments that do not otherwise have a name. +-#: src/client/application/application-controller.vala:59 ++#: src/client/application/application-attachment-manager.vala:21 + msgid "Untitled" + msgstr "Bez názvu" + +-#. / Notification title. +-#: src/client/application/application-controller.vala:532 +-#, c-format +-msgid "A problem occurred sending email for %s" +-msgstr "Vyskytl se problém při odesílání pošty z účtu %s" +- +-#. / Notification body +-#: src/client/application/application-controller.vala:536 +-msgid "Email will not be sent until re-connected" +-msgstr "Dokud se znovu nepřipojíte, nebudou se odesílat zprávy." +- +-#: src/client/application/application-controller.vala:887 +-msgid "Labels" +-msgstr "Štítky" +- +-#. give the user two options: reset the Account local store, or exit Geary. A third +-#. could be done to leave the Account in an unopened state, but we don't currently +-#. have provisions for that. +-#: src/client/application/application-controller.vala:900 +-#, c-format +-msgid "Unable to open the database for %s" +-msgstr "Nelze otevřít databázi pro %s" +- +-#: src/client/application/application-controller.vala:901 +-#, c-format +-msgid "" +-"There was an error opening the local mail database for this account. This is " +-"possibly due to corruption of the database file in this directory:\n" +-"\n" +-"%s\n" +-"\n" +-"Geary can rebuild the database and re-synchronize with the server or exit.\n" +-"\n" +-"Rebuilding the database will destroy all local email and its attachments. " +-"The mail on the your server will not be affected." +-msgstr "" +-"Došlo k chybě při otevírání místní databáze e-mailů pro tento účet. Je to " +-"možná kvůli poškození databázového souboru v této složce:\n" +-"\n" +-"%s\n" +-"\n" +-"Geary může znovu sestavit databázi a synchronizovat ji se serverem nebo " +-"skončit.\n" +-"\n" +-"Opětovné sestavení databáze zničí všechny místně uložené e-maily a jejich " +-"přílohy Na e-maily na vašem serveru to nebude mít vliv." +- +-#: src/client/application/application-controller.vala:903 +-msgid "_Rebuild" +-msgstr "Znovu _sestavit" +- +-#: src/client/application/application-controller.vala:903 +-msgid "E_xit" +-msgstr "S_končit" +- +-#: src/client/application/application-controller.vala:912 +-#, c-format +-msgid "Unable to rebuild database for “%s”" +-msgstr "Nelze znovu sestavit databázi pro „%s“" +- +-#: src/client/application/application-controller.vala:913 +-#, c-format +-msgid "" +-"Error during rebuild:\n" +-"\n" +-"%s" +-msgstr "" +-"Chyba při opětovném sestavení:\n" +-"\n" +-"%s" +- +-#: src/client/application/application-controller.vala:1703 +-#, c-format +-msgid "Moved %d message to %s" +-msgid_plural "Moved %d messages to %s" +-msgstr[0] "Byla přesunuta %d zpráva do složky %s" +-msgstr[1] "Byly přesunuty %d zprávy do složky %s" +-msgstr[2] "Bylo přesunutu %d zpráv do složky %s" +- +-#: src/client/application/application-controller.vala:1713 +-msgid "Are you sure you want to open these attachments?" +-msgstr "Opravdu chcete otevřít tuto přílohu?" +- +-#: src/client/application/application-controller.vala:1714 +-msgid "" +-"Attachments may cause damage to your system if opened. Only open files from " +-"trusted sources." +-msgstr "" +-"Příloha by po otevření mohla poškodit váš počítač. Otevírejte pouze soubory " +-"z důvěryhodných zdrojů. " +- +-#: src/client/application/application-controller.vala:1715 +-msgid "Don’t _ask me again" +-msgstr "Příště se nept_at" +- +-#. Translators: Dialog primary label when prompting to +-#. overwrite a file. The string substitution is the file'sx +-#. name. +-#: src/client/application/application-controller.vala:1838 ++#. / Translators: Dialog primary label when prompting to ++#. / overwrite a file. The string substitution is the file'sx ++#. / name. ++#: src/client/application/application-attachment-manager.vala:222 + #, c-format + msgid "A file named “%s” already exists. Do you want to replace it?" + msgstr "Soubor s názvem „%s“ již existuje. Chcete ho nahradit?" + +-#. Translators: Dialog secondary label when prompting to +-#. overwrite a file. The string substitution is the parent +-#. folder's name. +-#: src/client/application/application-controller.vala:1845 ++#. / Translators: Dialog secondary label when prompting to ++#. / overwrite a file. The string substitution is the parent ++#. / folder's name. ++#: src/client/application/application-attachment-manager.vala:229 + #, c-format + msgid "" + "The file already exists in “%s”. Replacing it will overwrite its contents." + msgstr "Soubor již existuje v „%s“. Nahrazením přepíšete jeho obsah." + +-#: src/client/application/application-controller.vala:1849 ++#: src/client/application/application-attachment-manager.vala:236 + msgid "_Replace" + msgstr "Nah_radit" + +-#: src/client/application/application-controller.vala:2209 +-#, c-format +-msgid "Empty all email from your %s folder?" +-msgstr "Vyprázdnit všechny zprávy z vaší složky %s?" +- +-#: src/client/application/application-controller.vala:2210 +-msgid "This removes the email from Geary and your email server." +-msgstr "Tímto se odstraní pošta z aplikace Geary i z poštovního serveru." +- +-#: src/client/application/application-controller.vala:2211 +-msgid "This cannot be undone." +-msgstr "Nebude možné to vrátit zpět." +- +-#: src/client/application/application-controller.vala:2212 +-#, c-format +-msgid "Empty %s" +-msgstr "Vyprázdnit %s" +- +-#: src/client/application/application-controller.vala:2229 +-#, c-format +-msgid "Error emptying %s" +-msgstr "Chyba při vyprazďňování složky %s" +- +-#: src/client/application/application-controller.vala:2260 +-msgid "Do you want to permanently delete this message?" +-msgid_plural "Do you want to permanently delete these messages?" +-msgstr[0] "Chcete trvale smazat tuto zprávu?" +-msgstr[1] "Chcete trvale smazat tyto zprávy?" +-msgstr[2] "Chcete trvale smazat tyto zprávy?" +- +-#: src/client/application/application-controller.vala:2262 +-msgid "Delete" +-msgstr "Smazat" +- +-#: src/client/application/application-controller.vala:2276 +-#, c-format +-msgid "Trashed %d message" +-msgid_plural "Trashed %d messages" +-msgstr[0] "Byla vyhozen %d zpráva do koše" +-msgstr[1] "Byla vyhozeny %d zprávy do koše" +-msgstr[2] "Bylo vyhozeno %d zpráv do koše" +- +-#: src/client/application/application-controller.vala:2323 +-#, c-format +-msgid "Archived %d message" +-msgid_plural "Archived %d messages" +-msgstr[0] "Byla archovována %d zpráva" +-msgstr[1] "Byly archovovány %d zprávy" +-msgstr[2] "Bylo archovováno %d zpráv" +- +-#. Translators: The label for an in-app notification. The +-#. string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2452 +-#, c-format +-msgid "Successfully sent mail to %s." +-msgstr "Byl úspěšně odeslán e-mail na %s." +- +-#: src/client/application/application-controller.vala:2531 +-msgid "Failed to open default text editor." +-msgstr "Nepodařilo se otevřít výchozí textový editor." +- +-#: src/client/application/geary-application.vala:32 ++#: src/client/application/application-client.vala:34 + msgid "Copyright 2016 Software Freedom Conservancy Inc." + msgstr "Copyright 2016 Software Freedom Conservancy Inc." + +-#: src/client/application/geary-application.vala:33 +-msgid "Copyright 2016-2019 Geary Development Team." +-msgstr "© 2016 - 2019 Vývojářský tým aplikace Geary" ++#: src/client/application/application-client.vala:35 ++msgid "Copyright 2016-2020 Geary Development Team." ++msgstr "© 2016 - 2020 Vývojářský tým aplikace Geary" + +-#: src/client/application/geary-application.vala:35 ++#: src/client/application/application-client.vala:37 + msgid "Visit the Geary web site" + msgstr "Navštívit webové stránky Geary" + + #. / Command line option +-#: src/client/application/geary-application.vala:110 ++#: src/client/application/application-client.vala:97 + msgid "Print debug logging" + msgstr "Vypisovat ladicí záznamy" + + #. / Command line option +-#: src/client/application/geary-application.vala:113 ++#: src/client/application/application-client.vala:100 + msgid "Start with the main window hidden (deprecated)" + msgstr "Spustit se skrytým hlavním oknem (zavrženo)" + + #. / Command line option +-#: src/client/application/geary-application.vala:116 ++#: src/client/application/application-client.vala:103 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "Povolit inspektora WebKitGTK v zobrazeních formátovaných pomocí HTML" + + #. / Command line option +-#: src/client/application/geary-application.vala:119 ++#: src/client/application/application-client.vala:106 + msgid "Log conversation monitoring" + msgstr "Zaznamenávat sledování konverzace" + + #. / Command line option +-#: src/client/application/geary-application.vala:122 ++#: src/client/application/application-client.vala:109 + msgid "Log IMAP network deserialization" + msgstr "Zaznamenávat síťové deserializace protokolu IMAP" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/geary-application.vala:126 ++#: src/client/application/application-client.vala:113 + msgid "Log folder normalization" + msgstr "Zaznamenávat normalizace složky" + + #. / Command line option +-#: src/client/application/geary-application.vala:129 +-msgid "Log network activity" +-msgstr "Zaznamenávat aktivity sítě" +- +-#. / Command line option +-#: src/client/application/geary-application.vala:132 +-msgid "Log periodic activity" +-msgstr "Zaznamenávat opakující se aktivity" ++#: src/client/application/application-client.vala:116 ++msgid "Log IMAP network activity" ++msgstr "Zaznamenávat síťové aktivity IMAP" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could + #. / also be called the IMAP events queue. +-#: src/client/application/geary-application.vala:137 ++#: src/client/application/application-client.vala:121 + msgid "Log IMAP replay queue" + msgstr "Zaznamenávat frontu událostí IMAP" + +-#. / Command line option. Serialization is how commands and +-#. / responses are converted into a stream of bytes for +-#. / network transmission +-#: src/client/application/geary-application.vala:142 +-msgid "Log IMAP network serialization" +-msgstr "Zaznamenávat síťové serializace protokolu IMAP" ++#. / Command line option ++#: src/client/application/application-client.vala:124 ++msgid "Log SMTP network activity" ++msgstr "Zaznamenávat síťové aktivity SMTP" + + #. / Command line option +-#: src/client/application/geary-application.vala:145 ++#: src/client/application/application-client.vala:127 + msgid "Log database queries (generates lots of messages)" + msgstr "Zaznamenávat databázové dotazy (generuje velké množství zpráv)" + + #. / Command line option +-#: src/client/application/geary-application.vala:148 ++#: src/client/application/application-client.vala:130 + msgid "Perform a graceful quit" + msgstr "Korektně ukončit" + ++#: src/client/application/application-client.vala:132 ++msgid "Open a new window" ++msgstr "Otevřít nové okno" ++ + #. / Command line option +-#: src/client/application/geary-application.vala:151 ++#: src/client/application/application-client.vala:135 + msgid "Revoke all pinned TLS server certificates" + msgstr "Odvolat všechny spjaté serverové certifikáty TLS" + + #. / Command line option +-#: src/client/application/geary-application.vala:154 ++#: src/client/application/application-client.vala:138 + msgid "Display program version" + msgstr "Zobrazit verzi programu" + + #. / Application runtime information label +-#: src/client/application/geary-application.vala:285 ++#: src/client/application/application-client.vala:262 + msgid "Geary version" + msgstr "Verze Geary" + + #. / Application runtime information label +-#: src/client/application/geary-application.vala:287 ++#: src/client/application/application-client.vala:264 + msgid "Geary revision" + msgstr "Revize Geary" + + #. / Application runtime information label +-#: src/client/application/geary-application.vala:289 ++#: src/client/application/application-client.vala:266 + msgid "GTK version" + msgstr "Verze GTK" + + #. / Applciation runtime information label +-#: src/client/application/geary-application.vala:296 ++#: src/client/application/application-client.vala:273 + msgid "GLib version" + msgstr "Verze GLib" + + #. / Application runtime information label +-#: src/client/application/geary-application.vala:303 ++#: src/client/application/application-client.vala:280 + msgid "WebKitGTK version" + msgstr "Verze WebKitGTK" + + #. / Application runtime information label +-#: src/client/application/geary-application.vala:310 ++#: src/client/application/application-client.vala:287 + msgid "Desktop environment" + msgstr "Uživatelské prostředí" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/geary-application.vala:312 +-#: src/client/conversation-viewer/conversation-email.vala:159 ++#: src/client/application/application-client.vala:289 ++#: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Neznámý" + + #. / Application runtime information label +-#: src/client/application/geary-application.vala:342 ++#: src/client/application/application-client.vala:293 + msgid "Distribution name" + msgstr "Název distribuce" + + #. / Application runtime information label +-#: src/client/application/geary-application.vala:347 ++#: src/client/application/application-client.vala:298 + msgid "Distribution release" + msgstr "Vydání distribuce" + + #. / Application runtime information label +-#: src/client/application/geary-application.vala:355 ++#: src/client/application/application-client.vala:303 + msgid "Installation prefix" + msgstr "Prefix instalace" + +-#: src/client/application/geary-application.vala:515 ++#: src/client/application/application-client.vala:559 + #, c-format + msgid "About %s" + msgstr "O aplikaci %s" +@@ -1069,7 +968,7 @@ msgstr "O aplikaci %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/geary-application.vala:519 ++#: src/client/application/application-client.vala:563 + msgid "translator-credits" + msgstr "" + "Petr Šimáček \n" +@@ -1077,133 +976,439 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/geary-application.vala:841 ++#: src/client/application/application-client.vala:1047 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "Volba „--hidden“ je zavržená a v budoucnu bude odstraněna." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/geary-application.vala:873 ++#: src/client/application/application-client.vala:1080 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Nerozpoznaný argument aplikace: „%s“" + +-#: src/client/components/components-inspector.vala:68 +-msgid "Inspector" +-msgstr "Inspektor" +- +-#. / Translators: Title for Inspector logs pane +-#. / Translators: Title for problem report dialog logs pane +-#: src/client/components/components-inspector.vala:77 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:91 +-msgid "Logs" +-msgstr "Záznamy" ++#. / Notification title. ++#: src/client/application/application-controller.vala:479 ++#, c-format ++msgid "A problem occurred sending email for %s" ++msgstr "Vyskytl se problém při odesílání pošty z účtu %s" + +-#. / Translators: Title for Inspector system system information pane +-#. / Translators: Title for problem report system information +-#. / pane +-#: src/client/components/components-inspector.vala:81 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:94 +-msgid "System" +-msgstr "Systém" ++#. / Notification body ++#: src/client/application/application-controller.vala:483 ++msgid "Email will not be sent until re-connected" ++msgstr "Dokud se znovu nepřipojíte, nebudou se odesílat zprávy." + +-#. Button label for saving problem report information +-#: src/client/components/components-inspector.vala:198 +-#: src/client/components/components-inspector.vala:201 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:210 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:213 +-#: ui/problem-details-dialog.ui:42 +-msgid "Save As" +-msgstr "Uložit jako" ++#. / Translators: Label for in-app notification ++#: src/client/application/application-controller.vala:582 ++msgid "Conversation marked" ++msgid_plural "Conversations marked" ++msgstr[0] "Konverzace byla označena" ++msgstr[1] "Konverzace byly označeny" ++msgstr[2] "Konverzace byly označeny" ++ ++#. / Translators: Label for in-app notification ++#: src/client/application/application-controller.vala:588 ++msgid "Conversation un-marked" ++msgid_plural "Conversations un-marked" ++msgstr[0] "Označení konverzace bylo zrušeno" ++msgstr[1] "Označení konverzací bylo zrušeno" ++msgstr[2] "Označení konverzací bylo zrušeno" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the destination folder. ++#: src/client/application/application-controller.vala:614 ++#: src/client/application/application-controller.vala:698 ++#, c-format ++msgid "Conversation moved to %s" ++msgid_plural "Conversations moved to %s" ++msgstr[0] "Konverzace byla přesunuta do složky %s" ++msgstr[1] "Konverzace byly přesunuty do složky %s" ++msgstr[2] "Konverzace byly přesunuty do složky %s" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the source folder. ++#. / Translators: Label for in-app notification. String ++#. / substitution is the name of the destination folder. ++#: src/client/application/application-controller.vala:622 ++#: src/client/application/application-controller.vala:644 ++#, c-format ++msgid "Conversation restored to %s" ++msgid_plural "Conversations restored to %s" ++msgstr[0] "Konverzace byla obnovena do složky %s" ++msgstr[1] "Konverzace byly obnoveny do složky %s" ++msgstr[2] "Konverzace byly obnoveny do složky %s" ++ ++#. / Translators: Label for in-app notification. ++#: src/client/application/application-controller.vala:665 ++msgid "Conversation archived" ++msgid_plural "Conversations archived" ++msgstr[0] "Konverzace byla archivována" ++msgstr[1] "Konverzace byly archivovány" ++msgstr[2] "Konverzace byly archivovány" ++ ++#. / Translators: Label for in-app notification. String ++#. / substitution is the name of the destination folder. ++#: src/client/application/application-controller.vala:721 ++#, c-format ++msgid "Message restored to %s" ++msgid_plural "Messages restored to %s" ++msgstr[0] "Zpráva byla obnovena do složky %s" ++msgstr[1] "Zprávy byly obnoveny do složky %s" ++msgstr[2] "Zprávy byly obnoveny do složky %s" ++ ++#. / Translators: Label for in-app notification. ++#: src/client/application/application-controller.vala:742 ++msgid "Message archived" ++msgid_plural "Messages archived" ++msgstr[0] "Zpráva byla archivována" ++msgstr[1] "Zpráva byly archivovány" ++msgstr[2] "Zpráva byly archivovány" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the destination folder. ++#: src/client/application/application-controller.vala:777 ++#, c-format ++msgid "Message moved to %s" ++msgid_plural "Messages moved to %s" ++msgstr[0] "Zpráva byla přesunuta do složky %s" ++msgstr[1] "Zprávy byly přesunuty do složky %s" ++msgstr[2] "Zprávy byly přesunuty do složky %s" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the destination folder. ++#: src/client/application/application-controller.vala:805 ++#, c-format ++msgid "Conversation labelled as %s" ++msgid_plural "Conversations labelled as %s" ++msgstr[0] "Konverzaci byl přiřazen štítek %s" ++msgstr[1] "Konverzacím byl přiřazen štítek %s" ++msgstr[2] "Konverzacím byl přiřazen štítek %s" ++ ++#. / Translators: Label for in-app ++#. / notification. String substitution is the name ++#. / of the destination folder. ++#: src/client/application/application-controller.vala:813 ++#, c-format ++msgid "Conversation un-labelled as %s" ++msgid_plural "Conversations un-labelled as %s" ++msgstr[0] "Konverzaci byl odebrán štítek %s" ++msgstr[1] "Konverzacím byl odebrán štítek %s" ++msgstr[2] "Konverzacím byl odebrán štítek %s" + +-#: src/client/components/components-inspector.vala:202 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:214 +-#: ui/accounts_editor_servers_pane.ui:17 +-msgid "Cancel" +-msgstr "Zrušit" ++#: src/client/application/application-controller.vala:1320 ++#, c-format ++msgid "Unable to open the database for %s" ++msgstr "Nelze otevřít databázi pro %s" + +-#. Translators: Tooltip used when an entry requires a valid +-#. email address to be entered, but one is not provided. +-#: src/client/components/components-validator.vala:378 +-msgid "An email address is required" +-msgstr "Je vyžadována e-mailová adresa" ++#: src/client/application/application-controller.vala:1321 ++#, c-format ++msgid "" ++"There was an error opening the local mail database for this account. This is " ++"possibly due to corruption of the database file in this directory:\n" ++"\n" ++"%s\n" ++"\n" ++"Geary can rebuild the database and re-synchronize with the server or exit.\n" ++"\n" ++"Rebuilding the database will destroy all local email and its attachments. " ++"The mail on the your server will not be affected." ++msgstr "" ++"Došlo k chybě při otevírání místní databáze e-mailů pro tento účet. Je to " ++"možná kvůli poškození databázového souboru v této složce:\n" ++"\n" ++"%s\n" ++"\n" ++"Geary může znovu sestavit databázi a synchronizovat ji se serverem nebo " ++"skončit.\n" ++"\n" ++"Opětovné sestavení databáze zničí všechny místně uložené e-maily a jejich " ++"přílohy Na e-maily na vašem serveru to nebude mít vliv." + +-#. Translators: Tooltip used when an entry requires a valid +-#. email address to be entered, but the address is invalid. +-#: src/client/components/components-validator.vala:382 +-msgid "Not a valid email address" +-msgstr "E-mailová adresa není platná" ++#: src/client/application/application-controller.vala:1323 ++msgid "_Rebuild" ++msgstr "Znovu _sestavit" + +-#. Translators: Tooltip used when an entry requires a valid, +-#. resolvable server name to be entered, but one is not +-#. provided. +-#: src/client/components/components-validator.vala:428 +-msgid "A server name is required" +-msgstr "Je vyžadován název serveru" ++#: src/client/application/application-controller.vala:1323 ++msgid "E_xit" ++msgstr "S_končit" + +-#. Translators: Tooltip used when an entry requires a valid +-#. server name to be entered, but it was unable to be +-#. looked-up in the DNS. +-#: src/client/components/components-validator.vala:433 +-msgid "Could not look up server name" +-msgstr "Nelze najít název serveru" ++#: src/client/application/application-controller.vala:1333 ++#, c-format ++msgid "Unable to rebuild database for “%s”" ++msgstr "Nelze znovu sestavit databázi pro „%s“" + +-#: src/client/components/main-toolbar.vala:139 +-msgid "Mark conversation" +-msgid_plural "Mark conversations" +-msgstr[0] "Označit konverzaci" +-msgstr[1] "Označit konverzace" +-msgstr[2] "Označit konverzace" ++#: src/client/application/application-controller.vala:1334 ++#, c-format ++msgid "" ++"Error during rebuild:\n" ++"\n" ++"%s" ++msgstr "" ++"Chyba při opětovném sestavení:\n" ++"\n" ++"%s" + +-#: src/client/components/main-toolbar.vala:144 +-msgid "Add label to conversation" +-msgid_plural "Add label to conversations" +-msgstr[0] "Přiřadit konverzaci štítek" +-msgstr[1] "Přiřadit konverzacím štítek" +-msgstr[2] "Přiřadit konverzacím štítek" ++#. / Translators: The label for an in-app notification. The ++#. / string substitution is a list of recipients of the email. ++#: src/client/application/application-controller.vala:1501 ++#, c-format ++msgid "Email sent to %s" ++msgstr "E-mail pro příjemce %s byl odeslán" + +-#: src/client/components/main-toolbar.vala:149 +-msgid "Move conversation" +-msgid_plural "Move conversations" +-msgstr[0] "Přesunout konverzaci" +-msgstr[1] "Přesunout konverzace" +-msgstr[2] "Přesunout konverzace" ++#. / Translators: The label for an in-app notification. The ++#. / string substitution is a list of recipients of the email. ++#: src/client/application/application-controller.vala:2491 ++#, c-format ++msgid "Email to %s queued for delivery" ++msgstr "E-mail pro příjemce %s byl zařazen do doručovací fronty" + +-#: src/client/components/main-toolbar.vala:154 +-msgid "Archive conversation" +-msgid_plural "Archive conversations" +-msgstr[0] "Archivovat konverzaci (A)" +-msgstr[1] "Archivovat konverzace (A)" +-msgstr[2] "Archivovat konverzace (A)" ++#. / Translators: The label for an in-app notification. The ++#. / string substitution is a list of recipients of the email. ++#: src/client/application/application-controller.vala:2555 ++#, c-format ++msgid "Email to %s saved" ++msgstr "E-mail pro příjemce %s byl uložen" ++ ++#. / Translators: A label for an in-app notification. ++#: src/client/application/application-controller.vala:2570 ++#: src/client/application/application-controller.vala:2628 ++msgid "Composer could not be restored" ++msgstr "Nezdařílo se obnovit předchozí stav editoru" ++ ++#. / Translators: The label for an in-app notification. The ++#. / string substitution is a list of recipients of the email. ++#: src/client/application/application-controller.vala:2613 ++#, c-format ++msgid "Email to %s discarded" ++msgstr "E-mail pro příjemce %s byl zahozen" + +-#: src/client/components/main-toolbar.vala:163 +-msgid "Move conversation to Trash" +-msgid_plural "Move conversations to Trash" +-msgstr[0] "Přesunout konverzaci" +-msgstr[1] "Přesunout konverzace" +-msgstr[2] "Přesunout konverzace" ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:540 ++msgid "Working offline" ++msgstr "Pracuje se v režimu odpojení" + +-#: src/client/components/main-toolbar.vala:171 +-msgid "Delete conversation" +-msgid_plural "Delete conversations" +-msgstr[0] "Vymazat konverzaci" +-msgstr[1] "Vymazat konverzace" +-msgstr[2] "Vymazat konverzace" ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:542 ++msgid "You will not be able to send or receive email until re-connected." ++msgstr "Dokud se znovu nepřipojíte, nebudete moci odesílat a přijímat e-maily." ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:549 ++msgid "Login problem" ++msgstr "Problém s přihlášením" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:551 ++msgid "An account has reported an incorrect login or password." ++msgstr "Účet oznámil nesprávné přihlašovací jméno nebo heslo." ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:558 ++msgid "Retry login, you will be prompted for your password" ++msgstr "Zkusit znovu přihlásit, budete dotázáni na heslo" ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:565 ++msgid "Security problem" ++msgstr "Problém se zabezpečením" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:567 ++msgid "An account has reported an untrusted server." ++msgstr "Účet oznámil nedůvěryhodný server." ++ ++#. Translators: An info bar button label ++#: src/client/application/application-main-window.vala:570 ++msgid "Check" ++msgstr "Zkontrolovat" ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:574 ++msgid "Check the security details for the connection" ++msgstr "Zkontrolovat údaje zabezpečení pro připojení" ++ ++#. / Translators: Main window title, first string ++#. / substitution being the currently selected folder name, ++#. / the second being the selected account name. ++#: src/client/application/application-main-window.vala:617 ++#, c-format ++msgid "%s — %s" ++msgstr "%s — %s" ++ ++#. Translators: The name of the folder group containing ++#. folders created by people (as opposed to special-use ++#. folders) ++#: src/client/application/application-main-window.vala:996 ++#: src/client/folder-list/folder-list-account-branch.vala:43 ++msgid "Labels" ++msgstr "Štítky" ++ ++#: src/client/application/application-main-window.vala:1293 ++#, c-format ++msgid "Empty all email from your %s folder?" ++msgstr "Vyprázdnit všechny zprávy z vaší složky %s?" ++ ++#: src/client/application/application-main-window.vala:1294 ++msgid "This removes the email from Geary and your email server." ++msgstr "Tímto se odstraní pošta z aplikace Geary i z poštovního serveru." ++ ++#: src/client/application/application-main-window.vala:1295 ++msgid "This cannot be undone." ++msgstr "Nebude možné to vrátit zpět." ++ ++#: src/client/application/application-main-window.vala:1296 ++#, c-format ++msgid "Empty %s" ++msgstr "Vyprázdnit %s" ++ ++#. / Translators: Primary text for a confirmation dialog ++#: src/client/application/application-main-window.vala:1353 ++msgid "Do you want to permanently delete this conversation?" ++msgid_plural "Do you want to permanently delete these conversations?" ++msgstr[0] "Chcete trvale smazat tuto konverzaci?" ++msgstr[1] "Chcete trvale smazat tyto konverzace?" ++msgstr[2] "Chcete trvale smazat tyto konverzace?" + +-#: src/client/components/main-window.vala:738 ++#: src/client/application/application-main-window.vala:1358 ++#: src/client/application/application-main-window.vala:1373 ++msgid "Delete" ++msgstr "Smazat" ++ ++#. / Translators: Primary text for a confirmation dialog ++#: src/client/application/application-main-window.vala:1368 ++msgid "Do you want to permanently delete this message?" ++msgid_plural "Do you want to permanently delete these messages?" ++msgstr[0] "Chcete trvale smazat tuto zprávu?" ++msgstr[1] "Chcete trvale smazat tyto zprávy?" ++msgstr[2] "Chcete trvale smazat tyto zprávy?" ++ ++#: src/client/application/application-main-window.vala:1691 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" + ++#. Translators: The first argument will be a ++#. description of the document type, the second will ++#. be a human-friendly size string. For example: ++#. Document (100.9MB) ++#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" ++#: src/client/components/components-attachment-pane.vala:107 ++#: src/client/composer/composer-widget.vala:1784 ++#, c-format ++msgid "%s (%s)" ++msgstr "%s (%s)" ++ ++#: src/client/components/components-attachment-pane.vala:379 ++msgid "Are you sure you want to open these attachments?" ++msgstr "Opravdu chcete otevřít tuto přílohu?" ++ ++#: src/client/components/components-attachment-pane.vala:380 ++msgid "" ++"Attachments may cause damage to your system if opened. Only open files from " ++"trusted sources." ++msgstr "" ++"Příloha by po otevření mohla poškodit váš počítač. Otevírejte pouze soubory " ++"z důvěryhodných zdrojů. " ++ ++#: src/client/components/components-attachment-pane.vala:381 ++msgid "Don’t _ask me again" ++msgstr "Příště se nept_at" ++ ++#: src/client/components/components-inspector.vala:78 ++msgid "Inspector" ++msgstr "Inspektor" ++ ++#. / Translators: Title for Inspector logs pane ++#. / Translators: Title for problem report dialog logs pane ++#: src/client/components/components-inspector.vala:93 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 ++msgid "Logs" ++msgstr "Záznamy" ++ ++#. / Translators: Title for Inspector system system information pane ++#. / Translators: Title for problem report system information ++#. / pane ++#: src/client/components/components-inspector.vala:97 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 ++msgid "System" ++msgstr "Systém" ++ ++#. Button label for saving problem report information ++#: src/client/components/components-inspector.vala:226 ++#: src/client/components/components-inspector.vala:229 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 ++#: ui/problem-details-dialog.ui:47 ++msgid "Save As" ++msgstr "Uložit jako" ++ ++#: src/client/components/components-inspector.vala:230 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 ++#: ui/accounts_editor_servers_pane.ui:17 ++msgid "Cancel" ++msgstr "Zrušit" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:124 ++msgid "_Automatically select next message" ++msgstr "_Automaticky vybírat další zprávu" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:134 ++msgid "_Display conversation preview" ++msgstr "_Zobrazovat náhled konverzace" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:144 ++msgid "Use _three pane view" ++msgstr "Používat _třípanelové zobrazení" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:154 ++msgid "Use _single key email shortcuts" ++msgstr "Používat pro e-maily jednokláve_sové zkratky" ++ ++#: src/client/components/components-preferences-window.vala:156 ++msgid "" ++"Enable keyboard shortcuts for email actions that do not require pressing " ++"" ++msgstr "" ++"Pro činnosti s e-maily povolit klávesové zkratky, které nepotřebují zmáčknout " ++"" ++ ++#. / Translators: Preferences label ++#: src/client/components/components-preferences-window.vala:167 ++msgid "_Watch for new mail when closed" ++msgstr "S_ledovat novou poštu při zavřené aplikaci" ++ ++#. / Translators: Preferences tooltip ++#: src/client/components/components-preferences-window.vala:171 ++msgid "Geary will keep running after all windows are closed" ++msgstr "Aplikace Geary zůstane po zavření všech oken spuštěná na pozadí" ++ ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:189 ++msgid "Preferences" ++msgstr "Předvolby" ++ ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:250 ++msgid "Plugins" ++msgstr "Zásuvné moduly" ++ + #. Translators: Info bar title for a generic account + #. problem. +-#: src/client/components/main-window-info-bar.vala:44 ++#: src/client/components/components-problem-report-info-bar.vala:36 + msgid "Account problem" + msgstr "Problém s účtem" + + #. Translators: Info bar sub-title for a generic account + #. problem. String substitution is the account name. +-#: src/client/components/main-window-info-bar.vala:48 ++#: src/client/components/components-problem-report-info-bar.vala:40 + #, c-format + msgid "Geary has encountered a problem with %s." + msgstr "Aplikace Geary narazila na problém s účtem %s." +@@ -1211,81 +1416,147 @@ msgstr "Aplikace Geary narazila na problém s účtem %s." + #. Translators: Info bar sub-title for a generic + #. account problem. String substitution is the + #. account name. +-#: src/client/components/main-window-info-bar.vala:61 ++#: src/client/components/components-problem-report-info-bar.vala:53 + #, c-format + msgid "Geary encountered a problem checking mail for %s." + msgstr "Aplikace Geary narazila na problém při kontrole pošty na účtu %s." + + #. Translators: Tooltip label for Retry button +-#: src/client/components/main-window-info-bar.vala:65 ++#: src/client/components/components-problem-report-info-bar.vala:57 + msgid "Try reconnecting" + msgstr "Zkusit znovu připojit" + + #. Translators: Info bar title for an outgoing + #. account problem. String substitution is the + #. account name +-#: src/client/components/main-window-info-bar.vala:73 ++#: src/client/components/components-problem-report-info-bar.vala:65 + #, c-format + msgid "Geary encountered a problem sending email for %s." + msgstr "Aplikace Geary narazila na problém při odesílání pošty z účtu %s." + + #. Translators: Tooltip label for Retry button +-#: src/client/components/main-window-info-bar.vala:77 ++#: src/client/components/components-problem-report-info-bar.vala:69 + msgid "Retry sending queued messages" + msgstr "Zkusit znovu odeslat frontu zpráv" + + #. Translators: Info bar title for a generic application + #. problem. +-#: src/client/components/main-window-info-bar.vala:84 ++#: src/client/components/components-problem-report-info-bar.vala:76 + msgid "Geary has encountered a problem" + msgstr "Aplikace Geary narazila na problém" + + #. Translators: Info bar sub-title for a generic + #. application problem. +-#: src/client/components/main-window-info-bar.vala:88 ++#: src/client/components/components-problem-report-info-bar.vala:80 + msgid "Please report the details if it persists." + msgstr "Pokud bude problém přetrvávat, nahlaste jej prosím." + + #. Translators: Button label for viewing technical details + #. for a problem report. +-#: src/client/components/main-window-info-bar.vala:99 ++#: src/client/components/components-problem-report-info-bar.vala:94 + msgid "_Details" + msgstr "Po_drobnosti" + + #. Translators: Tooltip for viewing technical details for + #. a problem report. +-#: src/client/components/main-window-info-bar.vala:102 ++#: src/client/components/components-problem-report-info-bar.vala:97 + msgid "View technical details about the error" + msgstr "Zobrazit technické podrobnosti o chybě" + + #. Translators: Button label for retrying a server + #. connection +-#: src/client/components/main-window-info-bar.vala:108 ++#: src/client/components/components-problem-report-info-bar.vala:103 + msgid "_Retry" + msgstr "Zkusit z_novu" + +-#: src/client/components/search-bar.vala:8 +-#: src/client/folder-list/folder-list-search-branch.vala:38 +-#: src/engine/api/geary-special-folder-type.vala:51 ++#. / Translators: Search entry placeholder text ++#: src/client/components/components-search-bar.vala:12 ++#: src/client/folder-list/folder-list-search-branch.vala:53 ++#: src/client/util/util-i18n.vala:298 + msgid "Search" + msgstr "Hledat" + +-#. Search entry. +-#: src/client/components/search-bar.vala:23 +-msgid "Search all mail in account for keywords (Ctrl+S)" +-msgstr "Prohledat všechny e-maily v účtu podle klíčového slova (Ctrl+S)" ++#. / Translators: Search entry tooltip ++#: src/client/components/components-search-bar.vala:32 ++msgid "Search all mail in account for keywords" ++msgstr "Prohledat všechny e-maily v účtu podle klíčového slova" + +-#: src/client/components/search-bar.vala:83 +-#, c-format +-msgid "Indexing %s account" +-msgstr "Indexuje se účet %s" +- +-#: src/client/components/search-bar.vala:110 +-#: src/client/folder-list/folder-list-search-branch.vala:39 ++#. / Translators: Search entry placeholder, string ++#. / replacement is the name of an account ++#: src/client/components/components-search-bar.vala:81 ++#: src/client/folder-list/folder-list-search-branch.vala:54 + #, c-format + msgid "Search %s account" + msgstr "Prohledat účet %s" + ++#. Translators: Tooltip used when an entry requires a valid ++#. email address to be entered, but one is not provided. ++#: src/client/components/components-validator.vala:394 ++msgid "An email address is required" ++msgstr "Je vyžadována e-mailová adresa" ++ ++#. Translators: Tooltip used when an entry requires a valid ++#. email address to be entered, but the address is invalid. ++#: src/client/components/components-validator.vala:398 ++msgid "Not a valid email address" ++msgstr "E-mailová adresa není platná" ++ ++#. Translators: Tooltip used when an entry requires a valid, ++#. resolvable server name to be entered, but one is not ++#. provided. ++#: src/client/components/components-validator.vala:444 ++msgid "A server name is required" ++msgstr "Je vyžadován název serveru" ++ ++#. Translators: Tooltip used when an entry requires a valid ++#. server name to be entered, but it was unable to be ++#. looked-up in the DNS. ++#: src/client/components/components-validator.vala:449 ++msgid "Could not look up server name" ++msgstr "Nelze najít název serveru" ++ ++#: src/client/components/main-toolbar.vala:116 ++msgid "Mark conversation" ++msgid_plural "Mark conversations" ++msgstr[0] "Označit konverzaci" ++msgstr[1] "Označit konverzace" ++msgstr[2] "Označit konverzace" ++ ++#: src/client/components/main-toolbar.vala:121 ++msgid "Add label to conversation" ++msgid_plural "Add label to conversations" ++msgstr[0] "Přiřadit konverzaci štítek" ++msgstr[1] "Přiřadit konverzacím štítek" ++msgstr[2] "Přiřadit konverzacím štítek" ++ ++#: src/client/components/main-toolbar.vala:126 ++msgid "Move conversation" ++msgid_plural "Move conversations" ++msgstr[0] "Přesunout konverzaci" ++msgstr[1] "Přesunout konverzace" ++msgstr[2] "Přesunout konverzace" ++ ++#: src/client/components/main-toolbar.vala:131 ++msgid "Archive conversation" ++msgid_plural "Archive conversations" ++msgstr[0] "Archivovat konverzaci (A)" ++msgstr[1] "Archivovat konverzace (A)" ++msgstr[2] "Archivovat konverzace (A)" ++ ++#: src/client/components/main-toolbar.vala:142 ++msgid "Move conversation to Trash" ++msgid_plural "Move conversations to Trash" ++msgstr[0] "Přesunout konverzaci" ++msgstr[1] "Přesunout konverzace" ++msgstr[2] "Přesunout konverzace" ++ ++#: src/client/components/main-toolbar.vala:152 ++msgid "Delete conversation" ++msgid_plural "Delete conversations" ++msgstr[0] "Vymazat konverzaci" ++msgstr[1] "Vymazat konverzace" ++msgstr[2] "Vymazat konverzace" ++ + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1306,7 +1577,9 @@ msgstr "Chyba při ukládání odeslané pošty" + msgid "_OK" + msgstr "_Budiž" + +-#: src/client/components/stock.vala:19 ui/password-dialog.glade:196 ++#: src/client/components/stock.vala:19 ++#: src/client/plugin/mail-merge/mail-merge.vala:392 ++#: ui/password-dialog.glade:196 + msgid "_Cancel" + msgstr "_Zrušit" + +@@ -1324,17 +1597,19 @@ msgstr "_Zavřít" + + #: src/client/components/stock.vala:24 + msgid "_Discard" +-msgstr "_Vyřadit" ++msgstr "Zaho_dit" + +-#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:56 ++#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:42 + msgid "_Help" + msgstr "Nápo_věda" + +-#: src/client/components/stock.vala:26 ui/conversation-email-menus.ui:77 ++#: src/client/components/stock.vala:26 ++#: src/client/plugin/mail-merge/mail-merge.vala:391 ++#: ui/components-attachment-pane-menus.ui:7 + msgid "_Open" + msgstr "_Otevřít" + +-#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:46 ++#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:32 + msgid "_Preferences" + msgstr "_Předvolby" + +@@ -1351,47 +1626,58 @@ msgstr "U_končit" + msgid "_Remove" + msgstr "_Odstranit" + +-#: src/client/components/stock.vala:31 ui/conversation-email-menus.ui:83 ++#: src/client/components/stock.vala:31 ++#: ui/components-attachment-pane-menus.ui:11 + msgid "_Save" + msgstr "_Uložit" + + #: src/client/components/stock.vala:32 + msgid "_Keep" +-msgstr "_Zachovat" ++msgstr "Z_achovat" + +-#: src/client/composer/composer-link-popover.vala:149 ++#: src/client/composer/composer-editor.vala:675 ++msgid "Select Color" ++msgstr "Vybrat barvu" ++ ++#: src/client/composer/composer-link-popover.vala:139 + msgid "Link URL is not correctly formatted, e.g. http://example.com" + msgstr "Adresa URL odkazu není ve správném formátu, např. http://example.com" + +-#: src/client/composer/composer-link-popover.vala:156 ++#: src/client/composer/composer-link-popover.vala:146 + msgid "Invalid link URL" + msgstr "Neplatná adresa URL odkazu" + +-#: src/client/composer/composer-link-popover.vala:156 ++#: src/client/composer/composer-link-popover.vala:146 + msgid "Invalid email address" + msgstr "Neplatná e-mailová adresa" + +-#: src/client/composer/composer-widget.vala:156 ++#. / Translators: Title for an empty composer window ++#: src/client/composer/composer-widget.vala:32 ++msgid "New Message" ++msgstr "Nová zpráva" ++ ++#: src/client/composer/composer-widget.vala:167 + msgid "Saved" + msgstr "Uloženo" + +-#: src/client/composer/composer-widget.vala:157 ++#: src/client/composer/composer-widget.vala:168 + msgid "Saving" + msgstr "Ukládá se" + +-#: src/client/composer/composer-widget.vala:158 ++#: src/client/composer/composer-widget.vala:169 + msgid "Error saving" + msgstr "Chyba při ukládání" + +-#: src/client/composer/composer-widget.vala:159 ++#: src/client/composer/composer-widget.vala:170 + msgid "Press Backspace to delete quote" + msgstr "Citaci smažete zmáčknutím Backspace" + + #. Translators: This is list of keywords, separated by pipe ("|") + #. characters, that suggest an attachment; since this is full-word +-#. checking, include all variants of each word. No spaces are +-#. allowed. +-#: src/client/composer/composer-widget.vala:168 ++#. checking, include all variants of each word. No spaces are ++#. allowed. The words will be converted to lower case based on ++#. locale and English versions included automatically. ++#: src/client/composer/composer-widget.vala:186 + msgid "" + "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" + "enclosing|encloses|enclosure|enclosures" +@@ -1403,143 +1689,119 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:1181 ++#: src/client/composer/composer-widget.vala:862 + msgid "Do you want to keep or discard this draft message?" + msgstr "Chcete tento koncept zprávy zachovat nebo zahodit?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:1211 ++#: src/client/composer/composer-widget.vala:888 + msgid "Do you want to discard this draft message?" + msgstr "Chcete zahodit tento koncept zprávy?" + +-#: src/client/composer/composer-widget.vala:1330 ++#: src/client/composer/composer-widget.vala:1440 + msgid "Send message with an empty subject and body?" + msgstr "Poslat zprávu s prázdným předmětem a tělem?" + +-#: src/client/composer/composer-widget.vala:1332 ++#: src/client/composer/composer-widget.vala:1442 + msgid "Send message with an empty subject?" + msgstr "Poslat zprávu s prázdným předmětem?" + +-#: src/client/composer/composer-widget.vala:1334 ++#: src/client/composer/composer-widget.vala:1444 + msgid "Send message with an empty body?" + msgstr "Poslat zprávu s prázdným tělem?" + +-#: src/client/composer/composer-widget.vala:1338 ++#: src/client/composer/composer-widget.vala:1453 + msgid "Send message without an attachment?" + msgstr "Poslat zprávu bez přílohy?" + +-#: src/client/composer/composer-widget.vala:1652 ++#: src/client/composer/composer-widget.vala:1772 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "Soubor „%s“ už byl pro doručení přiložen." + +-#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" +-#. Translators: The first argument will be a +-#. description of the document type, the second will +-#. be a human-friendly size string. For example: +-#. Document (100.9MB) +-#: src/client/composer/composer-widget.vala:1660 +-#: src/client/conversation-viewer/conversation-email.vala:173 ++#: src/client/composer/composer-widget.vala:1804 ++#: src/client/composer/composer-widget.vala:1854 + #, c-format +-msgid "%s (%s)" +-msgstr "%s (%s)" ++msgid "“%s” is an empty file." ++msgstr "Soubor „%s“ je prázdný." + +-#: src/client/composer/composer-widget.vala:1697 ++#: src/client/composer/composer-widget.vala:1842 + #, c-format + msgid "“%s” could not be found." + msgstr "Soubor „%s“ nebyl nalezen." + +-#: src/client/composer/composer-widget.vala:1703 ++#: src/client/composer/composer-widget.vala:1848 + #, c-format + msgid "“%s” is a folder." + msgstr "„%s“ je složka." + +-#: src/client/composer/composer-widget.vala:1709 +-#, c-format +-msgid "“%s” is an empty file." +-msgstr "Soubor „%s“ je prázdný." +- +-#: src/client/composer/composer-widget.vala:1722 ++#: src/client/composer/composer-widget.vala:1867 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "Soubor „%s“ se nezdařilo otevřít pro čtení." + +-#: src/client/composer/composer-widget.vala:1730 ++#: src/client/composer/composer-widget.vala:1875 + msgid "Cannot add attachment" + msgstr "Nelze připojit přílohu" + ++#. Translators: This is the name of the file chooser filter ++#. when inserting an image in the composer. ++#: src/client/composer/composer-widget.vala:1946 ++msgid "Images" ++msgstr "Obrázky" ++ + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:1787 +-#: src/client/conversation-viewer/conversation-email.vala:976 +-#: src/client/util/util-email.vala:216 ui/conversation-message.ui:312 ++#: src/client/composer/composer-widget.vala:2010 ++#: src/client/conversation-viewer/conversation-email.vala:542 ++#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Komu:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:1793 +-#: src/client/conversation-viewer/conversation-email.vala:981 +-#: src/client/util/util-email.vala:221 ui/conversation-message.ui:357 ++#: src/client/composer/composer-widget.vala:2016 ++#: src/client/conversation-viewer/conversation-email.vala:547 ++#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Kopie:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:1799 +-#: src/client/conversation-viewer/conversation-email.vala:986 ++#: src/client/composer/composer-widget.vala:2022 ++#: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Skrytá kopie:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:1805 ++#: src/client/composer/composer-widget.vala:2028 + msgid "Reply-To: " + msgstr "Odpověď:" + +-#: src/client/composer/composer-widget.vala:1945 +-msgid "Select Color" +-msgstr "Vybrat barvu" +- + #. Displayed in the From dropdown to indicate an + #. "alternate email address" for an account. The first + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2137 ++#: src/client/composer/composer-widget.vala:2146 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s přes %2$s" + +-#. Composer label (with mnemonic underscore) for the account selector +-#. when choosing what address to send a message from. +-#: src/client/composer/composer-widget.vala:2192 +-msgid "_From:" +-msgstr "_Od:" +- +-#. Translators: This is the name of the file chooser filter +-#. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:2472 +-msgid "Images" +-msgstr "Obrázky" +- +-#: src/client/composer/composer-window.vala:14 +-msgid "New Message" +-msgstr "Nová zpráva" +- +-#: src/client/composer/spell-check-popover.vala:108 ++#: src/client/composer/spell-check-popover.vala:125 + msgid "Remove this language from the preferred list" + msgstr "Odebrat tento jazyk ze seznamu upřednostňovaných" + +-#: src/client/composer/spell-check-popover.vala:112 ++#: src/client/composer/spell-check-popover.vala:129 + msgid "Add this language to the preferred list" + msgstr "Přidat tento jazyk do seznamu upřednostňovaných" + +-#: src/client/composer/spell-check-popover.vala:199 ++#: src/client/composer/spell-check-popover.vala:225 + msgid "Search for more languages" + msgstr "Vyhledat další jazyky" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:337 ++#: src/client/conversation-list/conversation-list-view.vala:339 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "Přesunou_t konverzaci do koše" +@@ -1547,45 +1809,45 @@ msgstr[1] "Přesunou_t konverzace do koše" + msgstr[2] "Přesunou_t konverzace do koše" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:347 ++#: src/client/conversation-list/conversation-list-view.vala:351 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "Vy_mazat konverzaci" + msgstr[1] "Vy_mazat konverzace" + msgstr[2] "Vy_mazat konverzace" + +-#: src/client/conversation-list/conversation-list-view.vala:356 ++#: src/client/conversation-list/conversation-list-view.vala:364 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Označit jako _přečtené" + +-#: src/client/conversation-list/conversation-list-view.vala:359 ++#: src/client/conversation-list/conversation-list-view.vala:372 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Označit jako _nepřečtené" + +-#: src/client/conversation-list/conversation-list-view.vala:362 ++#: src/client/conversation-list/conversation-list-view.vala:380 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "O_debrat hvězdičku" + +-#: src/client/conversation-list/conversation-list-view.vala:364 ++#: src/client/conversation-list/conversation-list-view.vala:387 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "_Hvězdička" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:367 ++#: src/client/conversation-list/conversation-list-view.vala:396 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "_Odpovědět" + +-#: src/client/conversation-list/conversation-list-view.vala:368 ++#: src/client/conversation-list/conversation-list-view.vala:402 + msgid "R_eply All" + msgstr "O_dpovědět všem" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:369 ++#: src/client/conversation-list/conversation-list-view.vala:408 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Přeposlat" +@@ -1595,69 +1857,105 @@ msgid "Me" + msgstr "Já" + + #. Translators: Human-readable version of the RFC 822 From header +-#: src/client/conversation-viewer/conversation-email.vala:971 +-#: src/client/util/util-email.vala:207 ++#: src/client/conversation-viewer/conversation-email.vala:537 ++#: src/client/util/util-email.vala:240 + msgid "From:" + msgstr "Od:" + + #. Translators: Human-readable version of the RFC 822 Date header +-#: src/client/conversation-viewer/conversation-email.vala:991 +-#: src/client/util/util-email.vala:212 ++#: src/client/conversation-viewer/conversation-email.vala:557 ++#: src/client/util/util-email.vala:245 + msgid "Date:" + msgstr "Datum:" + + #. Translators: Human-readable version of the RFC 822 Subject header +-#: src/client/conversation-viewer/conversation-email.vala:1001 +-#: src/client/util/util-email.vala:210 ++#: src/client/conversation-viewer/conversation-email.vala:567 ++#: src/client/util/util-email.vala:243 + msgid "Subject:" + msgstr "Předmět:" + +-#: src/client/conversation-viewer/conversation-message.vala:129 ++#: src/client/conversation-viewer/conversation-message.vala:128 + msgid "This email address may have been forged" + msgstr "Tato e-mailová adresa může být falešná" + ++#. Translators: Label text displayed when there are too ++#. many email addresses to be shown by default in an ++#. email's header, but they are all being shown anyway. ++#: src/client/conversation-viewer/conversation-message.vala:234 ++msgid "Show less" ++msgstr "Zobrazit méně" ++ ++#. Translators: Label text displayed when there are ++#. too many email addresses to be shown by default in ++#. an email's header. The string substitution is the ++#. number of extra email to be shown. ++#: src/client/conversation-viewer/conversation-message.vala:260 ++#, c-format ++msgid "%d more…" ++msgstr "" ++ + #. Compact headers. These are partially done here and partially + #. in load_contacts. + #. Translators: This is displayed in place of the from address + #. when the message has no from address. +-#: src/client/conversation-viewer/conversation-message.vala:447 ++#: src/client/conversation-viewer/conversation-message.vala:529 + msgid "No sender" + msgstr "Bez odesilatele" + + #. Translators: This separates multiple 'from' + #. addresses in the compact header for a message. +-#: src/client/conversation-viewer/conversation-message.vala:840 ++#: src/client/conversation-viewer/conversation-message.vala:920 + msgid ", " + msgstr ", " + + #. Translators: This string is used as the HTML IMG ALT + #. attribute value when displaying an inline image in an email + #. that did not specify a file name. E.g. Imagemailing list " +-"or attach to a new bug report." ++"one of the contact " ++"channels or attach to a new bug report." + msgstr "" + "Pokud je problém vážný, nebo přetrvává, uložte a odešlete prosím tyto údaje " +-"do poštovní " +-"konference nebo zadejte kontaktních " ++"kanálů, nebo zadejte nové hlášení chyby." + +-#: ui/components-inspector-error-view.ui:49 ++#: ui/components-inspector-error-view.ui:47 + msgid "Details:" + msgstr "Podrobnosti:" + +-#: ui/components-inspector-log-view.ui:13 +-msgid "Inspector opened" +-msgstr "" +- +-#: ui/components-inspector-log-view.ui:65 +-msgid "column" +-msgstr "" ++#. Tooltip for inspector button ++#. Tooltip for problem report button ++#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:24 ++msgid "Search for matching log entries" ++msgstr "Vyhledat odpovídající položky v záznamu" + + #. Tooltip for inspector button +-#: ui/components-inspector.ui:20 ++#: ui/components-inspector.ui:35 + msgid "Toggle appending new log entries" + msgstr "Zapnout/vypnout přidávání nových položek do záznamu" + + #. Tooltip for inspector button +-#. Tooltip for problem report button +-#: ui/components-inspector.ui:37 ui/problem-details-dialog.ui:19 +-msgid "Search for matching log entries" +-msgstr "Vyhledat odpovídající položky v záznamu" ++#: ui/components-inspector.ui:55 ++msgid "Add a marker entry to the log" ++msgstr "Přidat značkovací položku do záznamu" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:63 ui/problem-details-dialog.ui:46 ++#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:51 + msgid "Save logs entries and details" + msgstr "Uložit položky záznamu a podrobnosti" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:84 ui/problem-details-dialog.ui:62 ++#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:67 + msgid "Copy to clipboard" + msgstr "Zkopírovat do schránky" + ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:121 ++msgid "Clears all log entries" ++msgstr "Vymaže všechny položky v záznamu" ++ + #: ui/conversation-contact-popover.ui:146 + msgid "New Conversation…" + msgstr "Nová konverzace…" +@@ -2708,42 +3260,6 @@ msgstr "Označit tuto zprávu hvězdičkou" + msgid "Mark this message as not starred" + msgstr "Zrušit označení této zprávy hvězdičkou" + +-#: ui/conversation-email.ui:95 +-msgid "Display the message menu" +-msgstr "Zobrazit nabídku zpráv" +- +-#: ui/conversation-email.ui:161 +-msgid "Open selected attachments" +-msgstr "Otevřít vybrané přílohy" +- +-#: ui/conversation-email.ui:178 +-msgid "Save selected attachments" +-msgstr "Uložit vybrané přílohy" +- +-#: ui/conversation-email.ui:195 +-msgid "Select all attachments" +-msgstr "Vybrat všechny přílohy" +- +-#: ui/conversation-email.ui:240 +-msgid "Edit Draft" +-msgstr "Upravit koncept" +- +-#: ui/conversation-email.ui:267 +-msgid "Draft message" +-msgstr "Koncept zprávy" +- +-#: ui/conversation-email.ui:283 +-msgid "This message has not yet been sent." +-msgstr "Tato zpráva zatím nebyla odeslána." +- +-#: ui/conversation-email.ui:329 +-msgid "Message not saved" +-msgstr "Zpráva není uložená" +- +-#: ui/conversation-email.ui:345 +-msgid "This message was sent, but has not been saved to your account." +-msgstr "Tato zpráva byla úspěšně odeslána, ale nebyla uložena do vašeho účtu." +- + #. Translators: Menu item to reply to a specific message. + #: ui/conversation-email-menus.ui:15 + msgid "Reply to _All" +@@ -2781,9 +3297,27 @@ msgstr "_Smazat zprávu…" + msgid "_View Source" + msgstr "_Zobrazit zdrojový kód" + +-#: ui/conversation-email-menus.ui:87 +-msgid "_Save All" +-msgstr "_Uložit vše" ++#: ui/conversation-message-link-popover.ui:54 ++msgid "But actually goes to:" ++msgstr "ale ve skutečnosti jde na:" ++ ++#: ui/conversation-message-link-popover.ui:84 ++msgid "The link appears to go to:" ++msgstr "Tento odkaz vypadá, že míří na:" ++ ++#: ui/conversation-message-link-popover.ui:96 ++msgid "Deceptive link found" ++msgstr "Nalezen klamný odkaz" ++ ++#: ui/conversation-message-link-popover.ui:111 ++msgid "The email sender may be leading you to the wrong web site." ++msgstr "Odesilatel zprávy se vás snaží navést na nesprávné webové stránky." ++ ++#: ui/conversation-message-link-popover.ui:124 ++msgid "If unsure, contact the sender and ask before continuing." ++msgstr "" ++"Pokud máte pochybnosti, před pokračování kontaktujte odesilatele a vše si " ++"ověřte." + + #: ui/conversation-message-menus.ui:7 + msgid "_Open Link" +@@ -2833,44 +3367,6 @@ msgstr "Odpovědět:" + msgid "Subject" + msgstr "Předmět" + +-#: ui/conversation-message.ui:501 +-msgid "Show Images" +-msgstr "Zobrazit obrázky" +- +-#: ui/conversation-message.ui:514 +-msgid "Always Show From Sender" +-msgstr "Vždy zobrazovat Od odesílatele" +- +-#: ui/conversation-message.ui:542 +-msgid "Remote images not shown" +-msgstr "Vzdálené obrázky nejsou zobrazené" +- +-#: ui/conversation-message.ui:559 +-msgid "Only show remote images from senders you trust." +-msgstr "Vzdálené obrázky se zobrazují jen od odesilatelů, kterým důvěřujete." +- +-#: ui/conversation-message.ui:692 +-msgid "But actually goes to:" +-msgstr "ale ve skutečnosti jde na:" +- +-#: ui/conversation-message.ui:723 +-msgid "The link appears to go to:" +-msgstr "Tento odkaz vypadá, že míří na:" +- +-#: ui/conversation-message.ui:735 +-msgid "Deceptive link found" +-msgstr "Nalezen klamný odkaz" +- +-#: ui/conversation-message.ui:750 +-msgid "The email sender may be leading you to the wrong web site." +-msgstr "Odesilatel zprávy se vás snaží navést na nesprávné webové stránky." +- +-#: ui/conversation-message.ui:763 +-msgid "If unsure, contact the sender and ask before continuing." +-msgstr "" +-"Pokud máte pochybnosti, před pokračování kontaktujte odesilatele a vše si " +-"ověřte." +- + #: ui/conversation-viewer.ui:60 + msgid "Find in conversation" + msgstr "Najít v konverzaci" +@@ -2907,7 +3403,7 @@ msgstr "štítek" + msgid "Conversation Shortcuts" + msgstr "Klávesové zkratky konverzace" + +-#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:347 ++#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:377 + msgctxt "shortcut window" + msgid "Actions" + msgstr "Činnosti" +@@ -2922,54 +3418,54 @@ msgctxt "shortcut window" + msgid "Reply to sender" + msgstr "Odpovědět odesilateli" + +-#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:282 ++#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:281 + msgctxt "shortcut window" + msgid "Reply to all" + msgstr "Odpovědět všem" + +-#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:289 ++#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:288 + msgctxt "shortcut window" + msgid "Forward" + msgstr "Přeposlat" + +-#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:296 ++#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:295 + msgctxt "shortcut window" + msgid "Un-mark/mark read" + msgstr "Označit jako přečtené/nepřečtené" + +-#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:303 ++#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:302 + msgctxt "shortcut window" + msgid "Mark/un-mark starred" + msgstr "Označit jako s hvězdičkou/bez hvězdičky" + +-#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:310 ++#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:309 + msgctxt "shortcut window" +-msgid "Archive conversation" ++msgid "Archive conversations" + msgstr "Archivovat konverzaci" + +-#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:317 ++#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:326 + msgctxt "shortcut window" +-msgid "Move conversation" ++msgid "Move conversations" + msgstr "Přesunout konverzaci" + +-#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:324 ++#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:333 + msgctxt "shortcut window" +-msgid "Label conversation" ++msgid "Label conversations" + msgstr "Přidat konverzaci štítek" + + #: ui/gtk/help-overlay.ui:80 + msgctxt "shortcut window" +-msgid "Trash conversation" ++msgid "Trash conversations" + msgstr "Vyhodit konverzaci do koše" + +-#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:331 ++#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:340 + msgctxt "shortcut window" +-msgid "Move to Spam" +-msgstr "Přesunout do nevyžádané" ++msgid "Junk conversations" ++msgstr "Označit konverzaci jako nevyžádanou" + +-#: ui/gtk/help-overlay.ui:95 ++#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:347 + msgctxt "shortcut window" +-msgid "Delete conversation" ++msgid "Delete conversations" + msgstr "Smazat konverzaci" + + #: ui/gtk/help-overlay.ui:104 +@@ -2982,7 +3478,7 @@ msgctxt "shortcut window" + msgid "Search for conversations" + msgstr "Hledat konverzace" + +-#: ui/gtk/help-overlay.ui:115 ++#: ui/gtk/help-overlay.ui:115 ui/gtk/help-overlay.ui:354 + msgctxt "shortcut window" + msgid "Find in current conversation" + msgstr "Najít v aktuální konverzaci" +@@ -3022,7 +3518,7 @@ msgctxt "shortcut window" + msgid "Reset zoom" + msgstr "Výchozí přiblížení" + +-#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:367 ++#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:404 + msgctxt "shortcut window" + msgid "General" + msgstr "Obecné" +@@ -3039,176 +3535,180 @@ msgstr "Zobrazit klávesové zkratky" + + #: ui/gtk/help-overlay.ui:206 + msgctxt "shortcut window" +-msgid "Close current window" +-msgstr "Zavřít aktuální okno" ++msgid "Open a new window" ++msgstr "Otevřít nové okno" + + #: ui/gtk/help-overlay.ui:213 + msgctxt "shortcut window" ++msgid "Close the current window" ++msgstr "Zavřít aktuální okno" ++ ++#: ui/gtk/help-overlay.ui:220 ++msgctxt "shortcut window" + msgid "Quit the application" + msgstr "Ukončit aplikaci" + +-#: ui/gtk/help-overlay.ui:222 ++#: ui/gtk/help-overlay.ui:229 + msgctxt "shortcut window" + msgid "Keyboard navigation" + msgstr "Navigace z klávesnice" + +-#: ui/gtk/help-overlay.ui:226 +-msgctxt "shortcut window" +-msgid "Focus the next pane" +-msgstr "Přesunout zaměření na následující panel" +- + #: ui/gtk/help-overlay.ui:233 + msgctxt "shortcut window" +-msgid "Focus the previous pane" +-msgstr "Přesunout zaměření na předchozí panel" +- +-#: ui/gtk/help-overlay.ui:240 +-msgctxt "shortcut window" +-msgid "Focus the conversation list" +-msgstr "Přesunout zaměření na seznam konverzací" ++msgid "Go to next/previous pane" ++msgstr "Přejít na následující/předchozí panel" + +-#: ui/gtk/help-overlay.ui:247 ++#: ui/gtk/help-overlay.ui:241 + msgctxt "shortcut window" +-msgid "Select the conversation down" +-msgstr "Vybrat konverzaci o jednu niže" ++msgid "Select next/previous conversation" ++msgstr "Vybrat následující/předchozí konverzaci" + +-#: ui/gtk/help-overlay.ui:254 +-msgctxt "shortcut window" +-msgid "Select the conversation up" +-msgstr "Vybrat konverzaci o jednu výše" +- +-#: ui/gtk/help-overlay.ui:261 ++#: ui/gtk/help-overlay.ui:248 + msgctxt "shortcut window" + msgid "Focus next/previous message" + msgstr "Přesunout zaměření na následující/předchozí zprávu" + +-#: ui/gtk/help-overlay.ui:271 +-msgctxt "shortcut window" +-msgid "Single-key shortcuts" ++#: ui/gtk/help-overlay.ui:260 ++msgid "Single-key Shortcuts" + msgstr "Jednoklávesové zkratky" + +-#: ui/gtk/help-overlay.ui:275 ++#: ui/gtk/help-overlay.ui:265 ++msgctxt "shortcut window" ++msgid "Single-key shortcuts (if enabled)" ++msgstr "Jednoklávesové zkratky (pokud je povoleno)" ++ ++#: ui/gtk/help-overlay.ui:274 + msgctxt "shortcut window" + msgid "Reply to sender " + msgstr "Odpovědět odesilateli" + +-#: ui/gtk/help-overlay.ui:343 ++#: ui/gtk/help-overlay.ui:361 ++msgctxt "shortcut window" ++msgid "Select next/previous conversations" ++msgstr "Vybrat následující/předchozí konverzaci" ++ ++#: ui/gtk/help-overlay.ui:373 + msgid "Composer Shortcuts" + msgstr "Klávesové zkratky editoru" + +-#: ui/gtk/help-overlay.ui:351 ++#: ui/gtk/help-overlay.ui:381 + msgctxt "shortcut window" + msgid "Send" + msgstr "Odeslat" + +-#: ui/gtk/help-overlay.ui:358 ++#: ui/gtk/help-overlay.ui:388 + msgctxt "shortcut window" + msgid "Add attachment" + msgstr "Přidat přílohu" + +-#: ui/gtk/help-overlay.ui:371 ++#: ui/gtk/help-overlay.ui:395 ++msgctxt "shortcut window" ++msgid "Detach the composer" ++msgstr "Odpojit editor do samostatného okna" ++ ++#: ui/gtk/help-overlay.ui:408 + msgctxt "shortcut window" + msgid "Close composer window" + msgstr "Zavřít okno pro psaní zprávy" + +-#: ui/gtk/help-overlay.ui:378 ++#: ui/gtk/help-overlay.ui:415 + msgctxt "shortcut window" + msgid "Detach composer window" + msgstr "Odpojit okno pro psaní zprávy" + +-#: ui/gtk/help-overlay.ui:385 ++#: ui/gtk/help-overlay.ui:422 + msgctxt "shortcut window" + msgid "Editing" + msgstr "Úpravy" + +-#: ui/gtk/help-overlay.ui:390 ++#: ui/gtk/help-overlay.ui:427 + msgctxt "shortcut window" + msgid "Move selection to the clipboard" + msgstr "Přesunout výběr do schránky" + +-#: ui/gtk/help-overlay.ui:397 ++#: ui/gtk/help-overlay.ui:434 + msgctxt "shortcut window" + msgid "Copy selection to clipboard" + msgstr "Zkopírovat výběr do schránky" + +-#: ui/gtk/help-overlay.ui:404 ++#: ui/gtk/help-overlay.ui:441 + msgctxt "shortcut window" + msgid "Paste from the clipboard" + msgstr "Vložit ze schránky" + +-#: ui/gtk/help-overlay.ui:411 ++#: ui/gtk/help-overlay.ui:448 + msgctxt "shortcut window" + msgid "Quote text" + msgstr "Citovat text" + +-#: ui/gtk/help-overlay.ui:418 ++#: ui/gtk/help-overlay.ui:455 + msgctxt "shortcut window" + msgid "Unquote text" + msgstr "Zrušit citaci textu" + +-#: ui/gtk/help-overlay.ui:427 ++#: ui/gtk/help-overlay.ui:464 + msgctxt "shortcut window" + msgid "Rich text editing" + msgstr "Upravovat jako formátovaný text" + +-#: ui/gtk/help-overlay.ui:431 ++#: ui/gtk/help-overlay.ui:468 + msgctxt "shortcut window" + msgid "Paste without formatting" + msgstr "Vložit bez formátování" + +-#: ui/gtk/help-overlay.ui:438 ++#: ui/gtk/help-overlay.ui:475 + msgctxt "shortcut window" + msgid "Bold text" + msgstr "Tučný text" + +-#: ui/gtk/help-overlay.ui:445 ++#: ui/gtk/help-overlay.ui:482 + msgctxt "shortcut window" + msgid "Italicize text" + msgstr "Kurzíva" + +-#: ui/gtk/help-overlay.ui:452 ++#: ui/gtk/help-overlay.ui:489 + msgctxt "shortcut window" + msgid "Underline text" + msgstr "Podtržený text" + +-#: ui/gtk/help-overlay.ui:459 ++#: ui/gtk/help-overlay.ui:496 + msgctxt "shortcut window" + msgid "Strike text" + msgstr "Přeškrtnutý text" + +-#: ui/gtk/help-overlay.ui:466 ++#: ui/gtk/help-overlay.ui:503 + msgctxt "shortcut window" + msgid "Remove formatting" + msgstr "Odstranit formátování" + +-#: ui/gtk/help-overlay.ui:473 ++#: ui/gtk/help-overlay.ui:510 + msgctxt "shortcut window" + msgid "Insert an image" + msgstr "Vložit obrázek" + +-#: ui/gtk/help-overlay.ui:480 ++#: ui/gtk/help-overlay.ui:517 + msgctxt "shortcut window" + msgid "Insert a link" + msgstr "Vložit odkaz" + +-#: ui/main-toolbar.ui:23 ++#: ui/main-toolbar.ui:24 + msgctxt "tooltip" + msgid "Compose Message" + msgstr "Napsat zprávu" + +-#: ui/main-toolbar.ui:61 ++#: ui/main-toolbar.ui:62 + msgid "Toggle search bar" + msgstr "Přepnout vyhledávací lištu" + +-#: ui/main-toolbar.ui:113 ++#: ui/main-toolbar.ui:114 + msgid "Reply" + msgstr "Odpovědět" + +-#: ui/main-toolbar.ui:136 ++#: ui/main-toolbar.ui:137 + msgid "Reply All" + msgstr "Odpovědět všem" + +-#: ui/main-toolbar.ui:159 ++#: ui/main-toolbar.ui:160 + msgid "Forward" + msgstr "Přeposlat" + +@@ -3221,105 +3721,21 @@ msgid "_Archive" + msgstr "_Archivovat" + + #: ui/main-toolbar-menus.ui:21 +-msgid "Mark as S_pam" +-msgstr "Označit jako nevyžá_dané" +- +-#: ui/main-toolbar-menus.ui:25 +-msgid "Mark as not S_pam" +-msgstr "Označit, že není nevyžá_dané" ++msgid "Toggle as _Junk" ++msgstr "Přepnout jako nevyžá_danou" + +-#: ui/main-toolbar-menus.ui:32 +-msgid "Empty _Spam…" +-msgstr "Vyprázdnit _nevyžádanou…" +- +-#: ui/main-toolbar-menus.ui:36 +-msgid "Empty _Trash…" +-msgstr "Vyprázdnit koš…" +- +-#: ui/main-toolbar-menus.ui:42 ++#: ui/main-toolbar-menus.ui:28 + msgid "_Accounts" + msgstr "Úč_ty" + +-#: ui/main-toolbar-menus.ui:50 ++#: ui/main-toolbar-menus.ui:36 + msgid "_Keyboard Shortcuts" + msgstr "_Klávesové zkratky" + +-#: ui/main-toolbar-menus.ui:61 ++#: ui/main-toolbar-menus.ui:47 + msgid "_About Geary" + msgstr "O _aplikaci Geary" + +-#. Infobar title when one or more accounts are offline +-#: ui/main-window.ui:185 +-msgid "Working offline" +-msgstr "Pracuje se v režimu odpojení" +- +-#. Label and tooltip for offline infobar +-#: ui/main-window.ui:199 +-msgid "" +-"Your computer does not appear to be connected to the Internet.\n" +-"You will not be able to send or receive email until it is re-connected." +-msgstr "" +-"Vypadá to, že váš počítač není připojený k Internetu.\n" +-"Dokud se znovu nepřipojí, nebudete moci odesílat a přijímat e-maily." +- +-#. Label and tooltip for offline infobar +-#: ui/main-window.ui:202 +-msgid "You will not be able to send or receive email until re-connected." +-msgstr "Dokud se znovu nepřipojíte, nebudete moci odesílat a přijímat e-maily." +- +-#. Button label for retrying TLS cert validation +-#: ui/main-window.ui:249 +-msgid "Check" +-msgstr "Zkontrolovat" +- +-#. Button tooltip for retrying TLS cert validation +-#: ui/main-window.ui:253 +-msgid "Check the security details for the connection" +-msgstr "Zkontrolovat údaje zabezpečení pro připojení" +- +-#. Infobar title when one or more accounts have a TLS cert validation error +-#: ui/main-window.ui:282 +-msgid "Security problem" +-msgstr "Problém se zabezpečením" +- +-#. Label and tooltip for TLS cert validation error infobar +-#: ui/main-window.ui:296 +-msgid "" +-"An account has reported an untrusted server.\n" +-"Please check the server configuration and try again." +-msgstr "" +-"Účet oznámil nedůvěryhodný server.\n" +-"Zkontrolujte prosím nastavení serveru a zkuste to znovu." +- +-#. Label and tooltip for TLS cert validation error infobar +-#: ui/main-window.ui:299 +-msgid "An account has reported an untrusted server." +-msgstr "Účet oznámil nedůvěryhodný server." +- +-#. Button tooltip for retrying when a login error has occurred +-#: ui/main-window.ui:350 +-msgid "Retry login, you will be prompted for your password" +-msgstr "Zkusit znovu přihlásit, budete dotázáni na heslo" +- +-#. Infobar title when one or more accounts have a login error +-#: ui/main-window.ui:379 +-msgid "Login problem" +-msgstr "Problém s přihlášením" +- +-#. Label and tooltip for authentication problem infobar +-#: ui/main-window.ui:393 +-msgid "" +-"An account has reported an incorrect login or password.\n" +-"Please check your login name and try again." +-msgstr "" +-"Účet oznámil nesprávné přihlašovací jméno nebo heslo.\n" +-"Zkontrolujte prosím své přihlašovací jméno a zkuste to znovu." +- +-#. Label and tooltip for authentication problem infobar +-#: ui/main-window.ui:396 +-msgid "An account has reported an incorrect login or password." +-msgstr "Účet oznámil nesprávné přihlašovací jméno nebo heslo." +- + #: ui/password-dialog.glade:74 + msgid "SMTP Credentials" + msgstr "Přihlašovací údaje SMTP" +@@ -3336,55 +3752,6 @@ msgstr "_Pamatovat si heslo" + msgid "_Authenticate" + msgstr "_Ověřit" + +-#: ui/preferences-dialog.ui:15 +-msgid "Preferences" +-msgstr "Předvolby" +- +-#: ui/preferences-dialog.ui:43 +-msgid "_Automatically select next message" +-msgstr "_Automaticky vybrat další zprávu" +- +-#: ui/preferences-dialog.ui:64 +-msgid "_Display conversation preview" +-msgstr "_Zobrazit náhled konverzace" +- +-#: ui/preferences-dialog.ui:85 +-msgid "Use _three pane view" +-msgstr "Používat _třípanelové zobrazení" +- +-#: ui/preferences-dialog.ui:106 +-msgid "_Watch for new mail when closed" +-msgstr "S_ledovat novou poštu při zavřené aplikaci" +- +-#: ui/preferences-dialog.ui:110 +-msgid "Geary will keep running after all windows are closed" +-msgstr "Aplikace Geary zůstane po zavření všech oken spuštěná na pozadí" +- + #: ui/upgrade_dialog.glade:60 + msgid "Geary update in progress…" + msgstr "Probíhá aktualizace aplikace Geary…" +- +-#~ msgid "Enable notification sounds" +-#~ msgstr "Povolit zvuková upozornění" +- +-#~ msgid "True to play sounds for notifications and sending." +-#~ msgstr "" +-#~ "Zapnuto, když se mají přehrávat zvuky při upozornění nebo odesílání." +- +-#~ msgid "Show notifications for new mail" +-#~ msgstr "Zobrazovat upozornění na nový e-mail" +- +-#~ msgid "True to show notification bubbles." +-#~ msgstr "Zapnuto, když se mají zobrazovat bubliny s upozorněními." +- +-#~ msgid "Reading" +-#~ msgstr "Čtení" +- +-#~ msgid "Notifications" +-#~ msgstr "Upozornění" +- +-#~ msgid "_Play notification sounds" +-#~ msgstr "_Přehrávat zvuková upozornění" +- +-#~ msgid "Show _notifications for new mail" +-#~ msgstr "Zobrazit _upozornění na nový e-mail" +-- +2.29.2 + diff --git a/mail-client/geary/files/0102-Updated-Czech-translation.patch b/mail-client/geary/files/0102-Updated-Czech-translation.patch new file mode 100644 index 0000000..b42c5a0 --- /dev/null +++ b/mail-client/geary/files/0102-Updated-Czech-translation.patch @@ -0,0 +1,1420 @@ +From 1213320209e9d8b40ff53f040efcbb0ae2701fde Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20=C4=8Cernock=C3=BD?= +Date: Wed, 14 Oct 2020 11:15:26 +0200 +Subject: [PATCH 102/124] Updated Czech translation + +--- + po/cs.po | 568 +++++++++++++++++++++++++++---------------------------- + 1 file changed, 281 insertions(+), 287 deletions(-) + +diff --git a/po/cs.po b/po/cs.po +index 99bdd31a..68661614 100644 +--- a/po/cs.po ++++ b/po/cs.po +@@ -11,8 +11,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-08-29 01:59+0000\n" +-"PO-Revision-Date: 2020-10-11 00:33+0200\n" ++"POT-Creation-Date: 2020-10-14 09:11+0000\n" ++"PO-Revision-Date: 2020-10-14 11:13+0200\n" + "Last-Translator: Marek Černocký \n" + "Language-Team: čeština \n" + "Language: cs\n" +@@ -35,7 +35,7 @@ msgstr "Odeslat soubory pomocí Geary" + #: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 + #: src/client/accounts/accounts-editor-servers-pane.vala:560 +-#: src/client/application/application-main-window.vala:608 ++#: src/client/application/application-main-window.vala:628 + msgid "Geary" + msgstr "Geary" + +@@ -156,79 +156,36 @@ msgid "The last recorded height of the application window." + msgstr "Poslední zaznamenaná výška okna aplikace." + + #: desktop/org.gnome.Geary.gschema.xml:26 +-msgid "Position of folder list pane" +-msgstr "Umístění panelu se seznamem složek" +- +-#: desktop/org.gnome.Geary.gschema.xml:27 +-msgid "Position of the folder list Paned grabber." +-msgstr "Umístění úchytu panelu se seznamem složek." +- +-#: desktop/org.gnome.Geary.gschema.xml:32 +-msgid "Position of folder list pane when horizontal" +-msgstr "Umístění vodorovného panelu se seznamem složek" +- +-#: desktop/org.gnome.Geary.gschema.xml:33 +-msgid "" +-"Position of the folder list Paned grabber in the horizontal orientation." +-msgstr "" +-"Umístění úchytu panelu se seznamem složek, když je panel otočený vodorovně." +- +-#: desktop/org.gnome.Geary.gschema.xml:38 +-msgid "Position of folder list pane when vertical" +-msgstr "Umístění svislého panelu se seznamem složek" +- +-#: desktop/org.gnome.Geary.gschema.xml:39 +-msgid "Position of the folder list Paned grabber in the vertical orientation." +-msgstr "" +-"Umístění úchytu panelu se seznamem složek, když je panel otočený svisle." +- +-#: desktop/org.gnome.Geary.gschema.xml:44 +-msgid "Orientation of the folder list pane" +-msgstr "Otočení panelu se seznamem složek" +- +-#: desktop/org.gnome.Geary.gschema.xml:45 +-msgid "True if the folder list Paned is in the horizontal orientation." +-msgstr "Zapnuto, když má být panel se seznamem složek otočený vodorovně." +- +-#: desktop/org.gnome.Geary.gschema.xml:50 + msgid "Show/hide formatting toolbar" + msgstr "Zobrazovat/skrývat lištu nástrojů pro formátování" + +-#: desktop/org.gnome.Geary.gschema.xml:51 ++#: desktop/org.gnome.Geary.gschema.xml:27 + msgid "True if the formatting toolbar in the composer is shown." + msgstr "" + "Zapnuto, když je v editoru zobrazená nástrojová lišta s formátovacími " + "nástroji." + +-#: desktop/org.gnome.Geary.gschema.xml:56 +-msgid "Position of message list pane" +-msgstr "Umístění panelu se seznamem zprávy" +- +-#: desktop/org.gnome.Geary.gschema.xml:57 +-msgid "Position of the message list Paned grabber." +-msgstr "Umístění úchytu panelu se seznamem zpráv." +- +-#: desktop/org.gnome.Geary.gschema.xml:62 ++#: desktop/org.gnome.Geary.gschema.xml:32 + msgid "Autoselect next message" + msgstr "Automatický výběr další zprávy" + +-#: desktop/org.gnome.Geary.gschema.xml:63 ++#: desktop/org.gnome.Geary.gschema.xml:33 + msgid "True if we should autoselect the next available conversation." + msgstr "Zapnuto, pokud se má automaticky vybírat další dostupná konverzace." + +-#: desktop/org.gnome.Geary.gschema.xml:68 ++#: desktop/org.gnome.Geary.gschema.xml:38 + msgid "Display message previews" + msgstr "Zobrazit náhledy zpráv" + +-#: desktop/org.gnome.Geary.gschema.xml:69 ++#: desktop/org.gnome.Geary.gschema.xml:39 + msgid "True if we should display a short preview of each message." + msgstr "Zapnuto, když se má zobrazovat krátký náhled u jednotlivých zpráv." + +-#: desktop/org.gnome.Geary.gschema.xml:74 ++#: desktop/org.gnome.Geary.gschema.xml:44 + msgid "Use single key shortcuts" + msgstr "Používat jednoklávesové zkratky" + +-#: desktop/org.gnome.Geary.gschema.xml:75 ++#: desktop/org.gnome.Geary.gschema.xml:45 + msgid "" + "Enables shortcuts for email actions that do not require pressing to " + "emulate those used by Gmail." +@@ -236,11 +193,11 @@ msgstr "" + "Pro činnosti s e-maily pouvolit klávesové zkratky, které nepotřebují " + "zmáčknutí , aby se tak emulovalo chování Gmailu." + +-#: desktop/org.gnome.Geary.gschema.xml:82 ++#: desktop/org.gnome.Geary.gschema.xml:52 + msgid "Languages that shall be used in the spell checker" + msgstr "Jazyky používané v kontrole pravopisu" + +-#: desktop/org.gnome.Geary.gschema.xml:83 ++#: desktop/org.gnome.Geary.gschema.xml:53 + msgid "" + "A list of POSIX locales, with the empty list disabling spell checking and " + "the null list using desktop languages by default." +@@ -249,11 +206,11 @@ msgstr "" + "vypnutou kontrolu pravopisu a prázdná hodnota (null) znamená použití " + "výchozího nastavení z uživatelského prostředí." + +-#: desktop/org.gnome.Geary.gschema.xml:90 ++#: desktop/org.gnome.Geary.gschema.xml:60 + msgid "Languages that are displayed in the spell checker popover" + msgstr "Jazyky zobrazované ve vyskakovací nabídce kontroly pravopisu" + +-#: desktop/org.gnome.Geary.gschema.xml:91 ++#: desktop/org.gnome.Geary.gschema.xml:61 + msgid "" + "List of languages that are always displayed in the popover of the spell " + "checker." +@@ -261,37 +218,37 @@ msgstr "" + "Seznam jazyků, které se mají zobrazit ve vyskakovací nabídce kontroly " + "pravopisu." + +-#: desktop/org.gnome.Geary.gschema.xml:96 ++#: desktop/org.gnome.Geary.gschema.xml:66 + msgid "Notify of new mail at startup" + msgstr "Upozorňovat na novou poštu při spuštění" + +-#: desktop/org.gnome.Geary.gschema.xml:97 ++#: desktop/org.gnome.Geary.gschema.xml:67 + msgid "True to notify of new mail at startup." + msgstr "Zapnuto, když se má upozorňovat na novou poštu při spuštění aplikace." + +-#: desktop/org.gnome.Geary.gschema.xml:102 ++#: desktop/org.gnome.Geary.gschema.xml:72 + msgid "Ask when opening an attachment" + msgstr "Dotazovat se při otevírání přílohy" + +-#: desktop/org.gnome.Geary.gschema.xml:103 ++#: desktop/org.gnome.Geary.gschema.xml:73 + msgid "True to ask when opening an attachment." + msgstr "Zapnuto, pokud máte být dotazováni, když otevíráte přílohu." + +-#: desktop/org.gnome.Geary.gschema.xml:108 ++#: desktop/org.gnome.Geary.gschema.xml:78 + msgid "Whether to compose emails in HTML" + msgstr "Zda psát e-maily v HTML" + +-#: desktop/org.gnome.Geary.gschema.xml:109 ++#: desktop/org.gnome.Geary.gschema.xml:79 + msgid "True to compose emails in HTML; false for plain text." + msgstr "" + "Zapnuto, když se mají vytvářet e-maily ve formátu HTML, vypnuto, když v " + "prostém textu." + +-#: desktop/org.gnome.Geary.gschema.xml:114 ++#: desktop/org.gnome.Geary.gschema.xml:84 + msgid "Advisory strategy for full-text searching" + msgstr "Strategie pro hledání v celém textu" + +-#: desktop/org.gnome.Geary.gschema.xml:115 ++#: desktop/org.gnome.Geary.gschema.xml:85 + msgid "" + "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." + msgstr "" +@@ -299,58 +256,58 @@ msgstr "" + "sada variant hledaného výrazu a drobné rozdíly ve shodě), „aggresive“ (širší " + "sada variant a větší rozdíly ve shodě) a „horizon“ (všechny varianty výrazu)." + +-#: desktop/org.gnome.Geary.gschema.xml:120 ++#: desktop/org.gnome.Geary.gschema.xml:90 + msgid "Zoom of conversation viewer" + msgstr "Příblížení zobrazení konverzace" + +-#: desktop/org.gnome.Geary.gschema.xml:121 ++#: desktop/org.gnome.Geary.gschema.xml:91 + msgid "The zoom to apply on the conservation view." + msgstr "Přiblížení, které se má použit při zobrazení konverzace." + +-#: desktop/org.gnome.Geary.gschema.xml:126 ++#: desktop/org.gnome.Geary.gschema.xml:96 + msgid "Size of detached composer window" + msgstr "Velikost odpojeného okno pro psaní zprávy" + +-#: desktop/org.gnome.Geary.gschema.xml:127 ++#: desktop/org.gnome.Geary.gschema.xml:97 + msgid "The last recorded size of the detached composer window." + msgstr "Poslední zaznamenaná velikost odpojeného okna pro psaní zprávy." + +-#: desktop/org.gnome.Geary.gschema.xml:132 ++#: desktop/org.gnome.Geary.gschema.xml:102 + msgid "Undo sending email delay" + msgstr "Prodleva pro zrušení odeslání e-mailu" + +-#: desktop/org.gnome.Geary.gschema.xml:133 ++#: desktop/org.gnome.Geary.gschema.xml:103 + msgid "" + "The number of seconds to wait before sending an email. Set to zero or less " + "to disable." + msgstr "" +-"Počet sekund, po které se bude čekat s odesláním e-mailu, aby bylo možné akci " +-"vzít zpět. Nastavením na nulu nebo méně se tato možnost zakáže." ++"Počet sekund, po které se bude čekat s odesláním e-mailu, aby bylo možné " ++"akci vzít zpět. Nastavením na nulu nebo méně se tato možnost zakáže." + +-#: desktop/org.gnome.Geary.gschema.xml:139 ++#: desktop/org.gnome.Geary.gschema.xml:109 + msgid "Brief notification display time" + msgstr "Doba zobrazení stručného upozornění" + +-#: desktop/org.gnome.Geary.gschema.xml:140 ++#: desktop/org.gnome.Geary.gschema.xml:110 + msgid "" + "The length of time in seconds for which brief notifications should be " + "displayed." + msgstr "" + "Množství času v sekundách, po které se budou zobrazovat stručná upozornění." + +-#: desktop/org.gnome.Geary.gschema.xml:146 ++#: desktop/org.gnome.Geary.gschema.xml:116 + msgid "List of optional plugins" + msgstr "Seznam volitelných zásuvných modulů" + +-#: desktop/org.gnome.Geary.gschema.xml:147 ++#: desktop/org.gnome.Geary.gschema.xml:117 + msgid "Plugins listed here will be loaded on startup." + msgstr "Zásuvné moduly na tomto seznamu budou načteny při spuštění." + +-#: desktop/org.gnome.Geary.gschema.xml:152 ++#: desktop/org.gnome.Geary.gschema.xml:122 + msgid "Whether we migrated the old settings" + msgstr "Zda bylo přeneseno staré nastavení" + +-#: desktop/org.gnome.Geary.gschema.xml:153 ++#: desktop/org.gnome.Geary.gschema.xml:123 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -628,12 +585,12 @@ msgstr[1] "%d dny zpětně" + msgstr[2] "%d dní zpětně" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2061 ++#: src/client/application/application-main-window.vala:2129 + msgid "Undo" + msgstr "Zpět" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2044 ++#: src/client/application/application-main-window.vala:2112 + msgid "Redo" + msgstr "Znovu" + +@@ -728,7 +685,7 @@ msgstr "TLS" + #. account + #. Translators: An info bar button label + #: src/client/accounts/accounts-editor-row.vala:539 +-#: src/client/application/application-main-window.vala:554 ++#: src/client/application/application-main-window.vala:574 + msgid "Login" + msgstr "Přihlášení" + +@@ -837,130 +794,130 @@ msgid "Visit the Geary web site" + msgstr "Navštívit webové stránky Geary" + + #. / Command line option +-#: src/client/application/application-client.vala:97 ++#: src/client/application/application-client.vala:102 + msgid "Print debug logging" + msgstr "Vypisovat ladicí záznamy" + + #. / Command line option +-#: src/client/application/application-client.vala:100 ++#: src/client/application/application-client.vala:105 + msgid "Start with the main window hidden (deprecated)" + msgstr "Spustit se skrytým hlavním oknem (zavrženo)" + + #. / Command line option +-#: src/client/application/application-client.vala:103 ++#: src/client/application/application-client.vala:108 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "Povolit inspektora WebKitGTK v zobrazeních formátovaných pomocí HTML" + + #. / Command line option +-#: src/client/application/application-client.vala:106 ++#: src/client/application/application-client.vala:111 + msgid "Log conversation monitoring" + msgstr "Zaznamenávat sledování konverzace" + + #. / Command line option +-#: src/client/application/application-client.vala:109 ++#: src/client/application/application-client.vala:114 + msgid "Log IMAP network deserialization" + msgstr "Zaznamenávat síťové deserializace protokolu IMAP" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/application-client.vala:113 ++#: src/client/application/application-client.vala:118 + msgid "Log folder normalization" + msgstr "Zaznamenávat normalizace složky" + + #. / Command line option +-#: src/client/application/application-client.vala:116 ++#: src/client/application/application-client.vala:121 + msgid "Log IMAP network activity" + msgstr "Zaznamenávat síťové aktivity IMAP" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could + #. / also be called the IMAP events queue. +-#: src/client/application/application-client.vala:121 ++#: src/client/application/application-client.vala:126 + msgid "Log IMAP replay queue" + msgstr "Zaznamenávat frontu událostí IMAP" + + #. / Command line option +-#: src/client/application/application-client.vala:124 ++#: src/client/application/application-client.vala:129 + msgid "Log SMTP network activity" + msgstr "Zaznamenávat síťové aktivity SMTP" + + #. / Command line option +-#: src/client/application/application-client.vala:127 ++#: src/client/application/application-client.vala:132 + msgid "Log database queries (generates lots of messages)" + msgstr "Zaznamenávat databázové dotazy (generuje velké množství zpráv)" + + #. / Command line option +-#: src/client/application/application-client.vala:130 ++#: src/client/application/application-client.vala:135 + msgid "Perform a graceful quit" + msgstr "Korektně ukončit" + +-#: src/client/application/application-client.vala:132 ++#: src/client/application/application-client.vala:137 + msgid "Open a new window" + msgstr "Otevřít nové okno" + + #. / Command line option +-#: src/client/application/application-client.vala:135 ++#: src/client/application/application-client.vala:140 + msgid "Revoke all pinned TLS server certificates" + msgstr "Odvolat všechny spjaté serverové certifikáty TLS" + + #. / Command line option +-#: src/client/application/application-client.vala:138 ++#: src/client/application/application-client.vala:143 + msgid "Display program version" + msgstr "Zobrazit verzi programu" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:262 ++#: src/client/application/application-client.vala:275 + msgid "Geary version" + msgstr "Verze Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:264 ++#: src/client/application/application-client.vala:277 + msgid "Geary revision" + msgstr "Revize Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:266 ++#: src/client/application/application-client.vala:279 + msgid "GTK version" + msgstr "Verze GTK" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:273 ++#: src/client/application/application-client.vala:286 + msgid "GLib version" + msgstr "Verze GLib" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:280 ++#: src/client/application/application-client.vala:293 + msgid "WebKitGTK version" + msgstr "Verze WebKitGTK" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:287 ++#: src/client/application/application-client.vala:300 + msgid "Desktop environment" + msgstr "Uživatelské prostředí" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:289 ++#: src/client/application/application-client.vala:302 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Neznámý" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:293 ++#: src/client/application/application-client.vala:306 + msgid "Distribution name" + msgstr "Název distribuce" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:298 ++#: src/client/application/application-client.vala:311 + msgid "Distribution release" + msgstr "Vydání distribuce" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:303 ++#: src/client/application/application-client.vala:316 + msgid "Installation prefix" + msgstr "Prefix instalace" + +-#: src/client/application/application-client.vala:559 ++#: src/client/application/application-client.vala:573 + #, c-format + msgid "About %s" + msgstr "O aplikaci %s" +@@ -968,7 +925,7 @@ msgstr "O aplikaci %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:563 ++#: src/client/application/application-client.vala:577 + msgid "translator-credits" + msgstr "" + "Petr Šimáček \n" +@@ -976,30 +933,30 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1047 ++#: src/client/application/application-client.vala:1096 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "Volba „--hidden“ je zavržená a v budoucnu bude odstraněna." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1080 ++#: src/client/application/application-client.vala:1129 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Nerozpoznaný argument aplikace: „%s“" + + #. / Notification title. +-#: src/client/application/application-controller.vala:479 ++#: src/client/application/application-controller.vala:490 + #, c-format + msgid "A problem occurred sending email for %s" + msgstr "Vyskytl se problém při odesílání pošty z účtu %s" + + #. / Notification body +-#: src/client/application/application-controller.vala:483 ++#: src/client/application/application-controller.vala:494 + msgid "Email will not be sent until re-connected" + msgstr "Dokud se znovu nepřipojíte, nebudou se odesílat zprávy." + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:582 ++#: src/client/application/application-controller.vala:593 + msgid "Conversation marked" + msgid_plural "Conversations marked" + msgstr[0] "Konverzace byla označena" +@@ -1007,7 +964,7 @@ msgstr[1] "Konverzace byly označeny" + msgstr[2] "Konverzace byly označeny" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:588 ++#: src/client/application/application-controller.vala:599 + msgid "Conversation un-marked" + msgid_plural "Conversations un-marked" + msgstr[0] "Označení konverzace bylo zrušeno" +@@ -1017,8 +974,8 @@ msgstr[2] "Označení konverzací bylo zrušeno" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:614 +-#: src/client/application/application-controller.vala:698 ++#: src/client/application/application-controller.vala:625 ++#: src/client/application/application-controller.vala:709 + #, c-format + msgid "Conversation moved to %s" + msgid_plural "Conversations moved to %s" +@@ -1031,8 +988,8 @@ msgstr[2] "Konverzace byly přesunuty do složky %s" + #. / of the source folder. + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:622 +-#: src/client/application/application-controller.vala:644 ++#: src/client/application/application-controller.vala:633 ++#: src/client/application/application-controller.vala:655 + #, c-format + msgid "Conversation restored to %s" + msgid_plural "Conversations restored to %s" +@@ -1041,7 +998,7 @@ msgstr[1] "Konverzace byly obnoveny do složky %s" + msgstr[2] "Konverzace byly obnoveny do složky %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:665 ++#: src/client/application/application-controller.vala:676 + msgid "Conversation archived" + msgid_plural "Conversations archived" + msgstr[0] "Konverzace byla archivována" +@@ -1050,7 +1007,7 @@ msgstr[2] "Konverzace byly archivovány" + + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:721 ++#: src/client/application/application-controller.vala:732 + #, c-format + msgid "Message restored to %s" + msgid_plural "Messages restored to %s" +@@ -1059,7 +1016,7 @@ msgstr[1] "Zprávy byly obnoveny do složky %s" + msgstr[2] "Zprávy byly obnoveny do složky %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:742 ++#: src/client/application/application-controller.vala:753 + msgid "Message archived" + msgid_plural "Messages archived" + msgstr[0] "Zpráva byla archivována" +@@ -1069,7 +1026,7 @@ msgstr[2] "Zpráva byly archivovány" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:777 ++#: src/client/application/application-controller.vala:788 + #, c-format + msgid "Message moved to %s" + msgid_plural "Messages moved to %s" +@@ -1080,7 +1037,7 @@ msgstr[2] "Zprávy byly přesunuty do složky %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:805 ++#: src/client/application/application-controller.vala:816 + #, c-format + msgid "Conversation labelled as %s" + msgid_plural "Conversations labelled as %s" +@@ -1091,7 +1048,7 @@ msgstr[2] "Konverzacím byl přiřazen štítek %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:813 ++#: src/client/application/application-controller.vala:824 + #, c-format + msgid "Conversation un-labelled as %s" + msgid_plural "Conversations un-labelled as %s" +@@ -1099,12 +1056,12 @@ msgstr[0] "Konverzaci byl odebrán štítek %s" + msgstr[1] "Konverzacím byl odebrán štítek %s" + msgstr[2] "Konverzacím byl odebrán štítek %s" + +-#: src/client/application/application-controller.vala:1320 ++#: src/client/application/application-controller.vala:1331 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Nelze otevřít databázi pro %s" + +-#: src/client/application/application-controller.vala:1321 ++#: src/client/application/application-controller.vala:1332 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1128,20 +1085,20 @@ msgstr "" + "Opětovné sestavení databáze zničí všechny místně uložené e-maily a jejich " + "přílohy Na e-maily na vašem serveru to nebude mít vliv." + +-#: src/client/application/application-controller.vala:1323 ++#: src/client/application/application-controller.vala:1334 + msgid "_Rebuild" + msgstr "Znovu _sestavit" + +-#: src/client/application/application-controller.vala:1323 ++#: src/client/application/application-controller.vala:1334 + msgid "E_xit" + msgstr "S_končit" + +-#: src/client/application/application-controller.vala:1333 ++#: src/client/application/application-controller.vala:1344 + #, c-format + msgid "Unable to rebuild database for “%s”" + msgstr "Nelze znovu sestavit databázi pro „%s“" + +-#: src/client/application/application-controller.vala:1334 ++#: src/client/application/application-controller.vala:1345 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1154,87 +1111,87 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1501 ++#: src/client/application/application-controller.vala:1512 + #, c-format + msgid "Email sent to %s" + msgstr "E-mail pro příjemce %s byl odeslán" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2491 ++#: src/client/application/application-controller.vala:2502 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "E-mail pro příjemce %s byl zařazen do doručovací fronty" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2555 ++#: src/client/application/application-controller.vala:2566 + #, c-format + msgid "Email to %s saved" + msgstr "E-mail pro příjemce %s byl uložen" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2570 +-#: src/client/application/application-controller.vala:2628 ++#: src/client/application/application-controller.vala:2581 ++#: src/client/application/application-controller.vala:2639 + msgid "Composer could not be restored" + msgstr "Nezdařílo se obnovit předchozí stav editoru" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2613 ++#: src/client/application/application-controller.vala:2624 + #, c-format + msgid "Email to %s discarded" + msgstr "E-mail pro příjemce %s byl zahozen" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:540 ++#: src/client/application/application-main-window.vala:560 + msgid "Working offline" + msgstr "Pracuje se v režimu odpojení" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:542 ++#: src/client/application/application-main-window.vala:562 + msgid "You will not be able to send or receive email until re-connected." + msgstr "Dokud se znovu nepřipojíte, nebudete moci odesílat a přijímat e-maily." + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:549 ++#: src/client/application/application-main-window.vala:569 + msgid "Login problem" + msgstr "Problém s přihlášením" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:551 ++#: src/client/application/application-main-window.vala:571 + msgid "An account has reported an incorrect login or password." + msgstr "Účet oznámil nesprávné přihlašovací jméno nebo heslo." + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:558 ++#: src/client/application/application-main-window.vala:578 + msgid "Retry login, you will be prompted for your password" + msgstr "Zkusit znovu přihlásit, budete dotázáni na heslo" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:565 ++#: src/client/application/application-main-window.vala:585 + msgid "Security problem" + msgstr "Problém se zabezpečením" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:567 ++#: src/client/application/application-main-window.vala:587 + msgid "An account has reported an untrusted server." + msgstr "Účet oznámil nedůvěryhodný server." + + #. Translators: An info bar button label +-#: src/client/application/application-main-window.vala:570 ++#: src/client/application/application-main-window.vala:590 + msgid "Check" + msgstr "Zkontrolovat" + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:574 ++#: src/client/application/application-main-window.vala:594 + msgid "Check the security details for the connection" + msgstr "Zkontrolovat údaje zabezpečení pro připojení" + + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:617 ++#: src/client/application/application-main-window.vala:637 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" +@@ -1242,51 +1199,51 @@ msgstr "%s — %s" + #. Translators: The name of the folder group containing + #. folders created by people (as opposed to special-use + #. folders) +-#: src/client/application/application-main-window.vala:996 ++#: src/client/application/application-main-window.vala:1019 + #: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Štítky" + +-#: src/client/application/application-main-window.vala:1293 ++#: src/client/application/application-main-window.vala:1337 + #, c-format + msgid "Empty all email from your %s folder?" + msgstr "Vyprázdnit všechny zprávy z vaší složky %s?" + +-#: src/client/application/application-main-window.vala:1294 ++#: src/client/application/application-main-window.vala:1338 + msgid "This removes the email from Geary and your email server." + msgstr "Tímto se odstraní pošta z aplikace Geary i z poštovního serveru." + +-#: src/client/application/application-main-window.vala:1295 ++#: src/client/application/application-main-window.vala:1339 + msgid "This cannot be undone." + msgstr "Nebude možné to vrátit zpět." + +-#: src/client/application/application-main-window.vala:1296 ++#: src/client/application/application-main-window.vala:1340 + #, c-format + msgid "Empty %s" + msgstr "Vyprázdnit %s" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1353 ++#: src/client/application/application-main-window.vala:1397 + msgid "Do you want to permanently delete this conversation?" + msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Chcete trvale smazat tuto konverzaci?" + msgstr[1] "Chcete trvale smazat tyto konverzace?" + msgstr[2] "Chcete trvale smazat tyto konverzace?" + +-#: src/client/application/application-main-window.vala:1358 +-#: src/client/application/application-main-window.vala:1373 ++#: src/client/application/application-main-window.vala:1402 ++#: src/client/application/application-main-window.vala:1417 + msgid "Delete" + msgstr "Smazat" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1368 ++#: src/client/application/application-main-window.vala:1412 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Chcete trvale smazat tuto zprávu?" + msgstr[1] "Chcete trvale smazat tyto zprávy?" + msgstr[2] "Chcete trvale smazat tyto zprávy?" + +-#: src/client/application/application-main-window.vala:1691 ++#: src/client/application/application-main-window.vala:1703 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1297,7 +1254,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1784 ++#: src/client/composer/composer-widget.vala:1793 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1318,6 +1275,48 @@ msgstr "" + msgid "Don’t _ask me again" + msgstr "Příště se nept_at" + ++#: src/client/components/components-conversation-actions.vala:90 ++msgid "Mark conversation" ++msgid_plural "Mark conversations" ++msgstr[0] "Označit konverzaci" ++msgstr[1] "Označit konverzace" ++msgstr[2] "Označit konverzace" ++ ++#: src/client/components/components-conversation-actions.vala:95 ++msgid "Add label to conversation" ++msgid_plural "Add label to conversations" ++msgstr[0] "Přiřadit konverzaci štítek" ++msgstr[1] "Přiřadit konverzacím štítek" ++msgstr[2] "Přiřadit konverzacím štítek" ++ ++#: src/client/components/components-conversation-actions.vala:100 ++msgid "Move conversation" ++msgid_plural "Move conversations" ++msgstr[0] "Přesunout konverzaci" ++msgstr[1] "Přesunout konverzace" ++msgstr[2] "Přesunout konverzace" ++ ++#: src/client/components/components-conversation-actions.vala:105 ++msgid "Archive conversation" ++msgid_plural "Archive conversations" ++msgstr[0] "Archivovat konverzaci (A)" ++msgstr[1] "Archivovat konverzace (A)" ++msgstr[2] "Archivovat konverzace (A)" ++ ++#: src/client/components/components-conversation-actions.vala:116 ++msgid "Move conversation to Trash" ++msgid_plural "Move conversations to Trash" ++msgstr[0] "Přesunout konverzaci" ++msgstr[1] "Přesunout konverzace" ++msgstr[2] "Přesunout konverzace" ++ ++#: src/client/components/components-conversation-actions.vala:126 ++msgid "Delete conversation" ++msgid_plural "Delete conversations" ++msgstr[0] "Vymazat konverzaci" ++msgstr[1] "Vymazat konverzace" ++msgstr[2] "Vymazat konverzace" ++ + #: src/client/components/components-inspector.vala:78 + msgid "Inspector" + msgstr "Inspektor" +@@ -1348,7 +1347,7 @@ msgstr "Uložit jako" + + #: src/client/components/components-inspector.vala:230 + #: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Zrušit" + +@@ -1364,39 +1363,34 @@ msgstr "_Zobrazovat náhled konverzace" + + #. / Translators: Preferences label + #: src/client/components/components-preferences-window.vala:144 +-msgid "Use _three pane view" +-msgstr "Používat _třípanelové zobrazení" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "Používat pro e-maily jednokláve_sové zkratky" + +-#: src/client/components/components-preferences-window.vala:156 ++#: src/client/components/components-preferences-window.vala:146 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" + msgstr "" +-"Pro činnosti s e-maily povolit klávesové zkratky, které nepotřebují zmáčknout " +-"" ++"Pro činnosti s e-maily povolit klávesové zkratky, které nepotřebují " ++"zmáčknout " + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:167 ++#: src/client/components/components-preferences-window.vala:157 + msgid "_Watch for new mail when closed" + msgstr "S_ledovat novou poštu při zavřené aplikaci" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:171 ++#: src/client/components/components-preferences-window.vala:161 + msgid "Geary will keep running after all windows are closed" + msgstr "Aplikace Geary zůstane po zavření všech oken spuštěná na pozadí" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:189 ++#: src/client/components/components-preferences-window.vala:178 + msgid "Preferences" + msgstr "Předvolby" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:250 ++#: src/client/components/components-preferences-window.vala:234 + msgid "Plugins" + msgstr "Zásuvné moduly" + +@@ -1515,48 +1509,6 @@ msgstr "Je vyžadován název serveru" + msgid "Could not look up server name" + msgstr "Nelze najít název serveru" + +-#: src/client/components/main-toolbar.vala:116 +-msgid "Mark conversation" +-msgid_plural "Mark conversations" +-msgstr[0] "Označit konverzaci" +-msgstr[1] "Označit konverzace" +-msgstr[2] "Označit konverzace" +- +-#: src/client/components/main-toolbar.vala:121 +-msgid "Add label to conversation" +-msgid_plural "Add label to conversations" +-msgstr[0] "Přiřadit konverzaci štítek" +-msgstr[1] "Přiřadit konverzacím štítek" +-msgstr[2] "Přiřadit konverzacím štítek" +- +-#: src/client/components/main-toolbar.vala:126 +-msgid "Move conversation" +-msgid_plural "Move conversations" +-msgstr[0] "Přesunout konverzaci" +-msgstr[1] "Přesunout konverzace" +-msgstr[2] "Přesunout konverzace" +- +-#: src/client/components/main-toolbar.vala:131 +-msgid "Archive conversation" +-msgid_plural "Archive conversations" +-msgstr[0] "Archivovat konverzaci (A)" +-msgstr[1] "Archivovat konverzace (A)" +-msgstr[2] "Archivovat konverzace (A)" +- +-#: src/client/components/main-toolbar.vala:142 +-msgid "Move conversation to Trash" +-msgid_plural "Move conversations to Trash" +-msgstr[0] "Přesunout konverzaci" +-msgstr[1] "Přesunout konverzace" +-msgstr[2] "Přesunout konverzace" +- +-#: src/client/components/main-toolbar.vala:152 +-msgid "Delete conversation" +-msgid_plural "Delete conversations" +-msgstr[0] "Vymazat konverzaci" +-msgstr[1] "Vymazat konverzace" +-msgstr[2] "Vymazat konverzace" +- + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1689,92 +1641,92 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:862 ++#: src/client/composer/composer-widget.vala:865 + msgid "Do you want to keep or discard this draft message?" + msgstr "Chcete tento koncept zprávy zachovat nebo zahodit?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:888 ++#: src/client/composer/composer-widget.vala:891 + msgid "Do you want to discard this draft message?" + msgstr "Chcete zahodit tento koncept zprávy?" + +-#: src/client/composer/composer-widget.vala:1440 ++#: src/client/composer/composer-widget.vala:1448 + msgid "Send message with an empty subject and body?" + msgstr "Poslat zprávu s prázdným předmětem a tělem?" + +-#: src/client/composer/composer-widget.vala:1442 ++#: src/client/composer/composer-widget.vala:1450 + msgid "Send message with an empty subject?" + msgstr "Poslat zprávu s prázdným předmětem?" + +-#: src/client/composer/composer-widget.vala:1444 ++#: src/client/composer/composer-widget.vala:1452 + msgid "Send message with an empty body?" + msgstr "Poslat zprávu s prázdným tělem?" + +-#: src/client/composer/composer-widget.vala:1453 ++#: src/client/composer/composer-widget.vala:1461 + msgid "Send message without an attachment?" + msgstr "Poslat zprávu bez přílohy?" + +-#: src/client/composer/composer-widget.vala:1772 ++#: src/client/composer/composer-widget.vala:1781 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "Soubor „%s“ už byl pro doručení přiložen." + +-#: src/client/composer/composer-widget.vala:1804 +-#: src/client/composer/composer-widget.vala:1854 ++#: src/client/composer/composer-widget.vala:1813 ++#: src/client/composer/composer-widget.vala:1863 + #, c-format + msgid "“%s” is an empty file." + msgstr "Soubor „%s“ je prázdný." + +-#: src/client/composer/composer-widget.vala:1842 ++#: src/client/composer/composer-widget.vala:1851 + #, c-format + msgid "“%s” could not be found." + msgstr "Soubor „%s“ nebyl nalezen." + +-#: src/client/composer/composer-widget.vala:1848 ++#: src/client/composer/composer-widget.vala:1857 + #, c-format + msgid "“%s” is a folder." + msgstr "„%s“ je složka." + +-#: src/client/composer/composer-widget.vala:1867 ++#: src/client/composer/composer-widget.vala:1876 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "Soubor „%s“ se nezdařilo otevřít pro čtení." + +-#: src/client/composer/composer-widget.vala:1875 ++#: src/client/composer/composer-widget.vala:1884 + msgid "Cannot add attachment" + msgstr "Nelze připojit přílohu" + + #. Translators: This is the name of the file chooser filter + #. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:1946 ++#: src/client/composer/composer-widget.vala:1955 + msgid "Images" + msgstr "Obrázky" + + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:2010 ++#: src/client/composer/composer-widget.vala:2019 + #: src/client/conversation-viewer/conversation-email.vala:542 + #: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Komu:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:2016 ++#: src/client/composer/composer-widget.vala:2025 + #: src/client/conversation-viewer/conversation-email.vala:547 + #: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Kopie:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2022 ++#: src/client/composer/composer-widget.vala:2031 + #: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Skrytá kopie:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2028 ++#: src/client/composer/composer-widget.vala:2037 + msgid "Reply-To: " + msgstr "Odpověď:" + +@@ -1783,7 +1735,7 @@ msgstr "Odpověď:" + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2146 ++#: src/client/composer/composer-widget.vala:2155 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s přes %2$s" +@@ -1801,7 +1753,7 @@ msgid "Search for more languages" + msgstr "Vyhledat další jazyky" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:339 ++#: src/client/conversation-list/conversation-list-view.vala:389 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "Přesunou_t konverzaci do koše" +@@ -1809,45 +1761,45 @@ msgstr[1] "Přesunou_t konverzace do koše" + msgstr[2] "Přesunou_t konverzace do koše" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:351 ++#: src/client/conversation-list/conversation-list-view.vala:401 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "Vy_mazat konverzaci" + msgstr[1] "Vy_mazat konverzace" + msgstr[2] "Vy_mazat konverzace" + +-#: src/client/conversation-list/conversation-list-view.vala:364 ++#: src/client/conversation-list/conversation-list-view.vala:414 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Označit jako _přečtené" + +-#: src/client/conversation-list/conversation-list-view.vala:372 ++#: src/client/conversation-list/conversation-list-view.vala:422 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Označit jako _nepřečtené" + +-#: src/client/conversation-list/conversation-list-view.vala:380 ++#: src/client/conversation-list/conversation-list-view.vala:430 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "O_debrat hvězdičku" + +-#: src/client/conversation-list/conversation-list-view.vala:387 ++#: src/client/conversation-list/conversation-list-view.vala:437 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "_Hvězdička" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:396 ++#: src/client/conversation-list/conversation-list-view.vala:446 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "_Odpovědět" + +-#: src/client/conversation-list/conversation-list-view.vala:402 ++#: src/client/conversation-list/conversation-list-view.vala:452 + msgid "R_eply All" + msgstr "O_dpovědět všem" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:408 ++#: src/client/conversation-list/conversation-list-view.vala:458 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Přeposlat" +@@ -1898,64 +1850,64 @@ msgstr "" + #. in load_contacts. + #. Translators: This is displayed in place of the from address + #. when the message has no from address. +-#: src/client/conversation-viewer/conversation-message.vala:529 ++#: src/client/conversation-viewer/conversation-message.vala:556 + msgid "No sender" + msgstr "Bez odesilatele" + + #. Translators: This separates multiple 'from' + #. addresses in the compact header for a message. +-#: src/client/conversation-viewer/conversation-message.vala:920 ++#: src/client/conversation-viewer/conversation-message.vala:1049 + msgid ", " + msgstr ", " + + #. Translators: This string is used as the HTML IMG ALT + #. attribute value when displaying an inline image in an email + #. that did not specify a file name. E.g. Image +Date: Sat, 17 Oct 2020 11:29:05 +1100 +Subject: [PATCH 103/124] ui/components-web-view.js: Use ResizeObserver for + watching pref height + +Rather than guessing when the height might change by using a number +of different event listeners, use a ResizeObserver to get direct +notifications of any changes to the HTML element's size. +--- + ui/components-web-view.js | 54 ++++----------------------------------- + 1 file changed, 5 insertions(+), 49 deletions(-) + +diff --git a/ui/components-web-view.js b/ui/components-web-view.js +index d0998a67..34bf0430 100644 +--- a/ui/components-web-view.js ++++ b/ui/components-web-view.js +@@ -41,7 +41,12 @@ PageState.prototype = { + } + }); + ++ this.heightObserver = new ResizeObserver((entries) => { ++ state.updatePreferredHeight(); ++ }); ++ + document.addEventListener("DOMContentLoaded", function(e) { ++ state.heightObserver.observe(window.document.documentElement); + state.loaded(); + }); + +@@ -49,55 +54,6 @@ PageState.prototype = { + state.selectionChanged(); + }); + +- // Coalesce multiple calls to updatePreferredHeight using a +- // timeout to avoid the overhead of multiple JS messages sent +- // to the app and hence view multiple resizes being queued. +- let queueTimeout = null; +- let queuePreferredHeightUpdate = function() { +- if (queueTimeout != null) { +- clearTimeout(queueTimeout); +- } +- queueTimeout = setTimeout( +- function() { state.updatePreferredHeight(); }, 100 +- ); +- }; +- +- // Queues an update when the complete document is loaded. +- // +- // Note also that the delay introduced here by this last call +- // to queuePreferredHeightUpdate when the complete document is +- // loaded seems to be important to get an accurate idea of the +- // final document size. +- window.addEventListener("load", function(e) { +- queuePreferredHeightUpdate(); +- }, true); // load does not bubble +- +- // Queues updates for any STYLE, IMG and other loaded +- // elements, hence handles resizing when the user later +- // requests remote images loading. +- document.addEventListener("load", function(e) { +- queuePreferredHeightUpdate(); +- }, true); // load does not bubble +- +- // Queues an update if the window changes size, e.g. if the +- // user resized the window. Only trigger when the width has +- // changed however since the height should only change as the +- // body is being loaded. +- let width = window.innerWidth; +- window.addEventListener("resize", function(e) { +- let currentWidth = window.innerWidth; +- if (width != currentWidth) { +- width = currentWidth; +- queuePreferredHeightUpdate(); +- } +- }, false); // load does not bubble +- +- // Queues an update when a transition has completed, e.g. if the +- // user resized the window +- window.addEventListener("transitionend", function(e) { +- queuePreferredHeightUpdate(); +- }, false); // load does not bubble +- + this.testResult = null; + }, + getPreferredHeight: function() { +-- +2.29.2 + diff --git a/mail-client/geary/files/0104-ui-components-web-view.js-Use-arrow-functions-for-be.patch b/mail-client/geary/files/0104-ui-components-web-view.js-Use-arrow-functions-for-be.patch new file mode 100644 index 0000000..0b5c490 --- /dev/null +++ b/mail-client/geary/files/0104-ui-components-web-view.js-Use-arrow-functions-for-be.patch @@ -0,0 +1,60 @@ +From 0dce103f6b7d2195efe995f72bf1dc2f379e0824 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 17 Oct 2020 13:54:39 +1100 +Subject: [PATCH 104/124] ui/components-web-view.js: Use arrow functions for + better this scoping + +--- + ui/components-web-view.js | 22 ++++++++++------------ + 1 file changed, 10 insertions(+), 12 deletions(-) + +diff --git a/ui/components-web-view.js b/ui/components-web-view.js +index 34bf0430..9b026dcd 100644 +--- a/ui/components-web-view.js ++++ b/ui/components-web-view.js +@@ -26,32 +26,30 @@ PageState.prototype = { + this._commandStackChanged = MessageSender("command_stack_changed"); + this._documentModified = MessageSender("document_modified"); + +- let state = this; +- + // Set up an observer to keep track of modifications made to + // the document when editing. + let modifiedId = null; +- this.bodyObserver = new MutationObserver(function(records) { ++ this.bodyObserver = new MutationObserver((records) => { + if (modifiedId == null) { +- modifiedId = window.setTimeout(function() { +- state.documentModified(); +- state.checkCommandStack(); ++ modifiedId = window.setTimeout(() => { ++ this.documentModified(); ++ this.checkCommandStack(); + modifiedId = null; + }, 1000); + } + }); + + this.heightObserver = new ResizeObserver((entries) => { +- state.updatePreferredHeight(); ++ this.updatePreferredHeight(); + }); + +- document.addEventListener("DOMContentLoaded", function(e) { +- state.heightObserver.observe(window.document.documentElement); +- state.loaded(); ++ document.addEventListener("DOMContentLoaded", (e) => { ++ this.heightObserver.observe(window.document.documentElement); ++ this.loaded(); + }); + +- document.addEventListener("selectionchange", function(e) { +- state.selectionChanged(); ++ document.addEventListener("selectionchange", (e) => { ++ this.selectionChanged(); + }); + + this.testResult = null; +-- +2.29.2 + diff --git a/mail-client/geary/files/0105-ui-conversation-web-view.css-Clean-up-HTML-BODY-elem.patch b/mail-client/geary/files/0105-ui-conversation-web-view.css-Clean-up-HTML-BODY-elem.patch new file mode 100644 index 0000000..db9493f --- /dev/null +++ b/mail-client/geary/files/0105-ui-conversation-web-view.css-Clean-up-HTML-BODY-elem.patch @@ -0,0 +1,55 @@ +From 40f97de745741fe54a8ece2ddd106cb356c8811d Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 17 Oct 2020 13:36:30 +1100 +Subject: [PATCH 105/124] ui/conversation-web-view.css: Clean up HTML/BODY + element lockdowns + +Use some more obvious CSS to ensure we can get an accurate idea of the +content height for sizing the web view and that the body fits the +web view's width. +--- + ui/conversation-web-view.css | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +diff --git a/ui/conversation-web-view.css b/ui/conversation-web-view.css +index d4786b4a..3c1929f2 100644 +--- a/ui/conversation-web-view.css ++++ b/ui/conversation-web-view.css +@@ -1,5 +1,8 @@ + /** + * Style that is inserted into the message after it is loaded. ++ * ++ * Copyright © 2016 Software Freedom Conservancy Inc. ++ * Copyright © 2020 Michael Gratton + */ + + /* +@@ -14,17 +17,15 @@ html { + color: black; + background-color: white; + +- /* Trigger CSS 2.1 § 10.6.7 to get a shrink-wrapped height. */ +- position: absolute !important; +- top: 0 !important; +- bottom: auto !important; +- height: auto !important; +- +- /* Fix up the width after going to absolute positioning above. */ +- width: 100%; ++ /* Width must always be defined by the viewport so content doesn't ++ overflow inside the WebView, height must always be defined by the ++ content so the WebView can be sized to fit exactly. */ ++ width: 100vw !important; ++ height: max-content !important; + +- /* Lock down the box just enough so we don't get an incrementally +- expanding web view */ ++ /* Lock down the box sizing just enough so that the width and height ++ constraints above work as expected, and so the element's ++ scrollHeight is accurate. */ + box-sizing: border-box !important; + margin: 0 !important; + border-width: 0 !important; +-- +2.29.2 + diff --git a/mail-client/geary/files/0106-ui-conversation-web-view.css-Work-around-oversized-e.patch b/mail-client/geary/files/0106-ui-conversation-web-view.css-Work-around-oversized-e.patch new file mode 100644 index 0000000..2dac04f --- /dev/null +++ b/mail-client/geary/files/0106-ui-conversation-web-view.css-Work-around-oversized-e.patch @@ -0,0 +1,45 @@ +From 0e783de5bfd9b2e740979f2eed58e60fa85bdfc0 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 17 Oct 2020 13:38:16 +1100 +Subject: [PATCH 106/124] ui/conversation-web-view.css: Work around oversized + email body height + +Sometimes when loading an email body, the viewport for the web view +will be set to 0 (when the web view is hidden or not yet laid out in +the widget hierarchy?). When this happens, since the width of the body +is specified as 100vw, the content width is reduced to the absolute +minimum and hence the content height is stretched right out. Then, when +the web view is displayed, the viewport width increases but the extra +whitespace is never reclaimed (scrollHeight never goes down), so the +height of the web view remains way too large, causing large amounts of +whitespace at the end of the email message (i.e. #283). + +To work around this, set a min width for the HTML element so the initial +height of the email body isn't too badly wrong. +--- + ui/conversation-web-view.css | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/ui/conversation-web-view.css b/ui/conversation-web-view.css +index 3c1929f2..8b0ef421 100644 +--- a/ui/conversation-web-view.css ++++ b/ui/conversation-web-view.css +@@ -23,6 +23,15 @@ html { + width: 100vw !important; + height: max-content !important; + ++ /* Despite the fact that the width must always be defined by the ++ viewport, the viewport width will be 0 if the email is loaded before ++ its WebView is laid out in the widget hierarchy. As a workaround, to ++ prevent this causing the email being squished down to is minimum ++ width and hence being stretched right out in height, set a ++ reasonable minimum width. See ++ https://gitlab.gnome.org/GNOME/geary/-/issues/283 */ ++ min-width: 400px !important; ++ + /* Lock down the box sizing just enough so that the width and height + constraints above work as expected, and so the element's + scrollHeight is accurate. */ +-- +2.29.2 + diff --git a/mail-client/geary/files/0107-ConversationWebView-Fix-plain-text-emails-sometimes-.patch b/mail-client/geary/files/0107-ConversationWebView-Fix-plain-text-emails-sometimes-.patch new file mode 100644 index 0000000..1aaee19 --- /dev/null +++ b/mail-client/geary/files/0107-ConversationWebView-Fix-plain-text-emails-sometimes-.patch @@ -0,0 +1,104 @@ +From ec3057daf7fc8565960f913303d292833bc269cb Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sat, 17 Oct 2020 13:45:23 +1100 +Subject: [PATCH 107/124] ConversationWebView: Fix plain text emails sometimes + being too wide + +Using `whitespace: pre-wrap` to format plain text email sometimes +causes additional width to be allocated by the plain text blocks that +then does not get used due to the constraints on the HTML element. +The allocated space remains however and hence an un-needed horizontal +scrollbar appears. + +Using `break-spaces` instead seems to help since it allows breaks after +a space character, leading to the additional space not otherwise being +allocated. +--- + src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala | 2 +- + test/engine/rfc822/rfc822-message-test.vala | 2 +- + ui/composer-web-view.css | 2 +- + ui/composer-web-view.js | 2 +- + ui/conversation-web-view.css | 2 +- + ui/conversation-web-view.js | 2 +- + 6 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala b/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala +index 8cf7563d..d2a941c0 100644 +--- a/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala ++++ b/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala +@@ -59,7 +59,7 @@ private class Geary.RFC822.FilterBlockquotes : GMime.Filter { + if (!initial_element) { + // We set the style explicitly so it will be set in HTML emails. We also give it a + // class so users can customize the style in the viewer. +- insert_string("
", ref out_index); ++ insert_string("
", ref out_index); + initial_element = true; + } + +diff --git a/test/engine/rfc822/rfc822-message-test.vala b/test/engine/rfc822/rfc822-message-test.vala +index b7697dda..57976cca 100644 +--- a/test/engine/rfc822/rfc822-message-test.vala ++++ b/test/engine/rfc822/rfc822-message-test.vala +@@ -15,7 +15,7 @@ class Geary.RFC822.MessageTest : TestCase { + private const string BASIC_MULTIPART_TNEF = "basic-multipart-tnef.eml"; + + private const string HTML_CONVERSION_TEMPLATE = +- "
%s
"; ++ "
%s
"; + + private const string BASIC_PLAIN_BODY = """This is the first line. + +diff --git a/ui/composer-web-view.css b/ui/composer-web-view.css +index 07ae6869..462d5876 100644 +--- a/ui/composer-web-view.css ++++ b/ui/composer-web-view.css +@@ -60,6 +60,6 @@ blockquote { + } + + pre { +- white-space: pre-wrap; ++ white-space: break-spaces; + margin: 0; + } +diff --git a/ui/composer-web-view.js b/ui/composer-web-view.js +index 5ee4105e..bd010b6c 100644 +--- a/ui/composer-web-view.js ++++ b/ui/composer-web-view.js +@@ -264,7 +264,7 @@ ComposerPageState.prototype = { + }, + tabOut: function() { + document.execCommand( +- "inserthtml", false, "\t" ++ "inserthtml", false, "\t" + ); + }, + tabIn: function() { +diff --git a/ui/conversation-web-view.css b/ui/conversation-web-view.css +index 8b0ef421..d1da2eae 100644 +--- a/ui/conversation-web-view.css ++++ b/ui/conversation-web-view.css +@@ -77,7 +77,7 @@ blockquote { + } + + pre { +- white-space: pre-wrap; ++ white-space: break-spaces; + } + + /** +diff --git a/ui/conversation-web-view.js b/ui/conversation-web-view.js +index 1d730d47..7b3a1c89 100644 +--- a/ui/conversation-web-view.js ++++ b/ui/conversation-web-view.js +@@ -213,7 +213,7 @@ ConversationPageState.prototype = { + if (ConversationPageState.isDescendantOf( + ancestor, "DIV", "plaintext", false)) { + dummy.classList.add("plaintext"); +- dummy.setAttribute("style", "white-space: pre-wrap;"); ++ dummy.setAttribute("style", "white-space: break-spaces;"); + includeDummy = true; + } + dummy.appendChild(range.cloneContents()); +-- +2.29.2 + diff --git a/mail-client/geary/files/0108-Update-Polish-translation.patch b/mail-client/geary/files/0108-Update-Polish-translation.patch new file mode 100644 index 0000000..2e2f828 --- /dev/null +++ b/mail-client/geary/files/0108-Update-Polish-translation.patch @@ -0,0 +1,956 @@ +From 32cc96f9597d6debaa20a1c94ff931722b63f670 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Piotr=20Dr=C4=85g?= +Date: Sun, 18 Oct 2020 12:32:46 +0200 +Subject: [PATCH 108/124] Update Polish translation + +--- + po/pl.po | 396 +++++++++++++++++++++++++------------------------------ + 1 file changed, 177 insertions(+), 219 deletions(-) + +diff --git a/po/pl.po b/po/pl.po +index c509b89d..5488ffd3 100644 +--- a/po/pl.po ++++ b/po/pl.po +@@ -16,8 +16,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-08-29 01:59+0000\n" +-"PO-Revision-Date: 2020-08-29 12:05+0200\n" ++"POT-Creation-Date: 2020-10-12 10:41+0000\n" ++"PO-Revision-Date: 2020-10-18 12:30+0200\n" + "Last-Translator: Piotr Drąg \n" + "Language-Team: Polish \n" + "Language: pl\n" +@@ -40,7 +40,7 @@ msgstr "Wysyłanie plików za pomocą programu Geary" + #: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 + #: src/client/accounts/accounts-editor-servers-pane.vala:560 +-#: src/client/application/application-main-window.vala:608 ++#: src/client/application/application-main-window.vala:628 + msgid "Geary" + msgstr "Geary" + +@@ -164,76 +164,35 @@ msgid "The last recorded height of the application window." + msgstr "Ostatnio zapisana wysokość okna programu." + + #: desktop/org.gnome.Geary.gschema.xml:26 +-msgid "Position of folder list pane" +-msgstr "Położenie panelu listy katalogów" +- +-#: desktop/org.gnome.Geary.gschema.xml:27 +-msgid "Position of the folder list Paned grabber." +-msgstr "Położenie uchwytu panelu listy katalogów." +- +-#: desktop/org.gnome.Geary.gschema.xml:32 +-msgid "Position of folder list pane when horizontal" +-msgstr "Położenie panelu listy katalogów w trybie poziomym" +- +-#: desktop/org.gnome.Geary.gschema.xml:33 +-msgid "" +-"Position of the folder list Paned grabber in the horizontal orientation." +-msgstr "Położenie uchwytu panelu listy katalogów w trybie poziomym." +- +-#: desktop/org.gnome.Geary.gschema.xml:38 +-msgid "Position of folder list pane when vertical" +-msgstr "Położenie panelu listy katalogów w trybie pionowym" +- +-#: desktop/org.gnome.Geary.gschema.xml:39 +-msgid "Position of the folder list Paned grabber in the vertical orientation." +-msgstr "Położenie uchwytu panelu listy katalogów w trybie pionowym." +- +-#: desktop/org.gnome.Geary.gschema.xml:44 +-msgid "Orientation of the folder list pane" +-msgstr "Tryb orientacji panelu listy katalogów" +- +-#: desktop/org.gnome.Geary.gschema.xml:45 +-msgid "True if the folder list Paned is in the horizontal orientation." +-msgstr "Panel listy katalogów jest w trybie poziomym." +- +-#: desktop/org.gnome.Geary.gschema.xml:50 + msgid "Show/hide formatting toolbar" + msgstr "Wyświetlanie paska narzędziowego formatowania" + +-#: desktop/org.gnome.Geary.gschema.xml:51 ++#: desktop/org.gnome.Geary.gschema.xml:27 + msgid "True if the formatting toolbar in the composer is shown." + msgstr "" + "Pasek narzędziowy formatowania w oknie tworzenia wiadomości jest wyświetlany." + +-#: desktop/org.gnome.Geary.gschema.xml:56 +-msgid "Position of message list pane" +-msgstr "Położenie panelu listy wiadomości" +- +-#: desktop/org.gnome.Geary.gschema.xml:57 +-msgid "Position of the message list Paned grabber." +-msgstr "Położenie uchwytu panelu listy wiadomości." +- +-#: desktop/org.gnome.Geary.gschema.xml:62 ++#: desktop/org.gnome.Geary.gschema.xml:32 + msgid "Autoselect next message" + msgstr "Automatyczne wybieranie następnej wiadomości" + +-#: desktop/org.gnome.Geary.gschema.xml:63 ++#: desktop/org.gnome.Geary.gschema.xml:33 + msgid "True if we should autoselect the next available conversation." + msgstr "Następny dostępny wątek ma być automatycznie wybierany." + +-#: desktop/org.gnome.Geary.gschema.xml:68 ++#: desktop/org.gnome.Geary.gschema.xml:38 + msgid "Display message previews" + msgstr "Podgląd wiadomości" + +-#: desktop/org.gnome.Geary.gschema.xml:69 ++#: desktop/org.gnome.Geary.gschema.xml:39 + msgid "True if we should display a short preview of each message." + msgstr "Wyświetlanie krótkiego podglądu każdej wiadomości." + +-#: desktop/org.gnome.Geary.gschema.xml:74 ++#: desktop/org.gnome.Geary.gschema.xml:44 + msgid "Use single key shortcuts" + msgstr "Skróty jednoklawiszowe" + +-#: desktop/org.gnome.Geary.gschema.xml:75 ++#: desktop/org.gnome.Geary.gschema.xml:45 + msgid "" + "Enables shortcuts for email actions that do not require pressing to " + "emulate those used by Gmail." +@@ -241,11 +200,11 @@ msgstr "" + "Włącza skróty do działań na wiadomościach, które nie wymagają naciśnięcia " + "klawisza , aby naśladować skróty w serwisie Gmail." + +-#: desktop/org.gnome.Geary.gschema.xml:82 ++#: desktop/org.gnome.Geary.gschema.xml:52 + msgid "Languages that shall be used in the spell checker" + msgstr "Języki używane do sprawdzania pisowni" + +-#: desktop/org.gnome.Geary.gschema.xml:83 ++#: desktop/org.gnome.Geary.gschema.xml:53 + msgid "" + "A list of POSIX locales, with the empty list disabling spell checking and " + "the null list using desktop languages by default." +@@ -253,74 +212,74 @@ msgstr "" + "Lista lokalizacji POSIX. Pusta lista wyłącza sprawdzanie pisowni, a lista " + "NULL powoduje użycie domyślnego języka środowiska." + +-#: desktop/org.gnome.Geary.gschema.xml:90 ++#: desktop/org.gnome.Geary.gschema.xml:60 + msgid "Languages that are displayed in the spell checker popover" + msgstr "Języki wyświetlane w oknie sprawdzania pisowni" + +-#: desktop/org.gnome.Geary.gschema.xml:91 ++#: desktop/org.gnome.Geary.gschema.xml:61 + msgid "" + "List of languages that are always displayed in the popover of the spell " + "checker." + msgstr "Lista języków zawsze wyświetlanych w oknie sprawdzania pisowni." + +-#: desktop/org.gnome.Geary.gschema.xml:96 ++#: desktop/org.gnome.Geary.gschema.xml:66 + msgid "Notify of new mail at startup" + msgstr "Powiadamianie o nowych wiadomościach po uruchomieniu" + +-#: desktop/org.gnome.Geary.gschema.xml:97 ++#: desktop/org.gnome.Geary.gschema.xml:67 + msgid "True to notify of new mail at startup." + msgstr "Powiadamianie o nowych wiadomościach po uruchomieniu." + +-#: desktop/org.gnome.Geary.gschema.xml:102 ++#: desktop/org.gnome.Geary.gschema.xml:72 + msgid "Ask when opening an attachment" + msgstr "Pytanie podczas otwierania załącznika" + +-#: desktop/org.gnome.Geary.gschema.xml:103 ++#: desktop/org.gnome.Geary.gschema.xml:73 + msgid "True to ask when opening an attachment." + msgstr "Pytanie podczas otwierania załącznika." + +-#: desktop/org.gnome.Geary.gschema.xml:108 ++#: desktop/org.gnome.Geary.gschema.xml:78 + msgid "Whether to compose emails in HTML" + msgstr "Tworzenie wiadomości w formacie HTML" + +-#: desktop/org.gnome.Geary.gschema.xml:109 ++#: desktop/org.gnome.Geary.gschema.xml:79 + msgid "True to compose emails in HTML; false for plain text." + msgstr "" + "Tworzenie wiadomości w formacie HTML. Wyłączenie powoduje tworzenie " + "wiadomości w zwykłym tekście." + +-#: desktop/org.gnome.Geary.gschema.xml:114 ++#: desktop/org.gnome.Geary.gschema.xml:84 + msgid "Advisory strategy for full-text searching" + msgstr "Strategia wyszukiwania w treści" + +-#: desktop/org.gnome.Geary.gschema.xml:115 ++#: desktop/org.gnome.Geary.gschema.xml:85 + msgid "" + "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." + msgstr "" + "Przyjmowane wartości: „exact” (dokładna), „conservative” (konserwatywna), " + "„aggressive” (agresywna) i „horizon” (horyzontalna)." + +-#: desktop/org.gnome.Geary.gschema.xml:120 ++#: desktop/org.gnome.Geary.gschema.xml:90 + msgid "Zoom of conversation viewer" + msgstr "Powiększenie widoku wątku" + +-#: desktop/org.gnome.Geary.gschema.xml:121 ++#: desktop/org.gnome.Geary.gschema.xml:91 + msgid "The zoom to apply on the conservation view." + msgstr "Powiększenie widoku wątku." + +-#: desktop/org.gnome.Geary.gschema.xml:126 ++#: desktop/org.gnome.Geary.gschema.xml:96 + msgid "Size of detached composer window" + msgstr "Rozmiar odłączonego okna tworzenia wiadomości" + +-#: desktop/org.gnome.Geary.gschema.xml:127 ++#: desktop/org.gnome.Geary.gschema.xml:97 + msgid "The last recorded size of the detached composer window." + msgstr "Ostatnio zapisany rozmiar odłączonego okna tworzenia wiadomości." + +-#: desktop/org.gnome.Geary.gschema.xml:132 ++#: desktop/org.gnome.Geary.gschema.xml:102 + msgid "Undo sending email delay" + msgstr "Opóźnienie cofnięcia wysyłania wiadomości" + +-#: desktop/org.gnome.Geary.gschema.xml:133 ++#: desktop/org.gnome.Geary.gschema.xml:103 + msgid "" + "The number of seconds to wait before sending an email. Set to zero or less " + "to disable." +@@ -328,29 +287,29 @@ msgstr "" + "Ile sekund czekać przed wysłaniem wiadomości. Ustawienie na zero lub mniej " + "wyłącza tę funkcję." + +-#: desktop/org.gnome.Geary.gschema.xml:139 ++#: desktop/org.gnome.Geary.gschema.xml:109 + msgid "Brief notification display time" + msgstr "Czas wyświetlania krótkiego powiadomienia" + +-#: desktop/org.gnome.Geary.gschema.xml:140 ++#: desktop/org.gnome.Geary.gschema.xml:110 + msgid "" + "The length of time in seconds for which brief notifications should be " + "displayed." + msgstr "Przez ile czasu w sekundach wyświetlać krótkie powiadomienia." + +-#: desktop/org.gnome.Geary.gschema.xml:146 ++#: desktop/org.gnome.Geary.gschema.xml:116 + msgid "List of optional plugins" + msgstr "Lista opcjonalnych wtyczek" + +-#: desktop/org.gnome.Geary.gschema.xml:147 ++#: desktop/org.gnome.Geary.gschema.xml:117 + msgid "Plugins listed here will be loaded on startup." + msgstr "Wymienione tu wtyczki będą wczytywane podczas uruchamiania." + +-#: desktop/org.gnome.Geary.gschema.xml:152 ++#: desktop/org.gnome.Geary.gschema.xml:122 + msgid "Whether we migrated the old settings" + msgstr "Poprzednie ustawienia zostały migrowane" + +-#: desktop/org.gnome.Geary.gschema.xml:153 ++#: desktop/org.gnome.Geary.gschema.xml:123 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -628,12 +587,12 @@ msgstr[1] "ostatnie %d dni" + msgstr[2] "ostatnie %d dni" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2061 ++#: src/client/application/application-main-window.vala:2129 + msgid "Undo" + msgstr "Cofnij" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2044 ++#: src/client/application/application-main-window.vala:2112 + msgid "Redo" + msgstr "Ponów" + +@@ -728,7 +687,7 @@ msgstr "TLS" + #. account + #. Translators: An info bar button label + #: src/client/accounts/accounts-editor-row.vala:539 +-#: src/client/application/application-main-window.vala:554 ++#: src/client/application/application-main-window.vala:574 + msgid "Login" + msgstr "Login" + +@@ -985,13 +944,13 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1047 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "Opcja „--hidden” jest przestarzała i zostanie usunięta w przyszłości." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1080 ++#: src/client/application/application-client.vala:1078 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Nieznany parametr programu: „%s”" +@@ -1197,56 +1156,56 @@ msgid "Email to %s discarded" + msgstr "Odrzucono wiadomość do %s" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:540 ++#: src/client/application/application-main-window.vala:560 + msgid "Working offline" + msgstr "Tryb offline" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:542 ++#: src/client/application/application-main-window.vala:562 + msgid "You will not be able to send or receive email until re-connected." + msgstr "" + "Nie można wysyłać ani odbierać poczty, dopóki komputer nie zostanie " + "połączony." + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:549 ++#: src/client/application/application-main-window.vala:569 + msgid "Login problem" + msgstr "Problem z logowaniem" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:551 ++#: src/client/application/application-main-window.vala:571 + msgid "An account has reported an incorrect login or password." + msgstr "Konto zgłosiło niewłaściwy login lub hasło." + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:558 ++#: src/client/application/application-main-window.vala:578 + msgid "Retry login, you will be prompted for your password" + msgstr "Ponawia logowanie, zostanie wyświetlona prośba o hasło" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:565 ++#: src/client/application/application-main-window.vala:585 + msgid "Security problem" + msgstr "Problem zabezpieczeń" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:567 ++#: src/client/application/application-main-window.vala:587 + msgid "An account has reported an untrusted server." + msgstr "Konto zgłosiło niezaufany serwer." + + #. Translators: An info bar button label +-#: src/client/application/application-main-window.vala:570 ++#: src/client/application/application-main-window.vala:590 + msgid "Check" + msgstr "Sprawdź poprawność" + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:574 ++#: src/client/application/application-main-window.vala:594 + msgid "Check the security details for the connection" + msgstr "Sprawdza poprawność informacji o zabezpieczeniach połączenia" + + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:617 ++#: src/client/application/application-main-window.vala:637 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" +@@ -1254,51 +1213,51 @@ msgstr "%s — %s" + #. Translators: The name of the folder group containing + #. folders created by people (as opposed to special-use + #. folders) +-#: src/client/application/application-main-window.vala:996 ++#: src/client/application/application-main-window.vala:1019 + #: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Etykiety" + +-#: src/client/application/application-main-window.vala:1293 ++#: src/client/application/application-main-window.vala:1337 + #, c-format + msgid "Empty all email from your %s folder?" + msgstr "Usunąć wszystkie wiadomości z katalogu %s?" + +-#: src/client/application/application-main-window.vala:1294 ++#: src/client/application/application-main-window.vala:1338 + msgid "This removes the email from Geary and your email server." + msgstr "Spowoduje to usunięcie wiadomości z programu Geary i serwera poczty." + +-#: src/client/application/application-main-window.vala:1295 ++#: src/client/application/application-main-window.vala:1339 + msgid "This cannot be undone." + msgstr "Tego nie można cofnąć." + +-#: src/client/application/application-main-window.vala:1296 ++#: src/client/application/application-main-window.vala:1340 + #, c-format + msgid "Empty %s" + msgstr "Opróżnij %s" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1353 ++#: src/client/application/application-main-window.vala:1397 + msgid "Do you want to permanently delete this conversation?" + msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Trwale usunąć ten wątek?" + msgstr[1] "Trwale usunąć te wątki?" + msgstr[2] "Trwale usunąć te wątki?" + +-#: src/client/application/application-main-window.vala:1358 +-#: src/client/application/application-main-window.vala:1373 ++#: src/client/application/application-main-window.vala:1402 ++#: src/client/application/application-main-window.vala:1417 + msgid "Delete" + msgstr "Usuń" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1368 ++#: src/client/application/application-main-window.vala:1412 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Trwale usunąć tę wiadomość?" + msgstr[1] "Trwale usunąć te wiadomości?" + msgstr[2] "Trwale usunąć te wiadomości?" + +-#: src/client/application/application-main-window.vala:1691 ++#: src/client/application/application-main-window.vala:1703 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1309,7 +1268,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1784 ++#: src/client/composer/composer-widget.vala:1792 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1330,6 +1289,48 @@ msgstr "" + msgid "Don’t _ask me again" + msgstr "_Bez pytania ponownie" + ++#: src/client/components/components-conversation-actions.vala:90 ++msgid "Mark conversation" ++msgid_plural "Mark conversations" ++msgstr[0] "Oznacza wątek" ++msgstr[1] "Oznacza wątki" ++msgstr[2] "Oznacza wątki" ++ ++#: src/client/components/components-conversation-actions.vala:95 ++msgid "Add label to conversation" ++msgid_plural "Add label to conversations" ++msgstr[0] "Nadaje etykietę wątkowi" ++msgstr[1] "Nadaje etykietę wątkom" ++msgstr[2] "Nadaje etykietę wątkom" ++ ++#: src/client/components/components-conversation-actions.vala:100 ++msgid "Move conversation" ++msgid_plural "Move conversations" ++msgstr[0] "Przenosi wątek" ++msgstr[1] "Przenosi wątki" ++msgstr[2] "Przenosi wątki" ++ ++#: src/client/components/components-conversation-actions.vala:105 ++msgid "Archive conversation" ++msgid_plural "Archive conversations" ++msgstr[0] "Archiwizuje wątek" ++msgstr[1] "Archiwizuje wątki" ++msgstr[2] "Archiwizuje wątki" ++ ++#: src/client/components/components-conversation-actions.vala:116 ++msgid "Move conversation to Trash" ++msgid_plural "Move conversations to Trash" ++msgstr[0] "Przenosi wątek do kosza" ++msgstr[1] "Przenosi wątki do kosza" ++msgstr[2] "Przenosi wątki do kosza" ++ ++#: src/client/components/components-conversation-actions.vala:126 ++msgid "Delete conversation" ++msgid_plural "Delete conversations" ++msgstr[0] "Usuwa wątek" ++msgstr[1] "Usuwa wątki" ++msgstr[2] "Usuwa wątki" ++ + #: src/client/components/components-inspector.vala:78 + msgid "Inspector" + msgstr "Inspektor" +@@ -1360,7 +1361,7 @@ msgstr "Zapisz jako" + + #: src/client/components/components-inspector.vala:230 + #: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Anuluj" + +@@ -1376,15 +1377,10 @@ msgstr "P_odgląd wątku" + + #. / Translators: Preferences label + #: src/client/components/components-preferences-window.vala:144 +-msgid "Use _three pane view" +-msgstr "Widok _trzech paneli" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "_Skróty jednoklawiszowe" + +-#: src/client/components/components-preferences-window.vala:156 ++#: src/client/components/components-preferences-window.vala:146 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" +@@ -1393,22 +1389,22 @@ msgstr "" + "naciśnięcia klawisza " + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:167 ++#: src/client/components/components-preferences-window.vala:157 + msgid "_Watch for new mail when closed" + msgstr "_Monitorowanie nowych wiadomości po zamknięciu" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:171 ++#: src/client/components/components-preferences-window.vala:161 + msgid "Geary will keep running after all windows are closed" + msgstr "Program Geary będzie nadal działał po zamknięciu wszystkich okien" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:189 ++#: src/client/components/components-preferences-window.vala:178 + msgid "Preferences" + msgstr "Preferencje" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:250 ++#: src/client/components/components-preferences-window.vala:234 + msgid "Plugins" + msgstr "Wtyczki" + +@@ -1527,48 +1523,6 @@ msgstr "Wymagana jest nazwa serwera" + msgid "Could not look up server name" + msgstr "Nie można wyszukać nazwy serwera" + +-#: src/client/components/main-toolbar.vala:116 +-msgid "Mark conversation" +-msgid_plural "Mark conversations" +-msgstr[0] "Oznacza wątek" +-msgstr[1] "Oznacza wątki" +-msgstr[2] "Oznacza wątki" +- +-#: src/client/components/main-toolbar.vala:121 +-msgid "Add label to conversation" +-msgid_plural "Add label to conversations" +-msgstr[0] "Nadaje etykietę wątkowi" +-msgstr[1] "Nadaje etykietę wątkom" +-msgstr[2] "Nadaje etykietę wątkom" +- +-#: src/client/components/main-toolbar.vala:126 +-msgid "Move conversation" +-msgid_plural "Move conversations" +-msgstr[0] "Przenosi wątek" +-msgstr[1] "Przenosi wątki" +-msgstr[2] "Przenosi wątki" +- +-#: src/client/components/main-toolbar.vala:131 +-msgid "Archive conversation" +-msgid_plural "Archive conversations" +-msgstr[0] "Archiwizuje wątek" +-msgstr[1] "Archiwizuje wątki" +-msgstr[2] "Archiwizuje wątki" +- +-#: src/client/components/main-toolbar.vala:142 +-msgid "Move conversation to Trash" +-msgid_plural "Move conversations to Trash" +-msgstr[0] "Przenosi wątek do kosza" +-msgstr[1] "Przenosi wątki do kosza" +-msgstr[2] "Przenosi wątki do kosza" +- +-#: src/client/components/main-toolbar.vala:152 +-msgid "Delete conversation" +-msgid_plural "Delete conversations" +-msgstr[0] "Usuwa wątek" +-msgstr[1] "Usuwa wątki" +-msgstr[2] "Usuwa wątki" +- + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1702,92 +1656,92 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:862 ++#: src/client/composer/composer-widget.vala:865 + msgid "Do you want to keep or discard this draft message?" + msgstr "Zachować lub odrzucić ten szkic?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:888 ++#: src/client/composer/composer-widget.vala:891 + msgid "Do you want to discard this draft message?" + msgstr "Odrzucić ten szkic?" + +-#: src/client/composer/composer-widget.vala:1440 ++#: src/client/composer/composer-widget.vala:1448 + msgid "Send message with an empty subject and body?" + msgstr "Wysłać wiadomość niezawierającą tematu i treści?" + +-#: src/client/composer/composer-widget.vala:1442 ++#: src/client/composer/composer-widget.vala:1450 + msgid "Send message with an empty subject?" + msgstr "Wysłać wiadomość niezawierającą tematu?" + +-#: src/client/composer/composer-widget.vala:1444 ++#: src/client/composer/composer-widget.vala:1452 + msgid "Send message with an empty body?" + msgstr "Wysłać wiadomość niezawierającą treści?" + +-#: src/client/composer/composer-widget.vala:1453 ++#: src/client/composer/composer-widget.vala:1461 + msgid "Send message without an attachment?" + msgstr "Wysłać wiadomość niezawierającą załączników?" + +-#: src/client/composer/composer-widget.vala:1772 ++#: src/client/composer/composer-widget.vala:1780 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "Do wiadomości już załączono „%s”." + +-#: src/client/composer/composer-widget.vala:1804 +-#: src/client/composer/composer-widget.vala:1854 ++#: src/client/composer/composer-widget.vala:1812 ++#: src/client/composer/composer-widget.vala:1862 + #, c-format + msgid "“%s” is an empty file." + msgstr "„%s” jest pustym plikiem." + +-#: src/client/composer/composer-widget.vala:1842 ++#: src/client/composer/composer-widget.vala:1850 + #, c-format + msgid "“%s” could not be found." + msgstr "Nie można odnaleźć „%s”." + +-#: src/client/composer/composer-widget.vala:1848 ++#: src/client/composer/composer-widget.vala:1856 + #, c-format + msgid "“%s” is a folder." + msgstr "„%s” jest katalogiem." + +-#: src/client/composer/composer-widget.vala:1867 ++#: src/client/composer/composer-widget.vala:1875 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "Nie można otworzyć „%s” do odczytania." + +-#: src/client/composer/composer-widget.vala:1875 ++#: src/client/composer/composer-widget.vala:1883 + msgid "Cannot add attachment" + msgstr "Nie można dodać załącznika" + + #. Translators: This is the name of the file chooser filter + #. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:1946 ++#: src/client/composer/composer-widget.vala:1954 + msgid "Images" + msgstr "Obrazy" + + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:2010 ++#: src/client/composer/composer-widget.vala:2018 + #: src/client/conversation-viewer/conversation-email.vala:542 + #: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Do:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:2016 ++#: src/client/composer/composer-widget.vala:2024 + #: src/client/conversation-viewer/conversation-email.vala:547 + #: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "DW:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2022 ++#: src/client/composer/composer-widget.vala:2030 + #: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "UDW:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2028 ++#: src/client/composer/composer-widget.vala:2036 + msgid "Reply-To: " + msgstr "Odpowiedź do: " + +@@ -1796,7 +1750,7 @@ msgstr "Odpowiedź do: " + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2146 ++#: src/client/composer/composer-widget.vala:2154 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s przez %2$s" +@@ -1814,7 +1768,7 @@ msgid "Search for more languages" + msgstr "Więcej języków" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:339 ++#: src/client/conversation-list/conversation-list-view.vala:389 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "_Przenieś wątek do kosza" +@@ -1822,45 +1776,45 @@ msgstr[1] "_Przenieś wątki do kosza" + msgstr[2] "_Przenieś wątki do kosza" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:351 ++#: src/client/conversation-list/conversation-list-view.vala:401 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "_Usuń wątek" + msgstr[1] "_Usuń wątki" + msgstr[2] "_Usuń wątki" + +-#: src/client/conversation-list/conversation-list-view.vala:364 ++#: src/client/conversation-list/conversation-list-view.vala:414 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Oznacz jako p_rzeczytane" + +-#: src/client/conversation-list/conversation-list-view.vala:372 ++#: src/client/conversation-list/conversation-list-view.vala:422 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Oznacz jako niep_rzeczytane" + +-#: src/client/conversation-list/conversation-list-view.vala:380 ++#: src/client/conversation-list/conversation-list-view.vala:430 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "Usuń wy_różnienie" + +-#: src/client/conversation-list/conversation-list-view.vala:387 ++#: src/client/conversation-list/conversation-list-view.vala:437 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "_Wyróżnij" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:396 ++#: src/client/conversation-list/conversation-list-view.vala:446 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "_Odpowiedz" + +-#: src/client/conversation-list/conversation-list-view.vala:402 ++#: src/client/conversation-list/conversation-list-view.vala:452 + msgid "R_eply All" + msgstr "O_dpowiedz wszystkim" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:408 ++#: src/client/conversation-list/conversation-list-view.vala:458 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Przekaż" +@@ -1950,25 +1904,25 @@ msgstr "Zawsze wyświetlaj od nadawcy" + + #. Translators: Title label for placeholder when no + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:83 ++#: src/client/conversation-viewer/conversation-viewer.vala:87 + msgid "No conversations selected" + msgstr "Brak zaznaczonych wątków" + + #. Translators: Sub-title label for placeholder when no + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:87 ++#: src/client/conversation-viewer/conversation-viewer.vala:91 + msgid "Selecting a conversation from the list will display it here" + msgstr "Zaznaczenie wątku z listy spowoduje jego wyświetlenie w tym miejscu" + + #. Translators: Title label for placeholder when multiple + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:96 ++#: src/client/conversation-viewer/conversation-viewer.vala:100 + msgid "Multiple conversations selected" + msgstr "Zaznaczono wiele wątków" + + #. Translators: Sub-title label for placeholder when multiple + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:100 ++#: src/client/conversation-viewer/conversation-viewer.vala:104 + msgid "Choosing an action will apply to all selected conversations" + msgstr "" + "Wybranie działania spowoduje jego zastosowanie do wszystkich zaznaczonych " +@@ -1978,20 +1932,20 @@ msgstr "" + #. conversations have exist in a folder. + #. Translators: Title label for placeholder when no + #. conversations have been found in a search. +-#: src/client/conversation-viewer/conversation-viewer.vala:109 +-#: src/client/conversation-viewer/conversation-viewer.vala:122 ++#: src/client/conversation-viewer/conversation-viewer.vala:113 ++#: src/client/conversation-viewer/conversation-viewer.vala:126 + msgid "No conversations found" + msgstr "Nie odnaleziono żadnych wątków" + + #. Translators: Sub-title label for placeholder when no + #. conversations have exist in a folder. +-#: src/client/conversation-viewer/conversation-viewer.vala:113 ++#: src/client/conversation-viewer/conversation-viewer.vala:117 + msgid "This folder does not contain any conversations" + msgstr "Ten katalog nie zawiera żadnych wątków" + + #. Translators: Sub-title label for placeholder when no + #. conversations have been found in a search. +-#: src/client/conversation-viewer/conversation-viewer.vala:126 ++#: src/client/conversation-viewer/conversation-viewer.vala:130 + msgid "Your search returned no results, try refining your search terms" + msgstr "Wyszukiwanie nie zwróciło wyników, proszę spróbować innych słów" + +@@ -2738,7 +2692,7 @@ msgstr "nieprzeczytane" + #. Draft mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:996 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:998 + msgid "Drafts | Draft" + msgstr "Szkice | Szkic" + +@@ -2746,13 +2700,13 @@ msgstr "Szkice | Szkic" + #. Sent mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1005 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1007 + msgid "Sent | Sent Mail | Sent Email | Sent E-Mail" + msgstr "Wysłane | Wysłana poczta | Wysłane wiadomości | Skrzynka nadawcza" + + #. The localised name(s) of the Sent folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1010 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1012 + msgctxt "Outlook localised name" + msgid "Sent Items" + msgstr "Elementy wysłane" +@@ -2761,7 +2715,7 @@ msgstr "Elementy wysłane" + #. Junk/Spam mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1020 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1022 + msgid "" + "Junk | Spam | Junk Mail | Junk Email | Junk E-Mail | Bulk Mail | Bulk Email " + "| Bulk E-Mail" +@@ -2771,13 +2725,13 @@ msgstr "Niechciane | Niechciana poczta | Niechciane wiadomości | Spam" + #. Trash mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1030 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1032 + msgid "Trash | Rubbish | Rubbish Bin" + msgstr "Kosz | Śmietnik | Usunięta poczta | Usunięte wiadomości" + + #. The localised name(s) of the Trash folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1035 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1037 + msgctxt "Outlook localised name" + msgid "Deleted Items" + msgstr "Elementy usunięte" +@@ -2786,7 +2740,7 @@ msgstr "Elementy usunięte" + #. Archive mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1045 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1047 + msgid "Archive | Archives" + msgstr "Archiwum | Archiwa" + +@@ -3163,6 +3117,26 @@ msgstr "Otwiera zaznaczone załączniki" + msgid "Save _All" + msgstr "Z_apisz wszystko" + ++#: ui/components-conversation-actions.ui:85 ++msgid "Reply" ++msgstr "Odpowiada" ++ ++#: ui/components-conversation-actions.ui:108 ++msgid "Reply All" ++msgstr "Odpowiada wszystkim" ++ ++#: ui/components-conversation-actions.ui:131 ++msgid "Forward" ++msgstr "Przekazuje" ++ ++#: ui/components-conversation-actions.ui:163 ++msgid "_Archive" ++msgstr "_Archiwizuj" ++ ++#: ui/components-conversation-actions.ui:211 ++msgid "Toggle find bar" ++msgstr "Przełącza pasek wyszukiwania" ++ + #: ui/components-inspector-error-view.ui:31 + msgid "" + "If the problem is serious or persists, please save and send these details to " +@@ -3700,35 +3674,19 @@ msgctxt "shortcut window" + msgid "Insert a link" + msgstr "Wstawienie odnośnika" + +-#: ui/main-toolbar.ui:24 ++#: ui/main-toolbar.ui:85 ui/main-toolbar.ui:179 ++msgid "Back" ++msgstr "Wstecz" ++ ++#: ui/main-toolbar.ui:104 + msgctxt "tooltip" + msgid "Compose Message" + msgstr "Tworzy wiadomość" + +-#: ui/main-toolbar.ui:62 ++#: ui/main-toolbar.ui:122 + msgid "Toggle search bar" + msgstr "Przełącza pasek wyszukiwania" + +-#: ui/main-toolbar.ui:114 +-msgid "Reply" +-msgstr "Odpowiada" +- +-#: ui/main-toolbar.ui:137 +-msgid "Reply All" +-msgstr "Odpowiada wszystkim" +- +-#: ui/main-toolbar.ui:160 +-msgid "Forward" +-msgstr "Przekazuje" +- +-#: ui/main-toolbar.ui:265 +-msgid "Toggle find bar" +-msgstr "Przełącza pasek wyszukiwania" +- +-#: ui/main-toolbar.ui:286 +-msgid "_Archive" +-msgstr "_Archiwizuj" +- + #: ui/main-toolbar-menus.ui:21 + msgid "Toggle as _Junk" + msgstr "Przełą_cz oznaczenie jako niechciane" +-- +2.29.2 + diff --git a/mail-client/geary/files/0109-Update-Croatian-translation.patch b/mail-client/geary/files/0109-Update-Croatian-translation.patch new file mode 100644 index 0000000..ecc28cf --- /dev/null +++ b/mail-client/geary/files/0109-Update-Croatian-translation.patch @@ -0,0 +1,973 @@ +From 77a865975f017725e912ebdbc564f9c23df4dca2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Goran=20Vidovi=C4=87?= +Date: Mon, 19 Oct 2020 17:03:21 +0000 +Subject: [PATCH 109/124] Update Croatian translation + +--- + po/hr.po | 425 +++++++++++++++++++++++++++---------------------------- + 1 file changed, 209 insertions(+), 216 deletions(-) + +diff --git a/po/hr.po b/po/hr.po +index 2061b350..32602e43 100644 +--- a/po/hr.po ++++ b/po/hr.po +@@ -11,8 +11,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary-0.4.1\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-09-13 04:23+0000\n" +-"PO-Revision-Date: 2020-09-16 01:16+0200\n" ++"POT-Creation-Date: 2020-10-12 10:41+0000\n" ++"PO-Revision-Date: 2020-10-19 19:02+0200\n" + "Last-Translator: gogo \n" + "Language-Team: Croatian (http://www.transifex.com/projects/p/geary/language/" + "hr/)\n" +@@ -37,7 +37,7 @@ msgstr "Pošalji datoteke koristeći Geary" + #: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 + #: src/client/accounts/accounts-editor-servers-pane.vala:560 +-#: src/client/application/application-main-window.vala:608 ++#: src/client/application/application-main-window.vala:628 + msgid "Geary" + msgstr "Geary" + +@@ -160,75 +160,34 @@ msgid "The last recorded height of the application window." + msgstr "Posljednje spremljena visina prozora aplikacije." + + #: desktop/org.gnome.Geary.gschema.xml:26 +-msgid "Position of folder list pane" +-msgstr "Položaj okvira popisa mape" +- +-#: desktop/org.gnome.Geary.gschema.xml:27 +-msgid "Position of the folder list Paned grabber." +-msgstr "Položaj okvira popisa mape." +- +-#: desktop/org.gnome.Geary.gschema.xml:32 +-msgid "Position of folder list pane when horizontal" +-msgstr "Položaj okvira popisa mape u vodoravnom položaju" +- +-#: desktop/org.gnome.Geary.gschema.xml:33 +-msgid "" +-"Position of the folder list Paned grabber in the horizontal orientation." +-msgstr "Položaj okvira popisa mape u vodoravnoj orijentaciji." +- +-#: desktop/org.gnome.Geary.gschema.xml:38 +-msgid "Position of folder list pane when vertical" +-msgstr "Položaj okvira popisa mape u okomitom položaju" +- +-#: desktop/org.gnome.Geary.gschema.xml:39 +-msgid "Position of the folder list Paned grabber in the vertical orientation." +-msgstr "Položaj okvira popisa mape u okomitoj orijentaciji." +- +-#: desktop/org.gnome.Geary.gschema.xml:44 +-msgid "Orientation of the folder list pane" +-msgstr "Orijentacija okvira popisa mape" +- +-#: desktop/org.gnome.Geary.gschema.xml:45 +-msgid "True if the folder list Paned is in the horizontal orientation." +-msgstr "Istina ako je popis mape u vodoravnoj orijentaciji." +- +-#: desktop/org.gnome.Geary.gschema.xml:50 + msgid "Show/hide formatting toolbar" + msgstr "Prikaži/Sakrij oblikovanje alatne traku" + +-#: desktop/org.gnome.Geary.gschema.xml:51 ++#: desktop/org.gnome.Geary.gschema.xml:27 + msgid "True if the formatting toolbar in the composer is shown." + msgstr "Istina ako je oblikovanje alatne trake u sastavljaču prikazano." + +-#: desktop/org.gnome.Geary.gschema.xml:56 +-msgid "Position of message list pane" +-msgstr "Položaj okvira popisa poruke" +- +-#: desktop/org.gnome.Geary.gschema.xml:57 +-msgid "Position of the message list Paned grabber." +-msgstr "Položaj okvira popisa poruke." +- +-#: desktop/org.gnome.Geary.gschema.xml:62 ++#: desktop/org.gnome.Geary.gschema.xml:32 + msgid "Autoselect next message" + msgstr "Automatski odaberi sljedeću poruku" + +-#: desktop/org.gnome.Geary.gschema.xml:63 ++#: desktop/org.gnome.Geary.gschema.xml:33 + msgid "True if we should autoselect the next available conversation." + msgstr "Istina ako se treba automatski odabrati sljedeći dostupan razgovor." + +-#: desktop/org.gnome.Geary.gschema.xml:68 ++#: desktop/org.gnome.Geary.gschema.xml:38 + msgid "Display message previews" + msgstr "Prikaži pregled razgovora" + +-#: desktop/org.gnome.Geary.gschema.xml:69 ++#: desktop/org.gnome.Geary.gschema.xml:39 + msgid "True if we should display a short preview of each message." + msgstr "Istina ako se treba prikazati kratki pregled svake poruke." + +-#: desktop/org.gnome.Geary.gschema.xml:74 ++#: desktop/org.gnome.Geary.gschema.xml:44 + msgid "Use single key shortcuts" + msgstr "Koristi prečace jednom tipkom" + +-#: desktop/org.gnome.Geary.gschema.xml:75 ++#: desktop/org.gnome.Geary.gschema.xml:45 + msgid "" + "Enables shortcuts for email actions that do not require pressing to " + "emulate those used by Gmail." +@@ -236,11 +195,11 @@ msgstr "" + "Omogućuje prečace za radnje e-pošte tako da se ne zahtijeva pritisak na " + " tipku za emuliranje onih koje zahtijeva Gmail." + +-#: desktop/org.gnome.Geary.gschema.xml:82 ++#: desktop/org.gnome.Geary.gschema.xml:52 + msgid "Languages that shall be used in the spell checker" + msgstr "Jezici koji bi se trebali koristiti pri provjeri pravopisa" + +-#: desktop/org.gnome.Geary.gschema.xml:83 ++#: desktop/org.gnome.Geary.gschema.xml:53 + msgid "" + "A list of POSIX locales, with the empty list disabling spell checking and " + "the null list using desktop languages by default." +@@ -248,75 +207,75 @@ msgstr "" + "Popis POSIX lokalizacija, prazan popis onemogućuje provjeru pravopisa i " + "koristi se jezik radnog okruženja po zadanome." + +-#: desktop/org.gnome.Geary.gschema.xml:90 ++#: desktop/org.gnome.Geary.gschema.xml:60 + msgid "Languages that are displayed in the spell checker popover" + msgstr "Jezici koji se prikazuju u skočnome prozoru provjere pravopisa" + +-#: desktop/org.gnome.Geary.gschema.xml:91 ++#: desktop/org.gnome.Geary.gschema.xml:61 + msgid "" + "List of languages that are always displayed in the popover of the spell " + "checker." + msgstr "" + "Popis jezika koji su uvijek prikazuju u skočnome prozoru provjere pravopisa." + +-#: desktop/org.gnome.Geary.gschema.xml:96 ++#: desktop/org.gnome.Geary.gschema.xml:66 + msgid "Notify of new mail at startup" + msgstr "Provjeri novu poštu pri pokretanju" + +-#: desktop/org.gnome.Geary.gschema.xml:97 ++#: desktop/org.gnome.Geary.gschema.xml:67 + msgid "True to notify of new mail at startup." + msgstr "Istina za provjeru nove pošte pri pokretanju." + +-#: desktop/org.gnome.Geary.gschema.xml:102 ++#: desktop/org.gnome.Geary.gschema.xml:72 + msgid "Ask when opening an attachment" + msgstr "Upitaj pri otvaranju privitka" + +-#: desktop/org.gnome.Geary.gschema.xml:103 ++#: desktop/org.gnome.Geary.gschema.xml:73 + msgid "True to ask when opening an attachment." + msgstr "Istina za upit pri otvaranju privitka." + +-#: desktop/org.gnome.Geary.gschema.xml:108 ++#: desktop/org.gnome.Geary.gschema.xml:78 + msgid "Whether to compose emails in HTML" + msgstr "Treba li sastaviti e-poštu u HTML obliku" + +-#: desktop/org.gnome.Geary.gschema.xml:109 ++#: desktop/org.gnome.Geary.gschema.xml:79 + msgid "True to compose emails in HTML; false for plain text." + msgstr "" + "Istina za sastavljanje e-pošte u HTML obliku, laž za sastavljanje u običnome " + "tekstu." + +-#: desktop/org.gnome.Geary.gschema.xml:114 ++#: desktop/org.gnome.Geary.gschema.xml:84 + msgid "Advisory strategy for full-text searching" + msgstr "Savjetodavna strategija za pretraživanje potpunog teksta" + +-#: desktop/org.gnome.Geary.gschema.xml:115 ++#: desktop/org.gnome.Geary.gschema.xml:85 + msgid "" + "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." + msgstr "" + "Prihvatljive vrijednosti su “exact”, “conservative”, “aggressive”, i " + "“horizon”." + +-#: desktop/org.gnome.Geary.gschema.xml:120 ++#: desktop/org.gnome.Geary.gschema.xml:90 + msgid "Zoom of conversation viewer" + msgstr "Uvećanje pogleda razgovora" + +-#: desktop/org.gnome.Geary.gschema.xml:121 ++#: desktop/org.gnome.Geary.gschema.xml:91 + msgid "The zoom to apply on the conservation view." + msgstr "Primijenjeno uvećanje pogleda razgovora." + +-#: desktop/org.gnome.Geary.gschema.xml:126 ++#: desktop/org.gnome.Geary.gschema.xml:96 + msgid "Size of detached composer window" + msgstr "Veličina odvojenog prozora sastavljača" + +-#: desktop/org.gnome.Geary.gschema.xml:127 ++#: desktop/org.gnome.Geary.gschema.xml:97 + msgid "The last recorded size of the detached composer window." + msgstr "Posljednja spremljena veličina odvojenog prozora sastavljača." + +-#: desktop/org.gnome.Geary.gschema.xml:132 ++#: desktop/org.gnome.Geary.gschema.xml:102 + msgid "Undo sending email delay" + msgstr "Odgoda slanja e-pošte" + +-#: desktop/org.gnome.Geary.gschema.xml:133 ++#: desktop/org.gnome.Geary.gschema.xml:103 + msgid "" + "The number of seconds to wait before sending an email. Set to zero or less " + "to disable." +@@ -324,29 +283,29 @@ msgstr "" + "Broj sekundi za čekanje prije slanja e-pošte. Postavi na nulu ili manje za " + "onemogućavanje." + +-#: desktop/org.gnome.Geary.gschema.xml:139 ++#: desktop/org.gnome.Geary.gschema.xml:109 + msgid "Brief notification display time" + msgstr "Vrijeme prikaza poruka sastanka" + +-#: desktop/org.gnome.Geary.gschema.xml:140 ++#: desktop/org.gnome.Geary.gschema.xml:110 + msgid "" + "The length of time in seconds for which brief notifications should be " + "displayed." + msgstr "Trajanje u sekundama, vremena prikaza poruka sastanka." + +-#: desktop/org.gnome.Geary.gschema.xml:146 ++#: desktop/org.gnome.Geary.gschema.xml:116 + msgid "List of optional plugins" + msgstr "Popis neobaveznih priključaka" + +-#: desktop/org.gnome.Geary.gschema.xml:147 ++#: desktop/org.gnome.Geary.gschema.xml:117 + msgid "Plugins listed here will be loaded on startup." + msgstr "Priključci prikazani ovdje biti će učitani pri pokretanju." + +-#: desktop/org.gnome.Geary.gschema.xml:152 ++#: desktop/org.gnome.Geary.gschema.xml:122 + msgid "Whether we migrated the old settings" + msgstr "Trebamo li prenijeti stare postavke" + +-#: desktop/org.gnome.Geary.gschema.xml:153 ++#: desktop/org.gnome.Geary.gschema.xml:123 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -624,12 +583,12 @@ msgstr[1] "%d dana unatrag" + msgstr[2] "%d dana unatrag" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2061 ++#: src/client/application/application-main-window.vala:2129 + msgid "Undo" + msgstr "Vrati" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2044 ++#: src/client/application/application-main-window.vala:2112 + msgid "Redo" + msgstr "Ponovi" + +@@ -724,7 +683,7 @@ msgstr "TLS" + #. account + #. Translators: An info bar button label + #: src/client/accounts/accounts-editor-row.vala:539 +-#: src/client/application/application-main-window.vala:554 ++#: src/client/application/application-main-window.vala:574 + msgid "Login" + msgstr "Prijava" + +@@ -1187,56 +1146,56 @@ msgid "Email to %s discarded" + msgstr "E-pošta za %s je odbačena" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:540 ++#: src/client/application/application-main-window.vala:560 + msgid "Working offline" + msgstr "Izvanmrežni rad" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:542 ++#: src/client/application/application-main-window.vala:562 + msgid "You will not be able to send or receive email until re-connected." + msgstr "" + "Nećete moći slati ili primati e-poštu dok se ponovno ne povežete s " + "internetom." + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:549 ++#: src/client/application/application-main-window.vala:569 + msgid "Login problem" + msgstr "Problem prijave" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:551 ++#: src/client/application/application-main-window.vala:571 + msgid "An account has reported an incorrect login or password." + msgstr "Račun je prijavio nevaljanu lozinku prijave." + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:558 ++#: src/client/application/application-main-window.vala:578 + msgid "Retry login, you will be prompted for your password" + msgstr "Ponovno se prijavite, biti ćete upisani za novu lozinku" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:565 ++#: src/client/application/application-main-window.vala:585 + msgid "Security problem" + msgstr "Sigurnosni problem" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:567 ++#: src/client/application/application-main-window.vala:587 + msgid "An account has reported an untrusted server." + msgstr "Račun je prijavio nepouzdanog poslužitelja." + + #. Translators: An info bar button label +-#: src/client/application/application-main-window.vala:570 ++#: src/client/application/application-main-window.vala:590 + msgid "Check" + msgstr "Provjeri" + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:574 ++#: src/client/application/application-main-window.vala:594 + msgid "Check the security details for the connection" + msgstr "Provjeri sigurnosne pojedinosti za povezivanje" + + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:617 ++#: src/client/application/application-main-window.vala:637 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" +@@ -1244,51 +1203,51 @@ msgstr "%s — %s" + #. Translators: The name of the folder group containing + #. folders created by people (as opposed to special-use + #. folders) +-#: src/client/application/application-main-window.vala:996 ++#: src/client/application/application-main-window.vala:1019 + #: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Oznake" + +-#: src/client/application/application-main-window.vala:1293 ++#: src/client/application/application-main-window.vala:1337 + #, c-format + msgid "Empty all email from your %s folder?" + msgstr "Želite li isprazniti svu e-poštu iz vaše %s mape?" + +-#: src/client/application/application-main-window.vala:1294 ++#: src/client/application/application-main-window.vala:1338 + msgid "This removes the email from Geary and your email server." + msgstr "Ovo uklanja e-poštu iz Gearya i vaših poslužitelja e-pošte." + +-#: src/client/application/application-main-window.vala:1295 ++#: src/client/application/application-main-window.vala:1339 + msgid "This cannot be undone." + msgstr "Ovo se ne može poništiti." + +-#: src/client/application/application-main-window.vala:1296 ++#: src/client/application/application-main-window.vala:1340 + #, c-format + msgid "Empty %s" + msgstr "Isprazni %s" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1353 ++#: src/client/application/application-main-window.vala:1397 + msgid "Do you want to permanently delete this conversation?" + msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Želite li trajno obrisati ovaj razgovor?" + msgstr[1] "Želite li trajno obrisati ove razgovore?" + msgstr[2] "Želite li trajno obrisati ove razgovore?" + +-#: src/client/application/application-main-window.vala:1358 +-#: src/client/application/application-main-window.vala:1373 ++#: src/client/application/application-main-window.vala:1402 ++#: src/client/application/application-main-window.vala:1417 + msgid "Delete" + msgstr "Obriši" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1368 ++#: src/client/application/application-main-window.vala:1412 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Želite li trajno obrisati ovu poruku?" + msgstr[1] "Želite li trajno obrisati ove poruke?" + msgstr[2] "Želite li trajno obrisati ove poruke?" + +-#: src/client/application/application-main-window.vala:1691 ++#: src/client/application/application-main-window.vala:1703 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1299,7 +1258,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1784 ++#: src/client/composer/composer-widget.vala:1792 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1320,6 +1279,48 @@ msgstr "" + msgid "Don’t _ask me again" + msgstr "Ne _pitaj me ponovno" + ++#: src/client/components/components-conversation-actions.vala:90 ++msgid "Mark conversation" ++msgid_plural "Mark conversations" ++msgstr[0] "Označi razgovor" ++msgstr[1] "Označi razgovore" ++msgstr[2] "Označi razgovore" ++ ++#: src/client/components/components-conversation-actions.vala:95 ++msgid "Add label to conversation" ++msgid_plural "Add label to conversations" ++msgstr[0] "Dodaj oznaku razgovoru" ++msgstr[1] "Dodaj oznaku razgovorima" ++msgstr[2] "Dodaj oznaku razgovorima" ++ ++#: src/client/components/components-conversation-actions.vala:100 ++msgid "Move conversation" ++msgid_plural "Move conversations" ++msgstr[0] "Premjesti razgovor" ++msgstr[1] "Premjesti razgovore" ++msgstr[2] "Premjesti razgovore" ++ ++#: src/client/components/components-conversation-actions.vala:105 ++msgid "Archive conversation" ++msgid_plural "Archive conversations" ++msgstr[0] "Arhiviraj razgovor" ++msgstr[1] "Arhiviraj razgovore" ++msgstr[2] "Arhiviraj razgovore" ++ ++#: src/client/components/components-conversation-actions.vala:116 ++msgid "Move conversation to Trash" ++msgid_plural "Move conversations to Trash" ++msgstr[0] "Premjesti razgovor u smeće" ++msgstr[1] "Premjesti razgovore u smeće" ++msgstr[2] "Premjesti razgovore u smeće" ++ ++#: src/client/components/components-conversation-actions.vala:126 ++msgid "Delete conversation" ++msgid_plural "Delete conversations" ++msgstr[0] "Obriši razgovor" ++msgstr[1] "Obriši razgovore" ++msgstr[2] "Obriši razgovore" ++ + #: src/client/components/components-inspector.vala:78 + msgid "Inspector" + msgstr "_Inspektor" +@@ -1366,15 +1367,10 @@ msgstr "_Prikaži pregled razgovora" + + #. / Translators: Preferences label + #: src/client/components/components-preferences-window.vala:144 +-msgid "Use _three pane view" +-msgstr "Koristi _pogled stabla" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "Koristi _prečace jednom tipkom za e-poštu" + +-#: src/client/components/components-preferences-window.vala:156 ++#: src/client/components/components-preferences-window.vala:146 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" +@@ -1383,22 +1379,22 @@ msgstr "" + "" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:167 ++#: src/client/components/components-preferences-window.vala:157 + msgid "_Watch for new mail when closed" + msgstr "_Nadgledaj novu e-poštu kada se zatvori" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:171 ++#: src/client/components/components-preferences-window.vala:161 + msgid "Geary will keep running after all windows are closed" + msgstr "Geary će nastaviti biti pokrenut nakon što se svi prozori zatvore" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:189 ++#: src/client/components/components-preferences-window.vala:178 + msgid "Preferences" + msgstr "Osobitosti" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:250 ++#: src/client/components/components-preferences-window.vala:234 + msgid "Plugins" + msgstr "Priključci" + +@@ -1517,48 +1513,6 @@ msgstr "Potreban je naziv poslužitelja" + msgid "Could not look up server name" + msgstr "Nemoguća pretraga naziva poslužitelja" + +-#: src/client/components/main-toolbar.vala:116 +-msgid "Mark conversation" +-msgid_plural "Mark conversations" +-msgstr[0] "Označi razgovor" +-msgstr[1] "Označi razgovore" +-msgstr[2] "Označi razgovore" +- +-#: src/client/components/main-toolbar.vala:121 +-msgid "Add label to conversation" +-msgid_plural "Add label to conversations" +-msgstr[0] "Dodaj oznaku razgovoru" +-msgstr[1] "Dodaj oznaku razgovorima" +-msgstr[2] "Dodaj oznaku razgovorima" +- +-#: src/client/components/main-toolbar.vala:126 +-msgid "Move conversation" +-msgid_plural "Move conversations" +-msgstr[0] "Premjesti razgovor" +-msgstr[1] "Premjesti razgovore" +-msgstr[2] "Premjesti razgovore" +- +-#: src/client/components/main-toolbar.vala:131 +-msgid "Archive conversation" +-msgid_plural "Archive conversations" +-msgstr[0] "Arhiviraj razgovor" +-msgstr[1] "Arhiviraj razgovore" +-msgstr[2] "Arhiviraj razgovore" +- +-#: src/client/components/main-toolbar.vala:142 +-msgid "Move conversation to Trash" +-msgid_plural "Move conversations to Trash" +-msgstr[0] "Premjesti razgovor u smeće" +-msgstr[1] "Premjesti razgovore u smeće" +-msgstr[2] "Premjesti razgovore u smeće" +- +-#: src/client/components/main-toolbar.vala:152 +-msgid "Delete conversation" +-msgid_plural "Delete conversations" +-msgstr[0] "Obriši razgovor" +-msgstr[1] "Obriši razgovore" +-msgstr[2] "Obriši razgovore" +- + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1688,92 +1642,92 @@ msgstr "privitak|priloži|privitci|prilažem|prilaganja|privitci|priloženo" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:862 ++#: src/client/composer/composer-widget.vala:865 + msgid "Do you want to keep or discard this draft message?" + msgstr "Želite li zadržati ili odbaciti ovu skicu poruke?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:888 ++#: src/client/composer/composer-widget.vala:891 + msgid "Do you want to discard this draft message?" + msgstr "Želite li odbaciti ovu skicu poruke?" + +-#: src/client/composer/composer-widget.vala:1440 ++#: src/client/composer/composer-widget.vala:1448 + msgid "Send message with an empty subject and body?" + msgstr "Pošalji poruku s praznim predmetom i sadržajem?" + +-#: src/client/composer/composer-widget.vala:1442 ++#: src/client/composer/composer-widget.vala:1450 + msgid "Send message with an empty subject?" + msgstr "Pošalji poruku bez predmeta?" + +-#: src/client/composer/composer-widget.vala:1444 ++#: src/client/composer/composer-widget.vala:1452 + msgid "Send message with an empty body?" + msgstr "Pošalji poruku sadržaja?" + +-#: src/client/composer/composer-widget.vala:1453 ++#: src/client/composer/composer-widget.vala:1461 + msgid "Send message without an attachment?" + msgstr "Pošalji poruku bez privitka?" + +-#: src/client/composer/composer-widget.vala:1772 ++#: src/client/composer/composer-widget.vala:1780 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "\"%s\" je već priložen za dostavu." + +-#: src/client/composer/composer-widget.vala:1804 +-#: src/client/composer/composer-widget.vala:1854 ++#: src/client/composer/composer-widget.vala:1812 ++#: src/client/composer/composer-widget.vala:1862 + #, c-format + msgid "“%s” is an empty file." + msgstr "\"%s\" je prazna datoteka." + +-#: src/client/composer/composer-widget.vala:1842 ++#: src/client/composer/composer-widget.vala:1850 + #, c-format + msgid "“%s” could not be found." + msgstr "%s se ne može pronaći." + +-#: src/client/composer/composer-widget.vala:1848 ++#: src/client/composer/composer-widget.vala:1856 + #, c-format + msgid "“%s” is a folder." + msgstr "\"%s\" je mapa." + +-#: src/client/composer/composer-widget.vala:1867 ++#: src/client/composer/composer-widget.vala:1875 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "\"%s\" je nemoguće otvoriti za čitanje." + +-#: src/client/composer/composer-widget.vala:1875 ++#: src/client/composer/composer-widget.vala:1883 + msgid "Cannot add attachment" + msgstr "Nemoguće dodavanje privitka" + + #. Translators: This is the name of the file chooser filter + #. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:1946 ++#: src/client/composer/composer-widget.vala:1954 + msgid "Images" + msgstr "Slike" + + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:2010 ++#: src/client/composer/composer-widget.vala:2018 + #: src/client/conversation-viewer/conversation-email.vala:542 + #: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Prima:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:2016 ++#: src/client/composer/composer-widget.vala:2024 + #: src/client/conversation-viewer/conversation-email.vala:547 + #: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Prima kopiju:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2022 ++#: src/client/composer/composer-widget.vala:2030 + #: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Prima tajnu kopiju:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2028 ++#: src/client/composer/composer-widget.vala:2036 + msgid "Reply-To: " + msgstr "Odgovor na: " + +@@ -1782,7 +1736,7 @@ msgstr "Odgovor na: " + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2146 ++#: src/client/composer/composer-widget.vala:2154 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s putem %2$s" +@@ -1800,7 +1754,7 @@ msgid "Search for more languages" + msgstr "Pretraži više jezika" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:339 ++#: src/client/conversation-list/conversation-list-view.vala:389 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "Premjesti razgovor u _smeće" +@@ -1808,45 +1762,45 @@ msgstr[1] "Premjesti razgovore u _smeće" + msgstr[2] "Premjesti razgovore u _smeće" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:351 ++#: src/client/conversation-list/conversation-list-view.vala:401 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "_Obriši razgovor" + msgstr[1] "_Obriši razgovore" + msgstr[2] "_Obriši razgovore" + +-#: src/client/conversation-list/conversation-list-view.vala:364 ++#: src/client/conversation-list/conversation-list-view.vala:414 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Označi kao _pročitano" + +-#: src/client/conversation-list/conversation-list-view.vala:372 ++#: src/client/conversation-list/conversation-list-view.vala:422 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Označi kao _nepročitano" + +-#: src/client/conversation-list/conversation-list-view.vala:380 ++#: src/client/conversation-list/conversation-list-view.vala:430 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "Uklo_ni oznaku" + +-#: src/client/conversation-list/conversation-list-view.vala:387 ++#: src/client/conversation-list/conversation-list-view.vala:437 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "_Označi" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:396 ++#: src/client/conversation-list/conversation-list-view.vala:446 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "_Odgovori" + +-#: src/client/conversation-list/conversation-list-view.vala:402 ++#: src/client/conversation-list/conversation-list-view.vala:452 + msgid "R_eply All" + msgstr "O_dgovori svima" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:408 ++#: src/client/conversation-list/conversation-list-view.vala:458 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Proslijedi" +@@ -1936,25 +1890,25 @@ msgstr "Uvijek prikaži pošiljatelja" + + #. Translators: Title label for placeholder when no + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:83 ++#: src/client/conversation-viewer/conversation-viewer.vala:87 + msgid "No conversations selected" + msgstr "Nema odabranih razgovora" + + #. Translators: Sub-title label for placeholder when no + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:87 ++#: src/client/conversation-viewer/conversation-viewer.vala:91 + msgid "Selecting a conversation from the list will display it here" + msgstr "Odabir razgovora s popisa prikazati će ga ovdje" + + #. Translators: Title label for placeholder when multiple + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:96 ++#: src/client/conversation-viewer/conversation-viewer.vala:100 + msgid "Multiple conversations selected" + msgstr "Više razgovora je odabrano" + + #. Translators: Sub-title label for placeholder when multiple + #. conversations have been selected. +-#: src/client/conversation-viewer/conversation-viewer.vala:100 ++#: src/client/conversation-viewer/conversation-viewer.vala:104 + msgid "Choosing an action will apply to all selected conversations" + msgstr "Odabir radnje će se primijeniti na sve odabrane razgovore" + +@@ -1962,20 +1916,20 @@ msgstr "Odabir radnje će se primijeniti na sve odabrane razgovore" + #. conversations have exist in a folder. + #. Translators: Title label for placeholder when no + #. conversations have been found in a search. +-#: src/client/conversation-viewer/conversation-viewer.vala:109 +-#: src/client/conversation-viewer/conversation-viewer.vala:122 ++#: src/client/conversation-viewer/conversation-viewer.vala:113 ++#: src/client/conversation-viewer/conversation-viewer.vala:126 + msgid "No conversations found" + msgstr "Nema pronađenih razgovora" + + #. Translators: Sub-title label for placeholder when no + #. conversations have exist in a folder. +-#: src/client/conversation-viewer/conversation-viewer.vala:113 ++#: src/client/conversation-viewer/conversation-viewer.vala:117 + msgid "This folder does not contain any conversations" + msgstr "Ova mapa ne sadrži nikakave razgovore" + + #. Translators: Sub-title label for placeholder when no + #. conversations have been found in a search. +-#: src/client/conversation-viewer/conversation-viewer.vala:126 ++#: src/client/conversation-viewer/conversation-viewer.vala:130 + msgid "Your search returned no results, try refining your search terms" + msgstr "Vaša pretraga nema rezultata, pokušajte promijeniti izraz pretrage" + +@@ -2722,7 +2676,7 @@ msgstr "nepročitano" + #. Draft mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:996 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:998 + msgid "Drafts | Draft" + msgstr "Skice | Skica" + +@@ -2730,13 +2684,13 @@ msgstr "Skice | Skica" + #. Sent mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1005 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1007 + msgid "Sent | Sent Mail | Sent Email | Sent E-Mail" + msgstr "Pošalji | Pošalji e-poštu | pošalji poštu" + + #. The localised name(s) of the Sent folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1010 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1012 + msgctxt "Outlook localised name" + msgid "Sent Items" + msgstr "Stavke slanja" +@@ -2745,7 +2699,7 @@ msgstr "Stavke slanja" + #. Junk/Spam mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1020 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1022 + msgid "" + "Junk | Spam | Junk Mail | Junk Email | Junk E-Mail | Bulk Mail | Bulk Email " + "| Bulk E-Mail" +@@ -2755,13 +2709,13 @@ msgstr "Neželjena pošta | Neželjena e-pošta | Grupna pošta | Grupna e-pošt + #. Trash mailbox. Separate names using a vertical bar and + #. put the most common localized name to the front for the + #. default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1030 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1032 + msgid "Trash | Rubbish | Rubbish Bin" + msgstr "Smeće | Koš za smeće" + + #. The localised name(s) of the Trash folder name as used + #. by MS Outlook/Exchange. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1035 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1037 + msgctxt "Outlook localised name" + msgid "Deleted Items" + msgstr "Obrisane stavke" +@@ -2770,7 +2724,7 @@ msgstr "Obrisane stavke" + #. Archive mailbox. Separate names using a vertical bar + #. and put the most common localized name to the front for + #. the default. English names do not need to be included. +-#: src/engine/imap-engine/imap-engine-generic-account.vala:1045 ++#: src/engine/imap-engine/imap-engine-generic-account.vala:1047 + msgid "Archive | Archives" + msgstr "Arhiva | Arhive" + +@@ -3147,6 +3101,26 @@ msgstr "Otvori odabrane privitke" + msgid "Save _All" + msgstr "Odaberi _sve" + ++#: ui/components-conversation-actions.ui:85 ++msgid "Reply" ++msgstr "Odgovori" ++ ++#: ui/components-conversation-actions.ui:108 ++msgid "Reply All" ++msgstr "Odgovori svima" ++ ++#: ui/components-conversation-actions.ui:131 ++msgid "Forward" ++msgstr "Proslijedi" ++ ++#: ui/components-conversation-actions.ui:163 ++msgid "_Archive" ++msgstr "_Arhiva" ++ ++#: ui/components-conversation-actions.ui:211 ++msgid "Toggle find bar" ++msgstr "Uklj/Isklj traku pretrage" ++ + #: ui/components-inspector-error-view.ui:31 + msgid "" + "If the problem is serious or persists, please save and send these details to " +@@ -3683,35 +3657,19 @@ msgctxt "shortcut window" + msgid "Insert a link" + msgstr "Umetni poveznicu" + +-#: ui/main-toolbar.ui:24 ++#: ui/main-toolbar.ui:85 ui/main-toolbar.ui:179 ++msgid "Back" ++msgstr "Natrag" ++ ++#: ui/main-toolbar.ui:104 + msgctxt "tooltip" + msgid "Compose Message" + msgstr "Sastavljanje poruke" + +-#: ui/main-toolbar.ui:62 ++#: ui/main-toolbar.ui:122 + msgid "Toggle search bar" + msgstr "Uklj/Isklj traku pretrage" + +-#: ui/main-toolbar.ui:114 +-msgid "Reply" +-msgstr "Odgovori" +- +-#: ui/main-toolbar.ui:137 +-msgid "Reply All" +-msgstr "Odgovori svima" +- +-#: ui/main-toolbar.ui:160 +-msgid "Forward" +-msgstr "Proslijedi" +- +-#: ui/main-toolbar.ui:265 +-msgid "Toggle find bar" +-msgstr "Uklj/Isklj traku pretrage" +- +-#: ui/main-toolbar.ui:286 +-msgid "_Archive" +-msgstr "_Arhiva" +- + #: ui/main-toolbar-menus.ui:21 + msgid "Toggle as _Junk" + msgstr "Označi kao _neželjenu poštu" +@@ -3748,6 +3706,41 @@ msgstr "_Ovjera" + msgid "Geary update in progress…" + msgstr "Geary nadopuna u tijeku…" + ++#~ msgid "Position of folder list pane" ++#~ msgstr "Položaj okvira popisa mape" ++ ++#~ msgid "Position of the folder list Paned grabber." ++#~ msgstr "Položaj okvira popisa mape." ++ ++#~ msgid "Position of folder list pane when horizontal" ++#~ msgstr "Položaj okvira popisa mape u vodoravnom položaju" ++ ++#~ msgid "" ++#~ "Position of the folder list Paned grabber in the horizontal orientation." ++#~ msgstr "Položaj okvira popisa mape u vodoravnoj orijentaciji." ++ ++#~ msgid "Position of folder list pane when vertical" ++#~ msgstr "Položaj okvira popisa mape u okomitom položaju" ++ ++#~ msgid "" ++#~ "Position of the folder list Paned grabber in the vertical orientation." ++#~ msgstr "Položaj okvira popisa mape u okomitoj orijentaciji." ++ ++#~ msgid "Orientation of the folder list pane" ++#~ msgstr "Orijentacija okvira popisa mape" ++ ++#~ msgid "True if the folder list Paned is in the horizontal orientation." ++#~ msgstr "Istina ako je popis mape u vodoravnoj orijentaciji." ++ ++#~ msgid "Position of message list pane" ++#~ msgstr "Položaj okvira popisa poruke" ++ ++#~ msgid "Position of the message list Paned grabber." ++#~ msgstr "Položaj okvira popisa poruke." ++ ++#~ msgid "Use _three pane view" ++#~ msgstr "Koristi _pogled stabla" ++ + #~ msgid "Log periodic activity" + #~ msgstr "Zapisuj povremene aktivnosti" + +-- +2.29.2 + diff --git a/mail-client/geary/files/0110-Update-Catalan-translation.patch b/mail-client/geary/files/0110-Update-Catalan-translation.patch new file mode 100644 index 0000000..0a60a4c --- /dev/null +++ b/mail-client/geary/files/0110-Update-Catalan-translation.patch @@ -0,0 +1,61 @@ +From eb261a6ebdb35cc489b3009f5cb69bd877657f7b Mon Sep 17 00:00:00 2001 +From: Jordi Mas +Date: Wed, 21 Oct 2020 14:51:09 +0200 +Subject: [PATCH 110/124] Update Catalan translation + +--- + po/ca.po | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/po/ca.po b/po/ca.po +index 7af186ff..daf2fd5b 100644 +--- a/po/ca.po ++++ b/po/ca.po +@@ -80,7 +80,7 @@ msgid "" + "Conversations allow you to read a complete discussion without having to find" + " and click from message to message." + msgstr "" +-"Les converses li permeten llegir una discussió completa sense haver de " ++"Les converses li permeten llegir una conversa completa sense haver de " + "buscar i fer clic de missatge en missatge." + + #: desktop/org.gnome.Geary.appdata.xml.in.in:27 +@@ -994,7 +994,7 @@ msgstr "L'opció «--hidden» està en desús i s'eliminarà en el futur." + #: src/client/application/application-client.vala:1082 + #, c-format + msgid "Unrecognised program argument: “%s”" +-msgstr "Paràmetre no reconegut: «%s»" ++msgstr "Argument del programa no reconegut: «%s»" + + #. / Notification title. + #: src/client/application/application-controller.vala:485 +@@ -1342,7 +1342,7 @@ msgstr "Sistema" + #: src/client/dialogs/dialogs-problem-details-dialog.vala:224 + #: ui/problem-details-dialog.ui:42 + msgid "Save As" +-msgstr "Desa i anomena" ++msgstr "Anomena i desa" + + #: src/client/components/components-inspector.vala:230 + #: src/client/dialogs/dialogs-problem-details-dialog.vala:225 +@@ -2073,7 +2073,7 @@ msgstr "Detalls" + #: src/client/dialogs/password-dialog.vala:16 + msgid "Geary requires your email password to continue" + msgstr "" +-"El Geary requereix la contrasenya de correu electrònic per a continuar" ++"El Geary requereix la contrasenya del correu electrònic per a continuar" + + #. Translators: Label displaying total number of email + #. messages in a folder. String substitution is the actual +@@ -2226,7 +2226,7 @@ msgstr "Envia" + #: src/client/plugin/email-templates/email-templates.vala:299 + #: src/client/plugin/special-folders/special-folders.vala:180 + msgid "Edit" +-msgstr "Edició" ++msgstr "Edita" + + #: src/client/plugin/folder-highlight/folder-highlight.plugin.desktop.in:4 + msgid "Folder Highlight" +-- +2.29.2 + diff --git a/mail-client/geary/files/0111-Geary.Imap.FolderSession-Fix-null-param-critical-wit.patch b/mail-client/geary/files/0111-Geary.Imap.FolderSession-Fix-null-param-critical-wit.patch new file mode 100644 index 0000000..64fc19a --- /dev/null +++ b/mail-client/geary/files/0111-Geary.Imap.FolderSession-Fix-null-param-critical-wit.patch @@ -0,0 +1,32 @@ +From 6530c66e28c930c51b5094a6040d690b3ae858e9 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 25 Oct 2020 12:55:28 +1100 +Subject: [PATCH 111/124] Geary.Imap.FolderSession: Fix null param critical + with vala 0.50 + +Cancellable can be null, mark it as such - more fallout from +GNOME/vala#299 + +Fixes #1044 +--- + src/engine/imap/api/imap-folder-session.vala | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/engine/imap/api/imap-folder-session.vala b/src/engine/imap/api/imap-folder-session.vala +index 8a2290cb..3b777ee6 100644 +--- a/src/engine/imap/api/imap-folder-session.vala ++++ b/src/engine/imap/api/imap-folder-session.vala +@@ -85,8 +85,8 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject { + + public async FolderSession(ClientSession session, + Imap.Folder folder, +- Cancellable cancellable) +- throws Error { ++ GLib.Cancellable? cancellable) ++ throws GLib.Error { + base(session); + this.folder = folder; + this.quirks = session.quirks; +-- +2.29.2 + diff --git a/mail-client/geary/files/0112-Composer.Widget-Suppress-unsupported-draft-folder-me.patch b/mail-client/geary/files/0112-Composer.Widget-Suppress-unsupported-draft-folder-me.patch new file mode 100644 index 0000000..a9f3799 --- /dev/null +++ b/mail-client/geary/files/0112-Composer.Widget-Suppress-unsupported-draft-folder-me.patch @@ -0,0 +1,56 @@ +From 6f1f94e5546c8df1b7627ebcd70edae8eab96fc6 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 25 Oct 2020 17:05:03 +1100 +Subject: [PATCH 112/124] Composer.Widget: Suppress unsupported draft folder + messages + +There's nothing people can do about the draft folder being unusable +for saving drafts, so just log a debug message and continue. + +Fixes #858 +--- + src/client/composer/composer-widget.vala | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index 9148a88e..fe29011d 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -1533,6 +1533,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + : new Geary.EmailFlags() + ); + ++ bool opened = false; + try { + var new_manager = yield new Geary.App.DraftManager( + this.sender_context.account, +@@ -1548,7 +1549,13 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + new_manager.fatal + .connect(on_draft_manager_fatal); + this.draft_manager = new_manager; ++ opened = true; + debug("Draft manager opened"); ++ } catch (Geary.EngineError.UNSUPPORTED err) { ++ debug( ++ "Drafts folder unsupported, no drafts will be saved: %s", ++ err.message ++ ); + } catch (GLib.Error err) { + this.header.show_save_and_close = false; + throw err; +@@ -1556,8 +1563,10 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + this.draft_manager_opening = null; + } + +- update_draft_state(); +- this.header.show_save_and_close = true; ++ this.header.show_save_and_close = opened; ++ if (opened) { ++ update_draft_state(); ++ } + } + + /** +-- +2.29.2 + diff --git a/mail-client/geary/files/0113-Geary.App.DraftManager-Wait-for-remote-to-be-open-in.patch b/mail-client/geary/files/0113-Geary.App.DraftManager-Wait-for-remote-to-be-open-in.patch new file mode 100644 index 0000000..a16eb1e --- /dev/null +++ b/mail-client/geary/files/0113-Geary.App.DraftManager-Wait-for-remote-to-be-open-in.patch @@ -0,0 +1,47 @@ +From be7938316eb31a95ed2f461fea635aeebb458f1c Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 25 Oct 2020 18:49:10 +1100 +Subject: [PATCH 113/124] Geary.App.DraftManager: Wait for remote to be open in + ctor + +When working offline, the draft manager is more or less useless and will +just consume memory as drafts pile up. Also, when opening a composer +immediately after application launch, +`FolderProperties.create_never_returns_id` may not have been updated +yet, and hence will prevent drafts from being saved, even if supported. + +So after opening the drafts folder, block waiting for the remote to +open so we get an accurate idea of if the folder is usable. + +Fixes drafts issue mentioned in #955 +--- + src/engine/app/app-draft-manager.vala | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/src/engine/app/app-draft-manager.vala b/src/engine/app/app-draft-manager.vala +index 8e9863af..9d5a31b1 100644 +--- a/src/engine/app/app-draft-manager.vala ++++ b/src/engine/app/app-draft-manager.vala +@@ -219,8 +219,17 @@ public class Geary.App.DraftManager : BaseObject { + + yield drafts_folder.open_async(Folder.OpenFlags.NO_DELAY, cancellable); + +- // if drafts folder doesn't return the identifier of newly created emails, then this object +- // can't do it's work ... wait until open to check for this, to be absolutely sure ++ // if drafts folder doesn't return the identifier of newly ++ // created emails, then this object can't do it's work ++ // ... wait until open to check for this, to be absolutely ++ // sure ++ // ++ // Since open_async returns before a remote connection is ++ // made, need to wait for it here to ensure ++ var engine = this.drafts_folder as ImapEngine.MinimalFolder; ++ if (engine != null) { ++ yield engine.claim_remote_session(cancellable); ++ } + if (drafts_folder.properties.create_never_returns_id) { + try { + yield drafts_folder.close_async(); +-- +2.29.2 + diff --git a/mail-client/geary/files/0114-Composer.Widget-Rework-draft-manager-management.patch b/mail-client/geary/files/0114-Composer.Widget-Rework-draft-manager-management.patch new file mode 100644 index 0000000..7c0ac77 --- /dev/null +++ b/mail-client/geary/files/0114-Composer.Widget-Rework-draft-manager-management.patch @@ -0,0 +1,140 @@ +From 6d5b0bc5b6ee45b6f31ba53d98c6a6c77e5ce2cd Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 25 Oct 2020 18:57:47 +1100 +Subject: [PATCH 114/124] Composer.Widget: Rework draft manager management + +Since the draft manager will now block until a remote for the draft +folder has been obtained, it now must be ensured that all calls to +opening the manager are backgrounded so that the UI isn't blocked +when offline. +--- + src/client/composer/composer-widget.vala | 76 ++++++++++++++++-------- + 1 file changed, 50 insertions(+), 26 deletions(-) + +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index fe29011d..61e3a84c 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -971,7 +971,21 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + this.header.set_sensitive(enabled); + + if (enabled) { +- this.open_draft_manager.begin(this.saved_id, null); ++ var current_account = this.sender_context.account; ++ this.open_draft_manager.begin( ++ this.saved_id, ++ (obj, res) => { ++ try { ++ this.open_draft_manager.end(res); ++ } catch (GLib.Error error) { ++ this.application.report_problem( ++ new Geary.AccountProblemReport( ++ current_account.information, error ++ ) ++ ); ++ } ++ } ++ ); + } else { + if (this.container != null) { + this.container.close(); +@@ -984,7 +998,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + public async void set_save_to_override(Geary.Folder? save_to) + throws GLib.Error { + this.save_to = save_to; +- yield reopen_draft_manager(); ++ this.reopen_draft_manager.begin(); + } + + /** +@@ -1423,11 +1437,21 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + is_body_complete + ); + +- try { +- yield open_draft_manager(this.saved_id); +- } catch (Error e) { +- debug("Could not open draft manager: %s", e.message); +- } ++ var current_account = this.sender_context.account; ++ this.open_draft_manager.begin( ++ this.saved_id, ++ (obj, res) => { ++ try { ++ this.open_draft_manager.end(res); ++ } catch (GLib.Error error) { ++ this.application.report_problem( ++ new Geary.AccountProblemReport( ++ current_account.information, error ++ ) ++ ); ++ } ++ } ++ ); + } + + private async bool should_send() { +@@ -1501,6 +1525,11 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + + /** + * Creates and opens the composer's draft manager. ++ * ++ * Note that since the draft manager may block until a remote ++ * connection is open, this method may likewise do so. Hence this ++ * method typically needs to be called from the main loop as a ++ * background async task using the `begin` async call form. + */ + private async void open_draft_manager(Geary.EmailIdentifier? editing_draft_id) + throws GLib.Error { +@@ -1572,13 +1601,21 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + /** + * Closes current draft manager, if any, then opens a new one. + */ +- private async void reopen_draft_manager() +- throws GLib.Error { ++ private async void reopen_draft_manager() { + // Discard the draft, if any, since it may be on a different + // account +- yield close_draft_manager(DISCARD); +- yield open_draft_manager(null); +- yield save_draft(); ++ var current_account = this.sender_context.account; ++ try { ++ yield close_draft_manager(DISCARD); ++ yield open_draft_manager(null); ++ yield save_draft(); ++ } catch (GLib.Error error) { ++ this.application.report_problem( ++ new Geary.AccountProblemReport( ++ current_account.information, error ++ ) ++ ); ++ } + } + + private async void close_draft_manager(DraftPolicy draft_policy) +@@ -2254,20 +2291,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + this.update_signature.begin(null); + load_entry_completions(); + +- var current_account = this.sender_context.account; +- this.reopen_draft_manager.begin( +- (obj, res) => { +- try { +- this.reopen_draft_manager.end(res); +- } catch (GLib.Error error) { +- this.application.report_problem( +- new Geary.AccountProblemReport( +- current_account.information, error +- ) +- ); +- } +- } +- ); ++ this.reopen_draft_manager.begin(); + } + } + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0115-Composer.Widget-Clean-up-set_save_to_override-method.patch b/mail-client/geary/files/0115-Composer.Widget-Clean-up-set_save_to_override-method.patch new file mode 100644 index 0000000..df027cd --- /dev/null +++ b/mail-client/geary/files/0115-Composer.Widget-Clean-up-set_save_to_override-method.patch @@ -0,0 +1,57 @@ +From 36daf80120a76b981a0d83e0765ad1720c5dba84 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 25 Oct 2020 18:59:45 +1100 +Subject: [PATCH 115/124] Composer.Widget: Clean up set_save_to_override method + signature + +The method now no longer requires async or throws an error, so remove +both. +--- + .../application/application-plugin-manager.vala | 14 +------------- + src/client/composer/composer-widget.vala | 5 ++--- + 2 files changed, 3 insertions(+), 16 deletions(-) + +diff --git a/src/client/application/application-plugin-manager.vala b/src/client/application/application-plugin-manager.vala +index de1e01b0..1d736222 100644 +--- a/src/client/application/application-plugin-manager.vala ++++ b/src/client/application/application-plugin-manager.vala +@@ -402,19 +402,7 @@ public class Application.PluginManager : GLib.Object { + public void save_to_folder(Plugin.Folder? location) { + var engine = this.application.globals.folders.to_engine_folder(location); + if (engine != null && engine.account == this.backing.sender_context.account) { +- this.backing.set_save_to_override.begin( +- engine, +- (obj, res) => { +- try { +- this.backing.set_save_to_override.end(res); +- } catch (GLib.Error err) { +- debug( +- "Error setting folder for saving: %s", +- err.message +- ); +- } +- } +- ); ++ this.backing.set_save_to_override(engine); + } + } + +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index 61e3a84c..46986b8b 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -994,9 +994,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + } + } + +- /** Overrides the draft folder as a destination for saving. */ +- public async void set_save_to_override(Geary.Folder? save_to) +- throws GLib.Error { ++ /** Overrides the folder used for saving drafts. */ ++ public void set_save_to_override(Geary.Folder? save_to) { + this.save_to = save_to; + this.reopen_draft_manager.begin(); + } +-- +2.29.2 + diff --git a/mail-client/geary/files/0116-Composer.Widget-Hide-save-button-by-default.patch b/mail-client/geary/files/0116-Composer.Widget-Hide-save-button-by-default.patch new file mode 100644 index 0000000..8f69aec --- /dev/null +++ b/mail-client/geary/files/0116-Composer.Widget-Hide-save-button-by-default.patch @@ -0,0 +1,27 @@ +From 5533ae323d186df61d775b5bcfdb9f02dafd5f99 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 25 Oct 2020 19:00:36 +1100 +Subject: [PATCH 116/124] Composer.Widget: Hide save button by default + +Determining if this can be enabled currently requires opening the +remote, so hide it by default until we know for sure. +--- + src/client/composer/composer-widget.vala | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala +index 46986b8b..6b158f83 100644 +--- a/src/client/composer/composer-widget.vala ++++ b/src/client/composer/composer-widget.vala +@@ -439,6 +439,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { + + this.header = new Headerbar(config); + this.header.expand_composer.connect(on_expand_compact_headers); ++ // Hide until we know we can save drafts ++ this.header.show_save_and_close = false; + + // Setup drag 'n drop + const Gtk.TargetEntry[] target_entries = { { URI_LIST_MIME_TYPE, 0, 0 } }; +-- +2.29.2 + diff --git a/mail-client/geary/files/0117-org.gnome.Geary.yaml-Remove-libhandy-module-it-is-no.patch b/mail-client/geary/files/0117-org.gnome.Geary.yaml-Remove-libhandy-module-it-is-no.patch new file mode 100644 index 0000000..218a01f --- /dev/null +++ b/mail-client/geary/files/0117-org.gnome.Geary.yaml-Remove-libhandy-module-it-is-no.patch @@ -0,0 +1,64 @@ +From 9da2a57c6fa8e046b84c9e3f030a1daeb70a4096 Mon Sep 17 00:00:00 2001 +From: Michael Gratton +Date: Sun, 25 Oct 2020 19:43:12 +1100 +Subject: [PATCH 117/124] org.gnome.Geary.yaml: Remove libhandy module, it is + now in the SDK + +--- + org.gnome.Geary.json | 16 ---------------- + org.gnome.Geary.yaml | 12 ------------ + 2 files changed, 28 deletions(-) + +diff --git a/org.gnome.Geary.json b/org.gnome.Geary.json +index 2fcd742e..c840f5ac 100644 +--- a/org.gnome.Geary.json ++++ b/org.gnome.Geary.json +@@ -201,22 +201,6 @@ + } + ] + }, +- { +- "name": "libhandy", +- "buildsystem": "meson", +- "config-opts": [ +- "-Dglade_catalog=disabled", +- "-Dexamples=false", +- "-Dtests=false" +- ], +- "sources": [ +- { +- "type": "git", +- "url": "https://gitlab.gnome.org/GNOME/libhandy.git", +- "branch": "master" +- } +- ] +- }, + { + "name": "libpeas", + "buildsystem": "meson", +diff --git a/org.gnome.Geary.yaml b/org.gnome.Geary.yaml +index a72c05bc..6c5b9d15 100644 +--- a/org.gnome.Geary.yaml ++++ b/org.gnome.Geary.yaml +@@ -203,18 +203,6 @@ modules: + url: https://github.com/jstedfast/gmime.git + branch: master + +- # Geary dependency +- - name: libhandy +- buildsystem: meson +- config-opts: +- - "-Dglade_catalog=disabled" +- - "-Dexamples=false" +- - "-Dtests=false" +- sources: +- - type: git +- url: https://gitlab.gnome.org/GNOME/libhandy.git +- branch: master +- + # Geary dependency + - name: libpeas + buildsystem: meson +-- +2.29.2 + diff --git a/mail-client/geary/files/0118-Update-German-translation.patch b/mail-client/geary/files/0118-Update-German-translation.patch new file mode 100644 index 0000000..efbaa7a --- /dev/null +++ b/mail-client/geary/files/0118-Update-German-translation.patch @@ -0,0 +1,3241 @@ +From 197c87c15bc5c45e285a6400568267153236e487 Mon Sep 17 00:00:00 2001 +From: Tim Sabsch +Date: Mon, 26 Oct 2020 22:45:40 +0000 +Subject: [PATCH 118/124] Update German translation + +(cherry picked from commit 1e1d68da011348a0585fea5cd1263997c8f31151) +--- + po/de.po | 1764 +++++++++++++++++++++++++++++++----------------------- + 1 file changed, 1028 insertions(+), 736 deletions(-) + +diff --git a/po/de.po b/po/de.po +index 4dea9ee7..b8018a89 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -20,8 +20,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-02-24 15:37+0000\n" +-"PO-Revision-Date: 2020-03-01 15:47+0100\n" ++"POT-Creation-Date: 2020-09-19 08:49+0000\n" ++"PO-Revision-Date: 2020-10-11 19:59+0200\n" + "Last-Translator: Tim Sabsch \n" + "Language-Team: Deutsch \n" + "Language: de\n" +@@ -29,7 +29,7 @@ msgstr "" + "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.3\n" ++"X-Generator: Poedit 2.4.1\n" + + #: desktop/geary-attach.contract.desktop.in:3 + msgid "Send by email" +@@ -41,10 +41,10 @@ msgstr "Dateien mit Geary versenden" + + #. Translators: The application name + #: desktop/geary-autostart.desktop.in.in:3 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:12 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 +-#: src/client/accounts/accounts-editor-servers-pane.vala:555 +-#: src/client/application/application-main-window.vala:555 ++#: src/client/accounts/accounts-editor-servers-pane.vala:560 ++#: src/client/application/application-main-window.vala:608 + msgid "Geary" + msgstr "Geary" + +@@ -55,9 +55,9 @@ msgstr "E-Mail" + + #. Translators: The application's summary / tagline + #: desktop/geary-autostart.desktop.in.in:5 +-#: desktop/org.gnome.Geary.appdata.xml.in.in:16 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:15 + #: desktop/org.gnome.Geary.desktop.in.in:5 +-#: src/client/application/application-client.vala:32 ++#: src/client/application/application-client.vala:33 + msgid "Send and receive email" + msgstr "Senden und empfangen" + +@@ -67,11 +67,11 @@ msgid "Email;E-mail;Mail;" + msgstr "Email;E-Mail;Mail;" + + #. Translators: The development team's name +-#: desktop/org.gnome.Geary.appdata.xml.in.in:14 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:13 + msgid "Geary Development Team" + msgstr "Geary-Entwicklerteam" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:18 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:17 + msgid "" + "Geary is an email application built around conversations, for the GNOME 3 " + "desktop. It allows you to read, find and send email with a straightforward, " +@@ -81,7 +81,7 @@ msgstr "" + "ermöglicht das einfache Lesen, Finden und Schreiben von E-Mails in einer " + "übersichtlichen und modernen Benutzeroberfläche." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:23 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:22 + msgid "" + "Conversations allow you to read a complete discussion without having to find " + "and click from message to message." +@@ -89,42 +89,42 @@ msgstr "" + "Konversationen ermöglichen das Lesen eines gesamten Diskussionsstrangs, ohne " + "Nachrichten einzeln suchen zu müssen." + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:27 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:26 + msgid "Geary’s features include:" + msgstr "Funktionen von Geary umfassen:" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:29 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:28 + msgid "Quick email account setup" + msgstr "Schnelle Konto-Einrichtung" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:30 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:29 + msgid "Shows related messages together in conversations" + msgstr "Verwandte Nachrichten gebündelt in Konversationen anzeigen" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:31 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:30 + msgid "Fast, full text and keyword search" + msgstr "Schnelle Volltext- und Schlüsselwortsuche" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:32 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:31 + msgid "Full-featured HTML and plain text message composer" + msgstr "Voll ausgestatteter HTML- und Klartext-Nachrichteneditor" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:33 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:32 + msgid "Desktop notification of new mail" + msgstr "Benachrichtigung bei neuer E-Mail" + +-#: desktop/org.gnome.Geary.appdata.xml.in.in:34 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:33 + msgid "Compatible with GMail, Yahoo! Mail, Outlook.com and other IMAP servers" + msgstr "" + "Kompatibel mit GMail, Yahoo! Mail, Outlook.com und weiteren IMAP-Servern" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:48 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:47 + msgid "Geary displaying a conversation" + msgstr "Geary zeigt eine Konversationsvorschau an" + + #. Translators: A screenshot description. +-#: desktop/org.gnome.Geary.appdata.xml.in.in:59 ++#: desktop/org.gnome.Geary.appdata.xml.in.in:58 + msgid "Geary showing the rich text composer" + msgstr "Geary zeigt den Editor für formatierten Text" + +@@ -350,10 +350,18 @@ msgid "" + msgstr "Die Dauer in Sekunden, in der Kurzbenachrichtigungen angezeigt werden." + + #: desktop/org.gnome.Geary.gschema.xml:146 ++msgid "List of optional plugins" ++msgstr "" ++ ++#: desktop/org.gnome.Geary.gschema.xml:147 ++msgid "Plugins listed here will be loaded on startup." ++msgstr "" ++ ++#: desktop/org.gnome.Geary.gschema.xml:152 + msgid "Whether we migrated the old settings" + msgstr "Alte Einstellungen migrieren" + +-#: desktop/org.gnome.Geary.gschema.xml:147 ++#: desktop/org.gnome.Geary.gschema.xml:153 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -375,13 +383,13 @@ msgstr "Alle übrigen" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:195 +-#: src/client/accounts/accounts-editor-servers-pane.vala:316 ++#: src/client/accounts/accounts-editor-servers-pane.vala:321 + msgid "Check your receiving login and password" + msgstr "Prüfen Sie Ihren Benutzernamen und Passwort zum Empfangen" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:210 +-#: src/client/accounts/accounts-editor-servers-pane.vala:329 ++#: src/client/accounts/accounts-editor-servers-pane.vala:334 + msgid "Check your receiving server details" + msgstr "Prüfen Sie die Serverdetails zum Empfangen" + +@@ -391,13 +399,13 @@ msgstr "Prüfen Sie die Serverdetails zum Empfangen" + #. specify custom creds here + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:232 +-#: src/client/accounts/accounts-editor-servers-pane.vala:350 ++#: src/client/accounts/accounts-editor-servers-pane.vala:355 + msgid "Check your sending login and password" + msgstr "Prüfen Sie Ihren Benutzernamen und Passwort zum Senden" + + #. Translators: In-app notification label + #: src/client/accounts/accounts-editor-add-pane.vala:246 +-#: src/client/accounts/accounts-editor-servers-pane.vala:363 ++#: src/client/accounts/accounts-editor-servers-pane.vala:368 + msgid "Check your sending server details" + msgstr "Prüfen Sie die Serverdetails zum Senden" + +@@ -453,14 +461,14 @@ msgstr "name@beispiel.de" + #. Translators: Label for the user's login name for an + #. IMAP, SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:593 +-#: src/client/accounts/accounts-editor-servers-pane.vala:884 ++#: src/client/accounts/accounts-editor-servers-pane.vala:889 + msgid "Login name" + msgstr "Benutzername" + + #. Translators: Label for the user's password for an IMAP, + #. SMTP, etc service + #: src/client/accounts/accounts-editor-add-pane.vala:607 +-#: src/client/accounts/accounts-editor-servers-pane.vala:1006 ++#: src/client/accounts/accounts-editor-servers-pane.vala:1011 + #: ui/password-dialog.glade:108 + msgid "Password" + msgstr "Passwort" +@@ -470,7 +478,7 @@ msgstr "Passwort" + #. Translators: This label describes the host name or IP + #. address and port used by an account's IMAP service. + #: src/client/accounts/accounts-editor-add-pane.vala:629 +-#: src/client/accounts/accounts-editor-servers-pane.vala:728 ++#: src/client/accounts/accounts-editor-servers-pane.vala:733 + msgid "IMAP server" + msgstr "IMAP-Server" + +@@ -485,7 +493,7 @@ msgstr "imap.example.com" + #. Translators: This label describes the host name or IP + #. address and port used by an account's SMTP service. + #: src/client/accounts/accounts-editor-add-pane.vala:638 +-#: src/client/accounts/accounts-editor-servers-pane.vala:734 ++#: src/client/accounts/accounts-editor-servers-pane.vala:739 + msgid "SMTP server" + msgstr "SMTP-Server" + +@@ -630,56 +638,55 @@ msgstr[0] "%d Tag zurück" + msgstr[1] "%d Tage zurück" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2053 ++#: src/client/application/application-main-window.vala:2061 + msgid "Undo" + msgstr "Rückgängig machen" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2036 ++#: src/client/application/application-main-window.vala:2044 + msgid "Redo" + msgstr "Wiederholen" + + #: src/client/accounts/accounts-editor-list-pane.vala:358 +-#: src/client/accounts/accounts-editor-list-pane.vala:446 ++#: src/client/accounts/accounts-editor-list-pane.vala:454 + #: src/client/accounts/accounts-editor-row.vala:279 + msgid "Gmail" + msgstr "Gmail" + + #: src/client/accounts/accounts-editor-list-pane.vala:362 +-#: src/client/accounts/accounts-editor-list-pane.vala:450 ++#: src/client/accounts/accounts-editor-list-pane.vala:458 + #: src/client/accounts/accounts-editor-row.vala:283 + msgid "Outlook.com" + msgstr "Outlook.com" + + #: src/client/accounts/accounts-editor-list-pane.vala:366 +-#: src/client/accounts/accounts-editor-list-pane.vala:454 ++#: src/client/accounts/accounts-editor-list-pane.vala:462 + #: src/client/accounts/accounts-editor-row.vala:287 + msgid "Yahoo" + msgstr "Yahoo" + + #. Translators: Tooltip for accounts that have been + #. loaded but disabled by the user. +-#: src/client/accounts/accounts-editor-list-pane.vala:384 ++#: src/client/accounts/accounts-editor-list-pane.vala:388 + msgid "This account has been disabled" + msgstr "Dieses Konto wurde deaktiviert" + + #. Translators: Tooltip for accounts that have been + #. loaded but because of some error are not able to be + #. used. +-#: src/client/accounts/accounts-editor-list-pane.vala:393 ++#: src/client/accounts/accounts-editor-list-pane.vala:397 + msgid "This account has encountered a problem and is unavailable" + msgstr "" + "Bei diesem Konto ist ein Fehler aufgetreten und es ist daher nicht verfügbar" + +-#. Translators: Label for adding a generic email account +-#: src/client/accounts/accounts-editor-list-pane.vala:443 ++#: src/client/accounts/accounts-editor-list-pane.vala:466 + msgid "Other email providers" + msgstr "Andere E-Mail-Anbieter" + + #. Translators: Notification shown after removing an + #. account. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:560 ++#: src/client/accounts/accounts-editor-list-pane.vala:572 + #, c-format + msgid "Account “%s” removed" + msgstr "Konto »%s« wurde entfernt" +@@ -687,7 +694,7 @@ msgstr "Konto »%s« wurde entfernt" + #. Translators: Notification shown after removing an account + #. is undone. The string substitution is the name of the + #. account. +-#: src/client/accounts/accounts-editor-list-pane.vala:567 ++#: src/client/accounts/accounts-editor-list-pane.vala:579 + #, c-format + msgid "Account “%s” restored" + msgstr "Konto »%s« wurde wiederhergestellt" +@@ -700,67 +707,66 @@ msgstr "Klicken Sie auf das Objekt und ziehen Sie es, um es zu bewegen" + #. Translators: Label describes the service provider + #. hosting the email account, e.g. Gmail, Yahoo, or some + #. other generic IMAP service. +-#: src/client/accounts/accounts-editor-row.vala:295 ++#: src/client/accounts/accounts-editor-row.vala:299 + msgid "Service provider" + msgstr "Anbieter" + + #. Translators: This label describes what form of transport + #. security (TLS, StartTLS, etc) used by an account's IMAP or SMTP + #. service. +-#: src/client/accounts/accounts-editor-row.vala:468 ++#: src/client/accounts/accounts-editor-row.vala:473 + msgid "Connection security" + msgstr "Sicherheit der Verbindung" + + #. Translators: Label used when no auth scheme is used + #. by an account's IMAP or SMTP service. +-#: src/client/accounts/accounts-editor-row.vala:479 +-#: src/client/accounts/accounts-editor-servers-pane.vala:755 +-#: src/client/accounts/accounts-editor-servers-pane.vala:970 +-#: src/engine/api/geary-special-folder-type.vala:58 ++#: src/client/accounts/accounts-editor-row.vala:484 ++#: src/client/accounts/accounts-editor-servers-pane.vala:760 ++#: src/client/accounts/accounts-editor-servers-pane.vala:975 + msgid "None" + msgstr "Nichts" + +-#: src/client/accounts/accounts-editor-row.vala:486 ++#: src/client/accounts/accounts-editor-row.vala:491 + msgid "StartTLS" + msgstr "StartTLS" + +-#: src/client/accounts/accounts-editor-row.vala:493 ++#: src/client/accounts/accounts-editor-row.vala:498 + msgid "TLS" + msgstr "TLS" + + #. Translators: Label for source of SMTP authentication + #. credentials (none, use IMAP, custom) when adding a new + #. account +-#. Button label for retrying when a login error has occurred +-#: src/client/accounts/accounts-editor-row.vala:534 +-#: ui/application-main-window.ui:346 ++#. Translators: An info bar button label ++#: src/client/accounts/accounts-editor-row.vala:539 ++#: src/client/application/application-main-window.vala:554 + msgid "Login" + msgstr "Anmelden" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (none) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:541 ++#: src/client/accounts/accounts-editor-row.vala:546 + msgid "No login needed" + msgstr "Keine Anmeldung erforderlich" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (use IMAP) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:549 ++#: src/client/accounts/accounts-editor-row.vala:554 + msgid "Use same login as receiving" + msgstr "Dieselben Anmeldedaten zum Empfangen verwenden" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (custom) when adding a new + #. account +-#: src/client/accounts/accounts-editor-row.vala:557 ++#: src/client/accounts/accounts-editor-row.vala:562 + msgid "Use a different login" + msgstr "Andere Anmeldedaten verwenden" + + #. Translators: In-app notification label, the + #. string substitution is a more detailed reason. +-#: src/client/accounts/accounts-editor-servers-pane.vala:377 ++#: src/client/accounts/accounts-editor-servers-pane.vala:382 + #, c-format + msgid "Account not updated: %s" + msgstr "Konto wurde nicht aktualisiert: %s" +@@ -768,23 +774,23 @@ msgstr "Konto wurde nicht aktualisiert: %s" + #. Translators: This label describes the program that + #. created the account, e.g. an SSO service like GOA, or + #. locally by Geary. +-#: src/client/accounts/accounts-editor-servers-pane.vala:540 ++#: src/client/accounts/accounts-editor-servers-pane.vala:545 + msgid "Account source" + msgstr "Kontoquelle" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:552 ++#: src/client/accounts/accounts-editor-servers-pane.vala:557 + msgid "GNOME Online Accounts" + msgstr "GNOME Online-Konten" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:611 ++#: src/client/accounts/accounts-editor-servers-pane.vala:616 + msgid "Save draft email on server" + msgstr "E-Mail-Entwürfe auf dem Server speichern" + + #. Translators: This label describes an account + #. preference. +-#: src/client/accounts/accounts-editor-servers-pane.vala:666 ++#: src/client/accounts/accounts-editor-servers-pane.vala:671 + msgid "Save sent email on server" + msgstr "Gesendete E-Mails auf dem Server speichern" + +@@ -793,12 +799,12 @@ msgstr "Gesendete E-Mails auf dem Server speichern" + #. Translators: Label used when an account's IMAP or + #. SMTP service uses OAuth2. The string replacement is + #. the service's login name. +-#: src/client/accounts/accounts-editor-servers-pane.vala:956 ++#: src/client/accounts/accounts-editor-servers-pane.vala:961 + #, c-format + msgid "%s using OAuth2" + msgstr "%s mittels OAuth2" + +-#: src/client/accounts/accounts-editor-servers-pane.vala:966 ++#: src/client/accounts/accounts-editor-servers-pane.vala:971 + msgid "Use receiving server login" + msgstr "Server-Anmeldedaten zum Empfangen verwenden" + +@@ -831,58 +837,57 @@ msgstr "" + msgid "_Replace" + msgstr "_Ersetzen" + +-#: src/client/application/application-client.vala:33 ++#: src/client/application/application-client.vala:34 + msgid "Copyright 2016 Software Freedom Conservancy Inc." + msgstr "Copyright 2016 Software Freedom Conservancy Inc." + +-#: src/client/application/application-client.vala:34 +-msgid "Copyright 2016-2019 Geary Development Team." ++#: src/client/application/application-client.vala:35 ++#, fuzzy ++#| msgid "Copyright 2016-2019 Geary Development Team." ++msgid "Copyright 2016-2020 Geary Development Team." + msgstr "Copyright 2016-2019 Geary-Entwicklerteam." + +-#: src/client/application/application-client.vala:36 ++#: src/client/application/application-client.vala:37 + msgid "Visit the Geary web site" + msgstr "Geary-Webseite besuchen" + + #. / Command line option +-#: src/client/application/application-client.vala:94 ++#: src/client/application/application-client.vala:97 + msgid "Print debug logging" + msgstr "Fehlerbehebungsprotokolle anzeigen" + + #. / Command line option +-#: src/client/application/application-client.vala:97 ++#: src/client/application/application-client.vala:100 + msgid "Start with the main window hidden (deprecated)" + msgstr "Geary mit verborgenem Hauptfenster starten (veraltet)" + + #. / Command line option +-#: src/client/application/application-client.vala:100 ++#: src/client/application/application-client.vala:103 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "WebKitGTK-Inspector in Webanzeigen aktivieren" + + #. / Command line option +-#: src/client/application/application-client.vala:103 ++#: src/client/application/application-client.vala:106 + msgid "Log conversation monitoring" + msgstr "Gesprächsmonitoring protokollieren" + + #. / Command line option +-#: src/client/application/application-client.vala:106 ++#: src/client/application/application-client.vala:109 + msgid "Log IMAP network deserialization" + msgstr "IMAP-Netzwerkdeserialisierung protokollieren" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/application-client.vala:110 ++#: src/client/application/application-client.vala:113 + msgid "Log folder normalization" + msgstr "Ordnerabgleich protokollieren" + +-#. / Command line option +-#: src/client/application/application-client.vala:113 +-msgid "Log network activity" +-msgstr "Netzwerkaktivitäten protokollieren" +- + #. / Command line option + #: src/client/application/application-client.vala:116 +-msgid "Log periodic activity" +-msgstr "Regelmäßige Aktivitäten protokollieren" ++#, fuzzy ++#| msgid "Log network activity" ++msgid "Log IMAP network activity" ++msgstr "Netzwerkaktivitäten protokollieren" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could +@@ -891,92 +896,92 @@ msgstr "Regelmäßige Aktivitäten protokollieren" + msgid "Log IMAP replay queue" + msgstr "IMAP-Ereigniswarteschlange protokollieren" + +-#. / Command line option. Serialization is how commands and +-#. / responses are converted into a stream of bytes for +-#. / network transmission +-#: src/client/application/application-client.vala:126 +-msgid "Log IMAP network serialization" +-msgstr "IMAP-Netzwerkserialisierung protokollieren" ++#. / Command line option ++#: src/client/application/application-client.vala:124 ++#, fuzzy ++#| msgid "Log network activity" ++msgid "Log SMTP network activity" ++msgstr "Netzwerkaktivitäten protokollieren" + + #. / Command line option +-#: src/client/application/application-client.vala:129 ++#: src/client/application/application-client.vala:127 + msgid "Log database queries (generates lots of messages)" + msgstr "" + "Datenbankabfragen protokollieren (dabei werden sehr viele Einträge erzeugt)" + + #. / Command line option +-#: src/client/application/application-client.vala:132 ++#: src/client/application/application-client.vala:130 + msgid "Perform a graceful quit" + msgstr "Ordnungsgemäß beenden" + +-#: src/client/application/application-client.vala:134 ++#: src/client/application/application-client.vala:132 + msgid "Open a new window" + msgstr "Ein neues Fenster öffnen" + + #. / Command line option +-#: src/client/application/application-client.vala:137 ++#: src/client/application/application-client.vala:135 + msgid "Revoke all pinned TLS server certificates" + msgstr "Alle beschränkten TLS-Server-Zertifikate widerrufen" + + #. / Command line option +-#: src/client/application/application-client.vala:140 ++#: src/client/application/application-client.vala:138 + msgid "Display program version" + msgstr "Programmversion anzeigen" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:264 ++#: src/client/application/application-client.vala:262 + msgid "Geary version" + msgstr "Geary-Version" + + # Bezieht sich auf Git-Revision + #. / Application runtime information label +-#: src/client/application/application-client.vala:266 ++#: src/client/application/application-client.vala:264 + msgid "Geary revision" + msgstr "Geary-Revision" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:268 ++#: src/client/application/application-client.vala:266 + msgid "GTK version" + msgstr "GTK-Version" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:275 ++#: src/client/application/application-client.vala:273 + msgid "GLib version" + msgstr "GLib-Version" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:282 ++#: src/client/application/application-client.vala:280 + msgid "WebKitGTK version" + msgstr "WebKitGTK-Version" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:289 ++#: src/client/application/application-client.vala:287 + msgid "Desktop environment" + msgstr "Desktopumgebung" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:291 ++#: src/client/application/application-client.vala:289 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Unbekannt" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:321 ++#: src/client/application/application-client.vala:293 + msgid "Distribution name" + msgstr "Distributionsname" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:326 ++#: src/client/application/application-client.vala:298 + msgid "Distribution release" + msgstr "Distributionsveröffentlichung" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:334 ++#: src/client/application/application-client.vala:303 + msgid "Installation prefix" + msgstr "Installationspräfix" + +-#: src/client/application/application-client.vala:587 ++#: src/client/application/application-client.vala:559 + #, c-format + msgid "About %s" + msgstr "Info zu %s" +@@ -984,7 +989,7 @@ msgstr "Info zu %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:591 ++#: src/client/application/application-client.vala:563 + msgid "translator-credits" + msgstr "" + "Benjamin Steinwender \n" +@@ -994,7 +999,7 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:937 ++#: src/client/application/application-client.vala:1045 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "" + "Die Option »--hidden« ist veraltet und wird in einer künftigen Version " +@@ -1002,31 +1007,31 @@ msgstr "" + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:970 ++#: src/client/application/application-client.vala:1078 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Unbekanntes Befehlszeilenargument »%s«" + + #. / Notification title. +-#: src/client/application/application-controller.vala:458 ++#: src/client/application/application-controller.vala:479 + #, c-format + msgid "A problem occurred sending email for %s" + msgstr "Ein Problem ist beim Senden von E-Mails für %s aufgetreten" + + #. / Notification body +-#: src/client/application/application-controller.vala:462 ++#: src/client/application/application-controller.vala:483 + msgid "Email will not be sent until re-connected" + msgstr "E-Mail wird nicht gesendet, bis wieder eine Verbindung besteht." + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:568 ++#: src/client/application/application-controller.vala:582 + msgid "Conversation marked" + msgid_plural "Conversations marked" + msgstr[0] "Konversation markiert" + msgstr[1] "Konversationen markiert" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:574 ++#: src/client/application/application-controller.vala:588 + msgid "Conversation un-marked" + msgid_plural "Conversations un-marked" + msgstr[0] "Markierung der Konversation aufgehoben" +@@ -1035,8 +1040,8 @@ msgstr[1] "Markierung der Konversationen aufgehoben" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:600 +-#: src/client/application/application-controller.vala:684 ++#: src/client/application/application-controller.vala:614 ++#: src/client/application/application-controller.vala:698 + #, c-format + msgid "Conversation moved to %s" + msgid_plural "Conversations moved to %s" +@@ -1048,8 +1053,8 @@ msgstr[1] "Konversationen verschoben nach %s" + #. / of the source folder. + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:608 +-#: src/client/application/application-controller.vala:630 ++#: src/client/application/application-controller.vala:622 ++#: src/client/application/application-controller.vala:644 + #, c-format + msgid "Conversation restored to %s" + msgid_plural "Conversations restored to %s" +@@ -1057,7 +1062,7 @@ msgstr[0] "Konversation wiederhergestellt nach %s" + msgstr[1] "Konversationen wiederhergestellt nach %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:651 ++#: src/client/application/application-controller.vala:665 + msgid "Conversation archived" + msgid_plural "Conversations archived" + msgstr[0] "Konversation archiviert" +@@ -1065,7 +1070,7 @@ msgstr[1] "Konversationen archiviert" + + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:707 ++#: src/client/application/application-controller.vala:721 + #, c-format + msgid "Message restored to %s" + msgid_plural "Messages restored to %s" +@@ -1073,7 +1078,7 @@ msgstr[0] "Nachricht wiederhergestellt nach %s" + msgstr[1] "Nachrichten wiederhergestellt nach %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:728 ++#: src/client/application/application-controller.vala:742 + msgid "Message archived" + msgid_plural "Messages archived" + msgstr[0] "Nachricht archiviert" +@@ -1082,7 +1087,7 @@ msgstr[1] "Nachrichten archiviert" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:763 ++#: src/client/application/application-controller.vala:777 + #, c-format + msgid "Message moved to %s" + msgid_plural "Messages moved to %s" +@@ -1092,7 +1097,7 @@ msgstr[1] "Nachrichten verschoben nach %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:791 ++#: src/client/application/application-controller.vala:805 + #, c-format + msgid "Conversation labelled as %s" + msgid_plural "Conversations labelled as %s" +@@ -1102,19 +1107,19 @@ msgstr[1] "Konversationen beschriftet als %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:799 ++#: src/client/application/application-controller.vala:813 + #, c-format + msgid "Conversation un-labelled as %s" + msgid_plural "Conversations un-labelled as %s" + msgstr[0] "Beschriftung der Konversation als %s aufgehoben" + msgstr[1] "Beschriftung der Konversationen als %s aufgehoben" + +-#: src/client/application/application-controller.vala:1222 ++#: src/client/application/application-controller.vala:1320 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Die Datenbank für %s konnte nicht geöffnet werden" + +-#: src/client/application/application-controller.vala:1223 ++#: src/client/application/application-controller.vala:1321 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1139,20 +1144,20 @@ msgstr "" + "dazugehörigen Anhänge verloren. E-Mails auf Ihrem Server werden nicht " + "betroffen sein." + +-#: src/client/application/application-controller.vala:1225 ++#: src/client/application/application-controller.vala:1323 + msgid "_Rebuild" + msgstr "_Wiederherstellen" + +-#: src/client/application/application-controller.vala:1225 ++#: src/client/application/application-controller.vala:1323 + msgid "E_xit" + msgstr "B_eenden" + +-#: src/client/application/application-controller.vala:1235 ++#: src/client/application/application-controller.vala:1333 + #, c-format + msgid "Unable to rebuild database for “%s”" + msgstr "Die Datenbank für »%s« konnte nicht wiederhergestellt werden" + +-#: src/client/application/application-controller.vala:1236 ++#: src/client/application/application-controller.vala:1334 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1165,88 +1170,139 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1559 ++#: src/client/application/application-controller.vala:1501 + #, c-format + msgid "Email sent to %s" + msgstr "E-Mail gesendet an %s" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2642 ++#: src/client/application/application-controller.vala:2491 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "E-Mail an %s zum Versand vorgemerkt" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2706 ++#: src/client/application/application-controller.vala:2555 + #, c-format + msgid "Email to %s saved" + msgstr "E-Mail an %s gespeichert" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2721 +-#: src/client/application/application-controller.vala:2779 ++#: src/client/application/application-controller.vala:2570 ++#: src/client/application/application-controller.vala:2628 + msgid "Composer could not be restored" + msgstr "Verfassen-Fenster konnte nicht wiederhergestellt werden" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2764 ++#: src/client/application/application-controller.vala:2613 + #, c-format + msgid "Email to %s discarded" + msgstr "E-Mail an %s verworfen" + ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:540 ++msgid "Working offline" ++msgstr "Abgemeldet arbeiten" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:542 ++msgid "You will not be able to send or receive email until re-connected." ++msgstr "" ++"Sie können keine E-Mails senden oder empfangen, bis wieder eine Verbindung " ++"besteht." ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:549 ++msgid "Login problem" ++msgstr "Anmeldeproblem" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:551 ++msgid "An account has reported an incorrect login or password." ++msgstr "Ein Konto hat einen falschen Benutzernamen oder Passwort gemeldet." ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:558 ++msgid "Retry login, you will be prompted for your password" ++msgstr "Anmeldung erneut versuchen, Sie werden nach einem Passwort gefragt" ++ ++#. Translators: An info bar status label ++#: src/client/application/application-main-window.vala:565 ++msgid "Security problem" ++msgstr "Sicherheitsproblem" ++ ++#. Translators: An info bar description label ++#: src/client/application/application-main-window.vala:567 ++msgid "An account has reported an untrusted server." ++msgstr "Ein Konto hat einen nicht-vertrauten Server gemeldet." ++ ++#. Translators: An info bar button label ++#: src/client/application/application-main-window.vala:570 ++msgid "Check" ++msgstr "Prüfen" ++ ++#. Translators: An info bar button tool-tip ++#: src/client/application/application-main-window.vala:574 ++msgid "Check the security details for the connection" ++msgstr "Sicherheitsdetails für die Verbindung prüfen" ++ + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:560 ++#: src/client/application/application-main-window.vala:617 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" + +-#: src/client/application/application-main-window.vala:967 ++#. Translators: The name of the folder group containing ++#. folders created by people (as opposed to special-use ++#. folders) ++#: src/client/application/application-main-window.vala:996 ++#: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Beschriftungen" + ++#: src/client/application/application-main-window.vala:1293 ++#, c-format ++msgid "Empty all email from your %s folder?" ++msgstr "Alle E-Mails aus dem Ordner %s löschen?" ++ ++#: src/client/application/application-main-window.vala:1294 ++msgid "This removes the email from Geary and your email server." ++msgstr "Dies wird die E-Mail aus Geary und von Ihrem E-Mail-Server löschen." ++ ++#: src/client/application/application-main-window.vala:1295 ++msgid "This cannot be undone." ++msgstr "Dies kann nicht rückgängig gemacht werden." ++ ++#: src/client/application/application-main-window.vala:1296 ++#, c-format ++msgid "Empty %s" ++msgstr "%s leeren" ++ + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1306 ++#: src/client/application/application-main-window.vala:1353 + msgid "Do you want to permanently delete this conversation?" + msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Möchten Sie diese Konversation dauerhaft löschen?" + msgstr[1] "Möchten Sie diese Konversationen dauerhaft löschen?" + +-#: src/client/application/application-main-window.vala:1311 +-#: src/client/application/application-main-window.vala:1326 ++#: src/client/application/application-main-window.vala:1358 ++#: src/client/application/application-main-window.vala:1373 + msgid "Delete" + msgstr "Löschen" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1321 ++#: src/client/application/application-main-window.vala:1368 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Möchten Sie diese Nachricht dauerhaft löschen?" + msgstr[1] "Möchten Sie diese Nachrichten dauerhaft löschen?" + +-#: src/client/application/application-main-window.vala:1334 +-#, c-format +-msgid "Empty all email from your %s folder?" +-msgstr "Alle E-Mails aus dem Ordner %s löschen?" +- +-#: src/client/application/application-main-window.vala:1337 +-msgid "This removes the email from Geary and your email server." +-msgstr "Dies wird die E-Mail aus Geary und von Ihrem E-Mail-Server löschen." +- +-#: src/client/application/application-main-window.vala:1338 +-msgid "This cannot be undone." +-msgstr "Dies kann nicht rückgängig gemacht werden." +- +-#: src/client/application/application-main-window.vala:1339 +-#, c-format +-msgid "Empty %s" +-msgstr "%s leeren" +- +-#: src/client/application/application-main-window.vala:1669 ++#: src/client/application/application-main-window.vala:1691 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1257,7 +1313,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1834 ++#: src/client/composer/composer-widget.vala:1784 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1279,61 +1335,61 @@ msgid "Don’t _ask me again" + msgstr "Nicht _noch einmal fragen" + + # Gemeint is vmtl der WebKitGTK-Inspector +-#: src/client/components/components-inspector.vala:72 ++#: src/client/components/components-inspector.vala:78 + msgid "Inspector" + msgstr "Inspector" + + #. / Translators: Title for Inspector logs pane + #. / Translators: Title for problem report dialog logs pane +-#: src/client/components/components-inspector.vala:87 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 ++#: src/client/components/components-inspector.vala:93 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 + msgid "Logs" + msgstr "Protokolle" + + #. / Translators: Title for Inspector system system information pane + #. / Translators: Title for problem report system information + #. / pane +-#: src/client/components/components-inspector.vala:91 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 ++#: src/client/components/components-inspector.vala:97 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 + msgid "System" + msgstr "System" + + #. Button label for saving problem report information +-#: src/client/components/components-inspector.vala:208 +-#: src/client/components/components-inspector.vala:211 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/problem-details-dialog.ui:42 ++#: src/client/components/components-inspector.vala:226 ++#: src/client/components/components-inspector.vala:229 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 ++#: ui/problem-details-dialog.ui:47 + msgid "Save As" + msgstr "Speichern als" + +-#: src/client/components/components-inspector.vala:212 +-#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: src/client/components/components-inspector.vala:230 ++#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Abbrechen" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:43 ++#: src/client/components/components-preferences-window.vala:124 + msgid "_Automatically select next message" + msgstr "Automatisch die nächste Nachricht _wählen" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:53 ++#: src/client/components/components-preferences-window.vala:134 + msgid "_Display conversation preview" + msgstr "Konversations_vorschau anzeigen" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:63 ++#: src/client/components/components-preferences-window.vala:144 + msgid "Use _three pane view" + msgstr "_Dreispaltige Ansicht verwenden" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:73 ++#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "_Einfache E-Mail-Tastenkürzel verwenden" + +-#: src/client/components/components-preferences-window.vala:75 ++#: src/client/components/components-preferences-window.vala:156 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" +@@ -1342,19 +1398,101 @@ msgstr "" + " erfordern" + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:86 ++#: src/client/components/components-preferences-window.vala:167 + msgid "_Watch for new mail when closed" + msgstr "_Ständig nach neuen E-Mails prüfen" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:90 ++#: src/client/components/components-preferences-window.vala:171 + msgid "Geary will keep running after all windows are closed" + msgstr "Geary wird weiter ausgeführt, nachdem alle Fenster geschlossen wurden" + ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:189 ++msgid "Preferences" ++msgstr "Einstellungen" ++ ++#. / Translators: Preferences page title ++#: src/client/components/components-preferences-window.vala:250 ++msgid "Plugins" ++msgstr "" ++ ++#. Translators: Info bar title for a generic account ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:36 ++msgid "Account problem" ++msgstr "Kontoproblem" ++ ++#. Translators: Info bar sub-title for a generic account ++#. problem. String substitution is the account name. ++#: src/client/components/components-problem-report-info-bar.vala:40 ++#, c-format ++msgid "Geary has encountered a problem with %s." ++msgstr "Geary ist auf ein Problem mit %s gestoßen." ++ ++#. Translators: Info bar sub-title for a generic ++#. account problem. String substitution is the ++#. account name. ++#: src/client/components/components-problem-report-info-bar.vala:53 ++#, c-format ++msgid "Geary encountered a problem checking mail for %s." ++msgstr "" ++"Geary ist bei der Überprüfung auf neue Nachrichten von %s auf ein Problem " ++"gestoßen." ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:57 ++msgid "Try reconnecting" ++msgstr "Erneuter Verbindungsversuch" ++ ++#. Translators: Info bar title for an outgoing ++#. account problem. String substitution is the ++#. account name ++#: src/client/components/components-problem-report-info-bar.vala:65 ++#, c-format ++msgid "Geary encountered a problem sending email for %s." ++msgstr "Geary ist bei der Senden einer E-Mail von %s auf ein Problem gestoßen." ++ ++#. Translators: Tooltip label for Retry button ++#: src/client/components/components-problem-report-info-bar.vala:69 ++msgid "Retry sending queued messages" ++msgstr "Versuchen, Nachrichten in der Warteschlange erneut zu senden" ++ ++#. Translators: Info bar title for a generic application ++#. problem. ++#: src/client/components/components-problem-report-info-bar.vala:76 ++msgid "Geary has encountered a problem" ++msgstr "Geary ist auf ein Problem gestoßen" ++ ++#. Translators: Info bar sub-title for a generic ++#. application problem. ++#: src/client/components/components-problem-report-info-bar.vala:80 ++msgid "Please report the details if it persists." ++msgstr "" ++"Bitte melden Sie die Fehlerdetails, falls das Problem weiterhin besteht." ++ ++#. Translators: Button label for viewing technical details ++#. for a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:94 ++msgid "_Details" ++msgstr "_Details" ++ ++#. Translators: Tooltip for viewing technical details for ++#. a problem report. ++#: src/client/components/components-problem-report-info-bar.vala:97 ++msgid "View technical details about the error" ++msgstr "Technische Details zum Fehler anzeigen" ++ ++#. Translators: Button label for retrying a server ++#. connection ++#: src/client/components/components-problem-report-info-bar.vala:103 ++msgid "_Retry" ++msgstr "_Wiederholen" ++ + #. / Translators: Search entry placeholder text + #: src/client/components/components-search-bar.vala:12 + #: src/client/folder-list/folder-list-search-branch.vala:53 +-#: src/engine/api/geary-special-folder-type.vala:51 ++#: src/client/util/util-i18n.vala:298 + msgid "Search" + msgstr "Suchen" + +@@ -1373,27 +1511,27 @@ msgstr "%s-Konto durchsuchen" + + #. Translators: Tooltip used when an entry requires a valid + #. email address to be entered, but one is not provided. +-#: src/client/components/components-validator.vala:390 ++#: src/client/components/components-validator.vala:394 + msgid "An email address is required" + msgstr "Es wird eine E-Mail-Adresse benötigt" + + #. Translators: Tooltip used when an entry requires a valid + #. email address to be entered, but the address is invalid. +-#: src/client/components/components-validator.vala:394 ++#: src/client/components/components-validator.vala:398 + msgid "Not a valid email address" + msgstr "Ungültige E-Mail-Adresse" + + #. Translators: Tooltip used when an entry requires a valid, + #. resolvable server name to be entered, but one is not + #. provided. +-#: src/client/components/components-validator.vala:440 ++#: src/client/components/components-validator.vala:444 + msgid "A server name is required" + msgstr "Es wird ein Servername benötigt" + + #. Translators: Tooltip used when an entry requires a valid + #. server name to be entered, but it was unable to be + #. looked-up in the DNS. +-#: src/client/components/components-validator.vala:445 ++#: src/client/components/components-validator.vala:449 + msgid "Could not look up server name" + msgstr "Servername konnte nicht abgefragt werden" + +@@ -1433,78 +1571,6 @@ msgid_plural "Delete conversations" + msgstr[0] "Konversation löschen" + msgstr[1] "Konversationen löschen" + +-#. Translators: Info bar title for a generic account +-#. problem. +-#: src/client/components/main-window-info-bar.vala:44 +-msgid "Account problem" +-msgstr "Kontoproblem" +- +-#. Translators: Info bar sub-title for a generic account +-#. problem. String substitution is the account name. +-#: src/client/components/main-window-info-bar.vala:48 +-#, c-format +-msgid "Geary has encountered a problem with %s." +-msgstr "Geary ist auf ein Problem mit %s gestoßen." +- +-#. Translators: Info bar sub-title for a generic +-#. account problem. String substitution is the +-#. account name. +-#: src/client/components/main-window-info-bar.vala:61 +-#, c-format +-msgid "Geary encountered a problem checking mail for %s." +-msgstr "" +-"Geary ist bei der Überprüfung auf neue Nachrichten von %s auf ein Problem " +-"gestoßen." +- +-#. Translators: Tooltip label for Retry button +-#: src/client/components/main-window-info-bar.vala:65 +-msgid "Try reconnecting" +-msgstr "Erneuter Verbindungsversuch" +- +-#. Translators: Info bar title for an outgoing +-#. account problem. String substitution is the +-#. account name +-#: src/client/components/main-window-info-bar.vala:73 +-#, c-format +-msgid "Geary encountered a problem sending email for %s." +-msgstr "Geary ist bei der Senden einer E-Mail von %s auf ein Problem gestoßen." +- +-#. Translators: Tooltip label for Retry button +-#: src/client/components/main-window-info-bar.vala:77 +-msgid "Retry sending queued messages" +-msgstr "Versuchen, Nachrichten in der Warteschlange erneut zu senden" +- +-#. Translators: Info bar title for a generic application +-#. problem. +-#: src/client/components/main-window-info-bar.vala:84 +-msgid "Geary has encountered a problem" +-msgstr "Geary ist auf ein Problem gestoßen" +- +-#. Translators: Info bar sub-title for a generic +-#. application problem. +-#: src/client/components/main-window-info-bar.vala:88 +-msgid "Please report the details if it persists." +-msgstr "" +-"Bitte melden Sie die Fehlerdetails, falls das Problem weiterhin besteht." +- +-#. Translators: Button label for viewing technical details +-#. for a problem report. +-#: src/client/components/main-window-info-bar.vala:99 +-msgid "_Details" +-msgstr "_Details" +- +-#. Translators: Tooltip for viewing technical details for +-#. a problem report. +-#: src/client/components/main-window-info-bar.vala:102 +-msgid "View technical details about the error" +-msgstr "Technische Details zum Fehler anzeigen" +- +-#. Translators: Button label for retrying a server +-#. connection +-#: src/client/components/main-window-info-bar.vala:108 +-msgid "_Retry" +-msgstr "_Wiederholen" +- + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1525,7 +1591,9 @@ msgstr "Fehler beim Speichern der gesendeten E-Mail" + msgid "_OK" + msgstr "_OK" + +-#: src/client/components/stock.vala:19 ui/password-dialog.glade:196 ++#: src/client/components/stock.vala:19 ++#: src/client/plugin/mail-merge/mail-merge.vala:392 ++#: ui/password-dialog.glade:196 + msgid "_Cancel" + msgstr "_Abbrechen" + +@@ -1545,15 +1613,17 @@ msgstr "_Schließen" + msgid "_Discard" + msgstr "_Verwerfen" + +-#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:52 ++#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:42 + msgid "_Help" + msgstr "_Hilfe" + +-#: src/client/components/stock.vala:26 ui/components-attachment-pane-menus.ui:7 ++#: src/client/components/stock.vala:26 ++#: src/client/plugin/mail-merge/mail-merge.vala:391 ++#: ui/components-attachment-pane-menus.ui:7 + msgid "_Open" + msgstr "_Öffnen" + +-#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:42 ++#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:32 + msgid "_Preferences" + msgstr "_Einstellungen" + +@@ -1579,6 +1649,10 @@ msgstr "_Speichern" + msgid "_Keep" + msgstr "_Behalten" + ++#: src/client/composer/composer-editor.vala:675 ++msgid "Select Color" ++msgstr "Farbe auswählen" ++ + #: src/client/composer/composer-link-popover.vala:139 + msgid "Link URL is not correctly formatted, e.g. http://example.com" + msgstr "" +@@ -1594,23 +1668,23 @@ msgid "Invalid email address" + msgstr "Ungültige E-Mail-Adresse" + + #. / Translators: Title for an empty composer window +-#: src/client/composer/composer-widget.vala:30 ++#: src/client/composer/composer-widget.vala:32 + msgid "New Message" + msgstr "Neue Nachricht" + +-#: src/client/composer/composer-widget.vala:217 ++#: src/client/composer/composer-widget.vala:167 + msgid "Saved" + msgstr "Gespeichert" + +-#: src/client/composer/composer-widget.vala:218 ++#: src/client/composer/composer-widget.vala:168 + msgid "Saving" + msgstr "Wird gespeichert" + +-#: src/client/composer/composer-widget.vala:219 ++#: src/client/composer/composer-widget.vala:169 + msgid "Error saving" + msgstr "Fehler beim Speichern" + +-#: src/client/composer/composer-widget.vala:220 ++#: src/client/composer/composer-widget.vala:170 + msgid "Press Backspace to delete quote" + msgstr "Rücktaste drücken, um die Einrückung zu entfernen" + +@@ -1619,7 +1693,7 @@ msgstr "Rücktaste drücken, um die Einrückung zu entfernen" + #. checking, include all variants of each word. No spaces are + #. allowed. The words will be converted to lower case based on + #. locale and English versions included automatically. +-#: src/client/composer/composer-widget.vala:236 ++#: src/client/composer/composer-widget.vala:186 + msgid "" + "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" + "enclosing|encloses|enclosure|enclosures" +@@ -1630,115 +1704,105 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:843 ++#: src/client/composer/composer-widget.vala:862 + msgid "Do you want to keep or discard this draft message?" + msgstr "Möchten Sie diesen Nachrichtenentwurf behalten oder verwerfen?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:869 ++#: src/client/composer/composer-widget.vala:888 + msgid "Do you want to discard this draft message?" + msgstr "Möchten Sie diesen Nachrichtenentwurf verwerfen?" + +-#: src/client/composer/composer-widget.vala:1503 ++#: src/client/composer/composer-widget.vala:1440 + msgid "Send message with an empty subject and body?" + msgstr "Nachricht ohne Betreff und Inhalt senden?" + +-#: src/client/composer/composer-widget.vala:1505 ++#: src/client/composer/composer-widget.vala:1442 + msgid "Send message with an empty subject?" + msgstr "Nachricht ohne Betreff senden?" + +-#: src/client/composer/composer-widget.vala:1507 ++#: src/client/composer/composer-widget.vala:1444 + msgid "Send message with an empty body?" + msgstr "Nachricht ohne Inhalt senden?" + +-#: src/client/composer/composer-widget.vala:1516 ++#: src/client/composer/composer-widget.vala:1453 + msgid "Send message without an attachment?" + msgstr "Nachricht ohne Anhang senden?" + +-#: src/client/composer/composer-widget.vala:1820 ++#: src/client/composer/composer-widget.vala:1772 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "»%s« ist bereits als Anhang ausgewählt worden." + +-#: src/client/composer/composer-widget.vala:1856 +-#: src/client/composer/composer-widget.vala:1906 ++#: src/client/composer/composer-widget.vala:1804 ++#: src/client/composer/composer-widget.vala:1854 + #, c-format + msgid "“%s” is an empty file." + msgstr "»%s« ist eine leere Datei." + +-#: src/client/composer/composer-widget.vala:1894 ++#: src/client/composer/composer-widget.vala:1842 + #, c-format + msgid "“%s” could not be found." + msgstr "»%s« konnte nicht gefunden werden." + +-#: src/client/composer/composer-widget.vala:1900 ++#: src/client/composer/composer-widget.vala:1848 + #, c-format + msgid "“%s” is a folder." + msgstr "»%s« ist ein Ordner." + +-#: src/client/composer/composer-widget.vala:1919 ++#: src/client/composer/composer-widget.vala:1867 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "»%s« konnte nicht zum Lesen geöffnet werden." + +-#: src/client/composer/composer-widget.vala:1927 ++#: src/client/composer/composer-widget.vala:1875 + msgid "Cannot add attachment" + msgstr "Anhang kann nicht hinzugefügt werden" + ++#. Translators: This is the name of the file chooser filter ++#. when inserting an image in the composer. ++#: src/client/composer/composer-widget.vala:1946 ++msgid "Images" ++msgstr "Bilder" ++ + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:1984 +-#: src/client/conversation-viewer/conversation-email.vala:559 +-#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312 ++#: src/client/composer/composer-widget.vala:2010 ++#: src/client/conversation-viewer/conversation-email.vala:542 ++#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 + msgid "To:" + msgstr "An:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:1990 +-#: src/client/conversation-viewer/conversation-email.vala:564 +-#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357 ++#: src/client/composer/composer-widget.vala:2016 ++#: src/client/conversation-viewer/conversation-email.vala:547 ++#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Kopie:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:1996 +-#: src/client/conversation-viewer/conversation-email.vala:569 ++#: src/client/composer/composer-widget.vala:2022 ++#: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Blindkopie:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2002 ++#: src/client/composer/composer-widget.vala:2028 + msgid "Reply-To: " + msgstr "Antwort an: " + +-#: src/client/composer/composer-widget.vala:2254 +-msgid "Select Color" +-msgstr "Farbe auswählen" +- + #. Displayed in the From dropdown to indicate an + #. "alternate email address" for an account. The first + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2440 ++#: src/client/composer/composer-widget.vala:2146 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s über %2$s" + +-#. Composer label (with mnemonic underscore) for the account selector +-#. when choosing what address to send a message from. +-#: src/client/composer/composer-widget.vala:2496 +-msgid "_From:" +-msgstr "_Von:" +- +-#. Translators: This is the name of the file chooser filter +-#. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:2801 +-msgid "Images" +-msgstr "Bilder" +- + #: src/client/composer/spell-check-popover.vala:125 + msgid "Remove this language from the preferred list" + msgstr "Diese Sprache aus der Liste der bevorzugten Sprachen entfernen" +@@ -1752,51 +1816,51 @@ msgid "Search for more languages" + msgstr "Nach weiteren Sprachen suchen" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:335 ++#: src/client/conversation-list/conversation-list-view.vala:339 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "Konversation in den _Papierkorb verschieben" + msgstr[1] "Konversationen in den _Papierkorb verschieben" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:347 ++#: src/client/conversation-list/conversation-list-view.vala:351 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "Konversation _löschen" + msgstr[1] "Konversationen _löschen" + +-#: src/client/conversation-list/conversation-list-view.vala:360 ++#: src/client/conversation-list/conversation-list-view.vala:364 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Als _gelesen markieren" + +-#: src/client/conversation-list/conversation-list-view.vala:368 ++#: src/client/conversation-list/conversation-list-view.vala:372 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Als _ungelesen markieren" + +-#: src/client/conversation-list/conversation-list-view.vala:376 ++#: src/client/conversation-list/conversation-list-view.vala:380 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "_Stern entfernen" + +-#: src/client/conversation-list/conversation-list-view.vala:383 ++#: src/client/conversation-list/conversation-list-view.vala:387 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "_Stern" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:392 ++#: src/client/conversation-list/conversation-list-view.vala:396 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "_Antworten" + +-#: src/client/conversation-list/conversation-list-view.vala:398 ++#: src/client/conversation-list/conversation-list-view.vala:402 + msgid "R_eply All" + msgstr "Allen _antworten" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:404 ++#: src/client/conversation-list/conversation-list-view.vala:408 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Weiterleiten" +@@ -1806,20 +1870,20 @@ msgid "Me" + msgstr "Ich" + + #. Translators: Human-readable version of the RFC 822 From header +-#: src/client/conversation-viewer/conversation-email.vala:554 +-#: src/client/util/util-email.vala:226 ++#: src/client/conversation-viewer/conversation-email.vala:537 ++#: src/client/util/util-email.vala:240 + msgid "From:" + msgstr "Von:" + + #. Translators: Human-readable version of the RFC 822 Date header +-#: src/client/conversation-viewer/conversation-email.vala:574 +-#: src/client/util/util-email.vala:231 ++#: src/client/conversation-viewer/conversation-email.vala:557 ++#: src/client/util/util-email.vala:245 + msgid "Date:" + msgstr "Datum:" + + #. Translators: Human-readable version of the RFC 822 Subject header +-#: src/client/conversation-viewer/conversation-email.vala:584 +-#: src/client/util/util-email.vala:229 ++#: src/client/conversation-viewer/conversation-email.vala:567 ++#: src/client/util/util-email.vala:243 + msgid "Subject:" + msgstr "Betreff:" + +@@ -1827,27 +1891,71 @@ msgstr "Betreff:" + msgid "This email address may have been forged" + msgstr "Diese E-Mail-Adresse könnte gefälscht sein" + ++#. Translators: Label text displayed when there are too ++#. many email addresses to be shown by default in an ++#. email's header, but they are all being shown anyway. ++#: src/client/conversation-viewer/conversation-message.vala:234 ++#, fuzzy ++#| msgid "Show Images" ++msgid "Show less" ++msgstr "Bilder anzeigen" ++ ++#. Translators: Label text displayed when there are ++#. too many email addresses to be shown by default in ++#. an email's header. The string substitution is the ++#. number of extra email to be shown. ++#: src/client/conversation-viewer/conversation-message.vala:260 ++#, c-format ++msgid "%d more…" ++msgstr "" ++ + #. Compact headers. These are partially done here and partially + #. in load_contacts. + #. Translators: This is displayed in place of the from address + #. when the message has no from address. +-#: src/client/conversation-viewer/conversation-message.vala:439 ++#: src/client/conversation-viewer/conversation-message.vala:529 + msgid "No sender" + msgstr "Kein Absender" + + #. Translators: This separates multiple 'from' + #. addresses in the compact header for a message. +-#: src/client/conversation-viewer/conversation-message.vala:831 ++#: src/client/conversation-viewer/conversation-message.vala:920 + msgid ", " + msgstr ", " + + #. Translators: This string is used as the HTML IMG ALT + #. attribute value when displaying an inline image in an email + #. that did not specify a file name. E.g. Imagemailing " ++#| "list or attach to a new bug report." + msgid "" + "If the problem is serious or persists, please save and send these details to " +-"the mailing list " +-"or attach to a new bug report." ++"one of the contact " ++"channels or attach to a new bug report." + msgstr "" + "Falls das Problem schwerwiegend ist oder weiterhin besteht, kopieren Sie " + "diese Details und senden Sie sie an die Mailingliste oder erstellen Sie einen neuen Fehlerbericht." + +-#: ui/components-inspector-error-view.ui:49 ++#: ui/components-inspector-error-view.ui:47 + msgid "Details:" + msgstr "Details:" + + #. Tooltip for inspector button +-#: ui/components-inspector.ui:20 ++#. Tooltip for problem report button ++#: ui/components-inspector.ui:19 ui/problem-details-dialog.ui:24 ++msgid "Search for matching log entries" ++msgstr "Nach übereinstimmenden Protokolleinträgen suchen" ++ ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:35 + msgid "Toggle appending new log entries" + msgstr "Neue Protokolleinträge anfügen/nicht anfügen" + + #. Tooltip for inspector button +-#. Tooltip for problem report button +-#: ui/components-inspector.ui:37 ui/problem-details-dialog.ui:19 +-msgid "Search for matching log entries" +-msgstr "Nach übereinstimmenden Protokolleinträgen suchen" ++#: ui/components-inspector.ui:55 ++msgid "Add a marker entry to the log" ++msgstr "" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:63 ui/problem-details-dialog.ui:46 ++#: ui/components-inspector.ui:81 ui/problem-details-dialog.ui:51 + msgid "Save logs entries and details" + msgstr "Protokolleinträge und -details speichern" + + #. Tooltip for inspector button + #. Tooltip for problem report button +-#: ui/components-inspector.ui:84 ui/problem-details-dialog.ui:62 ++#: ui/components-inspector.ui:101 ui/problem-details-dialog.ui:67 + msgid "Copy to clipboard" + msgstr "In die Zwischenablage kopieren" + ++#. Tooltip for inspector button ++#: ui/components-inspector.ui:121 ++#, fuzzy ++#| msgid "Search for matching log entries" ++msgid "Clears all log entries" ++msgstr "Nach übereinstimmenden Protokolleinträgen suchen" ++ + #: ui/conversation-contact-popover.ui:146 + msgid "New Conversation…" + msgstr "Neue Konversation …" +@@ -3048,27 +3329,6 @@ msgstr "Diese Nachricht mit einem Stern markieren" + msgid "Mark this message as not starred" + msgstr "Sternmarkierung von dieser Nachricht entfernen" + +-#: ui/conversation-email.ui:124 +-msgid "Edit Draft" +-msgstr "Entwurf bearbeiten" +- +-#: ui/conversation-email.ui:151 +-msgid "Draft message" +-msgstr "Nachrichtenentwurf" +- +-#: ui/conversation-email.ui:167 +-msgid "This message has not yet been sent." +-msgstr "Diese Nachricht wurde noch nicht versendet." +- +-#: ui/conversation-email.ui:213 +-msgid "Message not saved" +-msgstr "Nachricht nicht gespeichert" +- +-#: ui/conversation-email.ui:229 +-msgid "This message was sent, but has not been saved to your account." +-msgstr "" +-"Diese Nachricht wurde gesendet, wurde aber nicht in Ihrem Konto gespeichert." +- + #. Translators: Menu item to reply to a specific message. + #: ui/conversation-email-menus.ui:15 + msgid "Reply to _All" +@@ -3176,23 +3436,6 @@ msgstr "Antwort an:" + msgid "Subject" + msgstr "Betreff" + +-#: ui/conversation-message.ui:501 +-msgid "Show Images" +-msgstr "Bilder anzeigen" +- +-#: ui/conversation-message.ui:514 +-msgid "Always Show From Sender" +-msgstr "Von diesem Absender immer anzeigen" +- +-# habe aus fuer remote aus "entfernt" "extern gemacht, da entfernt auch ein Synonym fuer geloescht, also von der Nachricht entfernte Bilder sein kann. +-#: ui/conversation-message.ui:542 +-msgid "Remote images not shown" +-msgstr "Externe Bilder werden nicht angezeigt" +- +-#: ui/conversation-message.ui:559 +-msgid "Only show remote images from senders you trust." +-msgstr "Externe Bilder nur von Absendern anzeigen, denen Sie vertrauen." +- + #: ui/conversation-viewer.ui:60 + msgid "Find in conversation" + msgstr "In Konversation suchen" +@@ -3229,7 +3472,7 @@ msgstr "Beschriftung" + msgid "Conversation Shortcuts" + msgstr "Tastenkombinationen für Konversationen" + +-#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:355 ++#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:377 + msgctxt "shortcut window" + msgid "Actions" + msgstr "Aktionen" +@@ -3244,37 +3487,37 @@ msgctxt "shortcut window" + msgid "Reply to sender" + msgstr "Absender antworten" + +-#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:269 ++#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:281 + msgctxt "shortcut window" + msgid "Reply to all" + msgstr "Allen antworten" + +-#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:276 ++#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:288 + msgctxt "shortcut window" + msgid "Forward" + msgstr "Weiterleiten" + +-#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:283 ++#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:295 + msgctxt "shortcut window" + msgid "Un-mark/mark read" + msgstr "Als ungelesen/gelesen markieren" + +-#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:290 ++#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:302 + msgctxt "shortcut window" + msgid "Mark/un-mark starred" + msgstr "Markieren/Markierung entfernen" + +-#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:297 ++#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:309 + msgctxt "shortcut window" + msgid "Archive conversations" + msgstr "Konversationen archivieren" + +-#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:304 ++#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:326 + msgctxt "shortcut window" + msgid "Move conversations" + msgstr "Konversationen verschieben" + +-#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:311 ++#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:333 + msgctxt "shortcut window" + msgid "Label conversations" + msgstr "Konversationen eine Beschriftung zuweisen" +@@ -3284,12 +3527,12 @@ msgctxt "shortcut window" + msgid "Trash conversations" + msgstr "Konversationen in den Papierkorb verschieben" + +-#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:318 ++#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:340 + msgctxt "shortcut window" + msgid "Junk conversations" + msgstr "Konversationen in den Spam-Ordner verschieben" + +-#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:325 ++#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:347 + msgctxt "shortcut window" + msgid "Delete conversations" + msgstr "Konversationen löschen" +@@ -3304,7 +3547,7 @@ msgctxt "shortcut window" + msgid "Search for conversations" + msgstr "Nach Konversationen suchen" + +-#: ui/gtk/help-overlay.ui:115 ++#: ui/gtk/help-overlay.ui:115 ui/gtk/help-overlay.ui:354 + msgctxt "shortcut window" + msgid "Find in current conversation" + msgstr "In aktueller Konversation suchen" +@@ -3344,7 +3587,7 @@ msgctxt "shortcut window" + msgid "Reset zoom" + msgstr "Vergrößerung zurücksetzen" + +-#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:375 ++#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:404 + msgctxt "shortcut window" + msgid "General" + msgstr "Allgemein" +@@ -3394,121 +3637,134 @@ msgctxt "shortcut window" + msgid "Focus next/previous message" + msgstr "Nächste/Vorherige Nachricht fokussieren" + +-#: ui/gtk/help-overlay.ui:258 ++#: ui/gtk/help-overlay.ui:260 ++#, fuzzy ++#| msgctxt "shortcut window" ++#| msgid "Single-key shortcuts" ++msgid "Single-key Shortcuts" ++msgstr "Einfache Tastenkürzel" ++ ++#: ui/gtk/help-overlay.ui:265 ++#, fuzzy ++#| msgctxt "shortcut window" ++#| msgid "Single-key shortcuts" + msgctxt "shortcut window" +-msgid "Single-key shortcuts" ++msgid "Single-key shortcuts (if enabled)" + msgstr "Einfache Tastenkürzel" + +-#: ui/gtk/help-overlay.ui:262 ++#: ui/gtk/help-overlay.ui:274 + msgctxt "shortcut window" + msgid "Reply to sender " + msgstr "Absender antworten " + +-#: ui/gtk/help-overlay.ui:332 +-msgctxt "shortcut window" +-msgid "Find in current conversations" +-msgstr "In aktuellen Konversationen suchen" +- +-#: ui/gtk/help-overlay.ui:339 ++#: ui/gtk/help-overlay.ui:361 + msgctxt "shortcut window" + msgid "Select next/previous conversations" + msgstr "Nächste/Vorherige Konversationen auswählen" + +-#: ui/gtk/help-overlay.ui:351 ++#: ui/gtk/help-overlay.ui:373 + msgid "Composer Shortcuts" + msgstr "Tastenkombinationen beim Verfassen" + +-#: ui/gtk/help-overlay.ui:359 ++#: ui/gtk/help-overlay.ui:381 + msgctxt "shortcut window" + msgid "Send" + msgstr "Senden" + +-#: ui/gtk/help-overlay.ui:366 ++#: ui/gtk/help-overlay.ui:388 + msgctxt "shortcut window" + msgid "Add attachment" + msgstr "Anhang hinzufügen" + +-#: ui/gtk/help-overlay.ui:379 ++#: ui/gtk/help-overlay.ui:395 ++#, fuzzy ++#| msgctxt "shortcut window" ++#| msgid "Detach composer window" ++msgctxt "shortcut window" ++msgid "Detach the composer" ++msgstr "»Verfassen«-Fenster abkoppeln" ++ ++#: ui/gtk/help-overlay.ui:408 + msgctxt "shortcut window" + msgid "Close composer window" + msgstr "»Verfassen«-Fenster schließen" + +-#: ui/gtk/help-overlay.ui:386 ++#: ui/gtk/help-overlay.ui:415 + msgctxt "shortcut window" + msgid "Detach composer window" + msgstr "»Verfassen«-Fenster abkoppeln" + +-#: ui/gtk/help-overlay.ui:393 ++#: ui/gtk/help-overlay.ui:422 + msgctxt "shortcut window" + msgid "Editing" + msgstr "Bearbeitung" + +-#: ui/gtk/help-overlay.ui:398 ++#: ui/gtk/help-overlay.ui:427 + msgctxt "shortcut window" + msgid "Move selection to the clipboard" + msgstr "Auswahl in die Zwischenablage legen" + +-#: ui/gtk/help-overlay.ui:405 ++#: ui/gtk/help-overlay.ui:434 + msgctxt "shortcut window" + msgid "Copy selection to clipboard" + msgstr "Auswahl kopieren" + +-#: ui/gtk/help-overlay.ui:412 ++#: ui/gtk/help-overlay.ui:441 + msgctxt "shortcut window" + msgid "Paste from the clipboard" + msgstr "Zwischenablage einfügen" + +-#: ui/gtk/help-overlay.ui:419 ++#: ui/gtk/help-overlay.ui:448 + msgctxt "shortcut window" + msgid "Quote text" + msgstr "Text einrücken" + +-#: ui/gtk/help-overlay.ui:426 ++#: ui/gtk/help-overlay.ui:455 + msgctxt "shortcut window" + msgid "Unquote text" + msgstr "Einrückung aufheben" + +-#: ui/gtk/help-overlay.ui:435 ++#: ui/gtk/help-overlay.ui:464 + msgctxt "shortcut window" + msgid "Rich text editing" + msgstr "Formatierter Text" + +-#: ui/gtk/help-overlay.ui:439 ++#: ui/gtk/help-overlay.ui:468 + msgctxt "shortcut window" + msgid "Paste without formatting" + msgstr "Ohne Formatierung einfügen" + +-#: ui/gtk/help-overlay.ui:446 ++#: ui/gtk/help-overlay.ui:475 + msgctxt "shortcut window" + msgid "Bold text" + msgstr "Fetter Text" + +-#: ui/gtk/help-overlay.ui:453 ++#: ui/gtk/help-overlay.ui:482 + msgctxt "shortcut window" + msgid "Italicize text" + msgstr "Kursiver Text" + +-#: ui/gtk/help-overlay.ui:460 ++#: ui/gtk/help-overlay.ui:489 + msgctxt "shortcut window" + msgid "Underline text" + msgstr "Unterstrichener Text" + +-#: ui/gtk/help-overlay.ui:467 ++#: ui/gtk/help-overlay.ui:496 + msgctxt "shortcut window" + msgid "Strike text" + msgstr "Durchgestrichener Text" + +-#: ui/gtk/help-overlay.ui:474 ++#: ui/gtk/help-overlay.ui:503 + msgctxt "shortcut window" + msgid "Remove formatting" + msgstr "Formatierung löschen" + +-#: ui/gtk/help-overlay.ui:481 ++#: ui/gtk/help-overlay.ui:510 + msgctxt "shortcut window" + msgid "Insert an image" + msgstr "Bild einfügen" + +-#: ui/gtk/help-overlay.ui:488 ++#: ui/gtk/help-overlay.ui:517 + msgctxt "shortcut window" + msgid "Insert a link" + msgstr "Einen Verweis einfügen" +@@ -3543,26 +3799,20 @@ msgid "_Archive" + msgstr "_Archivieren" + + #: ui/main-toolbar-menus.ui:21 +-msgid "Toggle as S_pam" ++#, fuzzy ++#| msgid "Toggle as S_pam" ++msgid "Toggle as _Junk" + msgstr "S_pam-Markierung umschalten" + + #: ui/main-toolbar-menus.ui:28 +-msgid "Empty _Spam…" +-msgstr "_Spam leeren …" +- +-#: ui/main-toolbar-menus.ui:32 +-msgid "Empty _Trash…" +-msgstr "_Papierkorb leeren …" +- +-#: ui/main-toolbar-menus.ui:38 + msgid "_Accounts" + msgstr "_Konten" + +-#: ui/main-toolbar-menus.ui:46 ++#: ui/main-toolbar-menus.ui:36 + msgid "_Keyboard Shortcuts" + msgstr "_Tastenkombinationen" + +-#: ui/main-toolbar-menus.ui:57 ++#: ui/main-toolbar-menus.ui:47 + msgid "_About Geary" + msgstr "_Info zu Geary" + +@@ -3586,6 +3836,58 @@ msgstr "_Legitimieren" + msgid "Geary update in progress…" + msgstr "Aktualisierung von Geary wird durchgeführt …" + ++#~ msgid "Log periodic activity" ++#~ msgstr "Regelmäßige Aktivitäten protokollieren" ++ ++#~ msgid "Log IMAP network serialization" ++#~ msgstr "IMAP-Netzwerkserialisierung protokollieren" ++ ++#~ msgid "Sent Mail" ++#~ msgstr "Gesendete E-Mails" ++ ++#~ msgid "Spam" ++#~ msgstr "Spam" ++ ++#~ msgid "" ++#~ "Your computer does not appear to be connected to the Internet.\n" ++#~ "You will not be able to send or receive email until it is re-connected." ++#~ msgstr "" ++#~ "Ihr Rechner scheint nicht mit dem Internet verbunden zu sein.\n" ++#~ "Sie können keine E-Mails senden oder empfangen, bis er wieder verbunden " ++#~ "ist." ++ ++#~ msgid "" ++#~ "An account has reported an untrusted server.\n" ++#~ "Please check the server configuration and try again." ++#~ msgstr "" ++#~ "Ein Konto hat einen nicht vertrauenswürdigen Server gemeldet.\n" ++#~ "Bitte prüfen Sie die Servereinstellungen und versuchen Sie es erneut." ++ ++# Das ist im Original schon irreführend: Es reicht nicht, den Benutzernamen ++# zu prüfen, auch das Passwort könnte falsch sein. ++#~ msgid "" ++#~ "An account has reported an incorrect login or password.\n" ++#~ "Please check your login name and try again." ++#~ msgstr "" ++#~ "Ein Konto hat einen falschen Benutzernamen oder Passwort gemeldet.\n" ++#~ "Bitte prüfen Sie Ihre Anmeldedaten und versuchen Sie es erneut." ++ ++#~ msgid "From" ++#~ msgstr "Von" ++ ++#~ msgid "Edit Draft" ++#~ msgstr "Entwurf bearbeiten" ++ ++#~ msgctxt "shortcut window" ++#~ msgid "Find in current conversations" ++#~ msgstr "In aktuellen Konversationen suchen" ++ ++#~ msgid "Empty _Spam…" ++#~ msgstr "_Spam leeren …" ++ ++#~ msgid "Empty _Trash…" ++#~ msgstr "_Papierkorb leeren …" ++ + #~ msgid "Open this link" + #~ msgstr "Diesen Verweis öffnen" + +@@ -3611,9 +3913,6 @@ msgstr "Aktualisierung von Geary wird durchgeführt …" + #~ "Legt fest, ob Klänge für Benachrichtigungen und beim Senden abgespielt " + #~ "werden sollen." + +-#~ msgid "Show notifications for new mail" +-#~ msgstr "Benachrichtigung bei neuen Nachrichten anzeigen" +- + #~ msgid "True to show notification bubbles." + #~ msgstr "Legt fest, ob Benachrichtigungen angezeigt werden sollen." + +@@ -3861,10 +4160,6 @@ msgstr "Aktualisierung von Geary wird durchgeführt …" + #~ msgid "Additional Shortcuts" + #~ msgstr "Weitere Tastenkombinationen" + +-#~ msgctxt "shortcut window" +-#~ msgid "Star" +-#~ msgstr "Stern" +- + #~ msgctxt "shortcut window" + #~ msgid "Unstar" + #~ msgstr "Stern entfernen" +@@ -3911,9 +4206,6 @@ msgstr "Aktualisierung von Geary wird durchgeführt …" + #~ msgid "Show _notifications for new mail" + #~ msgstr "Benachrichtigung bei _neuen E-Mails anzeigen" + +-#~ msgid "Preferences" +-#~ msgstr "Einstellungen" +- + #~ msgid "" + #~ "Copy technical details to clipboard for pasting into an email or bug " + #~ "report" +-- +2.29.2 + diff --git a/mail-client/geary/files/0119-Update-Ukrainian-translation.patch b/mail-client/geary/files/0119-Update-Ukrainian-translation.patch new file mode 100644 index 0000000..283aa1d --- /dev/null +++ b/mail-client/geary/files/0119-Update-Ukrainian-translation.patch @@ -0,0 +1,756 @@ +From c269c655d8e8a86c1d866bbe0047130587cd6caa Mon Sep 17 00:00:00 2001 +From: Yuri Chornoivan +Date: Thu, 29 Oct 2020 18:11:36 +0000 +Subject: [PATCH 119/124] Update Ukrainian translation + +--- + po/uk.po | 257 ++++++++++++++++++++++++++++--------------------------- + 1 file changed, 129 insertions(+), 128 deletions(-) + +diff --git a/po/uk.po b/po/uk.po +index d07c78e6..b424d3a2 100644 +--- a/po/uk.po ++++ b/po/uk.po +@@ -12,8 +12,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary-0.4.1\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-10-12 10:41+0000\n" +-"PO-Revision-Date: 2020-10-12 20:40+0300\n" ++"POT-Creation-Date: 2020-10-29 12:58+0000\n" ++"PO-Revision-Date: 2020-10-29 20:10+0200\n" + "Last-Translator: Yuri Chornoivan \n" + "Language-Team: Ukrainian \n" + "Language: uk\n" +@@ -805,131 +805,131 @@ msgid "Visit the Geary web site" + msgstr "Відвідати сайт Geary" + + #. / Command line option +-#: src/client/application/application-client.vala:97 ++#: src/client/application/application-client.vala:102 + msgid "Print debug logging" + msgstr "Виводити діагностичні повідомлення" + + #. / Command line option +-#: src/client/application/application-client.vala:100 ++#: src/client/application/application-client.vala:105 + msgid "Start with the main window hidden (deprecated)" + msgstr "Запустити із прихованим головним вікном (застаріле)" + + #. / Command line option +-#: src/client/application/application-client.vala:103 ++#: src/client/application/application-client.vala:108 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "Увімкнути ревізор WebKitGTK на панелях вебперегляду" + + #. / Command line option +-#: src/client/application/application-client.vala:106 ++#: src/client/application/application-client.vala:111 + msgid "Log conversation monitoring" + msgstr "Журнал спостереження за спілкуванням" + + #. / Command line option +-#: src/client/application/application-client.vala:109 ++#: src/client/application/application-client.vala:114 + msgid "Log IMAP network deserialization" + msgstr "" + "Записувати до журналу розкладення роботи з мережею IMAP у послідовну форму" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/application-client.vala:113 ++#: src/client/application/application-client.vala:118 + msgid "Log folder normalization" + msgstr "Журнал нормування тек" + + #. / Command line option +-#: src/client/application/application-client.vala:116 ++#: src/client/application/application-client.vala:121 + msgid "Log IMAP network activity" + msgstr "Журнал мережевої діяльності IMAP" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could + #. / also be called the IMAP events queue. +-#: src/client/application/application-client.vala:121 ++#: src/client/application/application-client.vala:126 + msgid "Log IMAP replay queue" + msgstr "Журнал черги відповідей IMAP" + + #. / Command line option +-#: src/client/application/application-client.vala:124 ++#: src/client/application/application-client.vala:129 + msgid "Log SMTP network activity" + msgstr "Журнал мережевої діяльності SMTP" + + #. / Command line option +-#: src/client/application/application-client.vala:127 ++#: src/client/application/application-client.vala:132 + msgid "Log database queries (generates lots of messages)" + msgstr "Журнал запитів баз даних (породжує багато повідомлень)" + + #. / Command line option +-#: src/client/application/application-client.vala:130 ++#: src/client/application/application-client.vala:135 + msgid "Perform a graceful quit" + msgstr "Виконати штатне завершення роботи" + +-#: src/client/application/application-client.vala:132 ++#: src/client/application/application-client.vala:137 + msgid "Open a new window" + msgstr "Відкрити нове вікно" + + #. / Command line option +-#: src/client/application/application-client.vala:135 ++#: src/client/application/application-client.vala:140 + msgid "Revoke all pinned TLS server certificates" + msgstr "Відкликати усі пришпилені сертифікати TLS сервера" + + #. / Command line option +-#: src/client/application/application-client.vala:138 ++#: src/client/application/application-client.vala:143 + msgid "Display program version" + msgstr "Показати версію програми" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:262 ++#: src/client/application/application-client.vala:275 + msgid "Geary version" + msgstr "Версія Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:264 ++#: src/client/application/application-client.vala:277 + msgid "Geary revision" + msgstr "Модифікація Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:266 ++#: src/client/application/application-client.vala:279 + msgid "GTK version" + msgstr "Версія GTK" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:273 ++#: src/client/application/application-client.vala:286 + msgid "GLib version" + msgstr "Версія GLib" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:280 ++#: src/client/application/application-client.vala:293 + msgid "WebKitGTK version" + msgstr "Версія WebKitGTK" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:287 ++#: src/client/application/application-client.vala:300 + msgid "Desktop environment" + msgstr "Стільничне середовище" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:289 ++#: src/client/application/application-client.vala:302 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Невідомий" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:293 ++#: src/client/application/application-client.vala:306 + msgid "Distribution name" + msgstr "Назва дистрибутива" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:298 ++#: src/client/application/application-client.vala:311 + msgid "Distribution release" + msgstr "Поширений випуск" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:303 ++#: src/client/application/application-client.vala:316 + msgid "Installation prefix" + msgstr "Префікс встановлення" + +-#: src/client/application/application-client.vala:559 ++#: src/client/application/application-client.vala:573 + #, c-format + msgid "About %s" + msgstr "Інформація про %s" +@@ -937,13 +937,13 @@ msgstr "Інформація про %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:563 ++#: src/client/application/application-client.vala:577 + msgid "translator-credits" + msgstr "Daniel Korostil " + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1045 ++#: src/client/application/application-client.vala:1096 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "" + "Параметр «--hidden» вважається застарілим. Його буде вилучено у майбутніх " +@@ -951,24 +951,24 @@ msgstr "" + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1078 ++#: src/client/application/application-client.vala:1129 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Нерозпізнаний аргумент команди: «%s»" + + #. / Notification title. +-#: src/client/application/application-controller.vala:479 ++#: src/client/application/application-controller.vala:490 + #, c-format + msgid "A problem occurred sending email for %s" + msgstr "Під час спроби надіслати повідомлення для %s виникла проблема" + + #. / Notification body +-#: src/client/application/application-controller.vala:483 ++#: src/client/application/application-controller.vala:494 + msgid "Email will not be sent until re-connected" + msgstr "Повідомлення не буде надіслано до відновлення з'єднання" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:582 ++#: src/client/application/application-controller.vala:593 + msgid "Conversation marked" + msgid_plural "Conversations marked" + msgstr[0] "Спілкування позначено" +@@ -977,7 +977,7 @@ msgstr[2] "Спілкування позначено" + msgstr[3] "Спілкування позначено" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:588 ++#: src/client/application/application-controller.vala:599 + msgid "Conversation un-marked" + msgid_plural "Conversations un-marked" + msgstr[0] "Позначення спілкувань скасовано" +@@ -988,8 +988,8 @@ msgstr[3] "Позначення спілкування скасовано" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:614 +-#: src/client/application/application-controller.vala:698 ++#: src/client/application/application-controller.vala:625 ++#: src/client/application/application-controller.vala:709 + #, c-format + msgid "Conversation moved to %s" + msgid_plural "Conversations moved to %s" +@@ -1003,8 +1003,8 @@ msgstr[3] "Спілкування пересунуто до %s" + #. / of the source folder. + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:622 +-#: src/client/application/application-controller.vala:644 ++#: src/client/application/application-controller.vala:633 ++#: src/client/application/application-controller.vala:655 + #, c-format + msgid "Conversation restored to %s" + msgid_plural "Conversations restored to %s" +@@ -1014,7 +1014,7 @@ msgstr[2] "Спілкування відновлено у %s" + msgstr[3] "Спілкування відновлено у %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:665 ++#: src/client/application/application-controller.vala:676 + msgid "Conversation archived" + msgid_plural "Conversations archived" + msgstr[0] "Спілкування архівовано" +@@ -1024,7 +1024,7 @@ msgstr[3] "Спілкування архівовано" + + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:721 ++#: src/client/application/application-controller.vala:732 + #, c-format + msgid "Message restored to %s" + msgid_plural "Messages restored to %s" +@@ -1034,7 +1034,7 @@ msgstr[2] "Повідомлення відновлено у %s" + msgstr[3] "Повідомлення відновлено у %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:742 ++#: src/client/application/application-controller.vala:753 + msgid "Message archived" + msgid_plural "Messages archived" + msgstr[0] "Повідомлення архівовано" +@@ -1045,7 +1045,7 @@ msgstr[3] "Повідомлення архівовано" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:777 ++#: src/client/application/application-controller.vala:788 + #, c-format + msgid "Message moved to %s" + msgid_plural "Messages moved to %s" +@@ -1057,7 +1057,7 @@ msgstr[3] "Повідомлення пересунуто до %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:805 ++#: src/client/application/application-controller.vala:816 + #, c-format + msgid "Conversation labelled as %s" + msgid_plural "Conversations labelled as %s" +@@ -1069,7 +1069,7 @@ msgstr[3] "Спілкування позначено як %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:813 ++#: src/client/application/application-controller.vala:824 + #, c-format + msgid "Conversation un-labelled as %s" + msgid_plural "Conversations un-labelled as %s" +@@ -1078,12 +1078,12 @@ msgstr[1] "Скасовано позначення спілкувань як %s" + msgstr[2] "Скасовано позначення спілкувань як %s" + msgstr[3] "Скасовано позначення спілкування як %s" + +-#: src/client/application/application-controller.vala:1320 ++#: src/client/application/application-controller.vala:1331 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Неможливо відкрити базу даних для %s" + +-#: src/client/application/application-controller.vala:1321 ++#: src/client/application/application-controller.vala:1332 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1108,20 +1108,20 @@ msgstr "" + "Перезбирання бази даних знищить всю локальну пошту та її долучень. На " + "пошту на вашому сервері це не поширюється." + +-#: src/client/application/application-controller.vala:1323 ++#: src/client/application/application-controller.vala:1334 + msgid "_Rebuild" + msgstr "_Перебудувати" + +-#: src/client/application/application-controller.vala:1323 ++#: src/client/application/application-controller.vala:1334 + msgid "E_xit" + msgstr "В_ийти" + +-#: src/client/application/application-controller.vala:1333 ++#: src/client/application/application-controller.vala:1344 + #, c-format + msgid "Unable to rebuild database for “%s”" + msgstr "Не вдалося перебудувати базу даних для «%s»" + +-#: src/client/application/application-controller.vala:1334 ++#: src/client/application/application-controller.vala:1345 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1134,34 +1134,34 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1501 ++#: src/client/application/application-controller.vala:1512 + #, c-format + msgid "Email sent to %s" + msgstr "Повідомлення надіслано %s" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2491 ++#: src/client/application/application-controller.vala:2502 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "Повідомлення до %s заплановано до надсилання" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2555 ++#: src/client/application/application-controller.vala:2566 + #, c-format + msgid "Email to %s saved" + msgstr "Повідомлення до %s збережено" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2570 +-#: src/client/application/application-controller.vala:2628 ++#: src/client/application/application-controller.vala:2581 ++#: src/client/application/application-controller.vala:2639 + msgid "Composer could not be restored" + msgstr "Не вдалося відновити вміст редактора" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2613 ++#: src/client/application/application-controller.vala:2624 + #, c-format + msgid "Email to %s discarded" + msgstr "Повідомлення до %s відкинуто" +@@ -1286,7 +1286,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1792 ++#: src/client/composer/composer-widget.vala:1788 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1691,81 +1691,81 @@ msgstr "Хочете зберегти чи відкинути цю чернет + msgid "Do you want to discard this draft message?" + msgstr "Хочете відкинути цю чернетку повідомлення?" + +-#: src/client/composer/composer-widget.vala:1448 ++#: src/client/composer/composer-widget.vala:1443 + msgid "Send message with an empty subject and body?" + msgstr "Надіслати лист без теми і текстом листа?" + +-#: src/client/composer/composer-widget.vala:1450 ++#: src/client/composer/composer-widget.vala:1445 + msgid "Send message with an empty subject?" + msgstr "Надіслати лист без теми?" + +-#: src/client/composer/composer-widget.vala:1452 ++#: src/client/composer/composer-widget.vala:1447 + msgid "Send message with an empty body?" + msgstr "Надіслати лист без тексту?" + +-#: src/client/composer/composer-widget.vala:1461 ++#: src/client/composer/composer-widget.vala:1456 + msgid "Send message without an attachment?" + msgstr "Надіслати лист без долучень?" + +-#: src/client/composer/composer-widget.vala:1780 ++#: src/client/composer/composer-widget.vala:1776 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "«%s» уже долучено для доставлення." + +-#: src/client/composer/composer-widget.vala:1812 +-#: src/client/composer/composer-widget.vala:1862 ++#: src/client/composer/composer-widget.vala:1808 ++#: src/client/composer/composer-widget.vala:1858 + #, c-format + msgid "“%s” is an empty file." + msgstr "«%s» — порожній файл." + +-#: src/client/composer/composer-widget.vala:1850 ++#: src/client/composer/composer-widget.vala:1846 + #, c-format + msgid "“%s” could not be found." + msgstr "Не вдалося знайти «%s»." + +-#: src/client/composer/composer-widget.vala:1856 ++#: src/client/composer/composer-widget.vala:1852 + #, c-format + msgid "“%s” is a folder." + msgstr "«%s» — тека." + +-#: src/client/composer/composer-widget.vala:1875 ++#: src/client/composer/composer-widget.vala:1871 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "Не вдалося відкрити «%s» для читання." + +-#: src/client/composer/composer-widget.vala:1883 ++#: src/client/composer/composer-widget.vala:1879 + msgid "Cannot add attachment" + msgstr "Неможливо додати долучення" + + #. Translators: This is the name of the file chooser filter + #. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:1954 ++#: src/client/composer/composer-widget.vala:1950 + msgid "Images" + msgstr "Зображення" + + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:2018 ++#: src/client/composer/composer-widget.vala:2014 + #: src/client/conversation-viewer/conversation-email.vala:542 +-#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 ++#: src/client/util/util-email.vala:265 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Кому:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:2024 ++#: src/client/composer/composer-widget.vala:2020 + #: src/client/conversation-viewer/conversation-email.vala:547 +-#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 ++#: src/client/util/util-email.vala:270 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Копія:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2030 ++#: src/client/composer/composer-widget.vala:2026 + #: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Потайна копія:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2036 ++#: src/client/composer/composer-widget.vala:2032 + msgid "Reply-To: " + msgstr "Відповісти:" + +@@ -1774,7 +1774,7 @@ msgstr "Відповісти:" + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2154 ++#: src/client/composer/composer-widget.vala:2150 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s через %2$s" +@@ -1851,19 +1851,19 @@ msgstr "Я" + + #. Translators: Human-readable version of the RFC 822 From header + #: src/client/conversation-viewer/conversation-email.vala:537 +-#: src/client/util/util-email.vala:240 ++#: src/client/util/util-email.vala:256 + msgid "From:" + msgstr "Від:" + + #. Translators: Human-readable version of the RFC 822 Date header + #: src/client/conversation-viewer/conversation-email.vala:557 +-#: src/client/util/util-email.vala:245 ++#: src/client/util/util-email.vala:261 + msgid "Date:" + msgstr "Дата:" + + #. Translators: Human-readable version of the RFC 822 Subject header + #: src/client/conversation-viewer/conversation-email.vala:567 +-#: src/client/util/util-email.vala:243 ++#: src/client/util/util-email.vala:259 + msgid "Subject:" + msgstr "Тема:" + +@@ -1891,65 +1891,65 @@ msgstr "ще %d…" + #. in load_contacts. + #. Translators: This is displayed in place of the from address + #. when the message has no from address. +-#: src/client/conversation-viewer/conversation-message.vala:529 ++#: src/client/conversation-viewer/conversation-message.vala:556 + msgid "No sender" + msgstr "Немає відправника" + + #. Translators: This separates multiple 'from' + #. addresses in the compact header for a message. +-#: src/client/conversation-viewer/conversation-message.vala:920 ++#: src/client/conversation-viewer/conversation-message.vala:1049 + msgid ", " + msgstr ", " + + #. Translators: This string is used as the HTML IMG ALT + #. attribute value when displaying an inline image in an email + #. that did not specify a file name. E.g. Image +Date: Sun, 1 Nov 2020 10:51:17 +0100 +Subject: [PATCH 120/124] Update Polish translation + +--- + po/pl.po | 250 +++++++++++++++++++++++++++---------------------------- + 1 file changed, 122 insertions(+), 128 deletions(-) + +diff --git a/po/pl.po b/po/pl.po +index 5488ffd3..a34dff32 100644 +--- a/po/pl.po ++++ b/po/pl.po +@@ -16,8 +16,8 @@ msgid "" + msgstr "" + "Project-Id-Version: geary\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-10-12 10:41+0000\n" +-"PO-Revision-Date: 2020-10-18 12:30+0200\n" ++"POT-Creation-Date: 2020-10-29 12:58+0000\n" ++"PO-Revision-Date: 2020-11-01 10:48+0100\n" + "Last-Translator: Piotr Drąg \n" + "Language-Team: Polish \n" + "Language: pl\n" +@@ -796,131 +796,131 @@ msgid "Visit the Geary web site" + msgstr "Witryna programu Geary" + + #. / Command line option +-#: src/client/application/application-client.vala:97 ++#: src/client/application/application-client.vala:102 + msgid "Print debug logging" + msgstr "Wyświetla komunikaty dziennika debugowania" + + #. / Command line option +-#: src/client/application/application-client.vala:100 ++#: src/client/application/application-client.vala:105 + msgid "Start with the main window hidden (deprecated)" + msgstr "Uruchamia z ukrytym głównym oknem (przestarzałe)" + + #. / Command line option +-#: src/client/application/application-client.vala:103 ++#: src/client/application/application-client.vala:108 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "Włącza Inspektora biblioteki WebKitGTK w widokach WWW" + + #. / Command line option +-#: src/client/application/application-client.vala:106 ++#: src/client/application/application-client.vala:111 + msgid "Log conversation monitoring" + msgstr "Zapisuje w dzienniku monitoring wątków" + + #. / Command line option +-#: src/client/application/application-client.vala:109 ++#: src/client/application/application-client.vala:114 + msgid "Log IMAP network deserialization" + msgstr "Zapisuje w dzienniku deserializację sieciową IMAP" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/application-client.vala:113 ++#: src/client/application/application-client.vala:118 + msgid "Log folder normalization" + msgstr "Zapisuje w dzienniku normalizacje katalogów" + + #. / Command line option +-#: src/client/application/application-client.vala:116 ++#: src/client/application/application-client.vala:121 + msgid "Log IMAP network activity" + msgstr "Zapisuje w dzienniku aktywność sieciową IMAP" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could + #. / also be called the IMAP events queue. +-#: src/client/application/application-client.vala:121 ++#: src/client/application/application-client.vala:126 + msgid "Log IMAP replay queue" + msgstr "Zapisuje w dzienniku kolejkę odpowiedzi IMAP" + + #. / Command line option +-#: src/client/application/application-client.vala:124 ++#: src/client/application/application-client.vala:129 + msgid "Log SMTP network activity" + msgstr "Zapisuje w dzienniku aktywność sieciową SMTP" + + #. / Command line option +-#: src/client/application/application-client.vala:127 ++#: src/client/application/application-client.vala:132 + msgid "Log database queries (generates lots of messages)" + msgstr "" + "Zapisuje w dzienniku zapytania do bazy danych (generuje dużo komunikatów)" + + #. / Command line option +-#: src/client/application/application-client.vala:130 ++#: src/client/application/application-client.vala:135 + msgid "Perform a graceful quit" + msgstr "Poprawnie kończy działanie" + +-#: src/client/application/application-client.vala:132 ++#: src/client/application/application-client.vala:137 + msgid "Open a new window" + msgstr "Otwiera nowe okno" + + #. / Command line option +-#: src/client/application/application-client.vala:135 ++#: src/client/application/application-client.vala:140 + msgid "Revoke all pinned TLS server certificates" + msgstr "Unieważnia wszystkie przypięte certyfikaty serwerów TLS" + + #. / Command line option +-#: src/client/application/application-client.vala:138 ++#: src/client/application/application-client.vala:143 + msgid "Display program version" + msgstr "Wyświetla wersję programu" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:262 ++#: src/client/application/application-client.vala:275 + msgid "Geary version" + msgstr "Wersja programu Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:264 ++#: src/client/application/application-client.vala:277 + msgid "Geary revision" + msgstr "Wydanie programu Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:266 ++#: src/client/application/application-client.vala:279 + msgid "GTK version" + msgstr "Wersja biblioteki GTK" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:273 ++#: src/client/application/application-client.vala:286 + msgid "GLib version" + msgstr "Wersja biblioteki GLib" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:280 ++#: src/client/application/application-client.vala:293 + msgid "WebKitGTK version" + msgstr "Wersja biblioteki WebKitGTK" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:287 ++#: src/client/application/application-client.vala:300 + msgid "Desktop environment" + msgstr "Środowisko pulpitu" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:289 ++#: src/client/application/application-client.vala:302 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Nieznany" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:293 ++#: src/client/application/application-client.vala:306 + msgid "Distribution name" + msgstr "Nazwa dystrybucji" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:298 ++#: src/client/application/application-client.vala:311 + msgid "Distribution release" + msgstr "Wydanie dystrybucji" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:303 ++#: src/client/application/application-client.vala:316 + msgid "Installation prefix" + msgstr "Przedrostek instalacji" + +-#: src/client/application/application-client.vala:559 ++#: src/client/application/application-client.vala:573 + #, c-format + msgid "About %s" + msgstr "O programie %s" +@@ -928,7 +928,7 @@ msgstr "O programie %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:563 ++#: src/client/application/application-client.vala:577 + msgid "translator-credits" + msgstr "" + "scrx , 2012\n" +@@ -944,30 +944,30 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1045 ++#: src/client/application/application-client.vala:1096 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "Opcja „--hidden” jest przestarzała i zostanie usunięta w przyszłości." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1078 ++#: src/client/application/application-client.vala:1129 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Nieznany parametr programu: „%s”" + + #. / Notification title. +-#: src/client/application/application-controller.vala:479 ++#: src/client/application/application-controller.vala:490 + #, c-format + msgid "A problem occurred sending email for %s" + msgstr "Wystąpił problem podczas wysyłania wiadomości z konta %s" + + #. / Notification body +-#: src/client/application/application-controller.vala:483 ++#: src/client/application/application-controller.vala:494 + msgid "Email will not be sent until re-connected" + msgstr "Wiadomości nie będą wysyłane do czasu ponownego połączenia" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:582 ++#: src/client/application/application-controller.vala:593 + msgid "Conversation marked" + msgid_plural "Conversations marked" + msgstr[0] "Oznaczono wątek" +@@ -975,7 +975,7 @@ msgstr[1] "Oznaczono wątki" + msgstr[2] "Oznaczono wątki" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:588 ++#: src/client/application/application-controller.vala:599 + msgid "Conversation un-marked" + msgid_plural "Conversations un-marked" + msgstr[0] "Usunięto oznaczenie wątku" +@@ -985,8 +985,8 @@ msgstr[2] "Usunięto oznaczenie wątków" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:614 +-#: src/client/application/application-controller.vala:698 ++#: src/client/application/application-controller.vala:625 ++#: src/client/application/application-controller.vala:709 + #, c-format + msgid "Conversation moved to %s" + msgid_plural "Conversations moved to %s" +@@ -999,8 +999,8 @@ msgstr[2] "Przeniesiono wątki do „%s”" + #. / of the source folder. + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:622 +-#: src/client/application/application-controller.vala:644 ++#: src/client/application/application-controller.vala:633 ++#: src/client/application/application-controller.vala:655 + #, c-format + msgid "Conversation restored to %s" + msgid_plural "Conversations restored to %s" +@@ -1009,7 +1009,7 @@ msgstr[1] "Przywrócono wątki do „%s”" + msgstr[2] "Przywrócono wątki do „%s”" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:665 ++#: src/client/application/application-controller.vala:676 + msgid "Conversation archived" + msgid_plural "Conversations archived" + msgstr[0] "Przeniesiono wątek do archiwum" +@@ -1018,7 +1018,7 @@ msgstr[2] "Przeniesiono wątki do archiwum" + + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:721 ++#: src/client/application/application-controller.vala:732 + #, c-format + msgid "Message restored to %s" + msgid_plural "Messages restored to %s" +@@ -1027,7 +1027,7 @@ msgstr[1] "Przywrócono wiadomości do „%s”" + msgstr[2] "Przywrócono wiadomości do „%s”" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:742 ++#: src/client/application/application-controller.vala:753 + msgid "Message archived" + msgid_plural "Messages archived" + msgstr[0] "Przeniesiono wiadomość do archiwum" +@@ -1037,7 +1037,7 @@ msgstr[2] "Przeniesiono wiadomości do archiwum" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:777 ++#: src/client/application/application-controller.vala:788 + #, c-format + msgid "Message moved to %s" + msgid_plural "Messages moved to %s" +@@ -1048,7 +1048,7 @@ msgstr[2] "Przeniesiono wiadomości do „%s”" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:805 ++#: src/client/application/application-controller.vala:816 + #, c-format + msgid "Conversation labelled as %s" + msgid_plural "Conversations labelled as %s" +@@ -1059,7 +1059,7 @@ msgstr[2] "Dodano etykietę „%s”" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:813 ++#: src/client/application/application-controller.vala:824 + #, c-format + msgid "Conversation un-labelled as %s" + msgid_plural "Conversations un-labelled as %s" +@@ -1067,12 +1067,12 @@ msgstr[0] "Usunięto etykietę „%s”" + msgstr[1] "Usunięto etykietę „%s”" + msgstr[2] "Usunięto etykietę „%s”" + +-#: src/client/application/application-controller.vala:1320 ++#: src/client/application/application-controller.vala:1331 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Nie można otworzyć bazy danych dla %s" + +-#: src/client/application/application-controller.vala:1321 ++#: src/client/application/application-controller.vala:1332 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1097,20 +1097,20 @@ msgstr "" + "Przebudowanie bazy danych usunie wszystkie lokalne wiadomości e-mail i ich " + "załączniki. Poczta na serwerze nie zostanie usunięta." + +-#: src/client/application/application-controller.vala:1323 ++#: src/client/application/application-controller.vala:1334 + msgid "_Rebuild" + msgstr "P_rzebuduj" + +-#: src/client/application/application-controller.vala:1323 ++#: src/client/application/application-controller.vala:1334 + msgid "E_xit" + msgstr "Za_kończ" + +-#: src/client/application/application-controller.vala:1333 ++#: src/client/application/application-controller.vala:1344 + #, c-format + msgid "Unable to rebuild database for “%s”" + msgstr "Nie można przebudować bazy danych dla „%s”" + +-#: src/client/application/application-controller.vala:1334 ++#: src/client/application/application-controller.vala:1345 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1123,34 +1123,34 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1501 ++#: src/client/application/application-controller.vala:1512 + #, c-format + msgid "Email sent to %s" + msgstr "Wysłano wiadomość do %s" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2491 ++#: src/client/application/application-controller.vala:2502 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "Wiadomość do %s została dodana do kolejki do wysłania" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2555 ++#: src/client/application/application-controller.vala:2566 + #, c-format + msgid "Email to %s saved" + msgstr "Zapisano wiadomość do %s" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2570 +-#: src/client/application/application-controller.vala:2628 ++#: src/client/application/application-controller.vala:2581 ++#: src/client/application/application-controller.vala:2639 + msgid "Composer could not be restored" + msgstr "Nie można przywrócić okna tworzenia wiadomości" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2613 ++#: src/client/application/application-controller.vala:2624 + #, c-format + msgid "Email to %s discarded" + msgstr "Odrzucono wiadomość do %s" +@@ -1268,7 +1268,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1792 ++#: src/client/composer/composer-widget.vala:1788 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1667,81 +1667,81 @@ msgstr "Zachować lub odrzucić ten szkic?" + msgid "Do you want to discard this draft message?" + msgstr "Odrzucić ten szkic?" + +-#: src/client/composer/composer-widget.vala:1448 ++#: src/client/composer/composer-widget.vala:1443 + msgid "Send message with an empty subject and body?" + msgstr "Wysłać wiadomość niezawierającą tematu i treści?" + +-#: src/client/composer/composer-widget.vala:1450 ++#: src/client/composer/composer-widget.vala:1445 + msgid "Send message with an empty subject?" + msgstr "Wysłać wiadomość niezawierającą tematu?" + +-#: src/client/composer/composer-widget.vala:1452 ++#: src/client/composer/composer-widget.vala:1447 + msgid "Send message with an empty body?" + msgstr "Wysłać wiadomość niezawierającą treści?" + +-#: src/client/composer/composer-widget.vala:1461 ++#: src/client/composer/composer-widget.vala:1456 + msgid "Send message without an attachment?" + msgstr "Wysłać wiadomość niezawierającą załączników?" + +-#: src/client/composer/composer-widget.vala:1780 ++#: src/client/composer/composer-widget.vala:1776 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "Do wiadomości już załączono „%s”." + +-#: src/client/composer/composer-widget.vala:1812 +-#: src/client/composer/composer-widget.vala:1862 ++#: src/client/composer/composer-widget.vala:1808 ++#: src/client/composer/composer-widget.vala:1858 + #, c-format + msgid "“%s” is an empty file." + msgstr "„%s” jest pustym plikiem." + +-#: src/client/composer/composer-widget.vala:1850 ++#: src/client/composer/composer-widget.vala:1846 + #, c-format + msgid "“%s” could not be found." + msgstr "Nie można odnaleźć „%s”." + +-#: src/client/composer/composer-widget.vala:1856 ++#: src/client/composer/composer-widget.vala:1852 + #, c-format + msgid "“%s” is a folder." + msgstr "„%s” jest katalogiem." + +-#: src/client/composer/composer-widget.vala:1875 ++#: src/client/composer/composer-widget.vala:1871 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "Nie można otworzyć „%s” do odczytania." + +-#: src/client/composer/composer-widget.vala:1883 ++#: src/client/composer/composer-widget.vala:1879 + msgid "Cannot add attachment" + msgstr "Nie można dodać załącznika" + + #. Translators: This is the name of the file chooser filter + #. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:1954 ++#: src/client/composer/composer-widget.vala:1950 + msgid "Images" + msgstr "Obrazy" + + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:2018 ++#: src/client/composer/composer-widget.vala:2014 + #: src/client/conversation-viewer/conversation-email.vala:542 +-#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 ++#: src/client/util/util-email.vala:265 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Do:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:2024 ++#: src/client/composer/composer-widget.vala:2020 + #: src/client/conversation-viewer/conversation-email.vala:547 +-#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 ++#: src/client/util/util-email.vala:270 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "DW:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2030 ++#: src/client/composer/composer-widget.vala:2026 + #: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "UDW:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2036 ++#: src/client/composer/composer-widget.vala:2032 + msgid "Reply-To: " + msgstr "Odpowiedź do: " + +@@ -1750,7 +1750,7 @@ msgstr "Odpowiedź do: " + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2154 ++#: src/client/composer/composer-widget.vala:2150 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s przez %2$s" +@@ -1825,19 +1825,19 @@ msgstr "Ja" + + #. Translators: Human-readable version of the RFC 822 From header + #: src/client/conversation-viewer/conversation-email.vala:537 +-#: src/client/util/util-email.vala:240 ++#: src/client/util/util-email.vala:256 + msgid "From:" + msgstr "Od:" + + #. Translators: Human-readable version of the RFC 822 Date header + #: src/client/conversation-viewer/conversation-email.vala:557 +-#: src/client/util/util-email.vala:245 ++#: src/client/util/util-email.vala:261 + msgid "Date:" + msgstr "Data:" + + #. Translators: Human-readable version of the RFC 822 Subject header + #: src/client/conversation-viewer/conversation-email.vala:567 +-#: src/client/util/util-email.vala:243 ++#: src/client/util/util-email.vala:259 + msgid "Subject:" + msgstr "Temat:" + +@@ -1865,64 +1865,64 @@ msgstr "%d więcej…" + #. in load_contacts. + #. Translators: This is displayed in place of the from address + #. when the message has no from address. +-#: src/client/conversation-viewer/conversation-message.vala:529 ++#: src/client/conversation-viewer/conversation-message.vala:556 + msgid "No sender" + msgstr "Brak nadawcy" + + #. Translators: This separates multiple 'from' + #. addresses in the compact header for a message. +-#: src/client/conversation-viewer/conversation-message.vala:920 ++#: src/client/conversation-viewer/conversation-message.vala:1049 + msgid ", " + msgstr ", " + + #. Translators: This string is used as the HTML IMG ALT + #. attribute value when displaying an inline image in an email + #. that did not specify a file name. E.g. Image +Date: Sun, 1 Nov 2020 13:18:15 +0100 +Subject: [PATCH 121/124] Update Catalan translation + +--- + po/ca.po | 68 ++++++-------------------------------------------------- + 1 file changed, 7 insertions(+), 61 deletions(-) + +diff --git a/po/ca.po b/po/ca.po +index daf2fd5b..86249675 100644 +--- a/po/ca.po ++++ b/po/ca.po +@@ -265,7 +265,7 @@ msgid "" + "List of languages that are always displayed in the popover of the spell " + "checker." + msgstr "" +-"Llista d’idiomes que sempre es mostren a la finestra emergent del corrector " ++"Llista d'idiomes que sempre es mostren a la finestra emergent del corrector " + "ortogràfic." + + #: desktop/org.gnome.Geary.gschema.xml:96 +@@ -742,7 +742,7 @@ msgstr "Nom d'usuari" + #. account + #: src/client/accounts/accounts-editor-row.vala:542 + msgid "No login needed" +-msgstr "No s’ha d'iniciar sessió" ++msgstr "No s'ha d'iniciar sessió" + + #. Translators: ComboBox value for source of SMTP + #. authentication credentials (use IMAP) when adding a new +@@ -1200,7 +1200,7 @@ msgstr "Problema amb l'inici de sessió" + #. Translators: An info bar description label + #: src/client/application/application-main-window.vala:541 + msgid "An account has reported an incorrect login or password." +-msgstr "Un compte ha informat d’un nom d'usuari o contrasenya incorrecte." ++msgstr "Un compte ha informat d'un nom d'usuari o contrasenya incorrecte." + + #. Translators: An info bar button tool-tip + #: src/client/application/application-main-window.vala:547 +@@ -1216,7 +1216,7 @@ msgstr "Problema de seguretat" + #. Translators: An info bar description label + #: src/client/application/application-main-window.vala:556 + msgid "An account has reported an untrusted server.." +-msgstr "Un compte ha informat d’un servidor no fiable.." ++msgstr "Un compte ha informat d'un servidor no fiable.." + + #. Translators: An info bar button label + #: src/client/application/application-main-window.vala:559 +@@ -1511,7 +1511,7 @@ msgstr "Cal un nom de servidor" + #. looked-up in the DNS. + #: src/client/components/components-validator.vala:445 + msgid "Could not look up server name" +-msgstr "No s’ha pogut cercar el nom del servidor" ++msgstr "No s'ha pogut cercar el nom del servidor" + + #: src/client/components/main-toolbar.vala:116 + msgid "Mark conversation" +@@ -2825,7 +2825,7 @@ msgid "" + "Removing an account will remove it from Geary and delete locally cached " + "email data from your computer, but not from your service provider." + msgstr "" +-"L'eliminació d’un compte l'eliminarà del Geary i esborrarà les dades del " ++"L'eliminació d'un compte l'eliminarà del Geary i esborrarà les dades del " + "correu a la memòria cau local de l'ordinador, però no del proveïdor de " + "serveis." + +@@ -3123,7 +3123,7 @@ msgstr "" + "Si el problema és greu o persisteix, copieu i envieu aquestes dades a la llista de correu o " + "envieu un " +-"informe d’error nou." ++"informe d'error nou." + + #: ui/components-inspector-error-view.ui:49 + msgid "Details:" +@@ -3718,57 +3718,3 @@ msgstr "_Autenticació" + msgid "Geary update in progress…" + msgstr "Actualització del Geary en curs…" + +-#~ msgid "Log periodic activity" +-#~ msgstr "Registra l'activitat periòdica" +- +-#~ msgid "Log IMAP network serialization" +-#~ msgstr "Registra la serialització de xarxa d'IMAP" +- +-#~ msgid "Show less" +-#~ msgstr "Mostra menys" +- +-#~ msgid "%d more…" +-#~ msgstr "%d més…" +- +-#~ msgid "Sent Mail" +-#~ msgstr "Enviats" +- +-#~ msgid "Spam" +-#~ msgstr "Correu brossa" +- +-#~ msgid "" +-#~ "Your computer does not appear to be connected to the Internet.\n" +-#~ "You will not be able to send or receive email until it is re-connected." +-#~ msgstr "" +-#~ "Sembla que el vostre ordinador no està connectat a Internet.\n" +-#~ "No podreu enviar ni rebre correus electrònics fins que us torneu a connectar." +- +-#~ msgid "" +-#~ "An account has reported an untrusted server.\n" +-#~ "Please check the server configuration and try again." +-#~ msgstr "" +-#~ "Un compte ha informat d’un servidor no fiable. \n" +-#~ "Comproveu la configuració del servidor i torneu-ho a provar." +- +-#~ msgid "" +-#~ "An account has reported an incorrect login or password.\n" +-#~ "Please check your login name and try again." +-#~ msgstr "" +-#~ "Un compte ha informat d’un nom d'usuari o contrasenya incorrecte.\n" +-#~ "Comproveu el vostre nom d’usuari i torneu-ho a provar." +- +-#~ msgid "From" +-#~ msgstr "De" +- +-#~ msgid "Edit Draft" +-#~ msgstr "Edita l'Esborrany" +- +-#~ msgctxt "shortcut window" +-#~ msgid "Find in current conversations" +-#~ msgstr "Troba en les converses actuals" +- +-#~ msgid "Empty _Spam…" +-#~ msgstr "Buida el _correu brossa…" +- +-#~ msgid "Empty _Trash…" +-#~ msgstr "Buida la _paperera…" +-- +2.29.2 + diff --git a/mail-client/geary/files/0122-Update-Indonesian-translation.patch b/mail-client/geary/files/0122-Update-Indonesian-translation.patch new file mode 100644 index 0000000..948d7cf --- /dev/null +++ b/mail-client/geary/files/0122-Update-Indonesian-translation.patch @@ -0,0 +1,1973 @@ +From a24a6124505599008c79129c3086c0e286c164ea Mon Sep 17 00:00:00 2001 +From: Andika Triwidada +Date: Mon, 2 Nov 2020 01:33:58 +0000 +Subject: [PATCH 122/124] Update Indonesian translation + +--- + po/id.po | 945 +++++++++++++++++++++++++------------------------------ + 1 file changed, 425 insertions(+), 520 deletions(-) + +diff --git a/po/id.po b/po/id.po +index 0e195fee..06aa6580 100644 +--- a/po/id.po ++++ b/po/id.po +@@ -11,9 +11,9 @@ msgid "" + msgstr "" + "Project-Id-Version: geary mainline\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" +-"POT-Creation-Date: 2020-08-27 12:37+0000\n" +-"PO-Revision-Date: 2020-08-28 22:22+0700\n" +-"Last-Translator: Kukuh Syafaat \n" ++"POT-Creation-Date: 2020-11-01 12:19+0000\n" ++"PO-Revision-Date: 2020-11-02 08:32+0700\n" ++"Last-Translator: Andika Triwidada \n" + "Language-Team: Indonesian\n" + "Language: id\n" + "MIME-Version: 1.0\n" +@@ -35,7 +35,7 @@ msgstr "Kirim berkas memakai Geary" + #: desktop/org.gnome.Geary.appdata.xml.in.in:11 + #: desktop/org.gnome.Geary.desktop.in.in:3 + #: src/client/accounts/accounts-editor-servers-pane.vala:560 +-#: src/client/application/application-main-window.vala:608 ++#: src/client/application/application-main-window.vala:628 + msgid "Geary" + msgstr "Geary" + +@@ -157,75 +157,34 @@ msgid "The last recorded height of the application window." + msgstr "Tinggi yang tersimpan dari jendela pustaka aplikasi sebelumnya." + + #: desktop/org.gnome.Geary.gschema.xml:26 +-msgid "Position of folder list pane" +-msgstr "Posisi panel daftar folder" +- +-#: desktop/org.gnome.Geary.gschema.xml:27 +-msgid "Position of the folder list Paned grabber." +-msgstr "Posisi daftar folder Paned grabber." +- +-#: desktop/org.gnome.Geary.gschema.xml:32 +-msgid "Position of folder list pane when horizontal" +-msgstr "Posisi panel daftar folder saat horisontal" +- +-#: desktop/org.gnome.Geary.gschema.xml:33 +-msgid "" +-"Position of the folder list Paned grabber in the horizontal orientation." +-msgstr "Posisi daftar folder Paned grabber dalam orientasi horizontal." +- +-#: desktop/org.gnome.Geary.gschema.xml:38 +-msgid "Position of folder list pane when vertical" +-msgstr "Posisi panel daftar folder saat vertikal" +- +-#: desktop/org.gnome.Geary.gschema.xml:39 +-msgid "Position of the folder list Paned grabber in the vertical orientation." +-msgstr "Posisi daftar folder Paned grabber dalam orientasi vertikal." +- +-#: desktop/org.gnome.Geary.gschema.xml:44 +-msgid "Orientation of the folder list pane" +-msgstr "Orientasi panel daftar folder" +- +-#: desktop/org.gnome.Geary.gschema.xml:45 +-msgid "True if the folder list Paned is in the horizontal orientation." +-msgstr "True jika daftar folder Paned berada dalam orientasi horizontal." +- +-#: desktop/org.gnome.Geary.gschema.xml:50 + msgid "Show/hide formatting toolbar" + msgstr "Tampilkan/sembunyikan bilah alat pemformatan" + +-#: desktop/org.gnome.Geary.gschema.xml:51 ++#: desktop/org.gnome.Geary.gschema.xml:27 + msgid "True if the formatting toolbar in the composer is shown." + msgstr "True jika bilah alat pemformatan pada penyusun ditampilkan." + +-#: desktop/org.gnome.Geary.gschema.xml:56 +-msgid "Position of message list pane" +-msgstr "Posisi panel daftar pesan" +- +-#: desktop/org.gnome.Geary.gschema.xml:57 +-msgid "Position of the message list Paned grabber." +-msgstr "Posisi dari daftar pesan Paned grabber." +- +-#: desktop/org.gnome.Geary.gschema.xml:62 ++#: desktop/org.gnome.Geary.gschema.xml:32 + msgid "Autoselect next message" + msgstr "Otomatis pilih pesan selanjutnya" + +-#: desktop/org.gnome.Geary.gschema.xml:63 ++#: desktop/org.gnome.Geary.gschema.xml:33 + msgid "True if we should autoselect the next available conversation." + msgstr "True jika kita harus memilih ulang percakapan yang ada selanjutnya." + +-#: desktop/org.gnome.Geary.gschema.xml:68 ++#: desktop/org.gnome.Geary.gschema.xml:38 + msgid "Display message previews" + msgstr "Tampilkan pratinjau pesan" + +-#: desktop/org.gnome.Geary.gschema.xml:69 ++#: desktop/org.gnome.Geary.gschema.xml:39 + msgid "True if we should display a short preview of each message." + msgstr "True jika kita harus menampilkan pratinjau singkat setiap pesan." + +-#: desktop/org.gnome.Geary.gschema.xml:74 ++#: desktop/org.gnome.Geary.gschema.xml:44 + msgid "Use single key shortcuts" + msgstr "Pakai pintasan tombol tunggal" + +-#: desktop/org.gnome.Geary.gschema.xml:75 ++#: desktop/org.gnome.Geary.gschema.xml:45 + msgid "" + "Enables shortcuts for email actions that do not require pressing to " + "emulate those used by Gmail." +@@ -233,11 +192,11 @@ msgstr "" + "Memfungsikan pintasan untuk aksi surel yang tidak memerlukan menekan " + "untuk mengemulasi mereka yang dipakai oleh Gmail." + +-#: desktop/org.gnome.Geary.gschema.xml:82 ++#: desktop/org.gnome.Geary.gschema.xml:52 + msgid "Languages that shall be used in the spell checker" + msgstr "Bahasa yang akan digunakan dalam pemeriksa ejaan" + +-#: desktop/org.gnome.Geary.gschema.xml:83 ++#: desktop/org.gnome.Geary.gschema.xml:53 + msgid "" + "A list of POSIX locales, with the empty list disabling spell checking and " + "the null list using desktop languages by default." +@@ -245,72 +204,72 @@ msgstr "" + "Suatu daftar locale POSIX, dengan daftar kosong yang menonaktifkan " + "pemeriksaan ejaan dan daftar null memakai bahasa-bahasa desktop secara baku." + +-#: desktop/org.gnome.Geary.gschema.xml:90 ++#: desktop/org.gnome.Geary.gschema.xml:60 + msgid "Languages that are displayed in the spell checker popover" + msgstr "Bahasa yang ditampilkan dalam popover pemeriksa ejaan" + +-#: desktop/org.gnome.Geary.gschema.xml:91 ++#: desktop/org.gnome.Geary.gschema.xml:61 + msgid "" + "List of languages that are always displayed in the popover of the spell " + "checker." + msgstr "Daftar bahasa yang selalu ditampilkan di popover pemeriksa ejaan." + +-#: desktop/org.gnome.Geary.gschema.xml:96 ++#: desktop/org.gnome.Geary.gschema.xml:66 + msgid "Notify of new mail at startup" + msgstr "Beritahu surel baru saat awal mula" + +-#: desktop/org.gnome.Geary.gschema.xml:97 ++#: desktop/org.gnome.Geary.gschema.xml:67 + msgid "True to notify of new mail at startup." + msgstr "True untuk memberitahukan surel baru saat memulai." + +-#: desktop/org.gnome.Geary.gschema.xml:102 ++#: desktop/org.gnome.Geary.gschema.xml:72 + msgid "Ask when opening an attachment" + msgstr "Tanyakan saat membuka lampiran" + +-#: desktop/org.gnome.Geary.gschema.xml:103 ++#: desktop/org.gnome.Geary.gschema.xml:73 + msgid "True to ask when opening an attachment." + msgstr "True untuk bertanya saat membuka lampiran." + +-#: desktop/org.gnome.Geary.gschema.xml:108 ++#: desktop/org.gnome.Geary.gschema.xml:78 + msgid "Whether to compose emails in HTML" + msgstr "Apakah untuk menulis surel dalam HTML" + +-#: desktop/org.gnome.Geary.gschema.xml:109 ++#: desktop/org.gnome.Geary.gschema.xml:79 + msgid "True to compose emails in HTML; false for plain text." + msgstr "True untuk menulis surel dalam HTML; false untuk teks biasa." + +-#: desktop/org.gnome.Geary.gschema.xml:114 ++#: desktop/org.gnome.Geary.gschema.xml:84 + msgid "Advisory strategy for full-text searching" + msgstr "Strategi penasehat untuk penelusuran teks lengkap" + +-#: desktop/org.gnome.Geary.gschema.xml:115 ++#: desktop/org.gnome.Geary.gschema.xml:85 + msgid "" + "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." + msgstr "" + "Nilai yang dapat diterima \"exact\" (tepat), \"conservative\" (konservatif), " + "\"aggressive\" (agresif), dan \"horizon\" (horizon)." + +-#: desktop/org.gnome.Geary.gschema.xml:120 ++#: desktop/org.gnome.Geary.gschema.xml:90 + msgid "Zoom of conversation viewer" + msgstr "Zoom penampil percakapan" + +-#: desktop/org.gnome.Geary.gschema.xml:121 ++#: desktop/org.gnome.Geary.gschema.xml:91 + msgid "The zoom to apply on the conservation view." + msgstr "Zum untuk diterapkan pada tampilan konservasi." + +-#: desktop/org.gnome.Geary.gschema.xml:126 ++#: desktop/org.gnome.Geary.gschema.xml:96 + msgid "Size of detached composer window" + msgstr "Ukuran jendela penyusun yang terpisah" + +-#: desktop/org.gnome.Geary.gschema.xml:127 ++#: desktop/org.gnome.Geary.gschema.xml:97 + msgid "The last recorded size of the detached composer window." + msgstr "Ukuran yang terekam terakhir dari jendela penyusun yang terpisah." + +-#: desktop/org.gnome.Geary.gschema.xml:132 ++#: desktop/org.gnome.Geary.gschema.xml:102 + msgid "Undo sending email delay" + msgstr "Batalkan tundaan pengiriman surel" + +-#: desktop/org.gnome.Geary.gschema.xml:133 ++#: desktop/org.gnome.Geary.gschema.xml:103 + msgid "" + "The number of seconds to wait before sending an email. Set to zero or less " + "to disable." +@@ -318,30 +277,30 @@ msgstr "" + "Berapa detik menunggu sebelum mengirim sebuah surel. Atur ke nol atau kurang " + "untuk menonaktifkan." + +-#: desktop/org.gnome.Geary.gschema.xml:139 ++#: desktop/org.gnome.Geary.gschema.xml:109 + msgid "Brief notification display time" + msgstr "Waktu tampilan pemberitahuan singkat" + +-#: desktop/org.gnome.Geary.gschema.xml:140 ++#: desktop/org.gnome.Geary.gschema.xml:110 + msgid "" + "The length of time in seconds for which brief notifications should be " + "displayed." + msgstr "" + "Lamanya waktu dalam detik di mana pemberitahuan singkat harus ditampilkan." + +-#: desktop/org.gnome.Geary.gschema.xml:146 ++#: desktop/org.gnome.Geary.gschema.xml:116 + msgid "List of optional plugins" + msgstr "Daftar plugin opsional" + +-#: desktop/org.gnome.Geary.gschema.xml:147 ++#: desktop/org.gnome.Geary.gschema.xml:117 + msgid "Plugins listed here will be loaded on startup." + msgstr "Plugin yang tercantum di sini akan dimuat pada startup." + +-#: desktop/org.gnome.Geary.gschema.xml:152 ++#: desktop/org.gnome.Geary.gschema.xml:122 + msgid "Whether we migrated the old settings" + msgstr "Apakah kita memigrasikan pengaturan lama" + +-#: desktop/org.gnome.Geary.gschema.xml:153 ++#: desktop/org.gnome.Geary.gschema.xml:123 + msgid "" + "False to check for the old “org.yorba.geary”-schema and copy its values." + msgstr "" +@@ -617,12 +576,12 @@ msgstr[0] "%d hari ke belakang" + msgstr[1] "%d hari ke belakang" + + #: src/client/accounts/accounts-editor-list-pane.vala:255 +-#: src/client/application/application-main-window.vala:2061 ++#: src/client/application/application-main-window.vala:2129 + msgid "Undo" + msgstr "Tak Jadi" + + #: src/client/accounts/accounts-editor-list-pane.vala:264 +-#: src/client/application/application-main-window.vala:2044 ++#: src/client/application/application-main-window.vala:2112 + msgid "Redo" + msgstr "Jadi Lagi" + +@@ -717,7 +676,7 @@ msgstr "TLS" + #. account + #. Translators: An info bar button label + #: src/client/accounts/accounts-editor-row.vala:539 +-#: src/client/application/application-main-window.vala:554 ++#: src/client/application/application-main-window.vala:574 + msgid "Login" + msgstr "Log masuk" + +@@ -826,130 +785,130 @@ msgid "Visit the Geary web site" + msgstr "Kunjungi situs web Geary" + + #. / Command line option +-#: src/client/application/application-client.vala:97 ++#: src/client/application/application-client.vala:102 + msgid "Print debug logging" + msgstr "Cetak log awakutu" + + #. / Command line option +-#: src/client/application/application-client.vala:100 ++#: src/client/application/application-client.vala:105 + msgid "Start with the main window hidden (deprecated)" + msgstr "Mulai Geary dengan jendela utama tersembunyi (usang)" + + #. / Command line option +-#: src/client/application/application-client.vala:103 ++#: src/client/application/application-client.vala:108 + msgid "Enable WebKitGTK Inspector in web views" + msgstr "Fungsikan WebKitGTK Inspector dalam tilikan web" + + #. / Command line option +-#: src/client/application/application-client.vala:106 ++#: src/client/application/application-client.vala:111 + msgid "Log conversation monitoring" + msgstr "Catat pemantauan percakapan" + + #. / Command line option +-#: src/client/application/application-client.vala:109 ++#: src/client/application/application-client.vala:114 + msgid "Log IMAP network deserialization" + msgstr "Log deserialisasi jaringan IMAP" + + #. / Command line option. "Normalization" can also be called + #. / "synchronization". +-#: src/client/application/application-client.vala:113 ++#: src/client/application/application-client.vala:118 + msgid "Log folder normalization" + msgstr "Catat normalisasi map" + + #. / Command line option +-#: src/client/application/application-client.vala:116 ++#: src/client/application/application-client.vala:121 + msgid "Log IMAP network activity" + msgstr "Log aktivitas jaringan IMAP" + + #. / Command line option. The IMAP replay queue is how changes + #. / on the server are replicated on the client. It could + #. / also be called the IMAP events queue. +-#: src/client/application/application-client.vala:121 ++#: src/client/application/application-client.vala:126 + msgid "Log IMAP replay queue" + msgstr "Catat antrian putar ulang IMAP" + + #. / Command line option +-#: src/client/application/application-client.vala:124 ++#: src/client/application/application-client.vala:129 + msgid "Log SMTP network activity" + msgstr "Log aktivitas jaringan SMTP" + + #. / Command line option +-#: src/client/application/application-client.vala:127 ++#: src/client/application/application-client.vala:132 + msgid "Log database queries (generates lots of messages)" + msgstr "Catat kuiri basis data (menimbulkan banyak pesan)" + + #. / Command line option +-#: src/client/application/application-client.vala:130 ++#: src/client/application/application-client.vala:135 + msgid "Perform a graceful quit" + msgstr "Keluar secara anggun" + +-#: src/client/application/application-client.vala:132 ++#: src/client/application/application-client.vala:137 + msgid "Open a new window" + msgstr "Buka suatu jendela baru" + + #. / Command line option +-#: src/client/application/application-client.vala:135 ++#: src/client/application/application-client.vala:140 + msgid "Revoke all pinned TLS server certificates" + msgstr "Cabut semua sertifikat peladen TLS yang di-pin" + + #. / Command line option +-#: src/client/application/application-client.vala:138 ++#: src/client/application/application-client.vala:143 + msgid "Display program version" + msgstr "Tampilkan versi program" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:262 ++#: src/client/application/application-client.vala:275 + msgid "Geary version" + msgstr "Versi Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:264 ++#: src/client/application/application-client.vala:277 + msgid "Geary revision" + msgstr "Revisi Geary" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:266 ++#: src/client/application/application-client.vala:279 + msgid "GTK version" + msgstr "Versi GTK" + + #. / Applciation runtime information label +-#: src/client/application/application-client.vala:273 ++#: src/client/application/application-client.vala:286 + msgid "GLib version" + msgstr "Versi GLib" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:280 ++#: src/client/application/application-client.vala:293 + msgid "WebKitGTK version" + msgstr "Versi WebKitGTK" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:287 ++#: src/client/application/application-client.vala:300 + msgid "Desktop environment" + msgstr "Lingkungan desktop" + + #. Translators: This is the file type displayed for + #. attachments with unknown file types. +-#: src/client/application/application-client.vala:289 ++#: src/client/application/application-client.vala:302 + #: src/client/components/components-attachment-pane.vala:91 + msgid "Unknown" + msgstr "Tak dikenal" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:293 ++#: src/client/application/application-client.vala:306 + msgid "Distribution name" + msgstr "Nama distribusi" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:298 ++#: src/client/application/application-client.vala:311 + msgid "Distribution release" + msgstr "Rilis distribusi" + + #. / Application runtime information label +-#: src/client/application/application-client.vala:303 ++#: src/client/application/application-client.vala:316 + msgid "Installation prefix" + msgstr "Prefiks instalasi" + +-#: src/client/application/application-client.vala:558 ++#: src/client/application/application-client.vala:573 + #, c-format + msgid "About %s" + msgstr "Tentang %s" +@@ -957,7 +916,7 @@ msgstr "Tentang %s" + #. Translators: add your name and email address to receive + #. credit in the About dialog For example: Yamada Taro + #. +-#: src/client/application/application-client.vala:562 ++#: src/client/application/application-client.vala:577 + msgid "translator-credits" + msgstr "" + "Andika Triwidada , 2012, 2013, 2016, 2017, 2019, 2020\n" +@@ -966,37 +925,37 @@ msgstr "" + + #. / Warning printed to the console when a deprecated + #. / command line option is used. +-#: src/client/application/application-client.vala:1046 ++#: src/client/application/application-client.vala:1096 + msgid "The `--hidden` option is deprecated and will be removed in the future." + msgstr "Opsi '--hidden' usang dan akan dihapus di masa mendatang." + + #. / Command line warning, string substitution + #. / is the given argument +-#: src/client/application/application-client.vala:1079 ++#: src/client/application/application-client.vala:1129 + #, c-format + msgid "Unrecognised program argument: “%s”" + msgstr "Argumen program tidak dikenal: \"%s\"" + + #. / Notification title. +-#: src/client/application/application-controller.vala:479 ++#: src/client/application/application-controller.vala:490 + #, c-format + msgid "A problem occurred sending email for %s" + msgstr "Terjadi masalah saat mengirim surel untuk %s" + + #. / Notification body +-#: src/client/application/application-controller.vala:483 ++#: src/client/application/application-controller.vala:494 + msgid "Email will not be sent until re-connected" + msgstr "Surel tidak akan dikirim sampai menyambung ulang" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:582 ++#: src/client/application/application-controller.vala:593 + msgid "Conversation marked" + msgid_plural "Conversations marked" + msgstr[0] "Percakapan ditandai" + msgstr[1] "Percakapan ditandai" + + #. / Translators: Label for in-app notification +-#: src/client/application/application-controller.vala:588 ++#: src/client/application/application-controller.vala:599 + msgid "Conversation un-marked" + msgid_plural "Conversations un-marked" + msgstr[0] "Tanda percakapan dihapus" +@@ -1005,8 +964,8 @@ msgstr[1] "Tanda percakapan dihapus" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:614 +-#: src/client/application/application-controller.vala:698 ++#: src/client/application/application-controller.vala:625 ++#: src/client/application/application-controller.vala:709 + #, c-format + msgid "Conversation moved to %s" + msgid_plural "Conversations moved to %s" +@@ -1018,8 +977,8 @@ msgstr[1] "Percakapan dipindah ke %s" + #. / of the source folder. + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:622 +-#: src/client/application/application-controller.vala:644 ++#: src/client/application/application-controller.vala:633 ++#: src/client/application/application-controller.vala:655 + #, c-format + msgid "Conversation restored to %s" + msgid_plural "Conversations restored to %s" +@@ -1027,7 +986,7 @@ msgstr[0] "Percakapan dipulihkan ke %s" + msgstr[1] "Percakapan dipulihkan ke %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:665 ++#: src/client/application/application-controller.vala:676 + msgid "Conversation archived" + msgid_plural "Conversations archived" + msgstr[0] "Percakapan diarsipkan" +@@ -1035,7 +994,7 @@ msgstr[1] "Percakapan diarsipkan" + + #. / Translators: Label for in-app notification. String + #. / substitution is the name of the destination folder. +-#: src/client/application/application-controller.vala:721 ++#: src/client/application/application-controller.vala:732 + #, c-format + msgid "Message restored to %s" + msgid_plural "Messages restored to %s" +@@ -1043,7 +1002,7 @@ msgstr[0] "Pesan dipulihkan ke %s" + msgstr[1] "Pesan dipulihkan ke %s" + + #. / Translators: Label for in-app notification. +-#: src/client/application/application-controller.vala:742 ++#: src/client/application/application-controller.vala:753 + msgid "Message archived" + msgid_plural "Messages archived" + msgstr[0] "Pesan diarsipkan" +@@ -1052,7 +1011,7 @@ msgstr[1] "Pesan diarsipkan" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:777 ++#: src/client/application/application-controller.vala:788 + #, c-format + msgid "Message moved to %s" + msgid_plural "Messages moved to %s" +@@ -1062,7 +1021,7 @@ msgstr[1] "Pesan dipindah ke %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:805 ++#: src/client/application/application-controller.vala:816 + #, c-format + msgid "Conversation labelled as %s" + msgid_plural "Conversations labelled as %s" +@@ -1072,19 +1031,19 @@ msgstr[1] "Percakapan dilabeli sebagai %s" + #. / Translators: Label for in-app + #. / notification. String substitution is the name + #. / of the destination folder. +-#: src/client/application/application-controller.vala:813 ++#: src/client/application/application-controller.vala:824 + #, c-format + msgid "Conversation un-labelled as %s" + msgid_plural "Conversations un-labelled as %s" + msgstr[0] "Label %s dihapus dari percakapan" + msgstr[1] "Label %s dihapus dari percakapan" + +-#: src/client/application/application-controller.vala:1320 ++#: src/client/application/application-controller.vala:1331 + #, c-format + msgid "Unable to open the database for %s" + msgstr "Tak bisa membuka basis data bagi %s" + +-#: src/client/application/application-controller.vala:1321 ++#: src/client/application/application-controller.vala:1332 + #, c-format + msgid "" + "There was an error opening the local mail database for this account. This is " +@@ -1108,20 +1067,20 @@ msgstr "" + "Membangun ulang basis data akan menghancurkan semua surel lokal dan " + "lampirannya. Surat pada peladen Anda tak akan terpengaruh." + +-#: src/client/application/application-controller.vala:1323 ++#: src/client/application/application-controller.vala:1334 + msgid "_Rebuild" + msgstr "_Bangun Ulang" + +-#: src/client/application/application-controller.vala:1323 ++#: src/client/application/application-controller.vala:1334 + msgid "E_xit" + msgstr "_Keluar" + +-#: src/client/application/application-controller.vala:1333 ++#: src/client/application/application-controller.vala:1344 + #, c-format + msgid "Unable to rebuild database for “%s”" + msgstr "Tak bisa membangun ulang basis data bagi \"%s\"" + +-#: src/client/application/application-controller.vala:1334 ++#: src/client/application/application-controller.vala:1345 + #, c-format + msgid "" + "Error during rebuild:\n" +@@ -1134,88 +1093,88 @@ msgstr "" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:1501 ++#: src/client/application/application-controller.vala:1512 + #, c-format + msgid "Email sent to %s" + msgstr "Surel dikirim ke %s" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2491 ++#: src/client/application/application-controller.vala:2502 + #, c-format + msgid "Email to %s queued for delivery" + msgstr "Surel ke %s diantrikan untuk pengiriman" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2555 ++#: src/client/application/application-controller.vala:2566 + #, c-format + msgid "Email to %s saved" + msgstr "Surel ke %s disimpan" + + #. / Translators: A label for an in-app notification. +-#: src/client/application/application-controller.vala:2570 +-#: src/client/application/application-controller.vala:2628 ++#: src/client/application/application-controller.vala:2581 ++#: src/client/application/application-controller.vala:2639 + msgid "Composer could not be restored" + msgstr "Penyusun tidak dapat dipulihkan" + + #. / Translators: The label for an in-app notification. The + #. / string substitution is a list of recipients of the email. +-#: src/client/application/application-controller.vala:2613 ++#: src/client/application/application-controller.vala:2624 + #, c-format + msgid "Email to %s discarded" + msgstr "Surel ke %s dibuang" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:540 ++#: src/client/application/application-main-window.vala:560 + msgid "Working offline" + msgstr "Bekerja luring" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:542 ++#: src/client/application/application-main-window.vala:562 + msgid "You will not be able to send or receive email until re-connected." + msgstr "" + "Anda tidak akan bisa mengirim atau menerima surel sampai tersambung lagi." + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:549 ++#: src/client/application/application-main-window.vala:569 + msgid "Login problem" + msgstr "Masalah log masuk" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:551 ++#: src/client/application/application-main-window.vala:571 + msgid "An account has reported an incorrect login or password." + msgstr "Sebuah akun telah melaporkan log masuk atau kata sandi yang salah." + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:558 ++#: src/client/application/application-main-window.vala:578 + msgid "Retry login, you will be prompted for your password" + msgstr "Cobalah lagi log masuk, Anda akan diminta memasukkan kata sandi" + + #. Translators: An info bar status label +-#: src/client/application/application-main-window.vala:565 ++#: src/client/application/application-main-window.vala:585 + msgid "Security problem" + msgstr "Masalah keamanan" + + #. Translators: An info bar description label +-#: src/client/application/application-main-window.vala:567 ++#: src/client/application/application-main-window.vala:587 + msgid "An account has reported an untrusted server." + msgstr "Suatu akun telah melaporkan sebuah peladen yang tak terpercaya." + + #. Translators: An info bar button label +-#: src/client/application/application-main-window.vala:570 ++#: src/client/application/application-main-window.vala:590 + msgid "Check" + msgstr "Periksa" + + #. Translators: An info bar button tool-tip +-#: src/client/application/application-main-window.vala:574 ++#: src/client/application/application-main-window.vala:594 + msgid "Check the security details for the connection" + msgstr "Periksalah rincian keamanan untuk koneksi" + + #. / Translators: Main window title, first string + #. / substitution being the currently selected folder name, + #. / the second being the selected account name. +-#: src/client/application/application-main-window.vala:617 ++#: src/client/application/application-main-window.vala:637 + #, c-format + msgid "%s — %s" + msgstr "%s — %s" +@@ -1223,49 +1182,49 @@ msgstr "%s — %s" + #. Translators: The name of the folder group containing + #. folders created by people (as opposed to special-use + #. folders) +-#: src/client/application/application-main-window.vala:996 ++#: src/client/application/application-main-window.vala:1019 + #: src/client/folder-list/folder-list-account-branch.vala:43 + msgid "Labels" + msgstr "Label" + +-#: src/client/application/application-main-window.vala:1293 ++#: src/client/application/application-main-window.vala:1337 + #, c-format + msgid "Empty all email from your %s folder?" + msgstr "Kosongkan semua surel dari folder %s Anda?" + +-#: src/client/application/application-main-window.vala:1294 ++#: src/client/application/application-main-window.vala:1338 + msgid "This removes the email from Geary and your email server." + msgstr "Ini menghapus surel dari Geary dan peladen surel Anda." + +-#: src/client/application/application-main-window.vala:1295 ++#: src/client/application/application-main-window.vala:1339 + msgid "This cannot be undone." + msgstr "Ini tidak bisa dibatalkan." + +-#: src/client/application/application-main-window.vala:1296 ++#: src/client/application/application-main-window.vala:1340 + #, c-format + msgid "Empty %s" + msgstr "Kosongkan %s" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1353 ++#: src/client/application/application-main-window.vala:1397 + msgid "Do you want to permanently delete this conversation?" + msgid_plural "Do you want to permanently delete these conversations?" + msgstr[0] "Anda hendak membuang percakapan ini secara permanen?" + msgstr[1] "Anda hendak membuang percakapan-percakapan ini secara permanen?" + +-#: src/client/application/application-main-window.vala:1358 +-#: src/client/application/application-main-window.vala:1373 ++#: src/client/application/application-main-window.vala:1402 ++#: src/client/application/application-main-window.vala:1417 + msgid "Delete" + msgstr "Hapus" + + #. / Translators: Primary text for a confirmation dialog +-#: src/client/application/application-main-window.vala:1368 ++#: src/client/application/application-main-window.vala:1412 + msgid "Do you want to permanently delete this message?" + msgid_plural "Do you want to permanently delete these messages?" + msgstr[0] "Anda mau membuang pesan ini secara permanen?" + msgstr[1] "Anda mau membuang pesan ini secara permanen?" + +-#: src/client/application/application-main-window.vala:1691 ++#: src/client/application/application-main-window.vala:1703 + #, c-format + msgid "%s (%d)" + msgstr "%s (%d)" +@@ -1276,7 +1235,7 @@ msgstr "%s (%d)" + #. Document (100.9MB) + #. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" + #: src/client/components/components-attachment-pane.vala:107 +-#: src/client/composer/composer-widget.vala:1989 ++#: src/client/composer/composer-widget.vala:1788 + #, c-format + msgid "%s (%s)" + msgstr "%s (%s)" +@@ -1297,6 +1256,42 @@ msgstr "" + msgid "Don’t _ask me again" + msgstr "Jangan tanya s_aya lagi" + ++#: src/client/components/components-conversation-actions.vala:90 ++msgid "Mark conversation" ++msgid_plural "Mark conversations" ++msgstr[0] "Tandai percakapan" ++msgstr[1] "Tandai percakapan" ++ ++#: src/client/components/components-conversation-actions.vala:95 ++msgid "Add label to conversation" ++msgid_plural "Add label to conversations" ++msgstr[0] "Tambahkan label ke percakapan" ++msgstr[1] "Tambahkan label ke percakapan" ++ ++#: src/client/components/components-conversation-actions.vala:100 ++msgid "Move conversation" ++msgid_plural "Move conversations" ++msgstr[0] "Pindahkan percakapan" ++msgstr[1] "Pindahkan percakapan" ++ ++#: src/client/components/components-conversation-actions.vala:105 ++msgid "Archive conversation" ++msgid_plural "Archive conversations" ++msgstr[0] "Arsipkan percakapan" ++msgstr[1] "Arsipkan percakapan" ++ ++#: src/client/components/components-conversation-actions.vala:116 ++msgid "Move conversation to Trash" ++msgid_plural "Move conversations to Trash" ++msgstr[0] "Pindahkan percakapan ke Tong Sampah" ++msgstr[1] "Pindahkan percakapan ke Tong Sampah" ++ ++#: src/client/components/components-conversation-actions.vala:126 ++msgid "Delete conversation" ++msgid_plural "Delete conversations" ++msgstr[0] "Hapus percakapan" ++msgstr[1] "Hapus percakapan" ++ + #: src/client/components/components-inspector.vala:78 + msgid "Inspector" + msgstr "Pemeriksa" +@@ -1327,7 +1322,7 @@ msgstr "Simpan sebagai" + + #: src/client/components/components-inspector.vala:230 + #: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +-#: ui/accounts_editor_servers_pane.ui:17 ++#: ui/accounts_editor_servers_pane.ui:17 ui/composer-headerbar.ui:61 + msgid "Cancel" + msgstr "Batal" + +@@ -1343,15 +1338,10 @@ msgstr "_Tampilkan pratinjau percakapan" + + #. / Translators: Preferences label + #: src/client/components/components-preferences-window.vala:144 +-msgid "Use _three pane view" +-msgstr "Pakai tilikan _tiga panel" +- +-#. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:154 + msgid "Use _single key email shortcuts" + msgstr "Gunakan pintasan _surel tombol tunggal" + +-#: src/client/components/components-preferences-window.vala:156 ++#: src/client/components/components-preferences-window.vala:146 + msgid "" + "Enable keyboard shortcuts for email actions that do not require pressing " + "" +@@ -1360,22 +1350,22 @@ msgstr "" + "menekan " + + #. / Translators: Preferences label +-#: src/client/components/components-preferences-window.vala:167 ++#: src/client/components/components-preferences-window.vala:157 + msgid "_Watch for new mail when closed" + msgstr "A_wasi surat baru ketika ditutup" + + #. / Translators: Preferences tooltip +-#: src/client/components/components-preferences-window.vala:171 ++#: src/client/components/components-preferences-window.vala:161 + msgid "Geary will keep running after all windows are closed" + msgstr "Geary akan terus berjalan setelah semua jendela ditutup" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:189 ++#: src/client/components/components-preferences-window.vala:178 + msgid "Preferences" + msgstr "Preferensi" + + #. / Translators: Preferences page title +-#: src/client/components/components-preferences-window.vala:250 ++#: src/client/components/components-preferences-window.vala:234 + msgid "Plugins" + msgstr "Pengaya" + +@@ -1448,22 +1438,6 @@ msgstr "Lihat rincian teknis tentang kesalahan tersebut" + msgid "_Retry" + msgstr "_Ulangi" + +-#: src/client/components/components-reflow-box.c:454 +-msgid "Spacing" +-msgstr "Jarak" +- +-#: src/client/components/components-reflow-box.c:455 +-msgid "Spacing between children" +-msgstr "Jarak antara anak" +- +-#: src/client/components/components-reflow-box.c:470 +-msgid "Row spacing" +-msgstr "Jarak antar baris" +- +-#: src/client/components/components-reflow-box.c:471 +-msgid "Spacing between rows of children" +-msgstr "Jarak antar baris anak " +- + #. / Translators: Search entry placeholder text + #: src/client/components/components-search-bar.vala:12 + #: src/client/folder-list/folder-list-search-branch.vala:53 +@@ -1510,42 +1484,6 @@ msgstr "Suatu nama peladen diperlukan" + msgid "Could not look up server name" + msgstr "Tidak bisa mencari nama peladen" + +-#: src/client/components/main-toolbar.vala:116 +-msgid "Mark conversation" +-msgid_plural "Mark conversations" +-msgstr[0] "Tandai percakapan" +-msgstr[1] "Tandai percakapan" +- +-#: src/client/components/main-toolbar.vala:121 +-msgid "Add label to conversation" +-msgid_plural "Add label to conversations" +-msgstr[0] "Tambahkan label ke percakapan" +-msgstr[1] "Tambahkan label ke percakapan" +- +-#: src/client/components/main-toolbar.vala:126 +-msgid "Move conversation" +-msgid_plural "Move conversations" +-msgstr[0] "Pindahkan percakapan" +-msgstr[1] "Pindahkan percakapan" +- +-#: src/client/components/main-toolbar.vala:131 +-msgid "Archive conversation" +-msgid_plural "Archive conversations" +-msgstr[0] "Arsipkan percakapan" +-msgstr[1] "Arsipkan percakapan" +- +-#: src/client/components/main-toolbar.vala:142 +-msgid "Move conversation to Trash" +-msgid_plural "Move conversations to Trash" +-msgstr[0] "Pindahkan percakapan ke Tong Sampah" +-msgstr[1] "Pindahkan percakapan ke Tong Sampah" +- +-#: src/client/components/main-toolbar.vala:152 +-msgid "Delete conversation" +-msgid_plural "Delete conversations" +-msgstr[0] "Hapus percakapan" +-msgstr[1] "Hapus percakapan" +- + #. / Displayed in the space-limited status bar while a message is in the process of being sent. + #: src/client/components/status-bar.vala:26 + msgid "Sending…" +@@ -1624,6 +1562,10 @@ msgstr "_Simpan" + msgid "_Keep" + msgstr "_Pertahankan" + ++#: src/client/composer/composer-editor.vala:675 ++msgid "Select Color" ++msgstr "Pilih Warna" ++ + #: src/client/composer/composer-link-popover.vala:139 + msgid "Link URL is not correctly formatted, e.g. http://example.com" + msgstr "URL tautan tidak diformat secara benar, mis. http://contoh.com" +@@ -1637,23 +1579,23 @@ msgid "Invalid email address" + msgstr "Alamat surel tidak valid" + + #. / Translators: Title for an empty composer window +-#: src/client/composer/composer-widget.vala:35 ++#: src/client/composer/composer-widget.vala:32 + msgid "New Message" + msgstr "Pesan Baru" + +-#: src/client/composer/composer-widget.vala:239 ++#: src/client/composer/composer-widget.vala:167 + msgid "Saved" + msgstr "Disimpan" + +-#: src/client/composer/composer-widget.vala:240 ++#: src/client/composer/composer-widget.vala:168 + msgid "Saving" + msgstr "Menyimpan" + +-#: src/client/composer/composer-widget.vala:241 ++#: src/client/composer/composer-widget.vala:169 + msgid "Error saving" + msgstr "Galat saat menyimpan" + +-#: src/client/composer/composer-widget.vala:242 ++#: src/client/composer/composer-widget.vala:170 + msgid "Press Backspace to delete quote" + msgstr "Tekan Backspace untuk menghapus kutip" + +@@ -1662,7 +1604,7 @@ msgstr "Tekan Backspace untuk menghapus kutip" + #. checking, include all variants of each word. No spaces are + #. allowed. The words will be converted to lower case based on + #. locale and English versions included automatically. +-#: src/client/composer/composer-widget.vala:258 ++#: src/client/composer/composer-widget.vala:186 + msgid "" + "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" + "enclosing|encloses|enclosure|enclosures" +@@ -1674,109 +1616,105 @@ msgstr "" + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. Keep, Discard or Cancel. +-#: src/client/composer/composer-widget.vala:997 ++#: src/client/composer/composer-widget.vala:865 + msgid "Do you want to keep or discard this draft message?" + msgstr "Anda mau menyimpan atau membuang draf pesan ini?" + + #. Translators: This dialog text is displayed to the + #. user when closing a composer where the options are + #. only Discard or Cancel. +-#: src/client/composer/composer-widget.vala:1023 ++#: src/client/composer/composer-widget.vala:891 + msgid "Do you want to discard this draft message?" + msgstr "Anda mau membuang draf pesan ini?" + +-#: src/client/composer/composer-widget.vala:1645 ++#: src/client/composer/composer-widget.vala:1443 + msgid "Send message with an empty subject and body?" + msgstr "Kirim pesan dengan subjek dan isi kosong?" + +-#: src/client/composer/composer-widget.vala:1647 ++#: src/client/composer/composer-widget.vala:1445 + msgid "Send message with an empty subject?" + msgstr "Kirim pesan dengan subjek kosong?" + +-#: src/client/composer/composer-widget.vala:1649 ++#: src/client/composer/composer-widget.vala:1447 + msgid "Send message with an empty body?" + msgstr "Kirim pesan tanpa isi?" + +-#: src/client/composer/composer-widget.vala:1658 ++#: src/client/composer/composer-widget.vala:1456 + msgid "Send message without an attachment?" + msgstr "Kirim pesan tanpa lampiran?" + +-#: src/client/composer/composer-widget.vala:1977 ++#: src/client/composer/composer-widget.vala:1776 + #, c-format + msgid "“%s” already attached for delivery." + msgstr "\"%s\" sudah dilampirkan untuk pengiriman." + +-#: src/client/composer/composer-widget.vala:2009 +-#: src/client/composer/composer-widget.vala:2059 ++#: src/client/composer/composer-widget.vala:1808 ++#: src/client/composer/composer-widget.vala:1858 + #, c-format + msgid "“%s” is an empty file." + msgstr "\"%s\" adalah berkas kosong." + +-#: src/client/composer/composer-widget.vala:2047 ++#: src/client/composer/composer-widget.vala:1846 + #, c-format + msgid "“%s” could not be found." + msgstr "\"%s\" tidak ditemukan." + +-#: src/client/composer/composer-widget.vala:2053 ++#: src/client/composer/composer-widget.vala:1852 + #, c-format + msgid "“%s” is a folder." + msgstr "\"%s\" adalah sebuah folder." + +-#: src/client/composer/composer-widget.vala:2072 ++#: src/client/composer/composer-widget.vala:1871 + #, c-format + msgid "“%s” could not be opened for reading." + msgstr "\"%s\" tak bisa dibuka untuk dibaca." + +-#: src/client/composer/composer-widget.vala:2080 ++#: src/client/composer/composer-widget.vala:1879 + msgid "Cannot add attachment" + msgstr "Tak bisa menambah lampiran" + ++#. Translators: This is the name of the file chooser filter ++#. when inserting an image in the composer. ++#: src/client/composer/composer-widget.vala:1950 ++msgid "Images" ++msgstr "Citra" ++ + #. Translators: Human-readable version of the RFC 822 To header +-#: src/client/composer/composer-widget.vala:2140 ++#: src/client/composer/composer-widget.vala:2014 + #: src/client/conversation-viewer/conversation-email.vala:542 +-#: src/client/util/util-email.vala:249 ui/conversation-message.ui:312 ++#: src/client/util/util-email.vala:265 ui/conversation-message.ui:312 + msgid "To:" + msgstr "Ke:" + + #. Translators: Human-readable version of the RFC 822 CC header +-#: src/client/composer/composer-widget.vala:2146 ++#: src/client/composer/composer-widget.vala:2020 + #: src/client/conversation-viewer/conversation-email.vala:547 +-#: src/client/util/util-email.vala:254 ui/conversation-message.ui:357 ++#: src/client/util/util-email.vala:270 ui/conversation-message.ui:357 + msgid "Cc:" + msgstr "Cc:" + + #. Translators: Human-readable version of the RFC 822 BCC header +-#: src/client/composer/composer-widget.vala:2152 ++#: src/client/composer/composer-widget.vala:2026 + #: src/client/conversation-viewer/conversation-email.vala:552 + #: ui/conversation-message.ui:402 + msgid "Bcc:" + msgstr "Bcc:" + + #. Translators: Human-readable version of the RFC 822 Reply-To header +-#: src/client/composer/composer-widget.vala:2158 ++#: src/client/composer/composer-widget.vala:2032 + msgid "Reply-To: " + msgstr "Balas-Ke: " + +-#: src/client/composer/composer-widget.vala:2410 +-msgid "Select Color" +-msgstr "Pilih Warna" +- + #. Displayed in the From dropdown to indicate an + #. "alternate email address" for an account. The first + #. printf argument will be the alternate email address, + #. and the second will be the account's primary email + #. address. +-#: src/client/composer/composer-widget.vala:2599 ++#: src/client/composer/composer-widget.vala:2150 + #, c-format + msgid "%1$s via %2$s" + msgstr "%1$s via %2$s" + +-#. Translators: This is the name of the file chooser filter +-#. when inserting an image in the composer. +-#: src/client/composer/composer-widget.vala:2959 +-msgid "Images" +-msgstr "Citra" +- + #: src/client/composer/spell-check-popover.vala:125 + msgid "Remove this language from the preferred list" + msgstr "Hapus bahasa ini dari daftar yang disukai" +@@ -1790,51 +1728,51 @@ msgid "Search for more languages" + msgstr "Cari lebih banyak bahasa lagi" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:339 ++#: src/client/conversation-list/conversation-list-view.vala:389 + msgid "Move conversation to _Trash" + msgid_plural "Move conversations to _Trash" + msgstr[0] "Pindahkan percakapan ke _Tong Sampah" + msgstr[1] "Pindahkan percakapan ke _Tong Sampah" + + #. / Translators: Context menu item +-#: src/client/conversation-list/conversation-list-view.vala:351 ++#: src/client/conversation-list/conversation-list-view.vala:401 + msgid "_Delete conversation" + msgid_plural "_Delete conversations" + msgstr[0] "_Hapus percakapan" + msgstr[1] "_Hapus percakapan" + +-#: src/client/conversation-list/conversation-list-view.vala:364 ++#: src/client/conversation-list/conversation-list-view.vala:414 + #: ui/main-toolbar-menus.ui:5 + msgid "Mark as _Read" + msgstr "Tandai Sudah Di_baca" + +-#: src/client/conversation-list/conversation-list-view.vala:372 ++#: src/client/conversation-list/conversation-list-view.vala:422 + #: ui/main-toolbar-menus.ui:9 + msgid "Mark as _Unread" + msgstr "Tandai _Belum Dibaca" + +-#: src/client/conversation-list/conversation-list-view.vala:380 ++#: src/client/conversation-list/conversation-list-view.vala:430 + #: ui/main-toolbar-menus.ui:17 + msgid "U_nstar" + msgstr "Hapus bi_ntang" + +-#: src/client/conversation-list/conversation-list-view.vala:387 ++#: src/client/conversation-list/conversation-list-view.vala:437 + #: ui/main-toolbar-menus.ui:13 + msgid "_Star" + msgstr "_Bintangi" + + #. Translators: Menu item to reply to a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:396 ++#: src/client/conversation-list/conversation-list-view.vala:446 + #: ui/conversation-email-menus.ui:9 + msgid "_Reply" + msgstr "B_alas" + +-#: src/client/conversation-list/conversation-list-view.vala:402 ++#: src/client/conversation-list/conversation-list-view.vala:452 + msgid "R_eply All" + msgstr "Balas S_emua" + + #. Translators: Menu item to forward a specific message. +-#: src/client/conversation-list/conversation-list-view.vala:408 ++#: src/client/conversation-list/conversation-list-view.vala:458 + #: ui/conversation-email-menus.ui:21 + msgid "_Forward" + msgstr "_Teruskan" +@@ -1845,19 +1783,19 @@ msgstr "Aku" + + #. Translators: Human-readable version of the RFC 822 From header + #: src/client/conversation-viewer/conversation-email.vala:537 +-#: src/client/util/util-email.vala:240 ++#: src/client/util/util-email.vala:256 + msgid "From:" + msgstr "Dari:" + + #. Translators: Human-readable version of the RFC 822 Date header + #: src/client/conversation-viewer/conversation-email.vala:557 +-#: src/client/util/util-email.vala:245 ++#: src/client/util/util-email.vala:261 + msgid "Date:" + msgstr "Tanggal:" + + #. Translators: Human-readable version of the RFC 822 Subject header + #: src/client/conversation-viewer/conversation-email.vala:567 +-#: src/client/util/util-email.vala:243 ++#: src/client/util/util-email.vala:259 + msgid "Subject:" + msgstr "Subjek:" + +@@ -1885,64 +1823,64 @@ msgstr "%d lagi…" + #. in load_contacts. + #. Translators: This is displayed in place of the from address + #. when the message has no from address. +-#: src/client/conversation-viewer/conversation-message.vala:529 ++#: src/client/conversation-viewer/conversation-message.vala:556 + msgid "No sender" + msgstr "Tidak ada pengirim" + + #. Translators: This separates multiple 'from' + #. addresses in the compact header for a message. +-#: src/client/conversation-viewer/conversation-message.vala:920 ++#: src/client/conversation-viewer/conversation-message.vala:1049 + msgid ", " + msgstr ", " + + #. Translators: This string is used as the HTML IMG ALT + #. attribute value when displaying an inline image in an email + #. that did not specify a file name. E.g. Image +Date: Tue, 10 Nov 2020 06:26:51 +0000 +Subject: [PATCH 123/124] Add Indonesian translation + +(cherry picked from commit 4fbacfe91e51f85804129b5e53b30053e16068c4) +--- + help/LINGUAS | 1 + + help/id/id.po | 1645 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 1646 insertions(+) + create mode 100644 help/id/id.po + +diff --git a/help/LINGUAS b/help/LINGUAS +index 81ea1365..0ec96798 100644 +--- a/help/LINGUAS ++++ b/help/LINGUAS +@@ -6,6 +6,7 @@ de + el + es + fr ++id + it + pl + pt_BR +diff --git a/help/id/id.po b/help/id/id.po +new file mode 100644 +index 00000000..1c65fc44 +--- /dev/null ++++ b/help/id/id.po +@@ -0,0 +1,1645 @@ ++# Indonesian translation for geary. ++# Copyright (C) 2020 geary's COPYRIGHT HOLDER ++# This file is distributed under the same license as the geary package. ++# Andika Triwidada , 2020. ++# ++msgid "" ++msgstr "" ++"Project-Id-Version: geary gnome-3-38\n" ++"POT-Creation-Date: 2020-11-01 12:18+0000\n" ++"PO-Revision-Date: 2020-11-10 13:25+0700\n" ++"Language-Team: Indonesian \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Language: id\n" ++"Last-Translator: Andika Triwidada \n" ++"X-Generator: Poedit 2.4.1\n" ++ ++#. Put one translator per line, in the form NAME , YEAR1, YEAR2 ++msgctxt "_" ++msgid "translator-credits" ++msgstr "Andika Triwidada , 2020" ++ ++#. (itstool) path: page/title ++#: C/accounts.page:10 ++msgid "Accounts" ++msgstr "Akun" ++ ++#. (itstool) path: section/title ++#: C/accounts.page:13 ++#, fuzzy ++msgid "Accounts Editor" ++msgstr "Editor Akun" ++ ++#. (itstool) path: section/p ++#: C/accounts.page:15 ++#, fuzzy ++msgid "" ++"Your email accounts can be added, updated, and removed using the " ++"accounts editor. To open it, click Geary’s application menu button " ++"in the main window above the folder list, then click Accounts in " ++"the pop-up menu." ++msgstr "" ++"Akun email Anda dapat ditambahkan, diperbarui, dan dihapus menggunakan " ++"editor akun. Untuk membukanya, klik tombol menu aplikasi Geary di " ++"jendela utama di atas daftar folder, lalu klik Akun di menu pop-" ++"up." ++ ++#. (itstool) path: section/p ++#: C/accounts.page:20 ++#, fuzzy ++msgid "" ++"To change the order that accounts are displayed in the folder list, click " ++"and drag the handle for an account in the accounts editor, or focus an " ++"account with Tab, then use Ctrl and Ctrl to re-position the " ++"currently selected account." ++msgstr "" ++"Untuk mengubah urutan bahwa akun ditampilkan di daftar folder, klik dan " ++"seret gagang untuk akun di editor akun, atau fokuskan akun dengan Tab, lalu gunakan Ctrl↑ dan " ++" Ctrl untuk memposisikan ulang akun " ++"yang saat ini dipilih." ++ ++#. (itstool) path: section/title ++#: C/accounts.page:29 ++#, fuzzy ++msgid "Adding accounts" ++msgstr "Menambahkan akun" ++ ++#. (itstool) path: section/p ++#: C/accounts.page:31 ++#, fuzzy ++msgid "" ++"Geary will automatically use any email accounts you have added via the " ++"Online Accounts panel of GNOME Settings. If you do not " ++"have any accounts added to Online Accounts, you will be prompted " ++"to add an account the first time you run Geary." ++msgstr "" ++"Geary akan secara otomatis menggunakan akun email apa pun yang telah Anda " ++"tambahkan melalui panel Akun Online pengaturan GNOME. " ++"Jika Anda tidak memiliki akun apa pun yang ditambahkan ke Akun Online,Anda akan diminta untuk menambahkan akun saat pertama kali Anda " ++"menjalankan Geary." ++ ++#. (itstool) path: section/p ++#: C/accounts.page:37 ++#, fuzzy ++msgid "" ++"To add additional accounts, open the accounts editor, then choose the " ++"appropriate email provider from the list at the bottom of the window. For " ++"providers supported by Online Accounts, GNOME Settings " ++"will be opened and you will be asked for your account information there. For " ++"other email providers, you will be asked for your account information by " ++"Geary. Once entered, click Create and the account information " ++"will be checked and then added." ++msgstr "" ++"Untuk menambahkan akun tambahan, buka editor akun, lalu pilih penyedia email " ++"yang sesuai dari daftar di bagian bawah jendela. Untuk penyedia yang " ++"didukung oleh Akun Online, Pengaturan GNOME akan " ++"dibuka dan Anda akan dimintai informasi akun Anda di sana. Untuk penyedia " ++"email lain, Anda akan dimintai informasi akun Anda oleh Geary. Setelah " ++"dimasukkan, klik Buat dan informasi akun akan diperiksa lalu " ++"ditambahkan." ++ ++#. (itstool) path: section/title ++#: C/accounts.page:48 ++#, fuzzy ++msgid "Updating existing accounts" ++msgstr "Memperbarui akun yang sudah ada" ++ ++#. (itstool) path: section/p ++#: C/accounts.page:50 ++#, fuzzy ++msgid "" ++"To update existing accounts, open the accounts editor and choose the account " ++"you wish to update. Geary will display settings for the account. From there, " ++"you can add and remove additional sender email addresses, edit your email " ++"signature, and various other settings." ++msgstr "" ++"Untuk memperbarui akun yang sudah ada, buka editor akun dan pilih akun yang " ++"ingin Anda perbarui. Geary akan menampilkan pengaturan untuk akun tersebut. " ++"Dari sana, Anda dapat menambahkan dan menghapus alamat email pengirim " ++"tambahan, mengedit tanda tangan email Anda, dan berbagai pengaturan lainnya." ++ ++#. (itstool) path: section/p ++#: C/accounts.page:56 ++#, fuzzy ++msgid "" ++"The Download mail setting allows you to configure how much mail " ++"Geary will download and store locally. Geary can only use locally available " ++"mail when displaying and searching for conversations." ++msgstr "" ++"Pengaturan Unduh email memungkinkan Anda untuk mengonfigurasi " ++"berapa banyak email yang akan diunduh dan disimpan Geary secara lokal. Geary " ++"hanya dapat menggunakan email yang tersedia secara lokal saat menampilkan " ++"dan mencari percakapan." ++ ++#. (itstool) path: section/p ++#: C/accounts.page:61 ++#, fuzzy ++msgid "" ++"To edit the server settings for the account, scroll to the bottom of the " ++"window and click Server Settings. The server settings will be " ++"displayed and you can click to edit them. Once done, click Apply " ++"and Geary will check the settings, then update the account. Note that " ++"accounts added via the Online Accounts panel of GNOME " ++"Settings cannot have their server name, security, login, or password " ++"settings changed." ++msgstr "" ++"Untuk mengedit pengaturan server untuk akun, gulir ke bagian bawah jendela " ++"dan klik Pengaturan Server. Setelan peladen akan ditampilkan dan " ++"Anda bisa mengklik untuk mengeditnya. Setelah selesai, klik Terapkan dan Geary akan memeriksa pengaturan, lalu perbarui akun. Perhatikan " ++"bahwa akun yang ditambahkan melalui panel Akun Online pengaturan " ++"GNOME tidak dapat mengubah nama server, keamanan, login, atau " ++"kata sandi mereka." ++ ++#. (itstool) path: section/p ++#: C/accounts.page:70 ++#, fuzzy ++msgid "" ++"The Save draft email on server checkbox controls whether the " ++"composer will save copies of email messages being written in the " ++"Drafts folder. If de-selected, you will not be able to save draft " ++"messages when closing the composer." ++msgstr "" ++"Kotak centang Simpan draf email di server mengontrol apakah " ++"komposer akan menyimpan salinan pesan email yang sedang ditulis di folder " ++"Draf. Drafts Jika tidak dipilih, Anda tidak akan dapat menyimpan " ++"pesan draf saat menutup komposer." ++ ++#. (itstool) path: section/p ++#: C/accounts.page:75 ++#, fuzzy ++msgid "" ++"The Save sent email on server checkbox controls whether Geary " ++"will save copies of email that have been sent to the Sent folder. " ++"If de-selected, you will no be able to see any email messages you have sent, " ++"unless your server automatically saves them for you." ++msgstr "" ++"Kotak centang Simpan email terkirim di server mengontrol apakah " ++"Geary akan menyimpan salinan email yang telah dikirim ke folder " ++"Terkirim. Jika tidak dipilih, Anda tidak akan dapat melihat pesan " ++"email apa pun yang telah Anda kirim, kecuali server Anda secara otomatis " ++"menyimpannya untuk Anda." ++ ++#. (itstool) path: section/title ++#: C/accounts.page:83 ++#, fuzzy ++msgid "Removing accounts" ++msgstr "Menghapus akun" ++ ++#. (itstool) path: section/p ++#: C/accounts.page:85 ++#, fuzzy ++msgid "" ++"Accounts added via the Online Accounts panel of GNOME " ++"Settings must also be removed from there. To do so, open Online " ++"Accounts, select the account, and click Remove." ++msgstr "" ++"Akun yang ditambahkan melalui panel Akun Online Pengaturan " ++"GNOME juga harus dihapus dari sana. Untuk melakukannya, buka " ++"Akun Online, pilih akun, dan klik Hapus." ++ ++#. (itstool) path: section/p ++#: C/accounts.page:90 ++#, fuzzy ++msgid "" ++"To remove an account added via Geary, open the accounts editor and choose " ++"the account you wish to remove. Geary will display settings for the account. " ++"Scroll to the bottom of the window and click Remove Account. You " ++"will be prompted to confirm removing the account. Once confirmed, if you " ++"change your mind you can still undo removing the account by clicking " ++"Undo in the popup notification, or by typing CtrlU." ++msgstr "" ++"Untuk menghapus akun yang ditambahkan melalui Geary, buka editor akun dan " ++"pilih akun yang ingin Anda hapus. Geary akan menampilkan pengaturan untuk " ++"akun tersebut. Gulir ke bagian bawah jendela dan klik Hapus Akun. " ++"Anda akan diminta untuk mengonfirmasi menghapus akun. Setelah dikonfirmasi, " ++"jika Anda berubah pikiran, Anda masih bisa membatalkan penghapusan akun " ++"dengan mengklik Batalkan di pemberitahuan popup, atau dengan " ++"mengetik CtrlU." ++ ++#. (itstool) path: page/title ++#: C/archive.page:8 ++#, fuzzy ++msgid "Archive, trash and delete messages" ++msgstr "Mengarsipkan, membuang, dan menghapus pesan" ++ ++#. (itstool) path: page/p ++#: C/archive.page:10 ++#, fuzzy ++msgid "" ++"Geary lets you archive messages if your server supports it. Clicking the " ++"Archive toolbar button moves the conversation " ++"from the current folder to the Archive folder for most email " ++"services, or to All Mail for GMail. Archiving helps keep your " ++"email organised by moving old and replied-to email out of the way." ++msgstr "" ++"Geary memungkinkan Anda mengarsipkan pesan jika server mendukungnya. " ++"Mengklik tombol toolbar Arsip memindahkan " ++"percakapan dari folder saat ini ke folder Arsip untuk sebagian " ++"besar layanan email, atau ke Semua Email untuk GMail. Pengarsipan " ++"membantu menjaga email Anda terorganisir dengan memindahkan email lama dan " ++"balasan keluar dari jalan." ++ ++#. (itstool) path: page/p ++#: C/archive.page:17 ++#, fuzzy ++msgid "" ++"To move conversations to the Trash folder, select them and click " ++"the Trash toolbar button. To permanently delete " ++"conversations, hold down Shift and click the Delete button that appears in place of the Trash button, " ++"or open the conversation in the Trash folder and click Delete there." ++msgstr "" ++"Untuk memindahkan percakapan ke folder Tong Sampah, pilih " ++"percakapan tersebut dan klik tombol Toolbar " ++"sampah. Untuk menghapus percakapan secara permanen, tahan Shift " ++"dan klik tombol Hapus yang muncul menggantikan " ++"tombol Tong Sampah, atau buka percakapan di folder Sampah " ++"dan klik Hapus di sana." ++ ++#. (itstool) path: note/title ++#: C/archive.page:26 ++#, fuzzy ++msgid "Undoing changes" ++msgstr "Membatalkan perubahan" ++ ++#. (itstool) path: note/p ++#: C/archive.page:27 ++#, fuzzy ++msgid "" ++"Note that you can always undo archiving or trashing a message if you change " ++"your mind. Click Undo on the pop-up notification " ++"that appears, or type CtrlZ, or open " ++"the folder, find the message, then move it back to your Inbox" ++msgstr "" ++"Perhatikan bahwa Anda selalu dapat membatalkan pengarsipan atau " ++"menghancurkan pesan jika Anda berubah pikiran. Klik Batalkan pada pemberitahuan pop-up yang muncul, atau ketik " ++"CtrlZ, atau buka folder, temukan pesan, lalu " ++"pindahkan kembali ke Kotak Masuk Anda" ++ ++#. (itstool) path: page/p ++#: C/archive.page:34 ++#, fuzzy ++msgid "" ++"While both Archive and Trash removes conversations from your Inbox folder, " ++"there is an important difference. Clicking Archive will ensure your conversations are kept so you can find them again " ++"later. Clicking Trash will cause conversations " ++"to be hidden from , and they will likely be deleted " ++"in the future." ++msgstr "" ++"Meskipun Arsip dan Sampah menghapus percakapan dari folder Kotak Masuk Anda, ada " ++"perbedaan penting. Mengklik Arsip akan " ++"memastikan percakapan Anda disimpan sehingga Anda bisa menemukannya lagi " ++"nanti. Mengklik Sampah akan menyebabkan " ++"percakapan disembunyikan dari , dan kemungkinan akan " ++"dihapus di masa mendatang." ++ ++#. (itstool) path: page/title ++#: C/bugs.page:10 ++#, fuzzy ++msgid "Need help with Geary?" ++msgstr "Butuh bantuan dengan Geary?" ++ ++#. (itstool) path: section/title ++#: C/bugs.page:13 ++#, fuzzy ++msgid "Getting support" ++msgstr "Mendapatkan dukungan" ++ ++#. (itstool) path: section/p ++#: C/bugs.page:15 ++#, fuzzy ++msgid "" ++"If you are having trouble using Geary, please get in touch with the Geary community " ++"about the problem." ++msgstr "" ++"Jika Anda mengalami masalah menggunakan Geary, silakan hubungi komunitas Geary tentang " ++"masalah tersebut." ++ ++#. (itstool) path: section/title ++#: C/bugs.page:21 ++#, fuzzy ++msgid "Reporting bugs" ++msgstr "Melaporkan bug" ++ ++#. (itstool) path: section/p ++#: C/bugs.page:23 ++#, fuzzy ++msgid "" ++"If you suspect you have found a bug in Geary, please follow the bug reporting " ++"guidelines so the problem can be diagnosed and fixed." ++msgstr "" ++"Jika Anda menduga Anda telah menemukan bug di Geary, silakan ikuti pedoman pelaporan " ++"kutu sehingga masalah dapat didiagnosis dan diperbaiki." ++ ++#. (itstool) path: section/p ++#: C/bugs.page:28 ++#, fuzzy ++msgid "" ++"To help diagnose the problem as fast as possible, please include the " ++"following information:" ++msgstr "" ++"Untuk membantu mendiagnosis masalah secepat mungkin, harap sertakan " ++"informasi berikut:" ++ ++#. (itstool) path: item/p ++#: C/bugs.page:32 ++#, fuzzy ++msgid "Geary version and installation method (Package? Flathub? Source code?)" ++msgstr "" ++"Versi geary dan metode instalasi (Paket? Flathub, apa yang terjadi? Kode " ++"sumber?)" ++ ++#. (itstool) path: item/p ++#: C/bugs.page:34 ++#, fuzzy ++msgid "Your desktop (GNOME? KDE? Something else?)" ++msgstr "Desktop Anda (GNOME? Kde? Sesuatu yang lain?)" ++ ++#. (itstool) path: item/p ++#: C/bugs.page:35 ++#, fuzzy ++msgid "" ++"Your operating system and version (Ubuntu 16.04? Fedora 28? Rolled your own?)" ++msgstr "" ++"Sistem operasi dan versi Anda (Ubuntu 16.04? Fedora 28? Menggulung Anda " ++"sendiri?)" ++ ++#. (itstool) path: item/p ++#: C/bugs.page:37 ++#, fuzzy ++msgid "Email provider (Gmail, Yahoo!, Outlook.com, or someone else?)" ++msgstr "Penyedia email (Gmail, Yahoo!, Outlook.com, atau orang lain?)" ++ ++#. (itstool) path: item/p ++#: C/bugs.page:39 ++#, fuzzy ++msgid "Steps to reproduce the bug" ++msgstr "Langkah-langkah untuk mereproduksi bug" ++ ++#. (itstool) path: item/p ++#: C/bugs.page:40 ++#, fuzzy ++msgid "What happened?" ++msgstr "Apa yang terjadi?" ++ ++#. (itstool) path: item/p ++#: C/bugs.page:41 ++#, fuzzy ++msgid "What did you expect to happen?" ++msgstr "Apa yang Anda harapkan terjadi?" ++ ++#. (itstool) path: section/p ++#: C/bugs.page:44 ++#, fuzzy ++msgid "" ++"Log files can be accessed via the Geary Inspector, press AltI to open it, select and save any relevant log " ++"files, and attach them to the bug report." ++msgstr "" ++"File log dapat diakses melalui Pemeriksa Geary, tekan AltI untuk membukanya, memilih dan menyimpan file log " ++"yang relevan, dan melampirkannya ke laporan bug." ++ ++#. (itstool) path: page/title ++#: C/contributing.page:10 ++#, fuzzy ++msgid "Contribute to Geary" ++msgstr "Berkontribusi pada Geary" ++ ++#. (itstool) path: page/p ++#: C/contributing.page:12 ++#, fuzzy ++msgid "" ++"Want to help improve Geary? There are a number of ways you can contribute:" ++msgstr "" ++"Ingin membantu meningkatkan Geary? Ada beberapa cara untuk berkontribusi:" ++ ++#. (itstool) path: item/p ++#: C/contributing.page:16 ++#, fuzzy ++msgid "" ++"Bug " ++"reporting—report new bugs or request new features" ++msgstr "" ++"Pelaporan bug—" ++"laporkan bug baru atau minta fitur baru" ++ ++#. (itstool) path: item/p ++#: C/contributing.page:19 ++#, fuzzy ++msgid "" ++"Translating—translate Geary’s user interface and user manual into new languages" ++msgstr "" ++"Menerjemahkan—" ++"menerjemahkan antarmuka pengguna dan manual pengguna Geary ke dalam bahasa " ++"baru" ++ ++#. (itstool) path: item/p ++#: C/contributing.page:20 ++#, fuzzy ++msgid "" ++"Development—fix bugs and add new features" ++msgstr "" ++"Pengembangan—" ++"perbaiki bug dan tambahkan fitur baru" ++ ++#. (itstool) path: page/p ++#: C/contributing.page:23 ++#, fuzzy ++msgid "" ++"See the wiki for more information and options for contributing financially to " ++"Geary's development." ++msgstr "" ++"Lihat wiki " ++"untuk informasi lebih lanjut dan opsi untuk berkontribusi secara finansial " ++"untuk pengembangan Geary." ++ ++#. (itstool) path: page/title ++#: C/index.page:6 ++msgid "<_:media-1/> Geary" ++msgstr "<_:media-1/> Geary" ++ ++#. (itstool) path: section/title ++#: C/index.page:12 ++msgid "Introduction" ++msgstr "Perkenalan" ++ ++#. (itstool) path: section/title ++#: C/index.page:16 ++msgid "Using Geary" ++msgstr "Menggunakan Geary" ++ ++#. (itstool) path: section/title ++#: C/index.page:20 ++#, fuzzy ++msgid "Contributing and getting support" ++msgstr "Berkontribusi dan mendapatkan dukungan" ++ ++#. (itstool) path: page/title ++#: C/label.page:10 ++#, fuzzy ++msgid "Label or move a conversation" ++msgstr "Memberi label atau memindahkan percakapan" ++ ++#. (itstool) path: section/title ++#: C/label.page:12 ++#, fuzzy ++msgid "Label a conversation" ++msgstr "Tambahkan label ke percakapan" ++ ++#. (itstool) path: section/p ++#: C/label.page:13 ++#, fuzzy ++msgid "" ++"Geary lets you apply one or more labels to each conversation. Geary " ++"labels correspond to labels in Gmail, or ordinary folders in other mail " ++"services." ++msgstr "" ++"Geary memungkinkan Anda menerapkan satu atau beberapa label ke " ++"setiap percakapan. Label geary sesuai dengan label di Gmail, atau folder " ++"biasa di layanan email lainnya." ++ ++#. (itstool) path: section/p ++#: C/label.page:15 ++#, fuzzy ++msgid "" ++"To label one or more conversations, first select the conversation(s), then " ++"do either of the following:" ++msgstr "" ++"Untuk memberi label satu atau beberapa percakapan, pertama-tama pilih " ++"percakapan, lalu lakukan salah satu hal berikut ini:" ++ ++#. (itstool) path: item/p ++#: C/label.page:18 ++#, fuzzy ++msgid "" ++"Click the Label button on the toolbar and select a label from the " ++"resulting drop-down menu." ++msgstr "" ++"Klik tombol Label pada toolbar dan pilih label dari menu turun " ++"bawah yang dihasilkan." ++ ++#. (itstool) path: item/p ++#: C/label.page:20 ++#, fuzzy ++msgid "" ++"Hold down the Ctrl key and drag the conversation(s) from the " ++"conversation list to the label in the sidebar." ++msgstr "" ++"Tahan tombol Ctrl dan seret percakapan dari daftar percakapan ke " ++"label di bar samping." ++ ++#. (itstool) path: section/title ++#: C/label.page:25 ++#, fuzzy ++msgid "Move a conversation to a folder or label" ++msgstr "Memindahkan percakapan ke folder atau label" ++ ++#. (itstool) path: section/p ++#: C/label.page:26 ++#, fuzzy ++msgid "" ++"To move one or more conversations to a folder or label, first select the " ++"conversation(s), then do either of the following:" ++msgstr "" ++"Untuk memindahkan satu atau beberapa percakapan ke folder atau label, " ++"pertama-tama pilih percakapan, lalu lakukan salah satu hal berikut ini:" ++ ++#. (itstool) path: item/p ++#: C/label.page:29 ++#, fuzzy ++msgid "" ++"Click the Move button on the toolbar and select a folder or label " ++"from the resulting drop-down menu." ++msgstr "" ++"Klik tombol Pindahkan pada toolbar dan pilih folder atau label " ++"dari menu turun bawah yang dihasilkan." ++ ++#. (itstool) path: item/p ++#: C/label.page:31 ++#, fuzzy ++msgid "" ++"Drag the conversation(s) from the conversation list to the folder or label " ++"in the sidebar." ++msgstr "" ++"Seret percakapan dari daftar percakapan ke folder atau label di bar samping." ++ ++#. (itstool) path: page/title ++#: C/limits.page:9 ++msgid "Limitations" ++msgstr "Limitasi" ++ ++#. (itstool) path: page/p ++#: C/limits.page:11 ++#, fuzzy ++msgid "" ++"Geary is still in early development. Geary supports IMAP and has been tested " ++"with Gmail, Yahoo, and the free Dovecot mail server. Experimental support " ++"for Outlook.com is provided. Geary may not yet work well with some IMAP " ++"servers. At this time Geary is still missing numerous features including " ++"offline mode." ++msgstr "" ++"Geary masih dalam pengembangan awal. Geary mendukung IMAP dan telah diuji " ++"dengan Gmail, Yahoo, dan server email Dovecot gratis. Dukungan eksperimental " ++"untuk Outlook.com disediakan. Geary mungkin belum bekerja dengan baik dengan " ++"beberapa server IMAP. Saat ini Geary masih kehilangan banyak fitur termasuk " ++"mode offline." ++ ++#. (itstool) path: page/p ++#: C/limits.page:17 ++#, fuzzy ++msgid "" ++"To learn more about the features we're working on and the future of Geary, " ++"please visit Geary's wiki " ++"page." ++msgstr "" ++"Untuk mempelajari lebih lanjut tentang fitur yang sedang kami kerjakan dan " ++"masa depan Geary, silakan kunjungi halaman wiki Geary." ++ ++#. (itstool) path: page/title ++#. (itstool) path: section/title ++#: C/overview.page:9 C/shortcuts.page:13 ++#, fuzzy ++msgid "Overview" ++msgstr "Gambaran" ++ ++#. (itstool) path: page/p ++#: C/overview.page:11 ++#, fuzzy ++msgid "" ++"Geary is an email application built around conversations, for the GNOME 3 " ++"desktop. It allows you to read, find and send email with a straightforward, " ++"modern interface." ++msgstr "" ++"Geary adalah aplikasi surel yang dibangun di sekitar percakapan, bagi " ++"desktop GNOME 3. Memungkinkan Anda membaca, mencari, dan mengirim surel " ++"dengan antar muka yang modern, mudah." ++ ++#. (itstool) path: page/p ++#: C/overview.page:15 ++#, fuzzy ++msgid "" ++"Conversations allow you to read a complete discussion without having to find " ++"and click from message to message." ++msgstr "" ++"Percakapan memungkinkan Anda membaca diskusi lengkap tanpa perlu mencari dan " ++"mengklik dari pesan ke pesan." ++ ++#. (itstool) path: page/p ++#: C/overview.page:18 ++#, fuzzy ++msgid "" ++"The main Geary window is divided into several areas: The folder list, the " ++"conversation list, and the conversation viewer." ++msgstr "" ++"Jendela Geary utama dibagi menjadi beberapa area: Daftar folder, daftar " ++"percakapan, dan penampil percakapan." ++ ++#. (itstool) path: section/title ++#: C/overview.page:22 ++#, fuzzy ++msgid "Folder list" ++msgstr "Mengambil daftar folder…" ++ ++#. (itstool) path: section/p ++#: C/overview.page:24 ++#, fuzzy ++msgid "" ++"The folder list displays all folders and labels " ++"for your email accounts. Geary uses the term label for any folder " ++"that you have created to organize your email messages." ++msgstr "" ++"Daftar folder menampilkan semua folder dan label " ++"untuk akun email Anda. Geary menggunakan label istilah untuk " ++"folder apa pun yang telah Anda buat untuk mengatur pesan email Anda." ++ ++#. (itstool) path: section/p ++#: C/overview.page:29 ++#, fuzzy ++msgid "" ++"Select a folder or label to display the conversations it contains in the " ++"conversation list." ++msgstr "" ++"Pilih folder atau label untuk menampilkan percakapan yang dikandungnya dalam " ++"daftar percakapan." ++ ++#. (itstool) path: section/title ++#: C/overview.page:34 ++#, fuzzy ++msgid "Conversation list" ++msgstr "Daftar percakapan" ++ ++#. (itstool) path: section/p ++#: C/overview.page:36 ++#, fuzzy ++msgid "" ++"The conversation list displays a list of conversations in the " ++"selected folder. Newer conversations appear at the top." ++msgstr "" ++"Daftar percakapan menampilkan daftar percakapan di folder yang " ++"dipilih. Percakapan yang lebih baru muncul di bagian atas." ++ ++#. (itstool) path: section/p ++#: C/overview.page:40 ++#, fuzzy ++msgid "" ++"Each sender’s name appears bold if there are unread messages from that " ++"sender. If a conversation has more than one message, Geary displays a count " ++"of messages in the conversation." ++msgstr "" ++"Setiap nama pengirim tampak tebal jika ada pesan yang belum dibaca dari " ++"pengirim tersebut. Jika percakapan memiliki lebih dari satu pesan, Geary " ++"menampilkan hitungan pesan dalam percakapan." ++ ++#. (itstool) path: section/p ++#: C/overview.page:44 ++#, fuzzy ++msgid "" ++"Geary does not automatically download all messages in all of your mail " ++"folders. When you first visit your Inbox or any other folder, Geary " ++"downloads the most recent messages in that folder. To see more messages, " ++"simply scroll down the conversation list and Geary will fetch more messages " ++"automatically." ++msgstr "" ++"Geary tidak secara otomatis mengunduh semua pesan di semua folder email " ++"Anda. Saat pertama kali mengunjungi Kotak Masuk atau folder lainnya, Geary " ++"mengunduh pesan terbaru di folder tersebut. Untuk melihat lebih banyak " ++"pesan, cukup gulir ke bawah daftar percakapan dan Geary akan mengambil lebih " ++"banyak pesan secara otomatis." ++ ++#. (itstool) path: section/p ++#: C/overview.page:50 ++#, fuzzy ++msgid "" ++"Some commands in Geary can act on a group of conversations. To select " ++"multiple conversations, hold down the Ctrl key and click each " ++"conversation in turn in the conversation list. Alternatively, click the " ++"first conversation in a range, then hold down Shift and click the " ++"last conversation." ++msgstr "" ++"Beberapa perintah di Geary dapat bertindak pada sekelompok percakapan. Untuk " ++"memilih beberapa percakapan, tahan tombol Ctrl dan klik setiap " ++"percakapan secara aktifkan dalam daftar percakapan. Atau, klik percakapan " ++"pertama dalam rentang, lalu tahan Shift dan klik percakapan " ++"terakhir." ++ ++#. (itstool) path: section/title ++#: C/overview.page:58 ++#, fuzzy ++msgid "Conversation viewer" ++msgstr "Zoom penampil percakapan" ++ ++#. (itstool) path: section/p ++#: C/overview.page:60 ++#, fuzzy ++msgid "" ++"The conversation viewer displays all email messages in the selected " ++"conversation, with the oldest message at the top." ++msgstr "" ++"Penampil percakapan menampilkan semua pesan email dalam percakapan " ++"yang dipilih, dengan pesan tertua di bagian atas." ++ ++#. (itstool) path: section/p ++#: C/overview.page:63 ++#, fuzzy ++msgid "" ++"When you view a conversation, Geary collapses messages that you’ve already " ++"read. Click collapsed messages to expand them. Click an expanded message’s " ++"header to collapse it." ++msgstr "" ++"Saat Anda melihat percakapan, Geary menciutkan pesan yang sudah Anda baca. " ++"Klik pesan yang diciutkan untuk memperluasnya. Klik header pesan yang " ++"diperluas untuk menciutkannya." ++ ++#. (itstool) path: section/p ++#: C/overview.page:67 ++#, fuzzy ++msgid "" ++"Click on any of the sender’s or receiver’s names or email address for a " ++"message to open the contact menu, which displays additional " ++"information and options for the email address. You can to start a new " ++"conversation, copy the email address to the clipboard, and search for " ++"related conversations. If the email address is present in your desktop " ++"address book, it will show the contact’s photo, preferred name, and whether " ++"they are a favourite contact. You can also open the contact in the address " ++"book. If the email address is not already present, you can choose to add " ++"them to the address book, and update the remote image loading preference for " ++"that address." ++msgstr "" ++"Klik salah satu nama atau alamat email pengirim atau penerima untuk pesan " ++"untuk membuka menu kontak, yang menampilkan informasi dan opsi " ++"tambahan untuk alamat email. Anda bisa memulai percakapan baru, menyalin " ++"alamat email ke clipboard, dan mencari percakapan terkait. Jika alamat email " ++"ada di buku alamat desktop Anda, itu akan menampilkan foto kontak, nama " ++"pilihan, dan apakah itu adalah kontak favorit. Anda juga dapat membuka " ++"kontak di buku alamat. Jika alamat email belum ada, Anda dapat memilih untuk " ++"menambahkannya ke buku alamat, dan memperbarui preferensi pemuatan gambar " ++"jarak jauh untuk alamat tersebut." ++ ++#. (itstool) path: section/p ++#: C/overview.page:79 ++#, fuzzy ++msgid "" ++"Click the star button present on each message to mark or un-mark a message " ++"as being starred. Staring a message will mark the whole conversation as " ++"starred, and Geary will display the first starred message in a conversation " ++"when returning to it." ++msgstr "" ++"Klik tombol bintang yang ada pada setiap pesan untuk menandai atau " ++"membatalkan tandai pesan sebagai bintang. Menatap pesan akan menandai " ++"seluruh percakapan seperti yang dibintangi, dan Geary akan menampilkan pesan " ++"berbintang pertama dalam percakapan ketika kembali ke sana." ++ ++#. (itstool) path: section/p ++#: C/overview.page:84 ++#, fuzzy ++msgid "" ++"Click the menu button present on each message to open the message menu, which allows you to reply and forward to a specific message, update " ++"which messages have been marked as read or unread, print a message, and so " ++"on." ++msgstr "" ++"Klik tombol menu yang ada pada setiap pesan untuk membuka menu pesan, yang memungkinkan Anda untuk membalas dan meneruskan ke pesan tertentu, " ++"memperbarui pesan mana yang telah ditandai sebagai sudah dibaca atau belum " ++"dibaca, mencetak pesan, dan sebagainya." ++ ++#. (itstool) path: section/p ++#: C/overview.page:89 ++#, fuzzy ++msgid "" ++"Any attachments in a message appear at the bottom of the message. Double " ++"click an attachment to open it, or use the Open and Save buttons to open and " ++"save selected attachments." ++msgstr "" ++"Setiap lampiran dalam pesan muncul di bagian bawah pesan. Klik ganda " ++"lampiran untuk membukanya, atau gunakan tombol Buka dan Simpan untuk membuka " ++"dan menyimpan lampiran yang dipilih." ++ ++#. (itstool) path: page/title ++#: C/preferences.page:10 ++msgid "Preferences" ++msgstr "Preferensi" ++ ++#. (itstool) path: page/p ++#: C/preferences.page:12 ++#, fuzzy ++msgid "" ++"Geary allows you to customise how it works via its Preferences window. To open the window, select Preferences from the application menu on the main window's toolbar. " ++"You can change the following options:" ++msgstr "" ++"Geary memungkinkan Anda untuk menyesuaikan cara kerjanya melalui jendela " ++"Preferensi. Untuk membuka jendela, pilih Preferensi dari menu aplikasi di toolbar jendela " ++"utama. Anda bisa mengubah opsi berikut:" ++ ++#. (itstool) path: item/title ++#: C/preferences.page:19 ++#, fuzzy ++msgid "Automatically select next message" ++msgstr "Otomatis pilih pesan berikutnya" ++ ++#. (itstool) path: item/p ++#: C/preferences.page:20 ++#, fuzzy ++msgid "" ++"When this option is enabled, Geary automatically selects the latest message " ++"in a folder when you enter the folder. In addition, after archiving a " ++"message, Geary automatically selects an adjacent message." ++msgstr "" ++"Ketika opsi ini diaktifkan, Geary secara otomatis memilih pesan terbaru " ++"dalam folder saat Anda memasuki folder. Selain itu, setelah mengarsipkan " ++"pesan, Geary secara otomatis memilih pesan yang berdekatan." ++ ++#. (itstool) path: item/title ++#: C/preferences.page:26 ++#, fuzzy ++msgid "Display conversation preview" ++msgstr "Tampilkan pratinjau percakapan" ++ ++#. (itstool) path: item/p ++#: C/preferences.page:27 ++#, fuzzy ++msgid "" ++"Enables message previews in the conversation list. Previews show the first " ++"few lines of each message." ++msgstr "" ++"Mengaktifkan pratinjau pesan dalam daftar percakapan. Pratinjau " ++"memperlihatkan beberapa baris pertama dari setiap pesan." ++ ++#. (itstool) path: item/title ++#: C/preferences.page:31 ++#, fuzzy ++msgid "Use three pane view" ++msgstr "Menggunakan tampilan tiga panel" ++ ++#. (itstool) path: item/p ++#: C/preferences.page:32 ++#, fuzzy ++msgid "" ++"Show the folder list, the conversation list, and the messages side-by-side-" ++"by-side in three panes. If not selected, the folder list and conversation " ++"list will be stacked vertically in a single pane." ++msgstr "" ++"Memperlihatkan daftar folder, daftar percakapan, dan pesan berdampingan " ++"dalam tiga panel. Jika tidak dipilih, daftar folder dan daftar percakapan " ++"akan ditumpuk secara vertikal dalam satu panel." ++ ++#. (itstool) path: item/title ++#: C/preferences.page:38 ++#, fuzzy ++msgid "Use single key email shortcuts" ++msgstr "Menggunakan pintasan email satu tombol" ++ ++#. (itstool) path: item/p ++#: C/preferences.page:39 ++#, fuzzy ++msgid "" ++"Enable keyboard shortcuts for email actions that do not require pressing " ++"Ctrl. These match the shortcuts used by GMail. See for details." ++msgstr "" ++"Aktifkan pintasan keyboard untuk tindakan email yang tidak memerlukan " ++"penekanan Ctrl. Ini cocok dengan pintasan yang digunakan oleh " ++"GMail. Lihat untuk detailnya." ++ ++#. (itstool) path: item/title ++#: C/preferences.page:44 ++#, fuzzy ++msgid "Watch for new mail when closed" ++msgstr "Tonton email baru saat ditutup" ++ ++#. (itstool) path: item/p ++#: C/preferences.page:45 ++#, fuzzy ++msgid "" ++"Geary will watch your accounts for new mail even when the main window is not " ++"open. To do this, it will silently start when you log in to your computer, " ++"and it will continue to run after you close all windows." ++msgstr "" ++"Geary akan menonton akun Anda untuk email baru bahkan ketika jendela utama " ++"tidak terbuka. Untuk melakukan ini, diam-diam akan dimulai ketika Anda masuk " ++"ke komputer Anda, dan itu akan terus berjalan setelah Anda menutup semua " ++"jendela." ++ ++#. (itstool) path: page/title ++#: C/search.page:10 ++msgid "Search" ++msgstr "Pencarian" ++ ++#. (itstool) path: page/p ++#: C/search.page:12 ++#, fuzzy ++msgid "" ++"Geary supports a per-account full text search. To start a search, select a " ++"folder associated with the account you'd like to search against. Then click " ++"the search box in the toolbar (or press CtrlS) and start typing. Results will appear after a brief delay." ++msgstr "" ++"Geary mendukung pencarian teks lengkap per akun. Untuk memulai pencarian, " ++"pilih folder yang terkait dengan akun yang ingin Anda cari. Lalu klik kotak " ++"pencarian di bar alat (atau tekan CtrlS)dan mulailah mengetik. Hasil akan muncul setelah penundaan singkat." ++ ++#. (itstool) path: page/p ++#: C/search.page:16 ++#, fuzzy ++msgid "" ++"The full text search includes email text, email addresses (to, from, and " ++"cc), subject lines and attachment filenames." ++msgstr "" ++"Pencarian teks lengkap mencakup teks email, alamat email (ke, dari, dan cc), " ++"baris subjek dan nama file lampiran." ++ ++#. (itstool) path: page/p ++#: C/search.page:19 ++#, fuzzy ++msgid "" ++"Keywords that match your search are highlighted in the message view. Geary " ++"will match different forms of the same word, for example searching for \"walk" ++"\" will also match \"walking\" and \"walked.\"" ++msgstr "" ++"Kata kunci yang cocok dengan pencarian Anda disorot dalam tampilan pesan. " ++"Geary akan mencocokkan berbagai bentuk kata yang sama, misalnya mencari " ++"\"berjalan\" juga akan cocok dengan \"berjalan\" dan \"berjalan.\"" ++ ++#. (itstool) path: section/title ++#: C/search.page:23 ++msgid "Search operators" ++msgstr "Operator pencarian" ++ ++#. (itstool) path: section/p ++#: C/search.page:24 ++#, fuzzy ++msgid "Geary supports the following operators to limit the scope of searches:" ++msgstr "Geary mendukung operator berikut untuk membatasi cakupan pencarian:" ++ ++#. (itstool) path: td/p ++#: C/search.page:27 ++#, fuzzy ++msgid "attachment:filename" ++msgstr "Lampiran:filename" ++ ++#. (itstool) path: td/p ++#: C/search.page:28 ++#, fuzzy ++msgid "Finds messages with attachments whose name matches filename." ++msgstr "" ++"Menemukan pesan dengan lampiran yang namanya filename cocok." ++ ++#. (itstool) path: td/p ++#: C/search.page:31 ++#, fuzzy ++msgid "bcc:recipient" ++msgstr "Bcc:recipient" ++ ++#. (itstool) path: td/p ++#: C/search.page:32 ++#, fuzzy ++msgid "Finds messages where recipient matches email BCC fields." ++msgstr "" ++"Menemukan pesan di mana recipient cocok dengan bidang BCC email." ++ ++#. (itstool) path: td/p ++#: C/search.page:35 ++#, fuzzy ++msgid "body:text" ++msgstr "Tubuh:text" ++ ++#. (itstool) path: td/p ++#: C/search.page:36 ++#, fuzzy ++msgid "Finds messages whose body contains text." ++msgstr "Menemukan pesan yang isinya berisi text ." ++ ++#. (itstool) path: td/p ++#: C/search.page:39 ++#, fuzzy ++msgid "cc:recipient" ++msgstr "Cc:recipient" ++ ++#. (itstool) path: td/p ++#: C/search.page:40 ++#, fuzzy ++msgid "Finds messages where recipient matches email CC fields." ++msgstr "" ++"Menemukan pesan di mana recipient cocok dengan bidang CC email." ++ ++#. (itstool) path: td/p ++#: C/search.page:43 ++#, fuzzy ++msgid "from:sender" ++msgstr "Dari:sender" ++ ++#. (itstool) path: td/p ++#: C/search.page:44 ++#, fuzzy ++msgid "Finds messages where sender matches email From fields." ++msgstr "" ++"Menemukan pesan di mana sender cocok dengan email Dari bidang." ++ ++#. (itstool) path: td/p ++#: C/search.page:47 ++#, fuzzy ++msgid "is:read" ++msgstr "is:read" ++ ++#. (itstool) path: td/p ++#: C/search.page:48 ++#, fuzzy ++msgid "Finds messages that have been marked as read." ++msgstr "Menemukan pesan yang telah ditandai sebagai sudah dibaca." ++ ++#. (itstool) path: td/p ++#: C/search.page:51 ++#, fuzzy ++msgid "is:starred" ++msgstr "is:bintang" ++ ++#. (itstool) path: td/p ++#: C/search.page:52 ++#, fuzzy ++msgid "Finds messages that have been marked as starred." ++msgstr "Menemukan pesan yang telah ditandai sebagai berbintang." ++ ++#. (itstool) path: td/p ++#: C/search.page:55 ++#, fuzzy ++msgid "is:unread" ++msgstr "is:belum dibaca" ++ ++#. (itstool) path: td/p ++#: C/search.page:56 ++#, fuzzy ++msgid "Finds messages that have been marked as not read." ++msgstr "Menemukan pesan yang telah ditandai sebagai tidak dibaca." ++ ++#. (itstool) path: td/p ++#: C/search.page:59 ++#, fuzzy ++msgid "subject:text" ++msgstr "Subjek:text" ++ ++#. (itstool) path: td/p ++#: C/search.page:60 ++#, fuzzy ++msgid "Finds messages whose subject contains text." ++msgstr "Menemukan pesan yang subjeknya berisi text ." ++ ++#. (itstool) path: td/p ++#: C/search.page:63 ++#, fuzzy ++msgid "to:recipient" ++msgstr "Untuk:recipient" ++ ++#. (itstool) path: td/p ++#: C/search.page:64 ++#, fuzzy ++msgid "" ++"Finds messages where recipient matches email To, CC, or BCC " ++"fields." ++msgstr "" ++"Menemukan pesan di mana recipient cocok dengan bidang Email " ++"Kepada, CC, atau BCC." ++ ++#. (itstool) path: section/p ++#: C/search.page:68 ++#, fuzzy ++msgid "" ++"As a special case, the bcc, cc, from, and to operators support me as their " ++"argument, which searches for the account's email address in the appropriate " ++"context." ++msgstr "" ++"Sebagai kasus khusus, BccCcdari, dandukungan " ++"operatorsaya sebagai argumen mereka, yang mencari alamat email akun " ++"dalam konteks yang sesuai." ++ ++#. (itstool) path: page/title ++#: C/shortcuts.page:10 ++#, fuzzy ++msgid "Keyboard shortcuts" ++msgstr "Pintasan papan tik" ++ ++#. (itstool) path: section/p ++#: C/shortcuts.page:14 ++#, fuzzy ++msgid "" ++"Geary has keyboard shortcuts for most common operations. Use the built-in " ++"help to discover the full list. To open the shortcuts help, select Keyboard Shortcuts from the application menu on the " ++"main window's toolbar, or using the keyboard shortcuts listed below." ++msgstr "" ++"Geary memiliki pintasan keyboard untuk operasi yang paling umum. Gunakan " ++"bantuan bawaan untuk menemukan daftar lengkap. Untuk membuka bantuan " ++"pintasan, pilih Pintasan Keyboard dari menu " ++"aplikasi di toolbar jendela utama, atau menggunakan pintasan keyboard yang " ++"tercantum di bawah ini." ++ ++#. (itstool) path: section/p ++#: C/shortcuts.page:20 ++#, fuzzy ++msgid "" ++"The following keyboard shortcuts can be used to access on-line help from " ++"Geary:" ++msgstr "" ++"Pintasan keyboard berikut ini dapat digunakan untuk mengakses bantuan on-" ++"line dari Geary:" ++ ++#. (itstool) path: td/p ++#: C/shortcuts.page:24 ++#, fuzzy ++msgid "Display this online help manual" ++msgstr "Tampilkan manual bantuan daring ini" ++ ++#. (itstool) path: td/p ++#: C/shortcuts.page:25 ++#, fuzzy ++msgid "F1" ++msgstr "F1" ++ ++#. (itstool) path: td/p ++#: C/shortcuts.page:28 ++#, fuzzy ++msgid "Display all keyboard shortcuts" ++msgstr "Menampilkan semua pintasan keyboard" ++ ++#. (itstool) path: td/p ++#: C/shortcuts.page:29 ++#, fuzzy ++msgid "Ctrl?" ++msgstr "Ctrl+" ++ ++#. (itstool) path: section/title ++#: C/shortcuts.page:37 ++#, fuzzy ++msgid "Single key shortcuts" ++msgstr "Pintasan Tombol Tunggal" ++ ++#. (itstool) path: section/p ++#: C/shortcuts.page:39 ++#, fuzzy ++msgid "" ++"You can enable keyboard shortcuts for email actions that do not require " ++"pressing Ctrl. These match the shortcuts used by GMail. See for details." ++msgstr "" ++"Anda bisa mengaktifkan pintasan keyboard untuk tindakan email yang tidak " ++"memerlukan penekanan Ctrl. Ini cocok dengan pintasan yang " ++"digunakan oleh GMail. Lihat untuk detailnya." ++ ++#. (itstool) path: section/p ++#: C/shortcuts.page:43 ++#, fuzzy ++msgid "" ++"The full list of single key shortcuts enabled by this preference can be " ++"found via the keyboard shortcuts help, above." ++msgstr "" ++"Daftar lengkap pintasan tombol tunggal yang diaktifkan oleh preferensi ini " ++"dapat ditemukan melalui bantuan pintasan keyboard, di atas." ++ ++#. (itstool) path: page/title ++#: C/star.page:10 ++#, fuzzy ++msgid "Star a message or mark it as read/unread" ++msgstr "Membintangi pesan atau menandainya sebagai sudah dibaca/belum dibaca" ++ ++#. (itstool) path: section/title ++#: C/star.page:12 ++#, fuzzy ++msgid "Star messages" ++msgstr "Pesan bintang" ++ ++#. (itstool) path: section/p ++#: C/star.page:13 ++#, fuzzy ++msgid "" ++"You can star messages to indicate that they're important to you. To mark a " ++"conversation with a star, click its star icon in the conversation list. You " ++"can star an individual message by clicking the star at the upper right of " ++"the message itself." ++msgstr "" ++"Anda dapat membintangi pesan untuk menunjukkan bahwa pesan tersebut penting " ++"bagi Anda. Untuk menandai percakapan dengan bintang, klik ikon bintangnya di " ++"daftar percakapan. Anda dapat membintangi pesan individual dengan mengklik " ++"bintang di kanan atas pesan itu sendiri." ++ ++#. (itstool) path: section/p ++#: C/star.page:15 ++#, fuzzy ++msgid "" ++"With Gmail accounts, starred messages appear in the Starred folder in the " ++"folder list." ++msgstr "" ++"Dengan akun Gmail, pesan berbintang muncul di folder Berbintang di daftar " ++"folder." ++ ++#. (itstool) path: section/title ++#: C/star.page:18 ++#, fuzzy ++msgid "Mark messages as read or unread" ++msgstr "Menandai pesan sebagai sudah dibaca atau belum dibaca" ++ ++#. (itstool) path: section/p ++#: C/star.page:19 ++#, fuzzy ++msgid "" ++"Geary marks messages as read automatically as you read them. To manually " ++"toggle a conversation as read or unread, click the circle icon in the " ++"conversation list." ++msgstr "" ++"Geary menandai pesan sebagai sudah dibaca secara otomatis saat Anda " ++"membacanya. Untuk beralih percakapan secara manual sebagai sudah dibaca atau " ++"belum dibaca, klik ikon lingkaran di daftar percakapan." ++ ++#. (itstool) path: section/p ++#: C/star.page:22 ++#, fuzzy ++msgid "" ++"Alternately, the Mark as Unread in the Mark menu on " ++"the toolbar can be used to toggle the read status of the selected " ++"conversation(s)." ++msgstr "" ++"Secara bergantian, Tandai sebagai Belum Dibaca di menu " ++"Tandai pada toolbar dapat digunakan untuk beralih ke status baca percakapan " ++"yang dipilih." ++ ++#. (itstool) path: section/p ++#: C/star.page:25 ++#, fuzzy ++msgid "" ++"To mark an individual message as read, select Mark as Read from " ++"the dropdown menu." ++msgstr "" ++"Untuk menandai pesan individual sebagai sudah dibaca, pilih Tandai " ++"sebagai Sudah Dibaca dari menu turun bawah." ++ ++#. (itstool) path: page/title ++#: C/write.page:7 ++#, fuzzy ++msgid "Writing new email and replying" ++msgstr "Menulis email baru dan membalas" ++ ++#. (itstool) path: section/title ++#: C/write.page:10 ++#, fuzzy ++msgid "Composing and replying" ++msgstr "Menyusun dan membalas" ++ ++#. (itstool) path: section/p ++#: C/write.page:12 ++#, fuzzy ++msgid "" ++"To start a new email conversation, click the Compose button on the toolbar. Type the email address of the people to receive " ++"the message in the To text field, and a subject " ++"line in the Subject field. You can then type your " ++"message in the text area below these. Once the message is ready to send, " ++"click Send or type CtrlEnter to send the message." ++msgstr "" ++"Untuk memulai percakapan email baru, klik tombol " ++"Tulis pada toolbar. Ketik alamat email orang-orang untuk menerima pesan di " ++"bidang Teks kepada, dan baris subjek di bidang Subjek. Anda kemudian dapat mengetik pesan Anda " ++"di area teks di bawah ini. Setelah pesan siap dikirim, klik Kirim atau ketik CtrlEnter untuk mengirim pesan." ++ ++#. (itstool) path: note/title ++#: C/write.page:23 ++#, fuzzy ++msgid "Undoing sending" ++msgstr "Membatalkan pengiriman" ++ ++#. (itstool) path: note/p ++#: C/write.page:24 ++#, fuzzy ++msgid "" ++"When sending an email, Geary will wait 5 seconds before delivering the " ++"message. During this time, you will be able to click Undo on the pop-up notification that appears or type " ++"CtrlZ to re-open the email, and make " ++"more changes to it." ++msgstr "" ++"Saat mengirim email, Geary akan menunggu 5 detik sebelum menyampaikan pesan. " ++"Selama waktu ini, Anda akan dapat mengklik Batalkan " ++"pemberitahuan pop-up yang muncul atau ketik CtrlZ untuk membuka kembali email, dan membuat lebih " ++"banyak perubahan padanya." ++ ++#. (itstool) path: section/p ++#: C/write.page:32 ++#, fuzzy ++msgid "" ++"To show the Cc, Bcc, " ++"and Reply-to fields, click the More options button at the end of the To " ++"field. Cc allows you to send a copy of the email to other, secondary " ++"recipients. Bcc is similar, but the Bcc list is hidden from recipients. The " ++"Reply-To field specifies an email address to reply to, if recipients should " ++"reply to a different email address than the sender's." ++msgstr "" ++"Untuk memperlihatkan bidang Cc, Bcc, dan Reply-to, klik tombol Opsi lainnya di akhir bidang Kepada. Cc memungkinkan Anda mengirim salinan email ke penerima " ++"sekunder lainnya. Bcc mirip, tetapi daftar Bcc disembunyikan dari penerima. " ++"Bidang Balas-Ke menentukan alamat email untuk dibalas, jika penerima harus " ++"membalas ke alamat email yang berbeda dari alamat pengirim." ++ ++#. (itstool) path: section/p ++#: C/write.page:41 ++#, fuzzy ++msgid "" ++"When entering an email address into any of these fields, Geary will provide " ++"suggestions from your desktop address book and from previously sent and " ++"received email messages. To choose one of these suggestions, simply click on " ++"it." ++msgstr "" ++"Saat memasukkan alamat email ke salah satu bidang ini, Geary akan memberikan " ++"saran dari buku alamat desktop Anda dan dari pesan email yang dikirim dan " ++"diterima sebelumnya. Untuk memilih salah satu saran ini, cukup klik di " ++"atasnya." ++ ++#. (itstool) path: section/p ++#: C/write.page:46 ++#, fuzzy ++msgid "" ++"To reply to the currently selected conversation, click one of the Reply, Reply All or Forward toolbar buttons. This will open a new reply or " ++"forwarded email composer for the latest message in the conversation." ++msgstr "" ++"Untuk membalas percakapan yang saat ini dipilih, klik salah satu tombol balas, Balas Semua atau Teruskan toolbar. Ini akan membuka balasan baru " ++"atau komposer email yang diteruskan untuk pesan terbaru dalam percakapan." ++ ++#. (itstool) path: section/p ++#: C/write.page:52 ++#, fuzzy ++msgid "" ++"When replying, the message being replied to will be quoted and copied into " ++"the footer of the new reply. This can be deleted before typing a reply by " ++"pressing Backspace. Alternatively, text can be selectively quoted " ++"by selecting the desired text in a message and clicking Reply or Reply All, only the selected " ++"text will be quoted." ++msgstr "" ++"Saat membalas, pesan yang dibalas akan dikutip dan disalin ke footer balasan " ++"baru. Ini dapat dihapus sebelum mengetik balasan dengan menekan " ++"Backspace. Atau, teks dapat dikutip secara selektif dengan " ++"memilih teks yang diinginkan dalam pesan dan mengklik Balas atau Balas Semua, hanya teks yang " ++"dipilih yang akan dikutip." ++ ++#. (itstool) path: section/p ++#: C/write.page:60 ++#, fuzzy ++msgid "" ++"To reply to a specific email message, open the message menu in the top " ++"corner of the message and choose Reply, Reply All or " ++"Forward." ++msgstr "" ++"Untuk membalas pesan email tertentu, buka menu pesan di sudut atas pesan dan " ++"pilih Balas , Balas Semua atau Teruskan . " ++"Forward" ++ ++#. (itstool) path: section/title ++#: C/write.page:66 ++#, fuzzy ++msgid "Text formatting, images and attachments" ++msgstr "Pemformatan teks, gambar, dan lampiran" ++ ++#. (itstool) path: section/p ++#: C/write.page:68 ++#, fuzzy ++msgid "" ++"Geary's email composer lets you use text styles such as bold and " ++"italic, indent text to quote it, and links to web pages. Simply " ++"select the text and click the appropriate button on the formatting toolbar " ++"at the bottom of the composer area." ++msgstr "" ++"Komposer email Geary memungkinkan Anda menggunakan gaya teks seperti " ++"teks tebal dan miring,inden untuk mengutipnya, dan " ++"menautkan ke halaman web. Cukup pilih teks dan klik tombol yang sesuai pada " ++"toolbar pemformatan di bagian bawah area komposer." ++ ++#. (itstool) path: section/p ++#: C/write.page:74 ++#, fuzzy ++msgid "" ++"Bulleted and numbered lists can be inserted or removed by clicking the Bulleted list and Numbered " ++"list buttons on the formatting toolbar. The level of indentation of " ++"list items can be adjusted using the Indent and " ++"Un-indent formatting toolbar buttons." ++msgstr "" ++"Daftar berpoin dan bernomor bisa disisipkan atau dihapus dengan mengklik " ++"tombol daftar Berpoin dan daftar bernomor pada " ++"toolbar pemformatan. Bulleted list Tingkat " ++"indentasi item daftar dapat disetel menggunakan tombol toolbar pemformatan Inden dan " ++"Tidak Inden." ++ ++#. (itstool) path: section/p ++#: C/write.page:81 ++#, fuzzy ++msgid "" ++"Images can be inserted into rich text messages by clicking the Insert Image button on the formatting toolbar and selecting " ++"the image to attach, by dragging an image from the Files " ++"application into the email body and then dropping it, or by pasting an image " ++"that has been copied to the clipboard from another application." ++msgstr "" ++"Gambar dapat dimasukkan ke dalam pesan teks kaya dengan mengklik tombol Sisipkan Gambar pada toolbar pemformatan dan memilih " ++"gambar untuk dilampirkan, dengan menyeret gambar dari aplikasi File ke dalam isi email dan kemudian menjatuhkannya, atau dengan menempelkan " ++"gambar yang telah disalin ke clipboard dari aplikasi lain." ++ ++#. (itstool) path: section/p ++#: C/write.page:88 ++#, fuzzy ++msgid "" ++"Documents, music, videos, and other files can be attached to the email by " ++"clicking the Attach File button at the bottom of " ++"the composer window and selecting the document to attach, or by dragging a " ++"file from the Files application to the composer window, and " ++"dropping it either on the text fields at the top of the window or on the " ++"toolbar at the bottom." ++msgstr "" ++"Dokumen, musik, video, dan file lainnya dapat dilampirkan ke email dengan " ++"mengklik tombol Lampirkan File di bagian bawah " ++"jendela komposer dan memilih dokumen untuk dilampirkan, atau dengan menyeret " ++"file dari aplikasi File ke jendela komposer, dan menjatuhkannya " ++"baik di bidang teks di bagian atas jendela atau di toolbar di bagian bawah." ++ ++#. (itstool) path: section/p ++#: C/write.page:96 ++#, fuzzy ++msgid "" ++"A number of keyboard shortcuts are available in the composer; see for details." ++msgstr "" ++"Sejumlah pintasan keyboard tersedia di komposer; lihat untuk detailnya." ++ ++#. (itstool) path: section/p ++#: C/write.page:99 ++#, fuzzy ++msgid "" ++"You may specify a signature to be inserted into the footer of email in the " ++"composer via the dialog." ++msgstr "" ++"Anda dapat menentukan tanda tangan yang akan disisipkan ke footer email di " ++"komposer melalui dialog." ++ ++#. (itstool) path: section/title ++#: C/write.page:104 ++msgid "Checking spelling" ++msgstr "Memeriksa ejaan" ++ ++#. (itstool) path: section/p ++#: C/write.page:106 ++#, fuzzy ++msgid "" ++"Geary supports spell-checking your composed email in one or more languages, " ++"as you type. To enable spell-checking, first ensure your computer has spell-" ++"check dictionaries installed for the desired languages. Consult your " ++"computer's help to determine how to install dictionaries if not present." ++msgstr "" ++"Geary mendukung pemeriksaan ejaan email yang Anda buat dalam satu bahasa " ++"atau lebih, saat Anda mengetik. Untuk mengaktifkan pemeriksaan ejaan, " ++"pertama-tama pastikan komputer Anda memiliki kamus pemeriksaan ejaan yang " ++"terinstal untuk bahasa yang diinginkan. Lihat bantuan komputer Anda untuk " ++"menentukan cara menginstal kamus jika tidak ada." ++ ++#. (itstool) path: section/p ++#: C/write.page:112 ++#, fuzzy ++msgid "" ++"To select languages for spell-checking, click the Spell check button on the formatting toolbar, and the language " ++"selection popover will appear. Click on a language in the list to toggle it " ++"on or off, and click the - button to remove it " ++"from the list. If a language does not appear in the list, search for it by " ++"typing its name in the search box, then click the + button to add it." ++msgstr "" ++"Untuk memilih bahasa untuk pemeriksaan ejaan, klik tombol centang Ejaan pada toolbar pemformatan, dan popover pilihan " ++"bahasa akan muncul. Klik pada bahasa dalam daftar untuk mengaktifkan atau " ++"menonaktifkannya, dan klik tombol - untuk " ++"menghapusnya dari daftar. Jika bahasa tidak muncul dalam daftar, cari dengan " ++"mengetikkan namanya di kotak pencarian, lalu klik tombol + untuk menambahkannya." ++ ++#. (itstool) path: section/title ++#: C/write.page:123 ++#, fuzzy ++msgid "Saving drafts and restoring discarded messages" ++msgstr "Menyimpan draf dan memulihkan pesan yang dibuang" ++ ++#. (itstool) path: section/p ++#: C/write.page:125 ++#, fuzzy ++msgid "" ++"For mail servers that support drafts, Geary will automatically save the " ++"message as you type on the server after a short delay." ++msgstr "" ++"Untuk server email yang mendukung draf, Geary akan secara otomatis menyimpan " ++"pesan saat Anda mengetik di server setelah penundaan singkat." ++ ++#. (itstool) path: section/p ++#: C/write.page:129 ++#, fuzzy ++msgid "" ++"To edit an existing draft, select the Drafts folder in the folder " ++"list, select the message, and click \"Edit Draft\" in the conversation " ++"viewer." ++msgstr "" ++"Untuk mengedit draf yang sudah ada, pilih folder Draf di daftar " ++"folder, pilih pesan, dan klik \"Edit Draf\" di penampil percakapan." ++ ++#. (itstool) path: section/p ++#: C/write.page:133 ++#, fuzzy ++msgid "Geary will delete the draft when you send the message." ++msgstr "Geary akan menghapus draf ketika Anda mengirim pesan." ++ ++#. (itstool) path: note/p ++#: C/write.page:136 ++#, fuzzy ++msgid "" ++"If you save or discard a composed email, you can re-open it by clicking Undo on the pop-up notification that appears or by " ++"typing CtrlZ. Composers can be " ++"reopened for up to 30 minutes after they are closed. After that, you will " ++"need to re-open the message via the Drafts folder, if present." ++msgstr "" ++"Jika Anda menyimpan atau menghapus email yang disusun, Anda bisa membukanya " ++"kembali dengan mengklik Batalkan pada " ++"pemberitahuan pop-up yang muncul atau dengan mengetik CtrlZ. Komposer dapat dibuka kembali hingga 30 menit " ++"setelah ditutup. Setelah itu, Anda harus membuka kembali pesan melalui " ++"folder Draf, jika ada." ++ ++#. (itstool) path: section/title ++#: C/write.page:146 ++#, fuzzy ++msgid "Plain text messages" ++msgstr "Pesan teks biasa" ++ ++#. (itstool) path: section/p ++#: C/write.page:148 ++#, fuzzy ++msgid "" ++"Geary can also send plain text messages. Press the More options button at the end of the bottom toolbar, then choose " ++"\"Rich Text\" or \"Plain Text\". Plain text mode is useful when sending " ++"email to mailing lists that prohibit rich text (HTML) messages, or when " ++"sending email to people that do no use modern clients like Geary." ++msgstr "" ++"Geary juga dapat mengirim pesan teks biasa. Tekan tombol Opsi lainnya di akhir toolbar bawah, lalu pilih \"Teks Kaya\" atau " ++"\"Teks Biasa\". Mode teks biasa berguna saat mengirim email ke milis yang " ++"melarang pesan teks kaya (HTML), atau saat mengirim email ke orang yang " ++"tidak menggunakan klien modern seperti Geary." ++ ++#. (itstool) path: section/p ++#: C/write.page:155 ++#, fuzzy ++msgid "" ++"In plain text mode, text will be automatically wrapped using soft line " ++"breaks so that it is no longer than 74 characters wide, and indented text " ++"will be wrapped and quoted using a “>” character for each level of " ++"quoting." ++msgstr "" ++"Dalam mode teks biasa, teks akan dibungkus secara otomatis menggunakan " ++"hentian baris lunak sehingga lebarnya tidak lebih dari 74 karakter, dan teks " ++"berindentasi akan dibungkus dan dikutip menggunakan karakter \">\" untuk " ++"setiap tingkat kutipan." +-- +2.29.2 + diff --git a/mail-client/geary/files/0124-Update-Swedish-translation.patch b/mail-client/geary/files/0124-Update-Swedish-translation.patch new file mode 100644 index 0000000..15bee65 --- /dev/null +++ b/mail-client/geary/files/0124-Update-Swedish-translation.patch @@ -0,0 +1,1156 @@ +From ecd9e2e982395ce5346f83f603176b4be384d314 Mon Sep 17 00:00:00 2001 +From: Anders Jonsson +Date: Fri, 13 Nov 2020 14:21:32 +0000 +Subject: [PATCH 124/124] Update Swedish translation + +(cherry picked from commit 3033edb1ea32f765a451f9e1436839abf92d5fe9) +--- + help/sv/sv.po | 894 +++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 632 insertions(+), 262 deletions(-) + +diff --git a/help/sv/sv.po b/help/sv/sv.po +index 3314d28c..e0c9ba1a 100644 +--- a/help/sv/sv.po ++++ b/help/sv/sv.po +@@ -1,14 +1,14 @@ + # Swedish translation for geary help. +-# Copyright © 2017-2019 geary's COPYRIGHT HOLDER ++# Copyright © 2017-2020 geary's COPYRIGHT HOLDER + # This file is distributed under the same license as the geary package. + # Josef Andersson , 2017. +-# Anders Jonsson , 2019. ++# Anders Jonsson , 2019, 2020. + # + msgid "" + msgstr "" + "Project-Id-Version: geary master\n" +-"POT-Creation-Date: 2019-06-19 10:27+0000\n" +-"PO-Revision-Date: 2019-09-02 20:31+0200\n" ++"POT-Creation-Date: 2020-09-19 08:49+0000\n" ++"PO-Revision-Date: 2020-11-13 15:20+0100\n" + "Last-Translator: Anders Jonsson \n" + "Language-Team: Swedish \n" + "Language: sv\n" +@@ -16,7 +16,7 @@ msgstr "" + "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.2.3\n" ++"X-Generator: Poedit 2.4.1\n" + + #. Put one translator per line, in the form NAME , YEAR1, YEAR2 + msgctxt "_" +@@ -211,71 +211,122 @@ msgstr "" + "CtrlU." + + #. (itstool) path: page/title +-#: C/archive.page:10 +-msgid "Delete or archive a message" +-msgstr "Ta bort eller arkivera ett meddelande" ++#: C/archive.page:8 ++msgid "Archive, trash and delete messages" ++msgstr "Arkivera, lägg i papperskorg och ta bort meddelanden" + + #. (itstool) path: page/p +-#: C/archive.page:12 ++#: C/archive.page:10 + msgid "" +-"When you use Geary with a Gmail account, Geary lets you archive " +-"messages. The Archive toolbar button archives the selected " +-"conversation(s). Archived messages appear in the All Mail folder." ++"Geary lets you archive messages if your server supports it. Clicking the " ++"Archive toolbar button moves the conversation " ++"from the current folder to the Archive folder for most email " ++"services, or to All Mail for GMail. Archiving helps keep your " ++"email organised by moving old and replied-to email out of the way." + msgstr "" +-"När du använder Geary med ett Gmail-konto låter Geary dig arkivera " +-"meddelanden. Knappen Arkivera i verktygsfältet arkiverar de " +-"markerade konversationerna. Arkiverade meddelanden visas i mappen All e-" +-"post." ++"Geary låter dig arkivera meddelanden om din server stöder det. Att klicka på " ++"verktygsfältsknappen Arkivera flyttar " ++"konversationen från aktuell mapp till mappen Arkiv för de flesta " ++"e-posttjänster, eller till All e-post för GMail. Arkivering " ++"hjälper till att hålla din e-post organiserad genom att flytta gammal och " ++"besvarad e-post ur vägen." + + #. (itstool) path: page/p +-#: C/archive.page:16 +-msgid "" +-"With other mail servers, you can trash or delete, but not archive, messages. " +-"To move one or more conversations to the Trash folder, select " +-"them and press the Trash button on the toolbar. To permanently " +-"delete the conversations, hold down Shift and press the " +-"Delete button that appears in place of the Trash " +-"button." +-msgstr "" +-"Med andra e-postservar kan du ta bort eller flytta till papperskorgen, men " +-"inte arkivera meddelanden. För att flytta en eller flera konversation till " +-"Papperskorgen, markera dem och tryck ned Papperskorg i " +-"verktygsfältet. För att permanent ta bort konversationerna , håll nere " +-"Skift och tryck ned Ta bort som visas istället för " +-"knappen Papperskorg." ++#: C/archive.page:17 ++msgid "" ++"To move conversations to the Trash folder, select them and click " ++"the Trash toolbar button. To permanently delete " ++"conversations, hold down Shift and click the Delete button that appears in place of the Trash button, " ++"or open the conversation in the Trash folder and click Delete there." ++msgstr "" ++"För att flytta konversationer till mappen Papperskorg, markera " ++"dem och klicka på knappen Papperskorg i " ++"verktygsfältet. För att permanent ta bort konversationer, håll nere " ++"Skift och klicka på knappen Ta bort " ++"som visas istället för knappen Papperskorg, eller öppna " ++"konversationen i mappen Papperskorg och klicka där på Ta bort." ++ ++#. (itstool) path: note/title ++#: C/archive.page:26 ++msgid "Undoing changes" ++msgstr "Ångra ändringar" ++ ++#. (itstool) path: note/p ++#: C/archive.page:27 ++msgid "" ++"Note that you can always undo archiving or trashing a message if you change " ++"your mind. Click Undo on the pop-up notification " ++"that appears, or type CtrlZ, or open " ++"the folder, find the message, then move it back to your Inbox" ++msgstr "" ++"Observera att du alltid kan ångra arkivering eller flytt till papperskorgen " ++"av ett meddelande om du ändrar dig. Klicka på Ångra i poppuppaviseringen som visas, eller tryck CtrlZ, eller öppna mappen, hitta meddelandet, och flytta " ++"sedan tillbaka det till din Inkorg" + + #. (itstool) path: page/p +-#: C/archive.page:21 +-msgid "" +-"Delete is not available from every folder, such as Search. Delete is also " +-"unavailable for Gmail. For Gmail, Trash will move messages to the " +-"Trash folder on the server, where the user can then manually delete them. " +-"The server will automatically remove trashed messages after 30 days." +-msgstr "" +-"Ta bort är inte tillgängligt från varje mapp som till exempel Sök. Ta bort " +-"är inte heller tillgängligt för Gmail. För Gmail kommer Papperskorg att flytta meddelanden till Skräpkorgen på servern där användaren " +-"manuellt kan ta bort dem. Servern tar automatiskt bort meddelanden i " +-"papperskorgen efter 30 dagar." ++#: C/archive.page:34 ++msgid "" ++"While both Archive and Trash removes conversations from your Inbox folder, " ++"there is an important difference. Clicking Archive will ensure your conversations are kept so you can find them again " ++"later. Clicking Trash will cause conversations " ++"to be hidden from , and they will likely be deleted " ++"in the future." ++msgstr "" ++"Medan både Arkivera och Flytta till papperskorg tar bort konversationer från din " ++"Inkorg-mapp, så finns det en viktig skillnad. Att klicka på Arkivera kommer säkerställa att dina konversationer " ++"behålls så att du kan hitta dem igen senare. Att klicka på Flytta till papperskorg kommer få konversationer att döljas " ++"från , och de kommer troligen att tas bort i " ++"framtiden." + + #. (itstool) path: page/title + #: C/bugs.page:10 +-msgid "Found a bug?" +-msgstr "Har du hittat ett fel?" ++msgid "Need help with Geary?" ++msgstr "Behöver du hjälp med Geary?" + +-#. (itstool) path: page/p +-#: C/bugs.page:12 ++#. (itstool) path: section/title ++#: C/bugs.page:13 ++msgid "Getting support" ++msgstr "Få support" ++ ++#. (itstool) path: section/p ++#: C/bugs.page:15 + msgid "" +-"If you suspect you've found a bug in Geary, please get in touch about it so it can be " +-"fixed." ++"If you are having trouble using Geary, please get in touch with the Geary community " ++"about the problem." + msgstr "" +-"Om du misstänker att du hittat ett fel i Geary, kontakta oss om det så att det kan " +-"fixas." ++"Om du har problem med att använda Geary, kom i kontakt med Geary-gemenskapen om ditt " ++"problem." + +-#. (itstool) path: page/p +-#: C/bugs.page:16 ++#. (itstool) path: section/title ++#: C/bugs.page:21 ++msgid "Reporting bugs" ++msgstr "Rapportera fel" ++ ++#. (itstool) path: section/p ++#: C/bugs.page:23 ++msgid "" ++"If you suspect you have found a bug in Geary, please follow the bug reporting " ++"guidelines so the problem can be diagnosed and fixed." ++msgstr "" ++"Om du misstänker att du hittat ett fel i Geary, följ riktlinjerna för felrapportering så att det kan fixas." ++ ++#. (itstool) path: section/p ++#: C/bugs.page:28 + msgid "" + "To help diagnose the problem as fast as possible, please include the " + "following information:" +@@ -284,46 +335,52 @@ msgstr "" + "följande information:" + + #. (itstool) path: item/p +-#: C/bugs.page:20 ++#: C/bugs.page:32 + msgid "Geary version and installation method (Package? Flathub? Source code?)" + msgstr "Geary-version och installationsmetod (Paket? Flathub? Källkod?)" + + #. (itstool) path: item/p +-#: C/bugs.page:22 ++#: C/bugs.page:34 + msgid "Your desktop (GNOME? KDE? Something else?)" + msgstr "Din skrivbordsmiljö (GNOME? KDE? Något annat?)" + + #. (itstool) path: item/p +-#: C/bugs.page:23 ++#: C/bugs.page:35 + msgid "" + "Your operating system and version (Ubuntu 16.04? Fedora 28? Rolled your own?)" + msgstr "" + "Ditt operativsystem och version (Ubuntu 16.04? Fedora 28? Gjort ett eget?)" + + #. (itstool) path: item/p +-#: C/bugs.page:25 ++#: C/bugs.page:37 + msgid "Email provider (Gmail, Yahoo!, Outlook.com, or someone else?)" + msgstr "E-postleverantör (Gmail, Yahoo!, Outlook.com, eller någon annan?)" + + #. (itstool) path: item/p +-#: C/bugs.page:27 ++#: C/bugs.page:39 + msgid "Steps to reproduce the bug" + msgstr "Steg för att reproducera felet" + + #. (itstool) path: item/p +-#: C/bugs.page:28 ++#: C/bugs.page:40 + msgid "What happened?" + msgstr "Vad hände?" + + #. (itstool) path: item/p +-#: C/bugs.page:29 ++#: C/bugs.page:41 + msgid "What did you expect to happen?" + msgstr "Vad förväntade du dig skulle hända?" + +-#. (itstool) path: page/p +-#: C/bugs.page:32 +-msgid "Thanks for your help!" +-msgstr "Tack för hjälpen!" ++#. (itstool) path: section/p ++#: C/bugs.page:44 ++msgid "" ++"Log files can be accessed via the Geary Inspector, press AltI to open it, select and save any relevant log " ++"files, and attach them to the bug report." ++msgstr "" ++"Loggfiler kan kommas åt via Geary-inspektören, tryck AltI för att öppna den, välj och spara relevanta " ++"loggfiler, och bifoga dem till felrapporten." + + #. (itstool) path: page/title + #: C/contributing.page:10 +@@ -350,11 +407,11 @@ msgstr "" + #. (itstool) path: item/p + #: C/contributing.page:19 + msgid "" +-"User Experience " +-"Design—research and develop Geary’s user experience" ++"Translating—translate Geary’s user interface and user manual into new languages" + msgstr "" +-"Design och " +-"användarupplevelse—utforska och utveckla Gearys användarupplevelse" ++"Översättning—översätt Gearys användargränssnitt och användarhandbok till nya språk" + + #. (itstool) path: item/p + #: C/contributing.page:20 +@@ -365,67 +422,36 @@ msgstr "" + "Utveckling—fixa fel och lägg till nya funktioner" + +-#. (itstool) path: item/p +-#: C/contributing.page:21 +-msgid "" +-"Translating—translate Geary’s user interface and user manual into new languages" +-msgstr "" +-"Översättning—översätt Gearys användargränssnitt och användarhandbok till nya språk" +- +-#. (itstool) path: item/p +-#: C/contributing.page:22 +-msgid "" +-"Join the " +-"discussion—on the mailing list or IRC channel" +-msgstr "" +-"Gå med i " +-"diskussionen—på sändlistan eller IRC-kanalen" +- + #. (itstool) path: page/p +-#: C/contributing.page:25 +-msgid "Thanks for your help making Geary better!" +-msgstr "Tack för att du hjälper till att göra Geary bättre!" +- +-#. (itstool) path: title/media +-#. This is a reference to an external file such as an image or video. When +-#. the file changes, the md5 hash will change to let you know you need to +-#. update your localized copy. The msgstr is not used at all. Set it to +-#. whatever you like once you have updated your copy of the file. +-#: C/index.page:6 +-#| msgctxt "_" +-#| msgid "" +-#| "external ref='figures/geary.svg' md5='18b50c9e10fe5256ae1cb12aaa3a7600'" +-msgctxt "_" +-msgid "external ref='figures/geary.svg' md5='1c66fe237d546362fda9f209840da4a8'" ++#: C/contributing.page:23 ++msgid "" ++"See the wiki for more information and options for contributing financially to " ++"Geary's development." + msgstr "" +-"external ref='figures/geary.svg' md5='1c66fe237d546362fda9f209840da4a8'" ++"Se wikin " ++"för mer information och alternativ för att bidra finansiellt till Gearys " ++"utveckling." + + #. (itstool) path: page/title +-#: C/index.page:5 +-#| msgid " Geary" +-msgid "" +-" " +-"Geary" +-msgstr "" +-" " +-"Geary" ++#: C/index.page:6 ++msgid "<_:media-1/> Geary" ++msgstr "<_:media-1/> Geary" + + #. (itstool) path: section/title +-#: C/index.page:11 ++#: C/index.page:12 + msgid "Introduction" + msgstr "Introduktion" + + #. (itstool) path: section/title +-#: C/index.page:15 ++#: C/index.page:16 + msgid "Using Geary" + msgstr "Använda Geary" + + #. (itstool) path: section/title +-#: C/index.page:19 +-msgid "Contributing and bug reporting" +-msgstr "Bidra och rapportera fel" ++#: C/index.page:20 ++msgid "Contributing and getting support" ++msgstr "Bidra och få support" + + #. (itstool) path: page/title + #: C/label.page:10 +@@ -538,7 +564,8 @@ msgstr "" + "Gearys wikisida." + + #. (itstool) path: page/title +-#: C/overview.page:9 ++#. (itstool) path: section/title ++#: C/overview.page:9 C/shortcuts.page:13 + msgid "Overview" + msgstr "Översikt" + +@@ -744,30 +771,25 @@ msgid "Preferences" + msgstr "Inställningar" + + #. (itstool) path: page/p +-#: C/preferences.page:11 ++#: C/preferences.page:12 + msgid "" +-"The Preferences option is available in either Geary's application " +-"menu or the gear menu in the upper-right of the toolbar. (The location " +-"depends on the install desktop shell. For GNOME Shell and Unity, the " +-"application menu is available near the top-left corner of the screen.)" ++"Geary allows you to customise how it works via its Preferences window. To open the window, select Preferences from the application menu on the main window's toolbar. " ++"You can change the following options:" + msgstr "" +-"Alternativet Inställningar är tillgängligt i antingen Gearys " +-"programmeny eller kugghjulsmenyn i övre högra hörnet av verktygsfältet. " +-"(Platsen beror på installerat skrivbordsskal. För GNOME Shell och Unity är " +-"programmenyn tillgänglig nära övre vänstra hörnet av skärmen.)" +- +-#. (itstool) path: section/title +-#: C/preferences.page:17 +-msgid "Reading" +-msgstr "Läsning" ++"Geary låter dig anpassa hur det fungerar genom sin meny Inställningar. För att öppna fönstret, välj Inställningar från programmenyn i huvudfönstrets verktygsfält. Du " ++"kan ändra följande alternativ:" + + #. (itstool) path: item/title +-#: C/preferences.page:20 ++#: C/preferences.page:19 + msgid "Automatically select next message" + msgstr "Välj nästa meddelande automatiskt" + + #. (itstool) path: item/p +-#: C/preferences.page:21 ++#: C/preferences.page:20 + msgid "" + "When this option is enabled, Geary automatically selects the latest message " + "in a folder when you enter the folder. In addition, after archiving a " +@@ -807,48 +829,29 @@ msgstr "" + "paneler. Om ej vald kommer mapplistan och konversationslistan att staplas " + "vertikalt i en enda panel." + +-#. (itstool) path: section/title +-#: C/preferences.page:40 +-msgid "Notifications" +-msgstr "Aviseringar" +- +-#. (itstool) path: item/title +-#: C/preferences.page:43 +-msgid "Play notification sounds" +-msgstr "Spela aviseringsljud" +- +-#. (itstool) path: item/p +-#: C/preferences.page:44 +-msgid "When set, Geary plays a sound whenever a new message arrives." +-msgstr "Om valt spelar Geary ett ljud när ett nytt meddelande inkommer." +- + #. (itstool) path: item/title +-#: C/preferences.page:47 +-msgid "Show notifications for new mail" +-msgstr "Visa aviseringar för ny e-post" ++#: C/preferences.page:38 ++msgid "Use single key email shortcuts" ++msgstr "Använd e-postkortkommandon med en tangent" + + #. (itstool) path: item/p +-#: C/preferences.page:48 ++#: C/preferences.page:39 + msgid "" +-"When set, Geary displays a notification each time a new message " +-"arrives. Notifications are displayed in a system-dependent manner. On GNOME " +-"Shell, notifications appear at the bottom of the display (older versions) or " +-"centered just below the top bar (newer versions). In Ubuntu Unity, " +-"notifications appear at the upper right of the display." ++"Enable keyboard shortcuts for email actions that do not require pressing " ++"Ctrl. These match the shortcuts used by GMail. See for details." + msgstr "" +-"Om satt visar Geary en avisering varje gång ett nytt meddelande " +-"inkommer. Aviseringar visas på ett systemberoende sätt. I GNOME Shell visas " +-"aviseringar längst ned (äldre versioner) eller centrerade precis under " +-"översta fältet (nyare versioner). I Ubuntu Unity visas aviseringar längst " +-"upp höger." ++"Aktivera tangentbordsgenvägar för e-poståtgärder som inte kräver att " ++"Ctrl trycks ned. Dessa matchar kortkommandona som används av " ++"GMail. se för detaljer." + + #. (itstool) path: item/title +-#: C/preferences.page:54 ++#: C/preferences.page:44 + msgid "Watch for new mail when closed" + msgstr "Kontrollera om det finns ny e-post vid avslut" + + #. (itstool) path: item/p +-#: C/preferences.page:55 ++#: C/preferences.page:45 + msgid "" + "Geary will watch your accounts for new mail even when the main window is not " + "open. To do this, it will silently start when you log in to your computer, " +@@ -1033,22 +1036,22 @@ msgstr "" + msgid "Keyboard shortcuts" + msgstr "Tangentbordsgenvägar" + +-#. (itstool) path: page/p +-#: C/shortcuts.page:12 ++#. (itstool) path: section/p ++#: C/shortcuts.page:14 + msgid "" + "Geary has keyboard shortcuts for most common operations. Use the built-in " +-"keyboard shortcuts help in Geary to discover the full list. This can be " +-"accessed via the application menu: GearyKeyboard " +-"Shortcuts or using the keyboard shortcuts listed below." ++"help to discover the full list. To open the shortcuts help, select Keyboard Shortcuts from the application menu on the " ++"main window's toolbar, or using the keyboard shortcuts listed below." + msgstr "" + "Geary har tangentbordsgenvägar för de flesta vanliga operationer. Använd den " +-"inbyggda hjälpen för tangentbordsgenvägar i Geary för att se den " +-"fullständiga listan. Denna kan kommas åt via programmenyn: " +-"GearyTangentbordsgenvägar eller genom " +-"att använda tangentbordsgenvägarna listade nedan." ++"inbyggda hjälpen för att se den fullständiga listan. För att öppna hjälpen " ++"för kortkommandon, välj Tangentbordsgenvägar " ++"från programmenyn i huvudfönstrets verktygsfält, eller genom att använda " ++"tangentbordsgenvägarna listade nedan." + +-#. (itstool) path: page/p +-#: C/shortcuts.page:18 ++#. (itstool) path: section/p ++#: C/shortcuts.page:20 + msgid "" + "The following keyboard shortcuts can be used to access on-line help from " + "Geary:" +@@ -1057,28 +1060,49 @@ msgstr "" + "från Geary:" + + #. (itstool) path: td/p +-#: C/shortcuts.page:22 +-msgid "Display this User Manual" +-msgstr "Visa denna användarhandbok" ++#: C/shortcuts.page:24 ++msgid "Display this online help manual" ++msgstr "Visa denna näthandbok" + + #. (itstool) path: td/p +-#: C/shortcuts.page:23 ++#: C/shortcuts.page:25 + msgid "F1" + msgstr "F1" + + #. (itstool) path: td/p +-#: C/shortcuts.page:26 ++#: C/shortcuts.page:28 + msgid "Display all keyboard shortcuts" + msgstr "Visa alla tangentbordsgenvägar" + + #. (itstool) path: td/p +-#: C/shortcuts.page:27 ++#: C/shortcuts.page:29 ++msgid "Ctrl?" ++msgstr "Ctrl?" ++ ++#. (itstool) path: section/title ++#: C/shortcuts.page:37 ++msgid "Single key shortcuts" ++msgstr "Kortkommandon med en tangent" ++ ++#. (itstool) path: section/p ++#: C/shortcuts.page:39 + msgid "" +-"Ctrl? or CtrlF1" ++"You can enable keyboard shortcuts for email actions that do not require " ++"pressing Ctrl. These match the shortcuts used by GMail. See for details." + msgstr "" +-"Ctrl? eller CtrlF1" ++"Du kan aktivera tangentbordsgenvägar för e-poståtgärder som inte kräver att " ++"Ctrl trycks ned. Dessa matchar kortkommandona som används av " ++"GMail. Se för detaljer." ++ ++#. (itstool) path: section/p ++#: C/shortcuts.page:43 ++msgid "" ++"The full list of single key shortcuts enabled by this preference can be " ++"found via the keyboard shortcuts help, above." ++msgstr "" ++"Den fullständiga listan över kortkommandon med en tangent som aktiveras av " ++"denna inställning kan ses via hjälpen för tangentbordsgenvägar ovan." + + #. (itstool) path: page/title + #: C/star.page:10 +@@ -1149,90 +1173,197 @@ msgstr "" + "som läst från rullgardinsmenyn." + + #. (itstool) path: page/title +-#: C/write.page:9 +-msgid "Write a message" +-msgstr "Skriv ett meddelande" ++#: C/write.page:7 ++msgid "Writing new email and replying" ++msgstr "Skriva nya meddelanden och svara" + + #. (itstool) path: section/title +-#: C/write.page:12 ++#: C/write.page:10 + msgid "Composing and replying" + msgstr "Skriva meddelanden och svara" + + #. (itstool) path: section/p +-#: C/write.page:13 ++#: C/write.page:12 + msgid "" +-"To compose a new message in Geary, press the New Message button " +-"on the toolbar." ++"To start a new email conversation, click the Compose button on the toolbar. Type the email address of the people to receive " ++"the message in the To text field, and a subject " ++"line in the Subject field. You can then type your " ++"message in the text area below these. Once the message is ready to send, " ++"click Send or type CtrlEnter to send the message." ++msgstr "" ++"För att starta en ny e-postkonversation, klicka på knappen Skriv i verktygsfältet. Skriv in e-postadressen för " ++"personerna som ska få meddelandet i textfältet Till, och en ämnesrad i fältet Ämne. Du kan sedan " ++"skriva in ditt meddelande i textområdet under dessa. När meddelandet är " ++"klart att skickas kan du klicka Skicka eller " ++"trycka CtrlRetur för att skicka " ++"meddelandet." ++ ++#. (itstool) path: note/title ++#: C/write.page:23 ++msgid "Undoing sending" ++msgstr "Ångra sändning" ++ ++#. (itstool) path: note/p ++#: C/write.page:24 ++msgid "" ++"When sending an email, Geary will wait 5 seconds before delivering the " ++"message. During this time, you will be able to click Undo on the pop-up notification that appears or type " ++"CtrlZ to re-open the email, and make " ++"more changes to it." + msgstr "" +-"För att skapa ett nytt meddelande i Geary, tryck ned knappen Nytt " +-"meddelande i verktygsfältet." ++"Då du skickar ett e-postmeddelande kommer Geary att vänta fem sekunder innan " ++"meddelandet skickas. Under denna tid kommer du kunna klicka Ångra i poppuppaviseringen som visas eller trycka " ++"CtrlZ för att öppna e-postmeddelandet " ++"på nytt och göra fler ändringar i det." ++ ++#. (itstool) path: section/p ++#: C/write.page:32 ++msgid "" ++"To show the Cc, Bcc, " ++"and Reply-to fields, click the More options button at the end of the To " ++"field. Cc allows you to send a copy of the email to other, secondary " ++"recipients. Bcc is similar, but the Bcc list is hidden from recipients. The " ++"Reply-To field specifies an email address to reply to, if recipients should " ++"reply to a different email address than the sender's." ++msgstr "" ++"För att visa fälten Cc, Bcc och Svara-till, klicka på knappen Fler inställningar i slutet av fältet Till. Cc låter dig skicka en kopia av meddelandet till andra, " ++"sekundära mottagare. Bcc liknar detta, men Bcc-listan är dold för " ++"mottagarna. Fältet Svara-till anger en e-postadress att svara till, om " ++"mottagare ska svara till en annan e-postadress än avsändarens." + + #. (itstool) path: section/p +-#: C/write.page:16 ++#: C/write.page:41 + msgid "" +-"To reply to a message, open the message menu in the upper right corner of " +-"the message and choose Reply, Reply All or " +-"Forward. You can also reply to the last message in a conversation " +-"via the Reply, Reply All or Forward buttons " +-"on the toolbar." ++"When entering an email address into any of these fields, Geary will provide " ++"suggestions from your desktop address book and from previously sent and " ++"received email messages. To choose one of these suggestions, simply click on " ++"it." + msgstr "" +-"För att svara på ett meddelande, öppna meddelandemenyn i övre högra hörnet " +-"av meddelandet och välj Svara, Svara alla eller " +-"Vidarebefordra. Du kan också svara på det senaste meddelandet i " +-"en konversation med knapparna Svara, Svara alla eller " +-"Vidarebefordra i verktygsfältet." +- +-#. (itstool) path: section/title +-#: C/write.page:21 +-msgid "Features" +-msgstr "Egenskaper" ++"När en e-postadress matas in i något av dessa fält så kommer Geary att " ++"tillhandahålla förslag från ditt skrivbords adressbok och från tidigare " ++"skickade och mottagna e-postmeddelanden. För att välja ett av dessa förslag, " ++"klicka helt enkelt på det." + + #. (itstool) path: section/p +-#: C/write.page:23 ++#: C/write.page:46 + msgid "" +-"Geary's email composer lets you adjust the font, size and color of text. You " +-"can also insert hyperlinks into messages." ++"To reply to the currently selected conversation, click one of the Reply, Reply All or Forward toolbar buttons. This will open a new reply or " ++"forwarded email composer for the latest message in the conversation." + msgstr "" +-"Gearys e-postredigerare låter dig justera en texts typsnitt, storlek och " +-"färg. Du kan också infoga länkar i meddelanden." ++"För att besvara den aktuellt markerade konversationen, klicka på en av " ++"verktygsfältsknapparna Svara, Svara alla eller Vidarebefordra. Detta " ++"kommer öppna en ny e-postredigerare för svar eller vidarebefordran för det " ++"senaste meddelandet i konversationen." ++ ++#. (itstool) path: section/p ++#: C/write.page:52 ++msgid "" ++"When replying, the message being replied to will be quoted and copied into " ++"the footer of the new reply. This can be deleted before typing a reply by " ++"pressing Backspace. Alternatively, text can be selectively quoted " ++"by selecting the desired text in a message and clicking Reply or Reply All, only the selected " ++"text will be quoted." ++msgstr "" ++"Vid svar kommer meddelandet som besvaras att citeras och kopieras till " ++"sidfoten på det nya svaret. Detta kan tas bort innan ett svar skrivs genom " ++"att trycka Backsteg. Alternativt kan text citeras selektivt genom " ++"att markera den önskade texten i ett meddelande och klicka på Svara eller Svara alla, så " ++"kommer endast den markerade texten att citeras." + + #. (itstool) path: section/p +-#: C/write.page:25 ++#: C/write.page:60 + msgid "" +-"Geary can also send plain text messages. In the drop-down menu, check or " +-"uncheck \"Rich Text\" to toggle between plain text and rich text mode." ++"To reply to a specific email message, open the message menu in the top " ++"corner of the message and choose Reply, Reply All or " ++"Forward." + msgstr "" +-"Geary kan också skicka vanliga textmeddelanden. I rullgardinsmenyn, kryssa i " +-"eller av ”Rich text” för att växla mellan lägena vanlig text och rich text." ++"För att svara på ett specifikt e-postmeddelande, öppna meddelandemenyn i " ++"meddelandets övre hörn och välj Svara, Svara alla " ++"eller Vidarebefordra." ++ ++#. (itstool) path: section/title ++#: C/write.page:66 ++msgid "Text formatting, images and attachments" ++msgstr "Textformatering, bilder och bilagor" + + #. (itstool) path: section/p +-#: C/write.page:28 ++#: C/write.page:68 + msgid "" +-"You can attach a file to a message you're writing in either of these ways:" ++"Geary's email composer lets you use text styles such as bold and " ++"italic, indent text to quote it, and links to web pages. Simply " ++"select the text and click the appropriate button on the formatting toolbar " ++"at the bottom of the composer area." + msgstr "" +-"Du kan bifoga en fil med ett meddelande du skriver på ett av dessa sätt:" ++"Gearys e-postredigerare låter dig använda textstilar så som fet och " ++"kursiv, indentera text för att citera den, och länkar till " ++"webbsidor. Markera helt enkelt texten och klicka på lämplig knapp i " ++"formateringsverktygsfältet längst ner i redigeringsytan." + +-#. (itstool) path: item/p +-#: C/write.page:30 ++#. (itstool) path: section/p ++#: C/write.page:74 + msgid "" +-"Press the Attach File button at the lower left of the composer " +-"window, then select a file to attach." ++"Bulleted and numbered lists can be inserted or removed by clicking the Bulleted list and Numbered " ++"list buttons on the formatting toolbar. The level of indentation of " ++"list items can be adjusted using the Indent and " ++"Un-indent formatting toolbar buttons." + msgstr "" +-"Tryck ned knappen Bifoga fil längst ned till vänster på " +-"redigerarfönstret och välj sedan fil att bifoga." ++"Punktlistor och numrerade listor kan infogas och tas bort genom att klicka " ++"på knapparna Infoga punktlista och Infoga numrerad lista i formateringsverktygsfältet. " ++"Indenteringsnivån kan justeras med knapparna Indentera och Avindentera i " ++"formateringsverktygsfältet." + +-#. (itstool) path: item/p +-#: C/write.page:32 ++#. (itstool) path: section/p ++#: C/write.page:81 + msgid "" +-"Drag the file from the Nautilus file manager to the composer window, and " +-"drop it either on the text fields at the top of the window or on the toolbar " +-"at the bottom." ++"Images can be inserted into rich text messages by clicking the Insert Image button on the formatting toolbar and selecting " ++"the image to attach, by dragging an image from the Files " ++"application into the email body and then dropping it, or by pasting an image " ++"that has been copied to the clipboard from another application." + msgstr "" +-"Dra filen från Nautilus filhanterare till redigerarfönstret och släpp den, " +-"antingen på textfälten överst i fönstret eller på verktygsfältet längst ned." ++"Bilder kan infogas i rich text-meddelanden genom att klicka på knappen Infoga en bild i formateringsverktygsfältet och välja " ++"bilden som ska bifogas, genom att dra en bild från programmet Filer in i meddelandet och sedan släppa den, eller genom att klistra in en " ++"bild som har kopierats till urklipp från ett annat program." + + #. (itstool) path: section/p +-#: C/write.page:36 ++#: C/write.page:88 ++msgid "" ++"Documents, music, videos, and other files can be attached to the email by " ++"clicking the Attach File button at the bottom of " ++"the composer window and selecting the document to attach, or by dragging a " ++"file from the Files application to the composer window, and " ++"dropping it either on the text fields at the top of the window or on the " ++"toolbar at the bottom." ++msgstr "" ++"Dokument, musik, videoklipp och andra filer kan bifogas till e-" ++"postmeddelandet genom att klicka på knappen Bifoga " ++"fil längst ner i redigerarfönstret och välja dokumentet som ska " ++"bifogas, eller genom att dra en fil från programmet Filer till " ++"redigerarfönstret, och släppa den antingen på textfälten högst upp i " ++"fönstret eller på verktygsfältet längst ner." ++ ++#. (itstool) path: section/p ++#: C/write.page:96 + msgid "" + "A number of keyboard shortcuts are available in the composer; see for details." +@@ -1241,43 +1372,285 @@ msgstr "" + "\"shortcuts\"/> för detaljer." + + #. (itstool) path: section/p +-#: C/write.page:38 ++#: C/write.page:99 ++msgid "" ++"You may specify a signature to be inserted into the footer of email in the " ++"composer via the dialog." ++msgstr "" ++"Du kan ange en signatur att infoga i meddelandets sidfot i redigeraren via " ++"dialogrutan ." ++ ++#. (itstool) path: section/title ++#: C/write.page:104 ++msgid "Checking spelling" ++msgstr "Kontrollera stavning" ++ ++#. (itstool) path: section/p ++#: C/write.page:106 + msgid "" +-"You may specify a signature to be inserted into the composer in the dialog." ++"Geary supports spell-checking your composed email in one or more languages, " ++"as you type. To enable spell-checking, first ensure your computer has spell-" ++"check dictionaries installed for the desired languages. Consult your " ++"computer's help to determine how to install dictionaries if not present." + msgstr "" +-"Du kan ange en signatur att infoga i redigeraren i dialogen ." ++"Geary har stöd för att stavningskontrollera dina skrivna meddelanden på ett " ++"eller flera språk under tiden du skriver. För att aktivera " ++"stavningskontroll, säkerställ först att din dator har ordböcker för " ++"stavningskontroll för de önskade språken. Konsultera din dators hjälp för " ++"att avgöra hur ordböcker ska installeras om de inte finns." ++ ++#. (itstool) path: section/p ++#: C/write.page:112 ++msgid "" ++"To select languages for spell-checking, click the Spell check button on the formatting toolbar, and the language " ++"selection popover will appear. Click on a language in the list to toggle it " ++"on or off, and click the - button to remove it " ++"from the list. If a language does not appear in the list, search for it by " ++"typing its name in the search box, then click the + button to add it." ++msgstr "" ++"För att välja språk för stavningskontroll, klicka på knappen Stavningskontroll i formateringsverktygsfältet, så kommer " ++"kontextfönstret för språkval att dyka upp. Klicka på ett språk i listan för " ++"att aktivera/inaktivera det, och klicka på knappen - för att ta bort det från listan. Om ett språk inte finns i listan kan " ++"du söka det genom att skriva dess namn i sökrutan, och sedan klicka på " ++"knappen + för att lägga till det." + + #. (itstool) path: section/title +-#: C/write.page:43 +-msgid "Drafts" +-msgstr "Utkast" ++#: C/write.page:123 ++msgid "Saving drafts and restoring discarded messages" ++msgstr "Spara utkast och återställa förkastade meddelanden" + + #. (itstool) path: section/p +-#: C/write.page:45 ++#: C/write.page:125 + msgid "" + "For mail servers that support drafts, Geary will automatically save the " +-"message as you type. If you close the composer without sending, Geary will " +-"prompt you to keep the draft or to discard it." ++"message as you type on the server after a short delay." + msgstr "" + "För e-postservrar som stöder utkast kommer Geary automatiskt att spara " +-"meddelandet allt eftersom du skriver. Om du stänger redigeraren utan att " +-"skicka det kommer Geary att fråga om utkastet ska behållas eller kastas." ++"meddelandet allt eftersom du skriver på servern efter en kort fördröjning." ++ ++#. (itstool) path: section/p ++#: C/write.page:129 ++msgid "" ++"To edit an existing draft, select the Drafts folder in the folder " ++"list, select the message, and click \"Edit Draft\" in the conversation " ++"viewer." ++msgstr "" ++"För att redigera ett befintligt utkast, välj mappen Utkast i " ++"mapplistan, välj meddelandet och klicka på ”Redigera utkast” i " ++"konversationsvisaren." + + #. (itstool) path: section/p +-#: C/write.page:48 ++#: C/write.page:133 ++msgid "Geary will delete the draft when you send the message." ++msgstr "Geary kommer ta bort utkastet när du skickar meddelandet." ++ ++#. (itstool) path: note/p ++#: C/write.page:136 ++msgid "" ++"If you save or discard a composed email, you can re-open it by clicking Undo on the pop-up notification that appears or by " ++"typing CtrlZ. Composers can be " ++"reopened for up to 30 minutes after they are closed. After that, you will " ++"need to re-open the message via the Drafts folder, if present." ++msgstr "" ++"Om du sparar eller förkastar ett skrivet meddelande så kan du öppna det på " ++"nytt genom att klicka på Ångra i " ++"poppuppaviseringen som visas eller genom att trycka CtrlZ. Redigeringsfönster kan öppnas på nytt upp till 30 " ++"minuter efter att de har stängts. Efter det så kommer du behöva öppna " ++"meddelandet på nytt via mappen Utkast, om den finns." ++ ++#. (itstool) path: section/title ++#: C/write.page:146 ++msgid "Plain text messages" ++msgstr "Vanliga textmeddelanden" ++ ++#. (itstool) path: section/p ++#: C/write.page:148 + msgid "" +-"To edit an existing draft, select the Drafts folder in the folder list, " +-"select the message, and click \"Edit Draft\" in the message viewer." ++"Geary can also send plain text messages. Press the More options button at the end of the bottom toolbar, then choose " ++"\"Rich Text\" or \"Plain Text\". Plain text mode is useful when sending " ++"email to mailing lists that prohibit rich text (HTML) messages, or when " ++"sending email to people that do no use modern clients like Geary." + msgstr "" +-"För att redigera ett befintligt utkast, välj mappen Utkast i mapplistan, " +-"välj meddelanden och klicka på ”Redigera utkast” i meddelandevisaren." ++"Geary kan också skicka meddelanden i vanlig text. Tryck på knappen Fler inställningar i slutet på verktygsfältet längst " ++"ner, välj sedan ”Rich Text” eller ”Vanlig text”. Läget för vanlig text är " ++"användbart när du skickar meddelanden till sändlistor som inte tillåter " ++"meddelanden i rich text (HTML), eller när e-post skickas till personer som " ++"inte använder moderna klienter som Geary." + + #. (itstool) path: section/p +-#: C/write.page:51 +-msgid "Geary deletes the draft when you send the message." +-msgstr "Geary tar bort utkastet när du skickar meddelandet." ++#: C/write.page:155 ++msgid "" ++"In plain text mode, text will be automatically wrapped using soft line " ++"breaks so that it is no longer than 74 characters wide, and indented text " ++"will be wrapped and quoted using a “>” character for each level of " ++"quoting." ++msgstr "" ++"I läget för vanlig text kommer text automatiskt att radbrytas med mjuk " ++"radbrytning så att den inte är längre än 74 tecken bred, och indenterad text " ++"kommer att radbrytas och citeras med ett ”>”-tecken för varje " ++"citationsnivå." ++ ++#~ msgid "Delete or archive a message" ++#~ msgstr "Ta bort eller arkivera ett meddelande" ++ ++#~ msgid "" ++#~ "When you use Geary with a Gmail account, Geary lets you archive " ++#~ "messages. The Archive toolbar button archives the selected " ++#~ "conversation(s). Archived messages appear in the All Mail " ++#~ "folder." ++#~ msgstr "" ++#~ "När du använder Geary med ett Gmail-konto låter Geary dig arkivera meddelanden. Knappen Arkivera i verktygsfältet arkiverar " ++#~ "de markerade konversationerna. Arkiverade meddelanden visas i mappen " ++#~ "All e-post." ++ ++#~ msgid "" ++#~ "Delete is not available from every folder, such as Search. Delete is also " ++#~ "unavailable for Gmail. For Gmail, Trash will move messages to " ++#~ "the Trash folder on the server, where the user can then manually delete " ++#~ "them. The server will automatically remove trashed messages after 30 days." ++#~ msgstr "" ++#~ "Ta bort är inte tillgängligt från varje mapp som till exempel Sök. Ta " ++#~ "bort är inte heller tillgängligt för Gmail. För Gmail kommer " ++#~ "Papperskorg att flytta meddelanden till Skräpkorgen på servern " ++#~ "där användaren manuellt kan ta bort dem. Servern tar automatiskt bort " ++#~ "meddelanden i papperskorgen efter 30 dagar." ++ ++#~ msgid "Found a bug?" ++#~ msgstr "Har du hittat ett fel?" ++ ++#~ msgid "Thanks for your help!" ++#~ msgstr "Tack för hjälpen!" ++ ++#~ msgid "" ++#~ "User Experience " ++#~ "Design—research and develop Geary’s user experience" ++#~ msgstr "" ++#~ "Design och " ++#~ "användarupplevelse—utforska och utveckla Gearys användarupplevelse" ++ ++#~ msgid "Thanks for your help making Geary better!" ++#~ msgstr "Tack för att du hjälper till att göra Geary bättre!" ++ ++#~| msgctxt "_" ++#~| msgid "" ++#~| "external ref='figures/geary.svg' md5='18b50c9e10fe5256ae1cb12aaa3a7600'" ++#~ msgctxt "_" ++#~ msgid "" ++#~ "external ref='figures/geary.svg' md5='1c66fe237d546362fda9f209840da4a8'" ++#~ msgstr "" ++#~ "external ref='figures/geary.svg' md5='1c66fe237d546362fda9f209840da4a8'" ++ ++#~| msgid " Geary" ++#~ msgid "" ++#~ " Geary" ++#~ msgstr "" ++#~ " Geary" ++ ++#~ msgid "" ++#~ "The Preferences option is available in either Geary's " ++#~ "application menu or the gear menu in the upper-right of the toolbar. (The " ++#~ "location depends on the install desktop shell. For GNOME Shell and Unity, " ++#~ "the application menu is available near the top-left corner of the screen.)" ++#~ msgstr "" ++#~ "Alternativet Inställningar är tillgängligt i antingen Gearys " ++#~ "programmeny eller kugghjulsmenyn i övre högra hörnet av verktygsfältet. " ++#~ "(Platsen beror på installerat skrivbordsskal. För GNOME Shell och Unity " ++#~ "är programmenyn tillgänglig nära övre vänstra hörnet av skärmen.)" ++ ++#~ msgid "Reading" ++#~ msgstr "Läsning" ++ ++#~ msgid "Notifications" ++#~ msgstr "Aviseringar" ++ ++#~ msgid "Play notification sounds" ++#~ msgstr "Spela aviseringsljud" ++ ++#~ msgid "When set, Geary plays a sound whenever a new message arrives." ++#~ msgstr "Om valt spelar Geary ett ljud när ett nytt meddelande inkommer." ++ ++#~ msgid "Show notifications for new mail" ++#~ msgstr "Visa aviseringar för ny e-post" ++ ++#~ msgid "" ++#~ "When set, Geary displays a notification each time a new message " ++#~ "arrives. Notifications are displayed in a system-dependent manner. On " ++#~ "GNOME Shell, notifications appear at the bottom of the display (older " ++#~ "versions) or centered just below the top bar (newer versions). In Ubuntu " ++#~ "Unity, notifications appear at the upper right of the display." ++#~ msgstr "" ++#~ "Om satt visar Geary en avisering varje gång ett nytt meddelande " ++#~ "inkommer. Aviseringar visas på ett systemberoende sätt. I GNOME Shell " ++#~ "visas aviseringar längst ned (äldre versioner) eller centrerade precis " ++#~ "under översta fältet (nyare versioner). I Ubuntu Unity visas aviseringar " ++#~ "längst upp höger." ++ ++#~ msgid "" ++#~ "Ctrl? or CtrlF1" ++#~ msgstr "" ++#~ "Ctrl? eller CtrlF1" ++ ++#~ msgid "" ++#~ "To compose a new message in Geary, press the New Message " ++#~ "button on the toolbar." ++#~ msgstr "" ++#~ "För att skapa ett nytt meddelande i Geary, tryck ned knappen Nytt " ++#~ "meddelande i verktygsfältet." ++ ++#~ msgid "Features" ++#~ msgstr "Egenskaper" ++ ++#~ msgid "" ++#~ "Geary's email composer lets you adjust the font, size and color of text. " ++#~ "You can also insert hyperlinks into messages." ++#~ msgstr "" ++#~ "Gearys e-postredigerare låter dig justera en texts typsnitt, storlek och " ++#~ "färg. Du kan också infoga länkar i meddelanden." ++ ++#~ msgid "" ++#~ "Geary can also send plain text messages. In the drop-down menu, check or " ++#~ "uncheck \"Rich Text\" to toggle between plain text and rich text mode." ++#~ msgstr "" ++#~ "Geary kan också skicka vanliga textmeddelanden. I rullgardinsmenyn, " ++#~ "kryssa i eller av ”Rich text” för att växla mellan lägena vanlig text och " ++#~ "rich text." ++ ++#~ msgid "" ++#~ "You can attach a file to a message you're writing in either of these ways:" ++#~ msgstr "" ++#~ "Du kan bifoga en fil med ett meddelande du skriver på ett av dessa sätt:" ++ ++#~ msgid "" ++#~ "Press the Attach File button at the lower left of the composer " ++#~ "window, then select a file to attach." ++#~ msgstr "" ++#~ "Tryck ned knappen Bifoga fil längst ned till vänster på " ++#~ "redigerarfönstret och välj sedan fil att bifoga." ++ ++#~ msgid "" ++#~ "Drag the file from the Nautilus file manager to the composer window, and " ++#~ "drop it either on the text fields at the top of the window or on the " ++#~ "toolbar at the bottom." ++#~ msgstr "" ++#~ "Dra filen från Nautilus filhanterare till redigerarfönstret och släpp " ++#~ "den, antingen på textfälten överst i fönstret eller på verktygsfältet " ++#~ "längst ned." ++ ++#~ msgid "Drafts" ++#~ msgstr "Utkast" + + #~ msgid "" + #~ "The first time you start Geary, you will be prompted to add an email " +@@ -1420,9 +1793,6 @@ msgstr "Geary tar bort utkastet när du skickar meddelandet." + #~ msgid "Compose a new message" + #~ msgstr "Skapa ett nytt meddelande" + +-#~ msgid "CtrlN or N" +-#~ msgstr "CtrlN eller N" +- + #~ msgid "Reply to sender" + #~ msgstr "Svara avsändare" + +-- +2.29.2 + diff --git a/mail-client/geary/files/Bump-client-test-timeout-to-300s.patch b/mail-client/geary/files/Bump-client-test-timeout-to-300s.patch new file mode 100644 index 0000000..fa51a03 --- /dev/null +++ b/mail-client/geary/files/Bump-client-test-timeout-to-300s.patch @@ -0,0 +1,18 @@ +From: Michael Gratton +Date: Fri, 11 Oct 2019 13:42:17 +1100 +Subject: Bump client-test timeout to 300s + +--- + test/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: geary-3.38.0.1/test/meson.build +=================================================================== +--- geary-3.38.0.1.orig/test/meson.build ++++ geary-3.38.0.1/test/meson.build +@@ -168,4 +168,4 @@ test_integration_bin = executable('test- + ) + + test('engine-tests', test_engine_bin) +-test('client-tests', test_client_bin) ++test('client-tests', test_client_bin, timeout: 300) diff --git a/mail-client/geary/metadata.xml b/mail-client/geary/metadata.xml new file mode 100644 index 0000000..2731a69 --- /dev/null +++ b/mail-client/geary/metadata.xml @@ -0,0 +1,12 @@ + + + + + gnome@gentoo.org + Gentoo GNOME Desktop + + + Enable optional TNEF attachments parser support using + net-mail/ytnef + +