diff --git a/.gitmodules b/.gitmodules index f4788ba4..e69de29b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "subprojects/libhandy"] - path = subprojects/libhandy - url = https://source.puri.sm/Librem5/libhandy.git diff --git a/desktop/org.gnome.Geary.gschema.xml b/desktop/org.gnome.Geary.gschema.xml index f0068798..e23e26a9 100644 --- a/desktop/org.gnome.Geary.gschema.xml +++ b/desktop/org.gnome.Geary.gschema.xml @@ -45,6 +45,12 @@ True if the folder list Paned is in the horizontal orientation. + + true + Show/hide formatting toolbar + True if the formatting toolbar in the composer is shown. + + 250 Position of message list pane @@ -128,6 +134,13 @@ email. Set to zero or less to disable. + + 5 + Brief notification display time + The length of time in seconds for which brief notifications should + be displayed. + + false Whether we migrated the old settings diff --git a/help/es/es.po b/help/es/es.po index 396bad91..d465261f 100644 --- a/help/es/es.po +++ b/help/es/es.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the geary package. # FIRST AUTHOR , YEAR. # Adolfo Jayme Barrientos , 2014, 2016. -# Daniel Mustieles , 2014-2019. +# Daniel Mustieles , 2014-2020. # msgid "" msgstr "" "Project-Id-Version: geary master\n" -"POT-Creation-Date: 2019-11-25 09:56+0000\n" -"PO-Revision-Date: 2019-11-25 11:52+0100\n" +"POT-Creation-Date: 2020-01-12 16:30+0000\n" +"PO-Revision-Date: 2020-01-14 11:29+0100\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Spanish - Spain \n" "Language: es_ES\n" @@ -23,7 +23,7 @@ msgstr "" msgctxt "_" msgid "translator-credits" msgstr "" -"Daniel Mustieles , 2014 - 2019\n" +"Daniel Mustieles , 2014 - 2020\n" "Adolfo Jayme Barrientos , 2014" #. (itstool) path: page/title @@ -212,31 +212,37 @@ msgstr "" "la ventana emergente o pulsando CtrlU." #. (itstool) path: page/title +#: C/archive.page:8 +msgid "Archive, trash and delete messages" +msgstr "Archivar, enviar a la papelera y eliminar mensajes" + +#. (itstool) path: page/p #: C/archive.page:10 -msgid "Delete or archive a message" -msgstr "Eliminar o archivar un mensaje" - -#. (itstool) path: page/p -#: C/archive.page:12 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 "" -"Cuando usa Geary con una cuenta de Gmail, Geary le permite archivar " -"los mensajes. El botón Archivar de la barra de herramientas " -"archiva las conversaciones seleccionadas. Los mensajes archivados aparecen " -"en la carpeta Todos los correos." #. (itstool) path: page/p -#: C/archive.page:16 +#: C/archive.page:17 +#, fuzzy +#| 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." 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." +"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 "" "Con otros servidores de correo puede eliminar o enviar a la papelera, pero " "no archivar mensajes. Para mover una o más conversaciones a la carpeta de " @@ -245,19 +251,31 @@ msgstr "" "mantenga pulsada la tecla Mayús y pulse el botón Eliminar que aparece en lugar del botón de Papelera." -#. (itstool) path: page/p -#: C/archive.page:21 +#. (itstool) path: note/title +#: C/archive.page:26 +msgid "Undoing changes" +msgstr "Deshacer cambios" + +#. (itstool) path: note/p +#: C/archive.page:27 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." +"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 "" + +#. (itstool) path: page/p +#: 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 "" -"La eliminación no está disponible para todas la carpetas, como es el caso de " -"Buscar. Tampoco está disponible para Gmail. En este caso, la Papelera moverá los mensajes a la carpeta Papelera en el servidor, donde el " -"usuario puede eliminarlos manualmente. El servidor eliminará automáticamente " -"los mensajes de esta carpeta pasados 30 días." #. (itstool) path: page/title #: C/bugs.page:10 @@ -745,31 +763,21 @@ msgid "Preferences" msgstr "Preferencias" #. (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 "" -"La opción Preferencias está disponible en el menú aplicación de " -"Geary o el menú de configuración en la parte superior derecha de la barra de " -"herramientas. (La ubicación depende de la shell de instalación de " -"escritorio. Para GNOME Shell y Unity, el menú aplicación esta disponible " -"cerca de la esquina superior izquierda de la pantalla.)" - -#. (itstool) path: section/title -#: C/preferences.page:17 -msgid "Reading" -msgstr "Lectura" #. (itstool) path: item/title -#: C/preferences.page:20 +#: C/preferences.page:19 msgid "Automatically select next message" msgstr "Seleccionar automáticamente el mensaje siguiente" #. (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 " @@ -809,50 +817,32 @@ msgstr "" "los tres paneles. Si no están seleccionadas, la lista de carpetas y de " "conversaciones se aplicarán verticalmente en un único panel." -#. (itstool) path: section/title -#: C/preferences.page:40 -msgid "Notifications" -msgstr "Notificaciones" - #. (itstool) path: item/title -#: C/preferences.page:43 -msgid "Play notification sounds" -msgstr "Reproducir sonidos de notificación" - -#. (itstool) path: item/p -#: C/preferences.page:44 -msgid "When set, Geary plays a sound whenever a new message arrives." +#: C/preferences.page:38 +msgid "Use single key email shortcuts" msgstr "" -"Cuando está configurado, Geary reproduce un sonido cuando un mensaje nuevo " -"llega." - -#. (itstool) path: item/title -#: C/preferences.page:47 -msgid "Show notifications for new mail" -msgstr "Mostrar notificaciones de mensajes nuevos" #. (itstool) path: item/p -#: C/preferences.page:48 +#: C/preferences.page:39 +#, fuzzy +#| msgid "" +#| "A number of keyboard shortcuts are available in the composer; see for details." 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 "" -"Cuando está configurado, Geary muestra una notificación cada vez " -"que un mensaje nuevo llega. Las notificaciones se muestran de una manera " -"dependiente del sistema. En GNOME Shell, las notificaciones se muestran en " -"la parte inferior de la pantalla (versiones antiguas). En Ubuntu Unity, las " -"notificaciones se muestran en la parte superior derecha de la pantalla." +"Hay disponibles varios atajos de teclado en la ventana del editor; consulte " +" para obtener más información." #. (itstool) path: item/title -#: C/preferences.page:54 +#: C/preferences.page:44 msgid "Watch for new mail when closed" msgstr "Revisar si hay mensajes nuevos al cerrar" #. (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, " @@ -1041,13 +1031,19 @@ msgstr "" msgid "Keyboard shortcuts" msgstr "Atajos de teclado" -#. (itstool) path: page/p -#: C/shortcuts.page:12 +#. (itstool) path: section/p +#: C/shortcuts.page:13 +#, fuzzy +#| 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." 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 tiene atajos del teclado para la mayoría de operaciones habituales. " "Use la ayuda integrada de los atajos del teclado de Geary para descubrir la " @@ -1055,8 +1051,8 @@ msgstr "" "GearyAtajos del teclado o usando los " "atajos del teclado listados a continuación." -#. (itstool) path: page/p -#: C/shortcuts.page:18 +#. (itstool) path: section/p +#: C/shortcuts.page:19 msgid "" "The following keyboard shortcuts can be used to access on-line help from " "Geary:" @@ -1065,28 +1061,47 @@ msgstr "" "línea de Geary:" #. (itstool) path: td/p -#: C/shortcuts.page:22 -msgid "Display this User Manual" -msgstr "Mostrar este manual de usuario" +#: C/shortcuts.page:23 +#| msgid "Display this User Manual" +msgid "Display this online help manual" +msgstr "Mostrar este manual en línea" #. (itstool) path: td/p -#: C/shortcuts.page:23 +#: C/shortcuts.page:24 msgid "F1" msgstr "F1" #. (itstool) path: td/p -#: C/shortcuts.page:26 +#: C/shortcuts.page:27 msgid "Display all keyboard shortcuts" msgstr "Mostrar los atajos del teclado" #. (itstool) path: td/p -#: C/shortcuts.page:27 +#: C/shortcuts.page:28 +#| msgid "CtrlN or N" +msgid "Ctrl?" +msgstr "Ctrl?" + +#. (itstool) path: section/title +#: C/shortcuts.page:36 +#| msgid "Display all keyboard shortcuts" +msgid "Single key shortcuts" +msgstr "Atajos del teclado" + +#. (itstool) path: section/p +#: C/shortcuts.page:38 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 "" + +#. (itstool) path: section/p +#: C/shortcuts.page:42 +msgid "" +"The full list of single key shortcuts enabled by this preference can be " +"found via the keyboard shortcuts help, above." msgstr "" -"Ctrl? o CtrlF1" #. (itstool) path: page/title #: C/star.page:10 @@ -1158,32 +1173,88 @@ msgstr "" "gui> en el menú desplegable." #. (itstool) path: page/title -#: C/write.page:9 -msgid "Write a message" -msgstr "Redactar un mensaje" +#: C/write.page:7 +#| msgid "Composing and replying" +msgid "Writing new email and replying" +msgstr "Escribir un corroe nuevo y responder" #. (itstool) path: section/title -#: C/write.page:12 +#: C/write.page:10 msgid "Composing and replying" msgstr "Redactar y responder" #. (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 read to send, " +"click Send or type CtrlEnter to send the message." +msgstr "" + +#. (itstool) path: note/title +#: C/write.page:23 +msgid "Undoing sending" +msgstr "Deshacer el envío" + +#. (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 "" -"Para redactar un mensaje nuevo en Geary, pulse el botón Mensaje nuevo de la barra de herramientas." #. (itstool) path: section/p -#: C/write.page:16 +#: C/write.page:32 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 in the To and Cc 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. In addition, Bcc and Reply-to fields can " +"be shown by selecting Show extended fields from " +"the formatting toolbar menu." +msgstr "" + +#. (itstool) path: section/p +#: C/write.page:41 +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 "" + +#. (itstool) path: section/p +#: C/write.page:47 +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 "" + +#. (itstool) path: section/p +#: C/write.page:55 +#, fuzzy +#| 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." +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 "" "Para responder a un mensaje, abra el menú del mensaje en la esquina superior " "derecha de este, y seleccione Responder, Responder a todos o Reenviar de la barra de herramientas." #. (itstool) path: section/title -#: C/write.page:21 -msgid "Features" -msgstr "Características" +#: C/write.page:61 +msgid "Text formatting, images and attachments" +msgstr "" #. (itstool) path: section/p -#: C/write.page:23 +#: C/write.page:63 msgid "" -"Geary's email composer lets you adjust the font, size and color of text. You " -"can also insert hyperlinks into messages." +"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." msgstr "" -"El editor de mensajes de Geary le permite ajustar el tipo de letra, el " -"tamaño y el color del texto. También puede insertar hiperenlaces en los " -"mensajes." #. (itstool) path: section/p -#: C/write.page:25 +#: C/write.page:68 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." +"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 "" -"Geary también puede enviar mensajes de texto sencillo. En el menú " -"desplegable, marque o desmarque «Texto enriquecido» para cambiar entre los " -"modos de texto sencillo y texto con formato." #. (itstool) path: section/p -#: C/write.page:28 +#: C/write.page:75 msgid "" -"You can attach a file to a message you're writing in either of these ways:" +"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 "" -"Puede adjuntar un archivo a un mensaje que esté redactando de las siguientes " -"maneras:" - -#. (itstool) path: item/p -#: C/write.page:30 -msgid "" -"Press the Attach File button at the lower left of the composer " -"window, then select a file to attach." -msgstr "" -"Pulse en el botón Adjuntar un archivo en la esquina inferior " -"izquierda de la ventana del editor, y seleccione el archivo que quiere " -"adjuntar." - -#. (itstool) path: item/p -#: C/write.page:32 -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 "" -"Arrastre el archivo desde el gestor de archivos Nautilus hasta la ventana " -"del editor, y suéltelo en los campos de texto en la parte superior de la " -"ventana o en la barra de herramientas inferior." #. (itstool) path: section/p -#: C/write.page:36 +#: C/write.page:82 +msgid "" +"Documents, music, videos, and other files can be attached to the email by " +"clicking the Attach File button at the top 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 "" + +#. (itstool) path: section/p +#: C/write.page:90 msgid "" "A number of keyboard shortcuts are available in the composer; see for details." @@ -1255,25 +1316,59 @@ msgstr "" " para obtener más información." #. (itstool) path: section/p -#: C/write.page:38 +#: C/write.page:93 +#, fuzzy +#| msgid "" +#| "You may specify a signature to be inserted into the composer in the dialog." 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 "" "Debe especificar una firma para insertarla dentro del editor en el diálogo " "." #. (itstool) path: section/title -#: C/write.page:43 -msgid "Drafts" -msgstr "Borradores" +#: C/write.page:98 +msgid "Checking spelling" +msgstr "Comprobar la ortogracía" #. (itstool) path: section/p -#: C/write.page:45 +#: C/write.page:100 +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 "" + +#. (itstool) path: section/p +#: C/write.page:106 +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 "" + +#. (itstool) path: section/title +#: C/write.page:117 +msgid "Saving drafts and restoring discarded messages" +msgstr "" + +#. (itstool) path: section/p +#: C/write.page:119 +#, fuzzy +#| 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." 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 "" "Si está usando un servidor de correo que admite borradores, Geary guardará " "automáticamente el mensaje a medida que lo escribe. Si cierra la ventana del " @@ -1281,29 +1376,197 @@ msgstr "" "borrador." #. (itstool) path: section/p -#: C/write.page:48 +#: C/write.page:123 +#, fuzzy +#| 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." 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 "" "Para editar un borrador existente, seleccione la carpeta Borradores de la " "lista de carpetas, elija el mensaje y pulse en «Editar el borrador» en el " "visor de mensajes." #. (itstool) path: section/p -#: C/write.page:51 -msgid "Geary deletes the draft when you send the message." +#: C/write.page:127 +#, fuzzy +#| msgid "Geary deletes the draft when you send the message." +msgid "Geary will delete the draft when you send the message." msgstr "Geary eliminará el borrador cuando envíe el mensaje." +#. (itstool) path: note/p +#: C/write.page:130 +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. The ability to restore " +"a saved or discarded composer will be remain for up to 30 minutes. After " +"that you will need to re-open the message via the Drafts folder, " +"if present." +msgstr "" + +#. (itstool) path: section/title +#: C/write.page:141 +#| msgid "Write a message" +msgid "Plain text messages" +msgstr "Mensajes de texto plano" + +#. (itstool) path: section/p +#: C/write.page:143 +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. 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 "" + +#. (itstool) path: section/p +#: C/write.page:150 +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 "" + +#~ msgid "Delete or archive a message" +#~ msgstr "Eliminar o archivar un mensaje" + +#~ 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 "" +#~ "Cuando usa Geary con una cuenta de Gmail, Geary le permite archivar los mensajes. El botón Archivar de la barra de " +#~ "herramientas archiva las conversaciones seleccionadas. Los mensajes " +#~ "archivados aparecen en la carpeta Todos los correos." + +#~ 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 "" +#~ "La eliminación no está disponible para todas la carpetas, como es el caso " +#~ "de Buscar. Tampoco está disponible para Gmail. En este caso, la " +#~ "Papelera moverá los mensajes a la carpeta Papelera en el " +#~ "servidor, donde el usuario puede eliminarlos manualmente. El servidor " +#~ "eliminará automáticamente los mensajes de esta carpeta pasados 30 días." + +#~ 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 "" +#~ "La opción Preferencias está disponible en el menú aplicación " +#~ "de Geary o el menú de configuración en la parte superior derecha de la " +#~ "barra de herramientas. (La ubicación depende de la shell de instalación " +#~ "de escritorio. Para GNOME Shell y Unity, el menú aplicación esta " +#~ "disponible cerca de la esquina superior izquierda de la pantalla.)" + +#~ msgid "Reading" +#~ msgstr "Lectura" + +#~ msgid "Notifications" +#~ msgstr "Notificaciones" + +#~ msgid "Play notification sounds" +#~ msgstr "Reproducir sonidos de notificación" + +#~ msgid "When set, Geary plays a sound whenever a new message arrives." +#~ msgstr "" +#~ "Cuando está configurado, Geary reproduce un sonido cuando un mensaje " +#~ "nuevo llega." + +#~ msgid "Show notifications for new mail" +#~ msgstr "Mostrar notificaciones de mensajes nuevos" + +#~ 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 "" +#~ "Cuando está configurado, Geary muestra una notificación cada vez " +#~ "que un mensaje nuevo llega. Las notificaciones se muestran de una manera " +#~ "dependiente del sistema. En GNOME Shell, las notificaciones se muestran " +#~ "en la parte inferior de la pantalla (versiones antiguas). En Ubuntu " +#~ "Unity, las notificaciones se muestran en la parte superior derecha de la " +#~ "pantalla." + +#~ msgid "" +#~ "Ctrl? or CtrlF1" +#~ msgstr "" +#~ "Ctrl? o CtrlF1" + +#~ msgid "" +#~ "To compose a new message in Geary, press the New Message " +#~ "button on the toolbar." +#~ msgstr "" +#~ "Para redactar un mensaje nuevo en Geary, pulse el botón Mensaje " +#~ "nuevo de la barra de herramientas." + +#~ msgid "Features" +#~ msgstr "Características" + +#~ msgid "" +#~ "Geary's email composer lets you adjust the font, size and color of text. " +#~ "You can also insert hyperlinks into messages." +#~ msgstr "" +#~ "El editor de mensajes de Geary le permite ajustar el tipo de letra, el " +#~ "tamaño y el color del texto. También puede insertar hiperenlaces en los " +#~ "mensajes." + +#~ 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 también puede enviar mensajes de texto sencillo. En el menú " +#~ "desplegable, marque o desmarque «Texto enriquecido» para cambiar entre " +#~ "los modos de texto sencillo y texto con formato." + +#~ msgid "" +#~ "You can attach a file to a message you're writing in either of these ways:" +#~ msgstr "" +#~ "Puede adjuntar un archivo a un mensaje que esté redactando de las " +#~ "siguientes maneras:" + +#~ msgid "" +#~ "Press the Attach File button at the lower left of the composer " +#~ "window, then select a file to attach." +#~ msgstr "" +#~ "Pulse en el botón Adjuntar un archivo en la esquina inferior " +#~ "izquierda de la ventana del editor, y seleccione el archivo que quiere " +#~ "adjuntar." + +#~ 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 "" +#~ "Arrastre el archivo desde el gestor de archivos Nautilus hasta la ventana " +#~ "del editor, y suéltelo en los campos de texto en la parte superior de la " +#~ "ventana o en la barra de herramientas inferior." + +#~ msgid "Drafts" +#~ msgstr "Borradores" + #~ msgid "Geary has keyboard shortcuts for most common operations." #~ msgstr "Geary incluye atajos de teclado para las operaciones más comunes." #~ msgid "Compose a new message" #~ msgstr "Redactar un mensaje nuevo" -#~ msgid "CtrlN or N" -#~ msgstr "CtrlN o N" - #~ msgid "Reply to sender" #~ msgstr "Responder al remitente" diff --git a/icons/font-color-symbolic.svg b/icons/font-color-symbolic.svg new file mode 100644 index 00000000..c51bc931 --- /dev/null +++ b/icons/font-color-symbolic.svg @@ -0,0 +1,19 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/icons/font-size-symbolic.svg b/icons/font-size-symbolic.svg new file mode 100644 index 00000000..07ecc544 --- /dev/null +++ b/icons/font-size-symbolic.svg @@ -0,0 +1,19 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + \ No newline at end of file diff --git a/icons/meson.build b/icons/meson.build index 2234d3b0..138ed558 100644 --- a/icons/meson.build +++ b/icons/meson.build @@ -6,6 +6,8 @@ icon_files = files( 'detach-symbolic.svg', 'text-x-generic-symbolic.svg', 'edit-symbolic.svg', + 'font-size-symbolic.svg', + 'font-color-symbolic.svg', 'format-ordered-list-symbolic.svg', 'format-ordered-list-symbolic-rtl.svg', 'format-text-remove-symbolic.svg', diff --git a/meson.build b/meson.build index c8e0c277..0bb4eea5 100644 --- a/meson.build +++ b/meson.build @@ -79,7 +79,7 @@ gthread = dependency('gthread-2.0', version: '>=' + target_glib) iso_codes = dependency('iso-codes') javascriptcoregtk = dependency('javascriptcoregtk-4.0', version: '>=' + target_webkit) json_glib = dependency('json-glib-1.0', version: '>= 1.0') -libhandy = dependency('libhandy-0.0', version: '>= 0.0.9', required: false) +libhandy = dependency('libhandy-0.0', version: '>= 0.0.10') libmath = cc.find_library('m') libpeas = dependency('libpeas-1.0', version: '>= 1.24.0') libsecret = dependency('libsecret-1', version: '>= 0.11') @@ -100,26 +100,6 @@ if not enchant.found() enchant = dependency('enchant', version: '>=1.6') endif -# Handy isn't necessarily packaged by distros, so fall back to a -# subproject until it is. -if not libhandy.found() - libhandy_subproj = subproject( - 'libhandy', - default_options: [ - 'examples=false', - 'glade_catalog=disabled', - 'tests=false', - ] - ) - - libhandy = declare_dependency( - dependencies: [ - libhandy_subproj.get_variable('libhandy_dep'), - libhandy_subproj.get_variable('libhandy_vapi'), - ] - ) -endif - # Libunwind system dependencies above ensures appropriate versions, # but this declared depencency is what we actually build against so we # can include the custom VAPI correctly. We need to add unwind_lib to diff --git a/org.gnome.Geary.json b/org.gnome.Geary.json index be08b087..4645fee0 100644 --- a/org.gnome.Geary.json +++ b/org.gnome.Geary.json @@ -90,8 +90,8 @@ "sources": [ { "type": "archive", - "url": "https://github.com/libical/libical/releases/download/v3.0.5/libical-3.0.5.tar.gz", - "sha256": "7ad550c8c49c9b9983658e3ab3e68b1eee2439ec17b169a6b1e6ecb5274e78e6" + "url": "https://github.com/libical/libical/releases/download/v3.0.7/libical-3.0.7.tar.gz", + "sha256": "0abe66df1ea826e57db7f281c704ede834c84139012e6c686ea7adafd4e763fc" } ], "cleanup": [ @@ -180,7 +180,8 @@ "sources": [ { "type": "git", - "url": "https://source.puri.sm/Librem5/libhandy.git" + "url": "https://source.puri.sm/Librem5/libhandy.git", + "branch": "v0.0.13" } ] }, diff --git a/org.gnome.Geary.yml b/org.gnome.Geary.yml index b8bb7336..624fccf2 100644 --- a/org.gnome.Geary.yml +++ b/org.gnome.Geary.yml @@ -115,8 +115,8 @@ modules: - "-DICAL_BUILD_DOCS=false" sources: - type: archive - url: https://github.com/libical/libical/releases/download/v3.0.5/libical-3.0.5.tar.gz - sha256: 7ad550c8c49c9b9983658e3ab3e68b1eee2439ec17b169a6b1e6ecb5274e78e6 + url: https://github.com/libical/libical/releases/download/v3.0.7/libical-3.0.7.tar.gz + sha256: 0abe66df1ea826e57db7f281c704ede834c84139012e6c686ea7adafd4e763fc cleanup: - /lib/cmake @@ -184,6 +184,7 @@ modules: sources: - type: git url: https://source.puri.sm/Librem5/libhandy.git + branch: v0.0.13 # Geary dependency - name: libpeas diff --git a/po/POTFILES.skip b/po/POTFILES.skip index 12759016..ab4c9a19 100644 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -1,4 +1,5 @@ # List of source files that should *not* be translated. # Please keep this file sorted alphabetically. build +src/client/components/components-reflow-box.c subprojects/libhandy diff --git a/po/es.po b/po/es.po index 1df5927c..daaa90cd 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-01-08 10:10+0000\n" -"PO-Revision-Date: 2020-01-08 12:22+0100\n" +"POT-Creation-Date: 2020-01-23 08:37+0000\n" +"PO-Revision-Date: 2020-01-23 12:42+0100\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Spanish - Spain \n" "Language: es_ES\n" @@ -198,36 +198,45 @@ msgid "True if the folder list Paned is in the horizontal orientation." msgstr "Cierto si el panel de lista de carpetas está en horizontal." #: desktop/org.gnome.Geary.gschema.xml:50 +msgid "Show/hide formatting toolbar" +msgstr "Mostrar u ocultar la barra de herramientas de formato" + +#: desktop/org.gnome.Geary.gschema.xml:51 +msgid "True if the formatting toolbar in the composer is shown." +msgstr "" +"Cierto si si se muestra la barra de herramientas de formato en el editor" + +#: desktop/org.gnome.Geary.gschema.xml:56 msgid "Position of message list pane" msgstr "Posición del panel de lista de mensajes" -#: desktop/org.gnome.Geary.gschema.xml:51 +#: desktop/org.gnome.Geary.gschema.xml:57 msgid "Position of the message list Paned grabber." msgstr "Posición del panel de exploración en la lista de mensajes." -#: desktop/org.gnome.Geary.gschema.xml:56 +#: desktop/org.gnome.Geary.gschema.xml:62 msgid "Autoselect next message" msgstr "Seleccionar el siguiente mensaje automáticamente" -#: 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 "" "Cierto si se debe seleccionar automáticamente la siguiente conversación " "disponible." -#: desktop/org.gnome.Geary.gschema.xml:62 +#: desktop/org.gnome.Geary.gschema.xml:68 msgid "Display message previews" msgstr "Mostrar la vista previa de los mensajes" -#: 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 "Cierto si se debe mostrar una breve vista previa de cada mensaje." -#: desktop/org.gnome.Geary.gschema.xml:68 +#: desktop/org.gnome.Geary.gschema.xml:74 msgid "Use single key shortcuts" msgstr "Usar atajos de una sola tecla" -#: desktop/org.gnome.Geary.gschema.xml:69 +#: desktop/org.gnome.Geary.gschema.xml:75 msgid "" "Enables shortcuts for email actions that do not require pressing to " "emulate those used by Gmail." @@ -235,11 +244,11 @@ msgstr "" "Activar atajos para acciones del correo que no requieren pulsar para " "emular las utilizadas por Gmail." -#: desktop/org.gnome.Geary.gschema.xml:76 +#: desktop/org.gnome.Geary.gschema.xml:82 msgid "Languages that shall be used in the spell checker" msgstr "Idiomas que se deben usar en el corrector ortográfico" -#: desktop/org.gnome.Geary.gschema.xml:77 +#: 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." @@ -248,11 +257,11 @@ msgstr "" "ortográfica y la lista nula usa los idiomas del escritorio de manera " "predeterminada." -#: desktop/org.gnome.Geary.gschema.xml:84 +#: desktop/org.gnome.Geary.gschema.xml:90 msgid "Languages that are displayed in the spell checker popover" msgstr "Idiomas mostrados en la ventana emergente del corrector ortográfico" -#: desktop/org.gnome.Geary.gschema.xml:85 +#: desktop/org.gnome.Geary.gschema.xml:91 msgid "" "List of languages that are always displayed in the popover of the spell " "checker." @@ -260,63 +269,63 @@ msgstr "" "Lista de idiomas que se muestra siempre en la ventana emergente del " "corrector ortográfico." -#: desktop/org.gnome.Geary.gschema.xml:90 +#: desktop/org.gnome.Geary.gschema.xml:96 msgid "Notify of new mail at startup" msgstr "Notificar si hay correo nuevo al iniciar" -#: desktop/org.gnome.Geary.gschema.xml:91 +#: desktop/org.gnome.Geary.gschema.xml:97 msgid "True to notify of new mail at startup." msgstr "Cierto para notificar cuando llegue correo nuevo al inicio." -#: desktop/org.gnome.Geary.gschema.xml:96 +#: desktop/org.gnome.Geary.gschema.xml:102 msgid "Ask when opening an attachment" msgstr "Preguntar al abrir un adjunto" -#: desktop/org.gnome.Geary.gschema.xml:97 +#: desktop/org.gnome.Geary.gschema.xml:103 msgid "True to ask when opening an attachment." msgstr "Cierto para preguntar al abrir un adjunto." -#: desktop/org.gnome.Geary.gschema.xml:102 +#: desktop/org.gnome.Geary.gschema.xml:108 msgid "Whether to compose emails in HTML" msgstr "Indica si se deben redactar los correos en HTML" -#: desktop/org.gnome.Geary.gschema.xml:103 +#: desktop/org.gnome.Geary.gschema.xml:109 msgid "True to compose emails in HTML; false for plain text." msgstr "" "Cierto para redactar los correos en HTML; falso para redactarlos en texto " "plano." -#: desktop/org.gnome.Geary.gschema.xml:108 +#: desktop/org.gnome.Geary.gschema.xml:114 msgid "Advisory strategy for full-text searching" msgstr "Estrategia de asesoriamento para la búsqueda de textos completos." -#: desktop/org.gnome.Geary.gschema.xml:109 +#: desktop/org.gnome.Geary.gschema.xml:115 msgid "" "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." msgstr "" "Los valores posibles son “exact”, “conservative”, “aggressive”, y “horizon”." -#: desktop/org.gnome.Geary.gschema.xml:114 +#: desktop/org.gnome.Geary.gschema.xml:120 msgid "Zoom of conversation viewer" msgstr "Ampliación del visor de conversaciones" -#: desktop/org.gnome.Geary.gschema.xml:115 +#: desktop/org.gnome.Geary.gschema.xml:121 msgid "The zoom to apply on the conservation view." msgstr "El nivel de ampliación que usar para la vista de conversación." -#: desktop/org.gnome.Geary.gschema.xml:120 +#: desktop/org.gnome.Geary.gschema.xml:126 msgid "Size of detached composer window" msgstr "Tamaño de la ventana desacoplada del editor" -#: desktop/org.gnome.Geary.gschema.xml:121 +#: desktop/org.gnome.Geary.gschema.xml:127 msgid "The last recorded size of the detached composer window." msgstr "El último tamaño guardado de la ventana desacoplada del editor." -#: desktop/org.gnome.Geary.gschema.xml:126 +#: desktop/org.gnome.Geary.gschema.xml:132 msgid "Undo sending email delay" msgstr "Retardo para deshacer el envío de correo" -#: desktop/org.gnome.Geary.gschema.xml:127 +#: 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." @@ -324,11 +333,22 @@ msgstr "" "El número de segundos que esperar antes de enviar un correo. Establecer a " "cero o menos para desactivar." -#: desktop/org.gnome.Geary.gschema.xml:133 +#: desktop/org.gnome.Geary.gschema.xml:139 +msgid "Brief notification display time" +msgstr "Tiempo breve que mostrar la notificación" + +#: desktop/org.gnome.Geary.gschema.xml:140 +msgid "" +"The length of time in seconds for which brief notifications should be " +"displayed." +msgstr "" +"El tiempo, en segundos, que se deben mostrar las notificaciones breves." + +#: desktop/org.gnome.Geary.gschema.xml:146 msgid "Whether we migrated the old settings" msgstr "Indica si se ha migrado la configuración antigua" -#: desktop/org.gnome.Geary.gschema.xml:134 +#: desktop/org.gnome.Geary.gschema.xml:147 msgid "" "False to check for the old “org.yorba.geary”-schema and copy its values." msgstr "" @@ -604,56 +624,56 @@ msgid_plural "%d days back" msgstr[0] "hace %d día" msgstr[1] "hace %d días" -#: src/client/accounts/accounts-editor-list-pane.vala:248 -#: src/client/application/application-main-window.vala:2037 +#: src/client/accounts/accounts-editor-list-pane.vala:252 +#: src/client/application/application-main-window.vala:2043 msgid "Undo" msgstr "Deshacer" -#: src/client/accounts/accounts-editor-list-pane.vala:257 -#: src/client/application/application-main-window.vala:2027 +#: src/client/accounts/accounts-editor-list-pane.vala:261 +#: src/client/application/application-main-window.vala:2030 msgid "Redo" msgstr "Rehacer" -#: 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:355 +#: src/client/accounts/accounts-editor-list-pane.vala:443 #: 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:359 +#: src/client/accounts/accounts-editor-list-pane.vala:447 #: 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:363 +#: src/client/accounts/accounts-editor-list-pane.vala:451 #: 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:381 msgid "This account has been disabled" msgstr "Esta cuenta se ha desactivado" #. 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:390 msgid "This account has encountered a problem and is unavailable" msgstr "Esta cuenta ha encontrado un problema y no está disponible" #. 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:440 msgid "Other email providers" msgstr "Otros proveedores de correo-e" #. 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:557 #, c-format msgid "Account “%s” removed" msgstr "Cuenta «%s» eliminada" @@ -661,7 +681,7 @@ msgstr "Cuenta «%s» eliminada" #. 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:564 #, c-format msgid "Account “%s” restored" msgstr "Cuenta «%s» restaurada" @@ -1139,27 +1159,27 @@ msgstr "Correo enviado a %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:2636 +#: src/client/application/application-controller.vala:2641 #, c-format msgid "Email to %s queued for delivery" msgstr "Correo a %s encolado para su entrega" #. / 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:2701 +#: src/client/application/application-controller.vala:2705 #, c-format msgid "Email to %s saved" msgstr "Correo a %s guardado" #. / Translators: A label for an in-app notification. -#: src/client/application/application-controller.vala:2716 -#: src/client/application/application-controller.vala:2774 +#: src/client/application/application-controller.vala:2720 +#: src/client/application/application-controller.vala:2778 msgid "Composer could not be restored" msgstr "No se pudo restaurar el editor" #. / 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:2759 +#: src/client/application/application-controller.vala:2763 #, c-format msgid "Email to %s discarded" msgstr "Correo a %s descartado" @@ -1177,44 +1197,44 @@ msgid "Labels" msgstr "Etiquetas" #. / Translators: Primary text for a confirmation dialog -#: src/client/application/application-main-window.vala:1297 +#: src/client/application/application-main-window.vala:1300 msgid "Do you want to permanently delete this conversation?" msgid_plural "Do you want to permanently delete these conversations?" msgstr[0] "¿Quiere eliminar permanentemente esta conversación?" msgstr[1] "¿Quiere eliminar permanentemente estas conversaciones?" -#: src/client/application/application-main-window.vala:1302 -#: src/client/application/application-main-window.vala:1317 +#: src/client/application/application-main-window.vala:1305 +#: src/client/application/application-main-window.vala:1320 msgid "Delete" msgstr "Eliminar" #. / Translators: Primary text for a confirmation dialog -#: src/client/application/application-main-window.vala:1312 +#: src/client/application/application-main-window.vala:1315 msgid "Do you want to permanently delete this message?" msgid_plural "Do you want to permanently delete these messages?" msgstr[0] "¿Quiere eliminar permanentemente este mensaje?" msgstr[1] "¿Quiere eliminar permanentemente estos mensajes?" -#: src/client/application/application-main-window.vala:1325 +#: src/client/application/application-main-window.vala:1328 #, c-format msgid "Empty all email from your %s folder?" msgstr "¿Quiere eliminar todos los mensajes de la carpeta «%s»?" -#: src/client/application/application-main-window.vala:1328 +#: src/client/application/application-main-window.vala:1331 msgid "This removes the email from Geary and your email server." msgstr "" "Esto eliminará el mensaje de Geary y del servidor de correo electrónico." -#: src/client/application/application-main-window.vala:1329 +#: src/client/application/application-main-window.vala:1332 msgid "This cannot be undone." msgstr "Esto no se puede deshacer." -#: src/client/application/application-main-window.vala:1330 +#: src/client/application/application-main-window.vala:1333 #, c-format msgid "Empty %s" msgstr "Vaciar %s" -#: src/client/application/application-main-window.vala:1660 +#: src/client/application/application-main-window.vala:1663 #, c-format msgid "%s (%d)" msgstr "%s (%d)" @@ -1225,7 +1245,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:1816 +#: src/client/composer/composer-widget.vala:1826 #, c-format msgid "%s (%s)" msgstr "%s (%s)" @@ -1364,37 +1384,37 @@ msgstr "Se necesita un nombre de servidor" msgid "Could not look up server name" msgstr "No se pudo encontrar el nombre del servidor" -#: src/client/components/main-toolbar.vala:142 +#: src/client/components/main-toolbar.vala:138 msgid "Mark conversation" msgid_plural "Mark conversations" msgstr[0] "Marcar conversación" msgstr[1] "Marcar conversaciones" -#: src/client/components/main-toolbar.vala:147 +#: src/client/components/main-toolbar.vala:143 msgid "Add label to conversation" msgid_plural "Add label to conversations" msgstr[0] "Añadir etiqueta a la conversación" msgstr[1] "Añadir etiqueta a las conversaciones" -#: src/client/components/main-toolbar.vala:152 +#: src/client/components/main-toolbar.vala:148 msgid "Move conversation" msgid_plural "Move conversations" msgstr[0] "Mover conversación" msgstr[1] "Mover conversaciones" -#: src/client/components/main-toolbar.vala:157 +#: src/client/components/main-toolbar.vala:153 msgid "Archive conversation" msgid_plural "Archive conversations" msgstr[0] "Archivar conversación" msgstr[1] "Archivar conversación" -#: src/client/components/main-toolbar.vala:168 +#: src/client/components/main-toolbar.vala:164 msgid "Move conversation to Trash" msgid_plural "Move conversations to Trash" msgstr[0] "Mover conversación a la papelera" msgstr[1] "Mover conversaciones a la papelera" -#: src/client/components/main-toolbar.vala:178 +#: src/client/components/main-toolbar.vala:174 msgid "Delete conversation" msgid_plural "Delete conversations" msgstr[0] "Eliminar conversación" @@ -1556,23 +1576,23 @@ msgid "Invalid email address" msgstr "Dirección correo-e no válida" #. / Translators: Title for an empty composer window -#: src/client/composer/composer-widget.vala:28 +#: src/client/composer/composer-widget.vala:30 msgid "New Message" msgstr "Mensaje nuevo" -#: src/client/composer/composer-widget.vala:210 +#: src/client/composer/composer-widget.vala:214 msgid "Saved" msgstr "Guardado" -#: src/client/composer/composer-widget.vala:211 +#: src/client/composer/composer-widget.vala:215 msgid "Saving" msgstr "Guardando" -#: src/client/composer/composer-widget.vala:212 +#: src/client/composer/composer-widget.vala:216 msgid "Error saving" msgstr "Error al guardar" -#: src/client/composer/composer-widget.vala:213 +#: src/client/composer/composer-widget.vala:217 msgid "Press Backspace to delete quote" msgstr "Pulse Retroceso para eliminar la cita" @@ -1581,7 +1601,7 @@ msgstr "Pulse Retroceso para eliminar la cita" #. 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:229 +#: src/client/composer/composer-widget.vala:233 msgid "" "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" "enclosing|encloses|enclosure|enclosures" @@ -1592,90 +1612,90 @@ 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:815 +#: src/client/composer/composer-widget.vala:823 msgid "Do you want to keep or discard this draft message?" msgstr "¿Quiere mantener o descartar este mensaje en borrador?" #. 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:841 +#: src/client/composer/composer-widget.vala:849 msgid "Do you want to discard this draft message?" msgstr "¿Quiere descartar este mensaje en borrador?" -#: src/client/composer/composer-widget.vala:1485 +#: src/client/composer/composer-widget.vala:1492 msgid "Send message with an empty subject and body?" msgstr "¿Quiere enviar el mensaje sin asunto ni cuerpo?" -#: src/client/composer/composer-widget.vala:1487 +#: src/client/composer/composer-widget.vala:1494 msgid "Send message with an empty subject?" msgstr "¿Quiere enviar el mensaje sin asunto?" -#: src/client/composer/composer-widget.vala:1489 +#: src/client/composer/composer-widget.vala:1496 msgid "Send message with an empty body?" msgstr "¿Quiere enviar el mensaje sin cuerpo?" -#: src/client/composer/composer-widget.vala:1498 +#: src/client/composer/composer-widget.vala:1505 msgid "Send message without an attachment?" msgstr "¿Quiere enviar el mensaje sin el archivo adjunto?" -#: src/client/composer/composer-widget.vala:1808 +#: src/client/composer/composer-widget.vala:1818 #, c-format msgid "“%s” already attached for delivery." msgstr "Ya se ha adjuntado «%s» para enviarlo." -#: src/client/composer/composer-widget.vala:1838 -#: src/client/composer/composer-widget.vala:1888 +#: src/client/composer/composer-widget.vala:1848 +#: src/client/composer/composer-widget.vala:1898 #, c-format msgid "“%s” is an empty file." msgstr "«%s» es un archivo vacío." -#: src/client/composer/composer-widget.vala:1876 +#: src/client/composer/composer-widget.vala:1886 #, c-format msgid "“%s” could not be found." msgstr "No se pudo encontrar «%s»." -#: src/client/composer/composer-widget.vala:1882 +#: src/client/composer/composer-widget.vala:1892 #, c-format msgid "“%s” is a folder." msgstr "«%s» es una carpeta." -#: src/client/composer/composer-widget.vala:1901 +#: src/client/composer/composer-widget.vala:1911 #, c-format msgid "“%s” could not be opened for reading." msgstr "No se pudo abrir «%s» para lectura." -#: src/client/composer/composer-widget.vala:1909 +#: src/client/composer/composer-widget.vala:1919 msgid "Cannot add attachment" msgstr "No se puede adjuntar el archivo" #. Translators: Human-readable version of the RFC 822 To header -#: src/client/composer/composer-widget.vala:1966 +#: src/client/composer/composer-widget.vala:1976 #: src/client/conversation-viewer/conversation-email.vala:559 #: src/client/util/util-email.vala:235 ui/conversation-message.ui:312 msgid "To:" msgstr "Para:" #. Translators: Human-readable version of the RFC 822 CC header -#: src/client/composer/composer-widget.vala:1972 +#: src/client/composer/composer-widget.vala:1982 #: src/client/conversation-viewer/conversation-email.vala:564 #: src/client/util/util-email.vala:240 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:1978 +#: src/client/composer/composer-widget.vala:1988 #: src/client/conversation-viewer/conversation-email.vala:569 #: ui/conversation-message.ui:402 msgid "Bcc:" msgstr "Cco:" #. Translators: Human-readable version of the RFC 822 Reply-To header -#: src/client/composer/composer-widget.vala:1984 +#: src/client/composer/composer-widget.vala:1994 msgid "Reply-To: " msgstr "Responder a:" -#: src/client/composer/composer-widget.vala:2170 +#: src/client/composer/composer-widget.vala:2213 msgid "Select Color" msgstr "Seleccionar color" @@ -1684,32 +1704,32 @@ msgstr "Seleccionar color" #. 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:2362 +#: src/client/composer/composer-widget.vala:2408 #, c-format msgid "%1$s via %2$s" msgstr "%1$s mediante %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:2418 +#: src/client/composer/composer-widget.vala:2464 msgid "_From:" msgstr "_De:" #. Translators: This is the name of the file chooser filter #. when inserting an image in the composer. -#: src/client/composer/composer-widget.vala:2721 +#: src/client/composer/composer-widget.vala:2769 msgid "Images" msgstr "Imágenes" -#: src/client/composer/spell-check-popover.vala:108 +#: src/client/composer/spell-check-popover.vala:109 msgid "Remove this language from the preferred list" msgstr "Quitar este idioma de la lista de favoritos" -#: src/client/composer/spell-check-popover.vala:112 +#: src/client/composer/spell-check-popover.vala:113 msgid "Add this language to the preferred list" msgstr "Añadir este idioma de la lista de favoritos" -#: src/client/composer/spell-check-popover.vala:199 +#: src/client/composer/spell-check-popover.vala:200 msgid "Search for more languages" msgstr "Buscar más idiomas" @@ -2644,27 +2664,19 @@ msgstr "_Confiar en este servidor" msgid "_Don’t Trust This Server" msgstr "_No confiar en este servidor" -#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175 +#: ui/composer-headerbar.ui:23 ui/composer-headerbar.ui:107 msgid "Detach the composer from the window" msgstr "Desacoplar el editor de la ventana" -#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83 -msgid "Attach a file" -msgstr "Adjuntar un archivo" - -#: ui/composer-headerbar.ui:107 -msgid "Add original attachments" -msgstr "Añadir adjuntos originales" - -#: ui/composer-headerbar.ui:203 +#: ui/composer-headerbar.ui:135 msgid "_Send" msgstr "_Enviar" -#: ui/composer-headerbar.ui:230 +#: ui/composer-headerbar.ui:162 msgid "Discard and Close" msgstr "Descartar y cerrar" -#: ui/composer-headerbar.ui:254 +#: ui/composer-headerbar.ui:186 msgid "Save and Close" msgstr "Guardar y cerrar" @@ -2690,95 +2702,63 @@ msgstr "Eliminar este enlace" msgid "Open this link" msgstr "Abrir este enlace" -#: ui/composer-menus.ui:7 -msgid "S_ans Serif" -msgstr "S_ans serif" - -#: ui/composer-menus.ui:12 -msgid "S_erif" -msgstr "S_erif" - -#: ui/composer-menus.ui:17 -msgid "_Fixed Width" -msgstr "_Anchura fija" - -#: ui/composer-menus.ui:24 -msgid "_Small" -msgstr "_Pequeño" - -#: ui/composer-menus.ui:29 -msgid "_Medium" -msgstr "_Mediano" - -#: ui/composer-menus.ui:34 -msgid "Lar_ge" -msgstr "_Grande" - -#: ui/composer-menus.ui:41 -msgid "C_olor" -msgstr "C_olor" - -#: ui/composer-menus.ui:47 ui/composer-menus.ui:56 -msgid "_Rich Text" -msgstr "Texto en_riquecido" - -#: ui/composer-menus.ui:66 +#: ui/composer-menus.ui:8 msgid "_Undo" msgstr "_Deshacer" -#: ui/composer-menus.ui:70 +#: ui/composer-menus.ui:12 msgid "_Redo" msgstr "_Rehacer" -#: ui/composer-menus.ui:76 ui/composer-menus.ui:94 +#: ui/composer-menus.ui:18 ui/composer-menus.ui:36 msgid "Cu_t" msgstr "Cor_tar" -#: ui/composer-menus.ui:80 ui/composer-menus.ui:98 +#: ui/composer-menus.ui:22 ui/composer-menus.ui:40 #: ui/conversation-message-menus.ui:37 msgid "_Copy" msgstr "_Copiar" -#: ui/composer-menus.ui:84 ui/composer-menus.ui:102 +#: ui/composer-menus.ui:26 ui/composer-menus.ui:44 msgid "_Paste" msgstr "_Pegar" -#: ui/composer-menus.ui:88 +#: ui/composer-menus.ui:30 msgctxt "Clipboard paste as plain text" msgid "Paste _Without Formatting" msgstr "Pegar _sin formato" -#: ui/composer-menus.ui:108 +#: ui/composer-menus.ui:50 msgid "Select _All" msgstr "Seleccionar _todo" -#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43 +#: ui/composer-menus.ui:57 ui/conversation-message-menus.ui:43 msgid "_Inspect…" msgstr "_Inspeccionar…" #. Geary account mail will be sent from -#: ui/composer-widget.ui:61 +#: ui/composer-widget.ui:60 msgid "From" msgstr "De" #. Address(es) e-mail is to be sent to -#: ui/composer-widget.ui:131 +#: ui/composer-widget.ui:130 msgid "_To" msgstr "_Para" -#: ui/composer-widget.ui:159 +#: ui/composer-widget.ui:158 msgid "Show Cc, Bcc, and Reply-To fields" msgstr "Mostrar los campos Cc, Cco y Responder a" -#: ui/composer-widget.ui:214 +#: ui/composer-widget.ui:213 msgid "_Cc" msgstr "_Cc" -#: ui/composer-widget.ui:258 +#: ui/composer-widget.ui:257 msgid "_Bcc" msgstr "Cc_o" -#: ui/composer-widget.ui:302 +#: ui/composer-widget.ui:301 msgid "_Reply-To" msgstr "_Responder a:" @@ -2794,62 +2774,135 @@ msgstr "Suelte los archivos aquí" msgid "To add them as attachments" msgstr "Para añadirlos como adjuntos" -#: ui/composer-widget.ui:488 -msgid "Undo last edit" -msgstr "Deshacer la última edición" - -#: ui/composer-widget.ui:512 -msgid "Redo last edit" -msgstr "Deshacer la última edición" - -#: ui/composer-widget.ui:550 +#: ui/composer-widget.ui:585 msgid "Bold text" msgstr "Texto en negrita" -#: ui/composer-widget.ui:574 +#: ui/composer-widget.ui:609 msgid "Italic text" msgstr "Texto en cursiva" -#: ui/composer-widget.ui:598 +#: ui/composer-widget.ui:633 msgid "Underline text" msgstr "Subrayar el texto" -#: ui/composer-widget.ui:622 +#: ui/composer-widget.ui:657 msgid "Strikethrough text" msgstr "Tachar el texto" -#: ui/composer-widget.ui:660 +#: ui/composer-widget.ui:690 msgid "Insert bulleted list" msgstr "Insertar lista de topos" -#: ui/composer-widget.ui:684 +#: ui/composer-widget.ui:714 msgid "Insert numbered list" msgstr "Insertar lista numerada" -#: ui/composer-widget.ui:722 +#: ui/composer-widget.ui:747 msgid "Indent or quote text" msgstr "Sangrar o citar texto" -#: ui/composer-widget.ui:746 +#: ui/composer-widget.ui:771 msgid "Un-indent or unquote text" msgstr "Quitar la sangría o la cita del texto" -#: ui/composer-widget.ui:784 -msgid "Insert or update text link" -msgstr "Insertar o actualizar el enlace seleccionado" - -#: ui/composer-widget.ui:808 -msgid "Insert an image" -msgstr "Insertar una imagen" - -#: ui/composer-widget.ui:842 +#: ui/composer-widget.ui:800 msgid "Remove text formatting" msgstr "Quitar el formato del texto" -#: ui/composer-widget.ui:866 +#: ui/composer-widget.ui:819 +msgid "Change font type" +msgstr "Cambiar tipo de la tipografía" + +#: ui/composer-widget.ui:834 +msgid "Sans Serif" +msgstr "Sans serif" + +#: ui/composer-widget.ui:845 +msgid "Serif" +msgstr "Serif" + +#: ui/composer-widget.ui:856 +msgid "Fixed Width" +msgstr "Anchura fija" + +#: ui/composer-widget.ui:882 +msgid "Change font color" +msgstr "Cambiar color de la tipografía" + +#: ui/composer-widget.ui:897 +msgid "Change font size" +msgstr "Cambiar tamaño de la tipografía" + +#: ui/composer-widget.ui:932 +msgid "Insert or update text link" +msgstr "Insertar o actualizar el enlace seleccionado" + +#: ui/composer-widget.ui:956 +msgid "Insert an image" +msgstr "Insertar una imagen" + +#: ui/composer-widget.ui:998 +msgid "Undo last edit" +msgstr "Deshacer la última edición" + +#: ui/composer-widget.ui:1022 +msgid "Redo last edit" +msgstr "Deshacer la última edición" + +#: ui/composer-widget.ui:1051 ui/composer-widget.ui:1076 +msgid "Attach a file" +msgstr "Adjuntar un archivo" + +#: ui/composer-widget.ui:1100 +msgid "Add original attachments" +msgstr "Añadir adjuntos originales" + +#: ui/composer-widget.ui:1145 +msgid "Enable or disable rich text mode" +msgstr "Activar o desactivar el modo de texto enriquecido" + +#: ui/composer-widget.ui:1165 +msgid "Show formatting toolbar" +msgstr "Mostrar barra de herramientas de formato" + +#: ui/composer-widget.ui:1183 msgid "Select spell checking languages" msgstr "Seleccione el idioma de la revisión ortográfica" +#: ui/composer-widget.ui:1247 +msgid "S_ans Serif" +msgstr "S_ans serif" + +#: ui/composer-widget.ui:1252 +msgid "S_erif" +msgstr "S_erif" + +#: ui/composer-widget.ui:1257 +msgid "_Fixed Width" +msgstr "_Anchura fija" + +#: ui/composer-widget.ui:1267 +msgid "_Small" +msgstr "_Pequeño" + +#: ui/composer-widget.ui:1272 +msgid "_Medium" +msgstr "_Mediano" + +#: ui/composer-widget.ui:1277 +msgid "Lar_ge" +msgstr "_Grande" + +#: ui/composer-widget.ui:1287 +msgid "_Rich Text" +msgstr "Texto en_riquecido" + +#: ui/composer-widget.ui:1292 +#| msgid "_Rich Text" +msgid "_Plain Text" +msgstr "Texto _plano" + #: ui/components-attachment-pane.ui:29 ui/components-attachment-pane.ui:47 msgid "Select all attachments" msgstr "Guardar todos los adjuntos" @@ -3435,23 +3488,23 @@ msgstr "Redactar mensaje" msgid "Toggle search bar" msgstr "Conmutar la barra de búsqueda" -#: ui/main-toolbar.ui:114 +#: ui/main-toolbar.ui:113 msgid "Reply" msgstr "Responder" -#: ui/main-toolbar.ui:137 +#: ui/main-toolbar.ui:136 msgid "Reply All" msgstr "Responder a todos" -#: ui/main-toolbar.ui:160 +#: ui/main-toolbar.ui:159 msgid "Forward" msgstr "Reenviar" -#: ui/main-toolbar.ui:265 +#: ui/main-toolbar.ui:264 msgid "Toggle find bar" msgstr "Conmutar la barra de búsqueda" -#: ui/main-toolbar.ui:286 +#: ui/main-toolbar.ui:285 msgid "_Archive" msgstr "_Archivar" @@ -3499,6 +3552,9 @@ msgstr "_Autenticar" msgid "Geary update in progress…" msgstr "Actualización de Geary en proceso…" +#~ msgid "C_olor" +#~ msgstr "C_olor" + #~ msgid "Show Extended Fields" #~ msgstr "Mostrar campos ampliados" @@ -4355,15 +4411,6 @@ msgstr "Actualización de Geary en proceso…" #~ msgid "Small" #~ msgstr "Pequeño" -#~ msgid "Sans Serif" -#~ msgstr "Sans serif" - -#~ msgid "Serif" -#~ msgstr "Serif" - -#~ msgid "Fixed Width" -#~ msgstr "Anchura fija" - #~ msgid "_Attach File" #~ msgstr "_Adjuntar archivo" diff --git a/po/id.po b/po/id.po index b585dc6e..8fd9f184 100644 --- a/po/id.po +++ b/po/id.po @@ -6,20 +6,21 @@ # Andika Triwidada , 2012-2014 # elementary Indonesia , 2012, 2013 # Mohamad Hasan Al Banna, 2013 +# Kukuh Syafaat , 2017, 2018, 2020. msgid "" msgstr "" "Project-Id-Version: geary mainline\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" -"POT-Creation-Date: 2019-12-17 23:56+0000\n" -"PO-Revision-Date: 2020-01-04 08:23+0700\n" -"Last-Translator: Andika Triwidada \n" +"POT-Creation-Date: 2020-01-08 10:10+0000\n" +"PO-Revision-Date: 2020-01-14 20:18+0700\n" +"Last-Translator: Kukuh Syafaat \n" "Language-Team: Indonesian\n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n!=1;\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.2.4\n" #: desktop/geary-attach.contract.desktop.in:3 msgid "Send by email" @@ -943,7 +944,7 @@ msgid "translator-credits" msgstr "" "Andika Triwidada , 2012, 2013, 2016, 2017, 2019\n" "Dani Pratomo , 2012.\n" -"Kukuh Syafaat , 2017, 2018." +"Kukuh Syafaat , 2017, 2018, 2020." #. / Warning printed to the console when a deprecated #. / command line option is used. @@ -1176,7 +1177,7 @@ msgstr "Hapus" 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] "" +msgstr[1] "Anda mau membuang pesan ini secara permanen?" #: src/client/application/application-main-window.vala:1325 #, c-format @@ -1207,7 +1208,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:1815 +#: src/client/composer/composer-widget.vala:1816 #, c-format msgid "%s (%s)" msgstr "%s (%s)" @@ -1350,37 +1351,37 @@ msgstr "Tidak bisa mencari nama server" msgid "Mark conversation" msgid_plural "Mark conversations" msgstr[0] "Tandai percakapan" -msgstr[1] "" +msgstr[1] "Tandai percakapan" #: src/client/components/main-toolbar.vala:147 msgid "Add label to conversation" msgid_plural "Add label to conversations" msgstr[0] "Tambahkan label ke percakapan" -msgstr[1] "" +msgstr[1] "Tambahkan label ke percakapan" #: src/client/components/main-toolbar.vala:152 msgid "Move conversation" msgid_plural "Move conversations" msgstr[0] "Pindahkan percakapan" -msgstr[1] "" +msgstr[1] "Pindahkan percakapan" #: src/client/components/main-toolbar.vala:157 msgid "Archive conversation" msgid_plural "Archive conversations" msgstr[0] "Arsipkan percakapan" -msgstr[1] "" +msgstr[1] "Arsipkan percakapan" #: src/client/components/main-toolbar.vala:168 msgid "Move conversation to Trash" msgid_plural "Move conversations to Trash" msgstr[0] "Pindahkan percakapan ke Tong Sampah" -msgstr[1] "" +msgstr[1] "Pindahkan percakapan ke Tong Sampah" #: src/client/components/main-toolbar.vala:178 msgid "Delete conversation" msgid_plural "Delete conversations" msgstr[0] "Hapus percakapan" -msgstr[1] "" +msgstr[1] "Hapus percakapan" #. Translators: Info bar title for a generic account #. problem. @@ -1575,90 +1576,90 @@ 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:814 +#: src/client/composer/composer-widget.vala:815 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:840 +#: src/client/composer/composer-widget.vala:841 msgid "Do you want to discard this draft message?" msgstr "Anda mau membuang draf pesan ini?" -#: src/client/composer/composer-widget.vala:1484 +#: src/client/composer/composer-widget.vala:1485 msgid "Send message with an empty subject and body?" msgstr "Kirim pesan dengan subjek dan isi kosong?" -#: src/client/composer/composer-widget.vala:1486 +#: src/client/composer/composer-widget.vala:1487 msgid "Send message with an empty subject?" msgstr "Kirim pesan dengan subjek kosong?" -#: src/client/composer/composer-widget.vala:1488 +#: src/client/composer/composer-widget.vala:1489 msgid "Send message with an empty body?" msgstr "Kirim pesan tanpa isi?" -#: src/client/composer/composer-widget.vala:1497 +#: src/client/composer/composer-widget.vala:1498 msgid "Send message without an attachment?" msgstr "Kirim pesan tanpa lampiran?" -#: src/client/composer/composer-widget.vala:1807 +#: src/client/composer/composer-widget.vala:1808 #, c-format msgid "“%s” already attached for delivery." msgstr "\"%s\" sudah dilampirkan untuk pengiriman." -#: src/client/composer/composer-widget.vala:1837 -#: src/client/composer/composer-widget.vala:1887 +#: src/client/composer/composer-widget.vala:1838 +#: src/client/composer/composer-widget.vala:1888 #, c-format msgid "“%s” is an empty file." msgstr "\"%s\" adalah berkas kosong." -#: src/client/composer/composer-widget.vala:1875 +#: src/client/composer/composer-widget.vala:1876 #, c-format msgid "“%s” could not be found." msgstr "\"%s\" tidak ditemukan." -#: src/client/composer/composer-widget.vala:1881 +#: src/client/composer/composer-widget.vala:1882 #, c-format msgid "“%s” is a folder." msgstr "\"%s\" adalah sebuah folder." -#: src/client/composer/composer-widget.vala:1900 +#: src/client/composer/composer-widget.vala:1901 #, c-format msgid "“%s” could not be opened for reading." msgstr "\"%s\" tak bisa dibuka untuk dibaca." -#: src/client/composer/composer-widget.vala:1908 +#: src/client/composer/composer-widget.vala:1909 msgid "Cannot add attachment" msgstr "Tak bisa menambah lampiran" #. Translators: Human-readable version of the RFC 822 To header -#: src/client/composer/composer-widget.vala:1965 +#: src/client/composer/composer-widget.vala:1966 #: src/client/conversation-viewer/conversation-email.vala:559 #: src/client/util/util-email.vala:235 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:1971 +#: src/client/composer/composer-widget.vala:1972 #: src/client/conversation-viewer/conversation-email.vala:564 #: src/client/util/util-email.vala:240 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:1977 +#: src/client/composer/composer-widget.vala:1978 #: src/client/conversation-viewer/conversation-email.vala:569 #: 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:1983 +#: src/client/composer/composer-widget.vala:1984 msgid "Reply-To: " msgstr "Balas-Ke: " -#: src/client/composer/composer-widget.vala:2172 +#: src/client/composer/composer-widget.vala:2170 msgid "Select Color" msgstr "Pilih Warna" @@ -1667,20 +1668,20 @@ msgstr "Pilih Warna" #. 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:2364 +#: src/client/composer/composer-widget.vala:2362 #, c-format msgid "%1$s via %2$s" msgstr "%1$s via %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:2420 +#: src/client/composer/composer-widget.vala:2418 msgid "_From:" msgstr "_Dari:" #. Translators: This is the name of the file chooser filter #. when inserting an image in the composer. -#: src/client/composer/composer-widget.vala:2723 +#: src/client/composer/composer-widget.vala:2721 msgid "Images" msgstr "Citra" @@ -1701,14 +1702,14 @@ msgstr "Cari lebih banyak bahasa lagi" msgid "Move conversation to _Trash" msgid_plural "Move conversations to _Trash" msgstr[0] "Pindahkan percakapan ke _Tong Sampah" -msgstr[1] "" +msgstr[1] "Pindahkan percakapan ke _Tong Sampah" #. / Translators: Context menu item #: src/client/conversation-list/conversation-list-view.vala:347 msgid "_Delete conversation" msgid_plural "_Delete conversations" msgstr[0] "_Hapus percakapan" -msgstr[1] "" +msgstr[1] "_Hapus percakapan" #: src/client/conversation-list/conversation-list-view.vala:360 #: ui/main-toolbar-menus.ui:5 @@ -2097,7 +2098,8 @@ msgstr "%a, %-e %b %Y pada %-H:%M" msgid "%a, %b %-e, %Y at %X" msgstr "%a, %-e %b %Y pada %X" -#: src/client/util/util-email.vala:38 src/engine/rfc822/rfc822-message.vala:998 +#: src/client/util/util-email.vala:38 +#: src/engine/rfc822/rfc822-message.vala:1000 msgid "(no subject)" msgstr "(tanpa perihal)" @@ -2436,12 +2438,12 @@ msgstr "Dihapus" msgid "Archive | Archives" msgstr "Arsip | Archive | Archives" -#: src/engine/rfc822/rfc822-message.vala:467 +#: src/engine/rfc822/rfc822-message.vala:458 #, c-format msgid "Could not determine mime type for “%s”." msgstr "Tidak dapat menentukan tipe mime untuk \"%s\"." -#: src/engine/rfc822/rfc822-message.vala:475 +#: src/engine/rfc822/rfc822-message.vala:469 #, c-format msgid "Could not determine content type for mime type “%s” on “%s”." msgstr "Tidak dapat menentukan tipe isi untuk tipe mime \"%s\" pada \"%s\"." @@ -2620,27 +2622,27 @@ msgstr "_Percayai Server Ini" msgid "_Don’t Trust This Server" msgstr "_Jangan Percayai Server Ini" -#: ui/composer-headerbar.ui:19 ui/composer-headerbar.ui:176 +#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175 msgid "Detach the composer from the window" msgstr "Copot penyusun dari jendela" -#: ui/composer-headerbar.ui:59 ui/composer-headerbar.ui:84 +#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83 msgid "Attach a file" msgstr "Lampirkan berkas" -#: ui/composer-headerbar.ui:108 +#: ui/composer-headerbar.ui:107 msgid "Add original attachments" msgstr "Tambahkan lampiran asli" -#: ui/composer-headerbar.ui:204 +#: ui/composer-headerbar.ui:203 msgid "_Send" msgstr "_Kirim" -#: ui/composer-headerbar.ui:231 +#: ui/composer-headerbar.ui:230 msgid "Discard and Close" msgstr "Buang dan Tutup" -#: ui/composer-headerbar.ui:255 +#: ui/composer-headerbar.ui:254 msgid "Save and Close" msgstr "Simpan dan Tutup" @@ -2694,135 +2696,135 @@ msgstr "_Besar" msgid "C_olor" msgstr "_Warna" -#: ui/composer-menus.ui:47 ui/composer-menus.ui:62 +#: ui/composer-menus.ui:47 ui/composer-menus.ui:56 msgid "_Rich Text" msgstr "_Rich Text" -#: ui/composer-menus.ui:53 ui/composer-menus.ui:68 -msgid "Show Extended Fields" -msgstr "Tampilkan Ruas Yang Diperluas" - -#: ui/composer-menus.ui:78 +#: ui/composer-menus.ui:66 msgid "_Undo" msgstr "Tak _Jadi" -#: ui/composer-menus.ui:82 +#: ui/composer-menus.ui:70 msgid "_Redo" msgstr "Jadi _Lagi" -#: ui/composer-menus.ui:88 ui/composer-menus.ui:106 +#: ui/composer-menus.ui:76 ui/composer-menus.ui:94 msgid "Cu_t" msgstr "Po_tong" -#: ui/composer-menus.ui:92 ui/composer-menus.ui:110 +#: ui/composer-menus.ui:80 ui/composer-menus.ui:98 #: ui/conversation-message-menus.ui:37 msgid "_Copy" msgstr "Sali_n" -#: ui/composer-menus.ui:96 ui/composer-menus.ui:114 +#: ui/composer-menus.ui:84 ui/composer-menus.ui:102 msgid "_Paste" msgstr "Tem_pel" -#: ui/composer-menus.ui:100 +#: ui/composer-menus.ui:88 msgctxt "Clipboard paste as plain text" msgid "Paste _Without Formatting" msgstr "Tempel _Tanpa Format" -#: ui/composer-menus.ui:120 +#: ui/composer-menus.ui:108 msgid "Select _All" msgstr "Pilih Semu_a" -#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:43 +#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43 msgid "_Inspect…" msgstr "Per_iksa…" -#. Address(es) e-mail is to be sent to -#: ui/composer-widget.ui:56 -msgid "_To" -msgstr "_Ke" - -#: ui/composer-widget.ui:75 -msgid "_Cc" -msgstr "_Cc" - -#: ui/composer-widget.ui:130 -msgid "_Subject" -msgstr "_Perihal" - -#: ui/composer-widget.ui:149 -msgid "_Bcc" -msgstr "_Bcc" - -#: ui/composer-widget.ui:179 -msgid "_Reply-To" -msgstr "B_alas-Ke" - #. Geary account mail will be sent from -#: ui/composer-widget.ui:208 +#: ui/composer-widget.ui:61 msgid "From" msgstr "Dari" -#: ui/composer-widget.ui:293 +#. Address(es) e-mail is to be sent to +#: ui/composer-widget.ui:131 +msgid "_To" +msgstr "_Ke" + +#: ui/composer-widget.ui:159 +msgid "Show Cc, Bcc, and Reply-To fields" +msgstr "Tampilkan kolom Cc, Bcc, dan Balas-Ke" + +#: ui/composer-widget.ui:214 +msgid "_Cc" +msgstr "_Cc" + +#: ui/composer-widget.ui:258 +msgid "_Bcc" +msgstr "_Bcc" + +#: ui/composer-widget.ui:302 +msgid "_Reply-To" +msgstr "B_alas-Ke" + +#: ui/composer-widget.ui:355 +msgid "_Subject" +msgstr "_Perihal" + +#: ui/composer-widget.ui:428 msgid "Drop files here" msgstr "Jatuhkan berkas di sini" -#: ui/composer-widget.ui:309 +#: ui/composer-widget.ui:444 msgid "To add them as attachments" msgstr "Untuk menambahkan mereka sebagai lampiran" -#: ui/composer-widget.ui:353 +#: ui/composer-widget.ui:488 msgid "Undo last edit" msgstr "Batalkan suntingan terakhir" -#: ui/composer-widget.ui:377 +#: ui/composer-widget.ui:512 msgid "Redo last edit" msgstr "Jadikan lagi penyuntingan terakhir" -#: ui/composer-widget.ui:415 +#: ui/composer-widget.ui:550 msgid "Bold text" msgstr "Teks tebal" -#: ui/composer-widget.ui:439 +#: ui/composer-widget.ui:574 msgid "Italic text" msgstr "Teks miring" -#: ui/composer-widget.ui:463 +#: ui/composer-widget.ui:598 msgid "Underline text" msgstr "Garisbawahi teks" -#: ui/composer-widget.ui:487 +#: ui/composer-widget.ui:622 msgid "Strikethrough text" msgstr "Coret teks" -#: ui/composer-widget.ui:525 +#: ui/composer-widget.ui:660 msgid "Insert bulleted list" msgstr "Sisipkan daftar bulet" -#: ui/composer-widget.ui:549 +#: ui/composer-widget.ui:684 msgid "Insert numbered list" msgstr "Sisipkan daftar bernomor" -#: ui/composer-widget.ui:587 +#: ui/composer-widget.ui:722 msgid "Indent or quote text" msgstr "Indentasikan atau kutip teks" -#: ui/composer-widget.ui:611 +#: ui/composer-widget.ui:746 msgid "Un-indent or unquote text" msgstr "Batalkan indentasi atau pengutipan teks" -#: ui/composer-widget.ui:649 +#: ui/composer-widget.ui:784 msgid "Insert or update text link" msgstr "Sisipkan atau mutakhirkan tautan teks" -#: ui/composer-widget.ui:673 +#: ui/composer-widget.ui:808 msgid "Insert an image" msgstr "Sisipkan sebuah citra" -#: ui/composer-widget.ui:707 +#: ui/composer-widget.ui:842 msgid "Remove text formatting" msgstr "Buang performatan teks" -#: ui/composer-widget.ui:731 +#: ui/composer-widget.ui:866 msgid "Select spell checking languages" msgstr "Pilih bahasa pemeriksaan ejaan" @@ -3472,3 +3474,6 @@ msgstr "Otentik_asikan" #: ui/upgrade_dialog.glade:60 msgid "Geary update in progress…" msgstr "Pemutakhiran Geary sedang berlangsung…" + +#~ msgid "Show Extended Fields" +#~ msgstr "Tampilkan Ruas Yang Diperluas" diff --git a/po/pl.po b/po/pl.po index bf7b4d58..68d33744 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,5 +1,5 @@ # Polish translation for geary. -# Copyright © 2012-2019 the geary authors. +# Copyright © 2012-2020 the geary authors. # This file is distributed under the same license as the geary package. # scrx , 2012. # Piotrek290 , 2012-2013. @@ -9,15 +9,15 @@ # wmq , 2012. # yorbajim , 2013. # zacol , 2012. -# Piotr Drąg , 2014-2019. -# Aviary.pl , 2014-2019. +# Piotr Drąg , 2014-2020. +# Aviary.pl , 2014-2020. # msgid "" msgstr "" "Project-Id-Version: geary\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" -"POT-Creation-Date: 2019-12-17 23:56+0000\n" -"PO-Revision-Date: 2019-12-26 13:53+0100\n" +"POT-Creation-Date: 2020-01-08 10:10+0000\n" +"PO-Revision-Date: 2020-01-12 17:29+0100\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" @@ -962,8 +962,8 @@ msgstr "" "wmq , 2012\n" "yorbajim , 2013\n" "zacol , 2012\n" -"Piotr Drąg , 2014-2019\n" -"Aviary.pl , 2014-2019" +"Piotr Drąg , 2014-2020\n" +"Aviary.pl , 2014-2020" #. / Warning printed to the console when a deprecated #. / command line option is used. @@ -1240,7 +1240,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:1815 +#: src/client/composer/composer-widget.vala:1816 #, c-format msgid "%s (%s)" msgstr "%s (%s)" @@ -1615,90 +1615,90 @@ 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:814 +#: src/client/composer/composer-widget.vala:815 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:840 +#: src/client/composer/composer-widget.vala:841 msgid "Do you want to discard this draft message?" msgstr "Odrzucić ten szkic?" -#: src/client/composer/composer-widget.vala:1484 +#: src/client/composer/composer-widget.vala:1485 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:1486 +#: src/client/composer/composer-widget.vala:1487 msgid "Send message with an empty subject?" msgstr "Wysłać wiadomość niezawierającą tematu?" -#: src/client/composer/composer-widget.vala:1488 +#: src/client/composer/composer-widget.vala:1489 msgid "Send message with an empty body?" msgstr "Wysłać wiadomość niezawierającą treści?" -#: src/client/composer/composer-widget.vala:1497 +#: src/client/composer/composer-widget.vala:1498 msgid "Send message without an attachment?" msgstr "Wysłać wiadomość niezawierającą załączników?" -#: src/client/composer/composer-widget.vala:1807 +#: src/client/composer/composer-widget.vala:1808 #, c-format msgid "“%s” already attached for delivery." msgstr "Do wiadomości już załączono „%s”." -#: src/client/composer/composer-widget.vala:1837 -#: src/client/composer/composer-widget.vala:1887 +#: src/client/composer/composer-widget.vala:1838 +#: src/client/composer/composer-widget.vala:1888 #, c-format msgid "“%s” is an empty file." msgstr "„%s” jest pustym plikiem." -#: src/client/composer/composer-widget.vala:1875 +#: src/client/composer/composer-widget.vala:1876 #, c-format msgid "“%s” could not be found." msgstr "Nie można odnaleźć „%s”." -#: src/client/composer/composer-widget.vala:1881 +#: src/client/composer/composer-widget.vala:1882 #, c-format msgid "“%s” is a folder." msgstr "„%s” jest katalogiem." -#: src/client/composer/composer-widget.vala:1900 +#: src/client/composer/composer-widget.vala:1901 #, c-format msgid "“%s” could not be opened for reading." msgstr "Nie można otworzyć „%s” do odczytania." -#: src/client/composer/composer-widget.vala:1908 +#: src/client/composer/composer-widget.vala:1909 msgid "Cannot add attachment" msgstr "Nie można dodać załącznika" #. Translators: Human-readable version of the RFC 822 To header -#: src/client/composer/composer-widget.vala:1965 +#: src/client/composer/composer-widget.vala:1966 #: src/client/conversation-viewer/conversation-email.vala:559 #: src/client/util/util-email.vala:235 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:1971 +#: src/client/composer/composer-widget.vala:1972 #: src/client/conversation-viewer/conversation-email.vala:564 #: src/client/util/util-email.vala:240 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:1977 +#: src/client/composer/composer-widget.vala:1978 #: src/client/conversation-viewer/conversation-email.vala:569 #: 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:1983 +#: src/client/composer/composer-widget.vala:1984 msgid "Reply-To: " msgstr "Odpowiedź do: " -#: src/client/composer/composer-widget.vala:2172 +#: src/client/composer/composer-widget.vala:2170 msgid "Select Color" msgstr "Wybór koloru" @@ -1707,20 +1707,20 @@ msgstr "Wybór koloru" #. 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:2364 +#: src/client/composer/composer-widget.vala:2362 #, c-format msgid "%1$s via %2$s" msgstr "%1$s przez %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:2420 +#: src/client/composer/composer-widget.vala:2418 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:2723 +#: src/client/composer/composer-widget.vala:2721 msgid "Images" msgstr "Obrazy" @@ -2149,7 +2149,8 @@ msgstr "%a, %-e %b %Y o %H∶%M" msgid "%a, %b %-e, %Y at %X" msgstr "%a, %-e %b %Y o %X" -#: src/client/util/util-email.vala:38 src/engine/rfc822/rfc822-message.vala:998 +#: src/client/util/util-email.vala:38 +#: src/engine/rfc822/rfc822-message.vala:1000 msgid "(no subject)" msgstr "(brak tematu)" @@ -2487,12 +2488,12 @@ msgstr "Elementy usunięte" msgid "Archive | Archives" msgstr "Archiwum | Archiwa" -#: src/engine/rfc822/rfc822-message.vala:467 +#: src/engine/rfc822/rfc822-message.vala:458 #, c-format msgid "Could not determine mime type for “%s”." msgstr "Nie można ustalić typu MIME dla „%s”." -#: src/engine/rfc822/rfc822-message.vala:475 +#: src/engine/rfc822/rfc822-message.vala:469 #, c-format msgid "Could not determine content type for mime type “%s” on “%s”." msgstr "Nie można ustalić typu treści dla typu MIME „%s” na „%s”." @@ -2671,27 +2672,27 @@ msgstr "Z_aufaj temu serwerowi" msgid "_Don’t Trust This Server" msgstr "_Nie ufaj temu serwerowi" -#: ui/composer-headerbar.ui:19 ui/composer-headerbar.ui:176 +#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175 msgid "Detach the composer from the window" msgstr "Odłącza okno tworzenia wiadomości" -#: ui/composer-headerbar.ui:59 ui/composer-headerbar.ui:84 +#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83 msgid "Attach a file" msgstr "Załącza plik" -#: ui/composer-headerbar.ui:108 +#: ui/composer-headerbar.ui:107 msgid "Add original attachments" msgstr "Dodaje oryginalne załączniki" -#: ui/composer-headerbar.ui:204 +#: ui/composer-headerbar.ui:203 msgid "_Send" msgstr "_Wyślij" -#: ui/composer-headerbar.ui:231 +#: ui/composer-headerbar.ui:230 msgid "Discard and Close" msgstr "Odrzuca i zamyka" -#: ui/composer-headerbar.ui:255 +#: ui/composer-headerbar.ui:254 msgid "Save and Close" msgstr "Zapisuje i zamyka" @@ -2745,135 +2746,136 @@ msgstr "_Duży" msgid "C_olor" msgstr "K_olor" -#: ui/composer-menus.ui:47 ui/composer-menus.ui:62 +#: ui/composer-menus.ui:47 ui/composer-menus.ui:56 msgid "_Rich Text" msgstr "Tekst _sformatowany" -#: ui/composer-menus.ui:53 ui/composer-menus.ui:68 -msgid "Show Extended Fields" -msgstr "Rozszerzone pola" - -#: ui/composer-menus.ui:78 +#: ui/composer-menus.ui:66 msgid "_Undo" msgstr "Cof_nij" -#: ui/composer-menus.ui:82 +#: ui/composer-menus.ui:70 msgid "_Redo" msgstr "P_onów" -#: ui/composer-menus.ui:88 ui/composer-menus.ui:106 +#: ui/composer-menus.ui:76 ui/composer-menus.ui:94 msgid "Cu_t" msgstr "_Wytnij" -#: ui/composer-menus.ui:92 ui/composer-menus.ui:110 +#: ui/composer-menus.ui:80 ui/composer-menus.ui:98 #: ui/conversation-message-menus.ui:37 msgid "_Copy" msgstr "S_kopiuj" -#: ui/composer-menus.ui:96 ui/composer-menus.ui:114 +#: ui/composer-menus.ui:84 ui/composer-menus.ui:102 msgid "_Paste" msgstr "Wk_lej" -#: ui/composer-menus.ui:100 +#: ui/composer-menus.ui:88 msgctxt "Clipboard paste as plain text" msgid "Paste _Without Formatting" msgstr "Wklej be_z formatowania" -#: ui/composer-menus.ui:120 +#: ui/composer-menus.ui:108 msgid "Select _All" msgstr "Zaznacz _wszystko" -#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:43 +#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43 msgid "_Inspect…" msgstr "Z_badaj…" -#. Address(es) e-mail is to be sent to -#: ui/composer-widget.ui:56 -msgid "_To" -msgstr "_Do" - -#: ui/composer-widget.ui:75 -msgid "_Cc" -msgstr "Do _wiadomości" - -#: ui/composer-widget.ui:130 -msgid "_Subject" -msgstr "_Temat" - -#: ui/composer-widget.ui:149 -msgid "_Bcc" -msgstr "_Ukryty do wiadomości" - -#: ui/composer-widget.ui:179 -msgid "_Reply-To" -msgstr "_Odpowiedź do" - #. Geary account mail will be sent from -#: ui/composer-widget.ui:208 +#: ui/composer-widget.ui:61 msgid "From" msgstr "Od" -#: ui/composer-widget.ui:293 +#. Address(es) e-mail is to be sent to +#: ui/composer-widget.ui:131 +msgid "_To" +msgstr "_Do" + +#: ui/composer-widget.ui:159 +msgid "Show Cc, Bcc, and Reply-To fields" +msgstr "" +"Wyświetla pola „Do wiadomości”, „Ukryty do wiadomości” i „Odpowiedź do”" + +#: ui/composer-widget.ui:214 +msgid "_Cc" +msgstr "Do _wiadomości" + +#: ui/composer-widget.ui:258 +msgid "_Bcc" +msgstr "_Ukryty do wiadomości" + +#: ui/composer-widget.ui:302 +msgid "_Reply-To" +msgstr "_Odpowiedź do" + +#: ui/composer-widget.ui:355 +msgid "_Subject" +msgstr "_Temat" + +#: ui/composer-widget.ui:428 msgid "Drop files here" msgstr "Tutaj można upuścić pliki," -#: ui/composer-widget.ui:309 +#: ui/composer-widget.ui:444 msgid "To add them as attachments" msgstr "aby dodać je jako załączniki." -#: ui/composer-widget.ui:353 +#: ui/composer-widget.ui:488 msgid "Undo last edit" msgstr "Cofa ostatnią modyfikację" -#: ui/composer-widget.ui:377 +#: ui/composer-widget.ui:512 msgid "Redo last edit" msgstr "Ponawia ostatnią modyfikację" -#: ui/composer-widget.ui:415 +#: ui/composer-widget.ui:550 msgid "Bold text" msgstr "Pogrubia tekst" -#: ui/composer-widget.ui:439 +#: ui/composer-widget.ui:574 msgid "Italic text" msgstr "Pochyla tekst" -#: ui/composer-widget.ui:463 +#: ui/composer-widget.ui:598 msgid "Underline text" msgstr "Podkreśla tekst" -#: ui/composer-widget.ui:487 +#: ui/composer-widget.ui:622 msgid "Strikethrough text" msgstr "Przekreśla tekst" -#: ui/composer-widget.ui:525 +#: ui/composer-widget.ui:660 msgid "Insert bulleted list" msgstr "Wstawia listę wypunktowaną" -#: ui/composer-widget.ui:549 +#: ui/composer-widget.ui:684 msgid "Insert numbered list" msgstr "Wstawia listę numerowaną" -#: ui/composer-widget.ui:587 +#: ui/composer-widget.ui:722 msgid "Indent or quote text" msgstr "Wcina lub cytuje tekst" -#: ui/composer-widget.ui:611 +#: ui/composer-widget.ui:746 msgid "Un-indent or unquote text" msgstr "Usuwa wcięcie lub cytowanie tekstu" -#: ui/composer-widget.ui:649 +#: ui/composer-widget.ui:784 msgid "Insert or update text link" msgstr "Wstawia lub aktualizuje odnośnik tekstowy" -#: ui/composer-widget.ui:673 +#: ui/composer-widget.ui:808 msgid "Insert an image" msgstr "Wstawia obraz" -#: ui/composer-widget.ui:707 +#: ui/composer-widget.ui:842 msgid "Remove text formatting" msgstr "Usuwa formatowanie tekstu" -#: ui/composer-widget.ui:731 +#: ui/composer-widget.ui:866 msgid "Select spell checking languages" msgstr "Wybiera język sprawdzania pisowni" diff --git a/po/sv.po b/po/sv.po index 3591f4f6..1c20e54a 100644 --- a/po/sv.po +++ b/po/sv.po @@ -11,15 +11,15 @@ # joachimj , 2013 # TommyBrunn , 2012 # Mattias Eriksson , 2014, 2015. -# Anders Jonsson , 2016, 2018, 2019. +# Anders Jonsson , 2016, 2018, 2019, 2020. # Josef Andersson , 2016, 2017, 2018. # msgid "" msgstr "" "Project-Id-Version: geary\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" -"POT-Creation-Date: 2019-12-17 23:56+0000\n" -"PO-Revision-Date: 2019-12-22 22:26+0100\n" +"POT-Creation-Date: 2020-01-08 10:10+0000\n" +"PO-Revision-Date: 2020-01-11 17:24+0100\n" "Last-Translator: Anders Jonsson \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -1221,7 +1221,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:1815 +#: src/client/composer/composer-widget.vala:1816 #, c-format msgid "%s (%s)" msgstr "%s (%s)" @@ -1589,90 +1589,90 @@ 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:814 +#: src/client/composer/composer-widget.vala:815 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:840 +#: src/client/composer/composer-widget.vala:841 msgid "Do you want to discard this draft message?" msgstr "Vill du förkasta detta utkast?" -#: src/client/composer/composer-widget.vala:1484 +#: src/client/composer/composer-widget.vala:1485 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:1486 +#: src/client/composer/composer-widget.vala:1487 msgid "Send message with an empty subject?" msgstr "Skicka meddelande med en tom ämnesrad?" -#: src/client/composer/composer-widget.vala:1488 +#: src/client/composer/composer-widget.vala:1489 msgid "Send message with an empty body?" msgstr "Skicka meddelande utan innehåll?" -#: src/client/composer/composer-widget.vala:1497 +#: src/client/composer/composer-widget.vala:1498 msgid "Send message without an attachment?" msgstr "Skicka meddelande utan att bifoga filer?" -#: src/client/composer/composer-widget.vala:1807 +#: src/client/composer/composer-widget.vala:1808 #, c-format msgid "“%s” already attached for delivery." msgstr "”%s” är redan bifogad och kommer att skickas." -#: src/client/composer/composer-widget.vala:1837 -#: src/client/composer/composer-widget.vala:1887 +#: src/client/composer/composer-widget.vala:1838 +#: src/client/composer/composer-widget.vala:1888 #, c-format msgid "“%s” is an empty file." msgstr "”%s” är en tom fil." -#: src/client/composer/composer-widget.vala:1875 +#: src/client/composer/composer-widget.vala:1876 #, c-format msgid "“%s” could not be found." msgstr "”%s” kunde inte hittas." -#: src/client/composer/composer-widget.vala:1881 +#: src/client/composer/composer-widget.vala:1882 #, c-format msgid "“%s” is a folder." msgstr "”%s” är en mapp." -#: src/client/composer/composer-widget.vala:1900 +#: src/client/composer/composer-widget.vala:1901 #, 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:1908 +#: src/client/composer/composer-widget.vala:1909 msgid "Cannot add attachment" msgstr "Kan inte bifoga din fil" #. Translators: Human-readable version of the RFC 822 To header -#: src/client/composer/composer-widget.vala:1965 +#: src/client/composer/composer-widget.vala:1966 #: src/client/conversation-viewer/conversation-email.vala:559 #: src/client/util/util-email.vala:235 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:1971 +#: src/client/composer/composer-widget.vala:1972 #: src/client/conversation-viewer/conversation-email.vala:564 #: src/client/util/util-email.vala:240 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:1977 +#: src/client/composer/composer-widget.vala:1978 #: src/client/conversation-viewer/conversation-email.vala:569 #: 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:1983 +#: src/client/composer/composer-widget.vala:1984 msgid "Reply-To: " msgstr "Svara-till: " -#: src/client/composer/composer-widget.vala:2172 +#: src/client/composer/composer-widget.vala:2170 msgid "Select Color" msgstr "Välj färg" @@ -1681,20 +1681,20 @@ msgstr "Välj färg" #. 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:2364 +#: src/client/composer/composer-widget.vala:2362 #, c-format msgid "%1$s via %2$s" msgstr "%1$s via %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:2420 +#: src/client/composer/composer-widget.vala:2418 msgid "_From:" msgstr "_Från:" #. Translators: This is the name of the file chooser filter #. when inserting an image in the composer. -#: src/client/composer/composer-widget.vala:2723 +#: src/client/composer/composer-widget.vala:2721 msgid "Images" msgstr "Bilder" @@ -2111,7 +2111,8 @@ msgstr "%a, %-e %b %Y klockan %H:%M" msgid "%a, %b %-e, %Y at %X" msgstr "%a, %-e %b %Y klockan %X" -#: src/client/util/util-email.vala:38 src/engine/rfc822/rfc822-message.vala:998 +#: src/client/util/util-email.vala:38 +#: src/engine/rfc822/rfc822-message.vala:1000 msgid "(no subject)" msgstr "(inget ämne)" @@ -2450,12 +2451,12 @@ msgstr "Borttaget" msgid "Archive | Archives" msgstr "Arkiv | Archive | Archives" -#: src/engine/rfc822/rfc822-message.vala:467 +#: src/engine/rfc822/rfc822-message.vala:458 #, 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:475 +#: src/engine/rfc822/rfc822-message.vala:469 #, 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”." @@ -2635,27 +2636,27 @@ msgstr "Li_ta på denna server" msgid "_Don’t Trust This Server" msgstr "Lita inte på _denna server" -#: ui/composer-headerbar.ui:19 ui/composer-headerbar.ui:176 +#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175 msgid "Detach the composer from the window" msgstr "Koppla loss redigeraren från fönstret" -#: ui/composer-headerbar.ui:59 ui/composer-headerbar.ui:84 +#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83 msgid "Attach a file" msgstr "Bifoga en fil" -#: ui/composer-headerbar.ui:108 +#: ui/composer-headerbar.ui:107 msgid "Add original attachments" msgstr "Lägg till ursprungliga bilagor" -#: ui/composer-headerbar.ui:204 +#: ui/composer-headerbar.ui:203 msgid "_Send" msgstr "_Skicka" -#: ui/composer-headerbar.ui:231 +#: ui/composer-headerbar.ui:230 msgid "Discard and Close" msgstr "Förkasta och stäng" -#: ui/composer-headerbar.ui:255 +#: ui/composer-headerbar.ui:254 msgid "Save and Close" msgstr "Spara och stäng" @@ -2709,135 +2710,135 @@ msgstr "_Stor" msgid "C_olor" msgstr "Fär_g" -#: ui/composer-menus.ui:47 ui/composer-menus.ui:62 +#: ui/composer-menus.ui:47 ui/composer-menus.ui:56 msgid "_Rich Text" msgstr "_Rich Text" -#: ui/composer-menus.ui:53 ui/composer-menus.ui:68 -msgid "Show Extended Fields" -msgstr "Visa utökade fält" - -#: ui/composer-menus.ui:78 +#: ui/composer-menus.ui:66 msgid "_Undo" msgstr "_Ångra" -#: ui/composer-menus.ui:82 +#: ui/composer-menus.ui:70 msgid "_Redo" msgstr "_Upprepa" -#: ui/composer-menus.ui:88 ui/composer-menus.ui:106 +#: ui/composer-menus.ui:76 ui/composer-menus.ui:94 msgid "Cu_t" msgstr "Klipp u_t" -#: ui/composer-menus.ui:92 ui/composer-menus.ui:110 +#: ui/composer-menus.ui:80 ui/composer-menus.ui:98 #: ui/conversation-message-menus.ui:37 msgid "_Copy" msgstr "_Kopiera" -#: ui/composer-menus.ui:96 ui/composer-menus.ui:114 +#: ui/composer-menus.ui:84 ui/composer-menus.ui:102 msgid "_Paste" msgstr "_Klistra in" -#: ui/composer-menus.ui:100 +#: ui/composer-menus.ui:88 msgctxt "Clipboard paste as plain text" msgid "Paste _Without Formatting" msgstr "Klistra in _utan formatering" -#: ui/composer-menus.ui:120 +#: ui/composer-menus.ui:108 msgid "Select _All" msgstr "Välj _alla" -#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:43 +#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43 msgid "_Inspect…" msgstr "_Inspektera…" -#. Address(es) e-mail is to be sent to -#: ui/composer-widget.ui:56 -msgid "_To" -msgstr "_Till" - -#: ui/composer-widget.ui:75 -msgid "_Cc" -msgstr "_Cc" - -#: ui/composer-widget.ui:130 -msgid "_Subject" -msgstr "_Ämne" - -#: ui/composer-widget.ui:149 -msgid "_Bcc" -msgstr "_Bcc" - -#: ui/composer-widget.ui:179 -msgid "_Reply-To" -msgstr "Sva_ra-till" - #. Geary account mail will be sent from -#: ui/composer-widget.ui:208 +#: ui/composer-widget.ui:61 msgid "From" msgstr "Från" -#: ui/composer-widget.ui:293 +#. 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:214 +msgid "_Cc" +msgstr "_Cc" + +#: ui/composer-widget.ui:258 +msgid "_Bcc" +msgstr "_Bcc" + +#: ui/composer-widget.ui:302 +msgid "_Reply-To" +msgstr "Sva_ra-till" + +#: ui/composer-widget.ui:355 +msgid "_Subject" +msgstr "_Ämne" + +#: ui/composer-widget.ui:428 msgid "Drop files here" msgstr "Släpp filer här" -#: ui/composer-widget.ui:309 +#: ui/composer-widget.ui:444 msgid "To add them as attachments" msgstr "För att bifoga dem" -#: ui/composer-widget.ui:353 +#: ui/composer-widget.ui:488 msgid "Undo last edit" msgstr "Ångra senaste redigering" -#: ui/composer-widget.ui:377 +#: ui/composer-widget.ui:512 msgid "Redo last edit" msgstr "Gör om senaste redigering" -#: ui/composer-widget.ui:415 +#: ui/composer-widget.ui:550 msgid "Bold text" msgstr "Fet text" -#: ui/composer-widget.ui:439 +#: ui/composer-widget.ui:574 msgid "Italic text" msgstr "Kursiv text" -#: ui/composer-widget.ui:463 +#: ui/composer-widget.ui:598 msgid "Underline text" msgstr "Understryk text" -#: ui/composer-widget.ui:487 +#: ui/composer-widget.ui:622 msgid "Strikethrough text" msgstr "Genomstruken text" -#: ui/composer-widget.ui:525 +#: ui/composer-widget.ui:660 msgid "Insert bulleted list" msgstr "Infoga punktlista" -#: ui/composer-widget.ui:549 +#: ui/composer-widget.ui:684 msgid "Insert numbered list" msgstr "Infoga numrerad lista" -#: ui/composer-widget.ui:587 +#: ui/composer-widget.ui:722 msgid "Indent or quote text" msgstr "Indentera eller citera text" -#: ui/composer-widget.ui:611 +#: ui/composer-widget.ui:746 msgid "Un-indent or unquote text" msgstr "Avindentera eller avcitera text" -#: ui/composer-widget.ui:649 +#: ui/composer-widget.ui:784 msgid "Insert or update text link" msgstr "Infoga eller uppdatera textlänk" -#: ui/composer-widget.ui:673 +#: ui/composer-widget.ui:808 msgid "Insert an image" msgstr "Infoga en bild" -#: ui/composer-widget.ui:707 +#: ui/composer-widget.ui:842 msgid "Remove text formatting" msgstr "Ta bort textformatering" -#: ui/composer-widget.ui:731 +#: ui/composer-widget.ui:866 msgid "Select spell checking languages" msgstr "Välj språk för stavningskontroll" @@ -3488,6 +3489,9 @@ msgstr "_Autentisera" msgid "Geary update in progress…" msgstr "Geary-uppgradering pågår…" +#~ msgid "Show Extended Fields" +#~ msgstr "Visa utökade fält" + #~ msgid "Enable notification sounds" #~ msgstr "Aktivera aviseringsljud" diff --git a/po/tr.po b/po/tr.po index ea89e432..34f1608e 100644 --- a/po/tr.po +++ b/po/tr.po @@ -10,14 +10,14 @@ # Necdet Yücel , 2015. # Simge Sezgin , 2015. # Muhammet Kara , 2014, 2016. -# Emin Tufan Çetin , 2016-2019. +# Emin Tufan Çetin , 2016-2020. # msgid "" msgstr "" "Project-Id-Version: geary.mainline\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" -"POT-Creation-Date: 2019-12-17 23:56+0000\n" -"PO-Revision-Date: 2019-12-27 16:09+0300\n" +"POT-Creation-Date: 2020-01-08 10:10+0000\n" +"PO-Revision-Date: 2020-01-10 19:01+0300\n" "Last-Translator: Emin Tufan Çetin \n" "Language-Team: Turkish \n" "Language: tr\n" @@ -1205,7 +1205,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:1815 +#: src/client/composer/composer-widget.vala:1816 #, c-format msgid "%s (%s)" msgstr "%s (%s)" @@ -1307,7 +1307,6 @@ msgstr "Ara" #. / 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 "Anahtar sözcükleri hesaptaki tüm postalarda ara" @@ -1567,90 +1566,90 @@ 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:814 +#: src/client/composer/composer-widget.vala:815 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:840 +#: src/client/composer/composer-widget.vala:841 msgid "Do you want to discard this draft message?" msgstr "Bu taslak iletiyi gözden çıkarmak istiyor musunuz?" -#: src/client/composer/composer-widget.vala:1484 +#: src/client/composer/composer-widget.vala:1485 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:1486 +#: src/client/composer/composer-widget.vala:1487 msgid "Send message with an empty subject?" msgstr "İleti konusu olmadan gönderilsin mi?" -#: src/client/composer/composer-widget.vala:1488 +#: src/client/composer/composer-widget.vala:1489 msgid "Send message with an empty body?" msgstr "İleti, ileti gövdesi olmadan gönderilsin mi?" -#: src/client/composer/composer-widget.vala:1497 +#: src/client/composer/composer-widget.vala:1498 msgid "Send message without an attachment?" msgstr "İleti eki olmadan gönderilsin mi?" -#: src/client/composer/composer-widget.vala:1807 +#: src/client/composer/composer-widget.vala:1808 #, c-format msgid "“%s” already attached for delivery." msgstr "“%s” gönderim için zaten eklendi." -#: src/client/composer/composer-widget.vala:1837 -#: src/client/composer/composer-widget.vala:1887 +#: src/client/composer/composer-widget.vala:1838 +#: src/client/composer/composer-widget.vala:1888 #, c-format msgid "“%s” is an empty file." msgstr "“%s” boş bir dosya." -#: src/client/composer/composer-widget.vala:1875 +#: src/client/composer/composer-widget.vala:1876 #, c-format msgid "“%s” could not be found." msgstr "“%s” bulunamadı." -#: src/client/composer/composer-widget.vala:1881 +#: src/client/composer/composer-widget.vala:1882 #, c-format msgid "“%s” is a folder." msgstr "“%s” bir klasör." -#: src/client/composer/composer-widget.vala:1900 +#: src/client/composer/composer-widget.vala:1901 #, c-format msgid "“%s” could not be opened for reading." msgstr "“%s” okuma için açılamadı." -#: src/client/composer/composer-widget.vala:1908 +#: src/client/composer/composer-widget.vala:1909 msgid "Cannot add attachment" msgstr "Eklenti eklenemiyor" #. Translators: Human-readable version of the RFC 822 To header -#: src/client/composer/composer-widget.vala:1965 +#: src/client/composer/composer-widget.vala:1966 #: src/client/conversation-viewer/conversation-email.vala:559 #: src/client/util/util-email.vala:235 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:1971 +#: src/client/composer/composer-widget.vala:1972 #: src/client/conversation-viewer/conversation-email.vala:564 #: src/client/util/util-email.vala:240 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:1977 +#: src/client/composer/composer-widget.vala:1978 #: src/client/conversation-viewer/conversation-email.vala:569 #: 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:1983 +#: src/client/composer/composer-widget.vala:1984 msgid "Reply-To: " -msgstr "Yanıtla: " +msgstr "Şuna Yanıtla: " -#: src/client/composer/composer-widget.vala:2172 +#: src/client/composer/composer-widget.vala:2170 msgid "Select Color" msgstr "Renk Seç" @@ -1659,20 +1658,20 @@ msgstr "Renk Seç" #. 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:2364 +#: src/client/composer/composer-widget.vala:2362 #, c-format msgid "%1$s via %2$s" msgstr "%2$s aracılığıyla %1$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:2420 +#: src/client/composer/composer-widget.vala:2418 msgid "_From:" msgstr "_Gönderen:" #. Translators: This is the name of the file chooser filter #. when inserting an image in the composer. -#: src/client/composer/composer-widget.vala:2723 +#: src/client/composer/composer-widget.vala:2721 msgid "Images" msgstr "Resimler" @@ -2075,7 +2074,8 @@ msgstr "%a, %b %-e, %Y / %H:%M" msgid "%a, %b %-e, %Y at %X" msgstr "%a, %b %-e, %Y / %X" -#: src/client/util/util-email.vala:38 src/engine/rfc822/rfc822-message.vala:998 +#: src/client/util/util-email.vala:38 +#: src/engine/rfc822/rfc822-message.vala:1000 msgid "(no subject)" msgstr "(konu yok)" @@ -2414,12 +2414,12 @@ msgstr "Silinen Ögeler" msgid "Archive | Archives" msgstr "Arşiv | Arşivler" -#: src/engine/rfc822/rfc822-message.vala:467 +#: src/engine/rfc822/rfc822-message.vala:458 #, c-format msgid "Could not determine mime type for “%s”." msgstr "“%s” için mime türü saptanamadı." -#: src/engine/rfc822/rfc822-message.vala:475 +#: src/engine/rfc822/rfc822-message.vala:469 #, c-format msgid "Could not determine content type for mime type “%s” on “%s”." msgstr "“%2$s” üstündeki “%1$s” mime türü için içerik türü saptanamadı." @@ -2596,27 +2596,27 @@ msgstr "Bu Sunucuya _Güven" msgid "_Don’t Trust This Server" msgstr "Bu Sunucuya Güven_me" -#: ui/composer-headerbar.ui:19 ui/composer-headerbar.ui:176 +#: ui/composer-headerbar.ui:18 ui/composer-headerbar.ui:175 msgid "Detach the composer from the window" msgstr "Oluşturucuyu pencereden ayır" -#: ui/composer-headerbar.ui:59 ui/composer-headerbar.ui:84 +#: ui/composer-headerbar.ui:58 ui/composer-headerbar.ui:83 msgid "Attach a file" msgstr "Dosya ekle" -#: ui/composer-headerbar.ui:108 +#: ui/composer-headerbar.ui:107 msgid "Add original attachments" msgstr "Özgün ekleri ekle" -#: ui/composer-headerbar.ui:204 +#: ui/composer-headerbar.ui:203 msgid "_Send" msgstr "_Gönder" -#: ui/composer-headerbar.ui:231 +#: ui/composer-headerbar.ui:230 msgid "Discard and Close" msgstr "Gözden Çıkar ve Kapat" -#: ui/composer-headerbar.ui:255 +#: ui/composer-headerbar.ui:254 msgid "Save and Close" msgstr "Kaydet ve Kapat" @@ -2670,135 +2670,135 @@ msgstr "Büy_ük" msgid "C_olor" msgstr "R_enk" -#: ui/composer-menus.ui:47 ui/composer-menus.ui:62 +#: ui/composer-menus.ui:47 ui/composer-menus.ui:56 msgid "_Rich Text" msgstr "_Zengin Metin" -#: ui/composer-menus.ui:53 ui/composer-menus.ui:68 -msgid "Show Extended Fields" -msgstr "Genişletilmiş Alanları Göster" - -#: ui/composer-menus.ui:78 +#: ui/composer-menus.ui:66 msgid "_Undo" msgstr "_Geri Al" -#: ui/composer-menus.ui:82 +#: ui/composer-menus.ui:70 msgid "_Redo" msgstr "_Yinele" -#: ui/composer-menus.ui:88 ui/composer-menus.ui:106 +#: ui/composer-menus.ui:76 ui/composer-menus.ui:94 msgid "Cu_t" msgstr "Ke_s" -#: ui/composer-menus.ui:92 ui/composer-menus.ui:110 +#: ui/composer-menus.ui:80 ui/composer-menus.ui:98 #: ui/conversation-message-menus.ui:37 msgid "_Copy" msgstr "_Kopyala" -#: ui/composer-menus.ui:96 ui/composer-menus.ui:114 +#: ui/composer-menus.ui:84 ui/composer-menus.ui:102 msgid "_Paste" msgstr "_Yapıştır" -#: ui/composer-menus.ui:100 +#: ui/composer-menus.ui:88 msgctxt "Clipboard paste as plain text" msgid "Paste _Without Formatting" msgstr "Biçimlendirmede_n Yapıştır" -#: ui/composer-menus.ui:120 +#: ui/composer-menus.ui:108 msgid "Select _All" msgstr "Tümünü S_eç" -#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:43 +#: ui/composer-menus.ui:115 ui/conversation-message-menus.ui:43 msgid "_Inspect…" msgstr "_Denetle…" -#. Address(es) e-mail is to be sent to -#: ui/composer-widget.ui:56 -msgid "_To" -msgstr "_Kime" - -#: ui/composer-widget.ui:75 -msgid "_Cc" -msgstr "_Cc" - -#: ui/composer-widget.ui:130 -msgid "_Subject" -msgstr "_Konu" - -#: ui/composer-widget.ui:149 -msgid "_Bcc" -msgstr "_Bcc" - -#: ui/composer-widget.ui:179 -msgid "_Reply-To" -msgstr "_Yanıtla" - #. Geary account mail will be sent from -#: ui/composer-widget.ui:208 +#: ui/composer-widget.ui:61 msgid "From" msgstr "Gönderen" -#: ui/composer-widget.ui:293 +#. Address(es) e-mail is to be sent to +#: ui/composer-widget.ui:131 +msgid "_To" +msgstr "_Kime" + +#: ui/composer-widget.ui:159 +msgid "Show Cc, Bcc, and Reply-To fields" +msgstr "Cc, Bcc ve Şuna Yanıtla alanlarını göster" + +#: ui/composer-widget.ui:214 +msgid "_Cc" +msgstr "_Cc" + +#: ui/composer-widget.ui:258 +msgid "_Bcc" +msgstr "_Bcc" + +#: ui/composer-widget.ui:302 +msgid "_Reply-To" +msgstr "_Şuna Yanıtla" + +#: ui/composer-widget.ui:355 +msgid "_Subject" +msgstr "_Konu" + +#: ui/composer-widget.ui:428 msgid "Drop files here" msgstr "Dosyaları buraya bırak" -#: ui/composer-widget.ui:309 +#: ui/composer-widget.ui:444 msgid "To add them as attachments" msgstr "Onları ek olarak eklemek için" -#: ui/composer-widget.ui:353 +#: ui/composer-widget.ui:488 msgid "Undo last edit" msgstr "Son düzenlemeyi geri al" -#: ui/composer-widget.ui:377 +#: ui/composer-widget.ui:512 msgid "Redo last edit" msgstr "Son düzenlemeyi yinele" -#: ui/composer-widget.ui:415 +#: ui/composer-widget.ui:550 msgid "Bold text" msgstr "Kalın yazı" -#: ui/composer-widget.ui:439 +#: ui/composer-widget.ui:574 msgid "Italic text" msgstr "Eğik metin" -#: ui/composer-widget.ui:463 +#: ui/composer-widget.ui:598 msgid "Underline text" msgstr "Metnin altını çiz" -#: ui/composer-widget.ui:487 +#: ui/composer-widget.ui:622 msgid "Strikethrough text" msgstr "Çizgili metin" -#: ui/composer-widget.ui:525 +#: ui/composer-widget.ui:660 msgid "Insert bulleted list" msgstr "Sırasız liste yerleştir" -#: ui/composer-widget.ui:549 +#: ui/composer-widget.ui:684 msgid "Insert numbered list" msgstr "Sıralı liste yerleştir" -#: ui/composer-widget.ui:587 +#: ui/composer-widget.ui:722 msgid "Indent or quote text" msgstr "Girintile veya metin alıntıla" -#: ui/composer-widget.ui:611 +#: ui/composer-widget.ui:746 msgid "Un-indent or unquote text" msgstr "Girintiyi veya alıntıyı kaldır" -#: ui/composer-widget.ui:649 +#: ui/composer-widget.ui:784 msgid "Insert or update text link" msgstr "Metin bağlantısı ekle veya güncelle" -#: ui/composer-widget.ui:673 +#: ui/composer-widget.ui:808 msgid "Insert an image" msgstr "Resim yerleştir" -#: ui/composer-widget.ui:707 +#: ui/composer-widget.ui:842 msgid "Remove text formatting" msgstr "Metin biçimlendirmeyi kaldır" -#: ui/composer-widget.ui:731 +#: ui/composer-widget.ui:866 msgid "Select spell checking languages" msgstr "Yazım denetimi dillerini seç" @@ -3450,6 +3450,9 @@ msgstr "_Kimlik Doğrula" msgid "Geary update in progress…" msgstr "Geary güncellemesi sürüyor…" +#~ msgid "Show Extended Fields" +#~ msgstr "Genişletilmiş Alanları Göster" + #~ msgid "Indexing %s account" #~ msgstr "%s hesabı dizinleniyor" diff --git a/src/client/accounts/accounts-editor-list-pane.vala b/src/client/accounts/accounts-editor-list-pane.vala index 9bb42c1a..fc16da49 100644 --- a/src/client/accounts/accounts-editor-list-pane.vala +++ b/src/client/accounts/accounts-editor-list-pane.vala @@ -243,8 +243,12 @@ internal class Accounts.EditorListPane : Gtk.Grid, EditorPane, CommandPane { private void on_execute(Application.Command command) { if (command.executed_label != null) { + int notification_time = + command.executed_notification_brief ? + editor.application.config.brief_notification_duration : 0; Components.InAppNotification ian = - new Components.InAppNotification(command.executed_label); + new Components.InAppNotification( + command.executed_label, notification_time); ian.set_button(_("Undo"), Action.Edit.prefix(Action.Edit.UNDO)); this.editor.add_notification(ian); } diff --git a/src/client/application/application-command.vala b/src/client/application/application-command.vala index 24ee9f3b..446d6741 100644 --- a/src/client/application/application-command.vala +++ b/src/client/application/application-command.vala @@ -71,6 +71,14 @@ public abstract class Application.Command : GLib.Object { */ public string? executed_label { get; protected set; default = null; } + /** + * True if executed_label should be displayed only briefly to the user. + * Set this to true for very frequent notifications. + */ + public bool executed_notification_brief { + get; protected set; default = false; + } + /** * A human-readable label describing the result of calling {@link undo}. * diff --git a/src/client/application/application-configuration.vala b/src/client/application/application-configuration.vala index e2cc8f7b..6cce6a7d 100644 --- a/src/client/application/application-configuration.vala +++ b/src/client/application/application-configuration.vala @@ -14,6 +14,7 @@ public class Application.Configuration : Geary.BaseObject { public const string ASK_OPEN_ATTACHMENT_KEY = "ask-open-attachment"; public const string AUTOSELECT_KEY = "autoselect"; + public const string BRIEF_NOTIFICATION_DURATION = "brief-notification-duration"; public const string COMPOSER_WINDOW_SIZE_KEY = "composer-window-size"; public const string COMPOSE_AS_HTML_KEY = "compose-as-html"; public const string CONVERSATION_VIEWER_ZOOM_KEY = "conversation-viewer-zoom"; @@ -22,6 +23,7 @@ public class Application.Configuration : Geary.BaseObject { 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 SEARCH_STRATEGY_KEY = "search-strategy"; public const string SINGLE_KEY_SHORTCUTS = "single-key-shortcuts"; @@ -104,6 +106,11 @@ public class Application.Configuration : Geary.BaseObject { 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); } + } + public int messages_pane_position { get { return settings.get_int(MESSAGES_PANE_POSITION_KEY); } set { settings.set_int(MESSAGES_PANE_POSITION_KEY, value); } @@ -154,6 +161,10 @@ public class Application.Configuration : Geary.BaseObject { get { return settings.get_int(UNDO_SEND_DELAY); } } + /** The number of seconds for which brief notifications should be displayed. */ + public int brief_notification_duration { + get { return settings.get_int(BRIEF_NOTIFICATION_DURATION); } + } // Creates a configuration object. public Configuration(string schema_id) { diff --git a/src/client/application/application-controller.vala b/src/client/application/application-controller.vala index 9c07cf5b..8c95cab2 100644 --- a/src/client/application/application-controller.vala +++ b/src/client/application/application-controller.vala @@ -1599,7 +1599,9 @@ internal class Application.Controller : Geary.BaseObject { "Email sent to %s" ).printf(Util.Email.to_short_recipient_display(sent)); Components.InAppNotification notification = - new Components.InAppNotification(message); + new Components.InAppNotification( + message, application.config.brief_notification_duration + ); foreach (MainWindow window in this.application.get_main_windows()) { window.add_notification(notification); } @@ -2390,6 +2392,7 @@ private class Application.ArchiveEmailCommand : RevokableCommand { base(source, conversations, messages); this.source = source; this.executed_label = executed_label; + this.executed_notification_brief = true; this.undone_label = undone_label; } @@ -2696,13 +2699,14 @@ private class Application.SendComposerCommand : ComposerCommand { public override async void execute(GLib.Cancellable? cancellable) throws GLib.Error { Geary.ComposedEmail email = yield this.composer.get_composed_email(); - /// Translators: The label for an in-app notification. The - /// string substitution is a list of recipients of the email. - this.executed_label = _( - "Email to %s queued for delivery" - ).printf(Util.Email.to_short_recipient_display(email)); - + if (this.can_undo) { + /// Translators: The label for an in-app notification. The + /// string substitution is a list of recipients of the email. + this.executed_label = _( + "Email to %s queued for delivery" + ).printf(Util.Email.to_short_recipient_display(email)); + this.saved = yield this.smtp.save_email(email, cancellable); this.commit_timer.start(); } else { diff --git a/src/client/application/application-main-window.vala b/src/client/application/application-main-window.vala index e7708001..e8758a89 100644 --- a/src/client/application/application-main-window.vala +++ b/src/client/application/application-main-window.vala @@ -1216,7 +1216,7 @@ public class Application.MainWindow : on_conversation_view_added ); - this.conversations_paned.pack2(this.conversation_viewer, true, true); + this.conversations_paned.pack2(this.conversation_viewer, true, false); // Main toolbar this.main_toolbar = new MainToolbar(config); @@ -1230,7 +1230,10 @@ public class Application.MainWindow : this.main_toolbar.show_close_button = false; this.main_layout.pack_start(main_toolbar, false, true, 0); } else { - set_titlebar(this.main_toolbar); + var titlebar = new Hdy.TitleBar(); + titlebar.show(); + titlebar.add(this.main_toolbar); + set_titlebar(titlebar); } // Status bar @@ -2041,8 +2044,11 @@ public class Application.MainWindow : private void on_command_redo(Command command) { update_command_actions(); if (command.executed_label != null) { + int notification_time = + command.executed_notification_brief ? + application.config.brief_notification_duration : 0; Components.InAppNotification ian = - new Components.InAppNotification(command.executed_label); + new Components.InAppNotification(command.executed_label, notification_time); ian.set_button(_("Undo"), Action.Edit.prefix(Action.Edit.UNDO)); add_notification(ian); } diff --git a/src/client/components/components-in-app-notification.vala b/src/client/components/components-in-app-notification.vala index 79ec67c7..fd5a7797 100644 --- a/src/client/components/components-in-app-notification.vala +++ b/src/client/components/components-in-app-notification.vala @@ -26,7 +26,13 @@ public class Components.InAppNotification : Gtk.Revealer { * @param message The message that should be displayed. * @param keepalive The amount of seconds that the notification should stay visible. */ - public InAppNotification(string message, uint keepalive = DEFAULT_KEEPALIVE) { + public InAppNotification(string message, uint keepalive = -1) { + if (keepalive == 0) { + this.message_label.label = ""; + return; // skip the notification + } + if (keepalive == -1) + keepalive = DEFAULT_KEEPALIVE; this.transition_type = Gtk.RevealerTransitionType.SLIDE_DOWN; this.message_label.label = message; @@ -44,8 +50,10 @@ public class Components.InAppNotification : Gtk.Revealer { } public override void show() { - base.show(); - this.reveal_child = true; + if (this.message_label.label != "") { + base.show(); + this.reveal_child = true; + } } /** diff --git a/src/client/components/components-reflow-box.c b/src/client/components/components-reflow-box.c new file mode 100644 index 00000000..f9d9fbe4 --- /dev/null +++ b/src/client/components/components-reflow-box.c @@ -0,0 +1,495 @@ +/* + * Copyright (C) 2020 Alexander Mikhaylenko + * Copyright (C) 2020 James Westman + * + * SPDX-License-Identifier: LGPL-2.1+ + */ + +#include "config.h" +#include +#include + + +#define COMPONENTS_TYPE_REFLOW_BOX (components_reflow_box_get_type()) + +G_DECLARE_FINAL_TYPE (ComponentsReflowBox, components_reflow_box, COMPONENTS, REFLOW_BOX, GtkContainer) + + +ComponentsReflowBox *components_reflow_box_new (void); + +guint components_reflow_box_get_spacing (ComponentsReflowBox *self); +void components_reflow_box_set_spacing (ComponentsReflowBox *self, + guint spacing); + +guint components_reflow_box_get_row_spacing (ComponentsReflowBox *self); +void components_reflow_box_set_row_spacing (ComponentsReflowBox *self, + guint row_spacing); + + +struct _ComponentsReflowBox +{ + GtkContainer parent_instance; + + GList *children; + + guint spacing; + guint row_spacing; +}; + +G_DEFINE_TYPE (ComponentsReflowBox, components_reflow_box, GTK_TYPE_CONTAINER); + +enum { + PROP_0, + PROP_SPACING, + PROP_ROW_SPACING, + LAST_PROP, +}; + +static GParamSpec *props[LAST_PROP]; + + +static void +components_reflow_box_init (ComponentsReflowBox *self) +{ + gtk_widget_set_has_window (GTK_WIDGET (self), FALSE); +} + +static void +components_reflow_box_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (object); + + switch (prop_id) { + case PROP_SPACING: + g_value_set_uint (value, components_reflow_box_get_spacing (self)); + break; + + case PROP_ROW_SPACING: + g_value_set_uint (value, components_reflow_box_get_row_spacing (self)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +components_reflow_box_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (object); + + switch (prop_id) { + case PROP_SPACING: + components_reflow_box_set_spacing (self, g_value_get_uint (value)); + break; + + case PROP_ROW_SPACING: + components_reflow_box_set_row_spacing (self, g_value_get_uint (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +/** + * components_reflow_box_set_spacing: + * @self: a #ComponentsReflowBox + * @spacing: the spacing + * + * Sets the spacing for @self. + * + * Since: 0.0.14 + */ +void +components_reflow_box_set_spacing (ComponentsReflowBox *self, + guint spacing) +{ + if (self->spacing == spacing) + return; + + self->spacing = spacing; + gtk_widget_queue_resize (GTK_WIDGET (self)); + + g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SPACING]); +} + +/** + * components_reflow_box_get_spacing: + * @self: a #ComponentsReflowBox + * + * Gets the spacing for @self. + * + * Returns: the spacing for @self. + * + * Since: 0.0.14 + */ +guint +components_reflow_box_get_spacing (ComponentsReflowBox *self) +{ + return self->spacing; +} + +/** + * components_reflow_box_set_row_spacing: + * @self: a #ComponentsReflowBox + * @row_spacing: the row spacing + * + * Sets the row spacing for @self. + * + * Since: 0.0.14 + */ +void +components_reflow_box_set_row_spacing (ComponentsReflowBox *self, + guint row_spacing) +{ + if (self->row_spacing == row_spacing) + return; + + self->row_spacing = row_spacing; + gtk_widget_queue_resize (GTK_WIDGET (self)); + + g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ROW_SPACING]); +} + +/** + * components_reflow_box_get_row_spacing: + * @self: a #ComponentsReflowBox + * + * Gets the row spacing for @self. + * + * Returns: the row spacing for @self. + * + * Since: 0.0.14 + */ +guint +components_reflow_box_get_row_spacing (ComponentsReflowBox *self) +{ + return self->row_spacing; +} + + +static void +allocate_row (ComponentsReflowBox *self, + GtkAllocation *allocation, + gint y, + GList *row_start, + GList *next_row, + gint row_height, + gint extra_space, + gint n_expand_children) +{ + gboolean rtl; + gint x = 0; + gint expand_per_child = 0; + + if (row_start == NULL) + return; + + rtl = gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL; + if (rtl) + x = allocation->width; + + if (n_expand_children > 0) { + expand_per_child = extra_space / n_expand_children; + } else { + GtkAlign align; + align = gtk_widget_get_halign (GTK_WIDGET (self)); + if (align == GTK_ALIGN_CENTER) { + if (rtl) + x -= (extra_space / 2); + else + x += (extra_space / 2); + } else if (align == GTK_ALIGN_END) { + if (rtl) + x -= extra_space; + else + x += extra_space; + } + } + + for (GList *l = row_start; l != NULL && l != next_row; l = l->next) { + GtkWidget *child = GTK_WIDGET (l->data); + int w, min_w; + GtkAllocation child_alloc; + + if (!gtk_widget_get_visible (child)) + continue; + + gtk_widget_get_preferred_width (child, &min_w, &w); + w = CLAMP (w, min_w, allocation->width); + + if (gtk_widget_get_hexpand (child)) { + w += expand_per_child; + } + + if (rtl) + x -= w; + + child_alloc.x = x + allocation->x; + + if (rtl) + x -= self->spacing; + else + x += w + self->spacing; + + child_alloc.y = y + allocation->y; + child_alloc.width = w; + child_alloc.height = row_height; + + gtk_widget_size_allocate (child, &child_alloc); + } +} + +static gint +calculate_sizes (ComponentsReflowBox *self, + GtkAllocation *allocation, + gboolean dry_run) +{ + gint x = 0; + gint y = 0; + gint row_height = 0; + + GList *row_start = self->children; + gint n_expand_children = 0; + + for (GList *l = self->children; l != NULL; l = l->next) { + GtkWidget *child = GTK_WIDGET (l->data); + int w, h, min_w; + + if (!gtk_widget_get_visible (child)) + continue; + + gtk_widget_get_preferred_width (child, &min_w, &w); + gtk_widget_get_preferred_height (child, NULL, &h); + + w = CLAMP (w, min_w, allocation->width); + + if (x + w > allocation->width) { + /* no more space on this row, create a new one */ + + /* first, do the allocations for the previous row, if needed */ + if (!dry_run) { + allocate_row (self, allocation, y, row_start, l, row_height, + allocation->width + self->spacing - x, n_expand_children); + } + + /* now reset everything for the next row */ + x = 0; + y += row_height + self->row_spacing; + row_height = 0; + n_expand_children = 0; + row_start = l; + } + + if (gtk_widget_get_hexpand (child)) + n_expand_children ++; + + row_height = MAX (row_height, h); + + x += w + self->spacing; + } + + if (!dry_run) { + /* allocate the last row */ + allocate_row (self, allocation, y, row_start, NULL, row_height, + allocation->width + self->spacing - x, n_expand_children); + } + + return y + row_height; +} + +static void +components_reflow_box_size_allocate(GtkWidget *widget, + GtkAllocation *allocation) +{ + ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (widget); + + calculate_sizes(self, allocation, FALSE); + GTK_WIDGET_CLASS (components_reflow_box_parent_class)->size_allocate (widget, allocation); +} + +static GtkSizeRequestMode +components_reflow_box_get_request_mode(GtkWidget *widget) +{ + return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; +} + +static void +components_reflow_box_get_preferred_width(GtkWidget *widget, + gint *minimum_width, + gint *natural_width) +{ + ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (widget); + + gint min = 0; + gint nat = 0; + + for (GList *l = self->children; l != NULL; l = l->next) { + GtkWidget *child = GTK_WIDGET (l->data); + int child_min, child_nat; + + if (!gtk_widget_get_visible (child)) + continue; + + gtk_widget_get_preferred_width (child, &child_min, &child_nat); + + min = MAX (min, child_min); + nat += child_nat + self->spacing; + } + + /* remove the extra spacing, avoid off-by-one error */ + if (self->children != NULL) + nat -= self->spacing; + + if (minimum_width) + *minimum_width = min; + if (natural_width) + *natural_width = nat; +} + +static void +components_reflow_box_get_preferred_width_for_height (GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width) +{ + components_reflow_box_get_preferred_width (widget, minimum_width, natural_width); +} + +static void +components_reflow_box_get_preferred_height_for_width (GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height) +{ + ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (widget); + + GtkAllocation allocation; + gint h; + + allocation.width = width; + h = calculate_sizes (self, &allocation, TRUE); + + if (minimum_height) + *minimum_height = h; + if (natural_height) + *natural_height = h; +} + + +static void +components_reflow_box_add (GtkContainer *container, + GtkWidget *widget) +{ + ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (container); + + self->children = g_list_append (self->children, widget); + gtk_widget_set_parent (widget, GTK_WIDGET (self)); +} + +static void +components_reflow_box_remove (GtkContainer *container, + GtkWidget *widget) +{ + ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (container); + + gtk_widget_unparent (widget); + self->children = g_list_remove (self->children, widget); +} + +static void +components_reflow_box_forall (GtkContainer *container, + gboolean include_internals, + GtkCallback callback, + gpointer callback_data) +{ + ComponentsReflowBox *self = COMPONENTS_REFLOW_BOX (container); + + // while loop instead of for loop in case the callback removes children + GList *l = self->children; + while (l != NULL) { + GtkWidget *child = GTK_WIDGET (l->data); + l = l->next; + callback (child, callback_data); + } +} + +static void +components_reflow_box_class_init (ComponentsReflowBoxClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass); + + object_class->set_property = components_reflow_box_set_property; + object_class->get_property = components_reflow_box_get_property; + + widget_class->size_allocate = components_reflow_box_size_allocate; + widget_class->get_request_mode = components_reflow_box_get_request_mode; + widget_class->get_preferred_width = components_reflow_box_get_preferred_width; + widget_class->get_preferred_width_for_height = components_reflow_box_get_preferred_width_for_height; + widget_class->get_preferred_height_for_width = components_reflow_box_get_preferred_height_for_width; + + container_class->add = components_reflow_box_add; + container_class->remove = components_reflow_box_remove; + container_class->forall = components_reflow_box_forall; + + /** + * ComponentsReflowBox:spacing: + * + * The spacing between children + * + * Since: 0.0.14 + */ + props[PROP_SPACING] = + g_param_spec_uint ("spacing", + _("Spacing"), + _("Spacing between children"), + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); + + /** + * ComponentsReflowBox:row-spacing: + * + * The spacing between rows of children + * + * Since: 0.0.14 + */ + props[PROP_ROW_SPACING] = + g_param_spec_uint ("row-spacing", + _("Row spacing"), + _("Spacing between rows of children"), + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); + + g_object_class_install_properties (object_class, LAST_PROP, props); +} + +/** + * components_reflow_box_new: + * + * Create a new #ComponentsReflowBox widget. + * + * Returns: The newly created #ComponentsReflowBox widget + * + * Since: 0.0.14 + */ +ComponentsReflowBox * +components_reflow_box_new (void) +{ + return g_object_new (COMPONENTS_TYPE_REFLOW_BOX, NULL); +} + + + diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala index 5afaea6c..2a160f8b 100644 --- a/src/client/components/main-toolbar.vala +++ b/src/client/components/main-toolbar.vala @@ -14,8 +14,6 @@ public class MainToolbar : Gtk.Box { public string folder { get; set; } // Close button settings public bool show_close_button { get; set; default = true; } - public bool show_close_button_left { get; private set; default = true; } - public bool show_close_button_right { get; private set; default = true; } // Search and find bar public bool search_open { get; set; default = false; } public bool find_open { get; set; default = false; } @@ -33,7 +31,6 @@ public class MainToolbar : Gtk.Box { private Gtk.ToggleButton search_conversations_button; [GtkChild] private Gtk.MenuButton main_menu_button; - private Binding guest_header_binding; // Conversation header elements [GtkChild] @@ -51,6 +48,9 @@ public class MainToolbar : Gtk.Box { [GtkChild] private Gtk.ToggleButton find_button; + [GtkChild] + private Hdy.HeaderGroup header_group; + private bool show_trash_button = true; // Load these at construction time @@ -72,10 +72,6 @@ public class MainToolbar : Gtk.Box { 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("show-close-button-left", this.folder_header, "show-close-button", - BindingFlags.SYNC_CREATE); - this.bind_property("show-close-button-right", this.conversation_header, "show-close-button", - BindingFlags.SYNC_CREATE); // Assemble the main/mark menus Gtk.Builder builder = new Gtk.Builder.from_resource("/org/gnome/Geary/main-toolbar-menus.ui"); @@ -95,27 +91,17 @@ public class MainToolbar : Gtk.Box { this.bind_property("find-open", this.find_button, "active", BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); - - Gtk.Settings.get_default().notify["gtk-decoration-layout"].connect(set_window_buttons); - this.realize.connect(set_window_buttons); } public void set_conversation_header(Gtk.HeaderBar header) { conversation_header.hide(); - header.get_style_context().add_class("geary-titlebar"); - header.get_style_context().add_class("geary-titlebar-right"); - guest_header_binding = bind_property("show-close-button-right", header, - "show-close-button", BindingFlags.SYNC_CREATE); + this.header_group.add_header_bar(header); pack_start(header, true, true); - header.decoration_layout = conversation_header.decoration_layout; } public void remove_conversation_header(Gtk.HeaderBar header) { remove(header); - header.get_style_context().remove_class("geary-titlebar"); - header.get_style_context().remove_class("geary-titlebar-right"); - guest_header_binding.unbind(); - header.decoration_layout = Gtk.Settings.get_default().gtk_decoration_layout; + this.header_group.remove_header_bar(header); conversation_header.show(); } @@ -124,18 +110,6 @@ public class MainToolbar : Gtk.Box { update_conversation_buttons(); } - private void set_window_buttons() { - string[] buttons = Gtk.Settings.get_default().gtk_decoration_layout.split(":"); - this.show_close_button_left = this.show_close_button; - this.show_close_button_right = this.show_close_button; - this.folder_header.decoration_layout = buttons[0] + ":"; - this.conversation_header.decoration_layout = ( - (buttons.length == 2) - ? ":" + buttons[1] - : "" - ); - } - // Updates tooltip text depending on number of conversations selected. private void update_conversation_buttons() { this.mark_message_button.tooltip_text = ngettext( diff --git a/src/client/composer/composer-headerbar.vala b/src/client/composer/composer-headerbar.vala index 4fde97cd..fd2680a5 100644 --- a/src/client/composer/composer-headerbar.vala +++ b/src/client/composer/composer-headerbar.vala @@ -26,10 +26,6 @@ public class Composer.Headerbar : Gtk.HeaderBar { [GtkChild] private Gtk.Label recipients_label; [GtkChild] - private Gtk.Button new_message_attach_button; - [GtkChild] - private Gtk.Box conversation_attach_buttons; - [GtkChild] private Gtk.Button save_and_close_button; @@ -42,6 +38,7 @@ public class Composer.Headerbar : Gtk.HeaderBar { Gtk.Settings.get_default().notify["gtk-decoration-layout"].connect( on_gtk_decoration_layout_changed ); + this.show_close_button = this.config.desktop_environment != UNITY; } public override void destroy() { @@ -56,11 +53,6 @@ public class Composer.Headerbar : Gtk.HeaderBar { recipients_button.tooltip_text = tooltip; } - public void set_show_pending_attachments(bool show) { - this.new_message_attach_button.visible = !show; - this.conversation_attach_buttons.visible = show; - } - internal void set_mode(Widget.PresentationMode mode) { switch (mode) { case Widget.PresentationMode.DETACHED: diff --git a/src/client/composer/composer-web-view.vala b/src/client/composer/composer-web-view.vala index 7f73becd..3dabf7fe 100644 --- a/src/client/composer/composer-web-view.vala +++ b/src/client/composer/composer-web-view.vala @@ -55,11 +55,16 @@ public class Composer.WebView : Components.WebView { public string link_url { get; private set; default = ""; } public string font_family { get; private set; default = "sans"; } public uint font_size { get; private set; default = 12; } + public Gdk.RGBA font_color { + get; + private set; + default = Util.Gtk.rgba(0, 0, 0, 1); + } private uint context = 0; public EditContext(string message) { - string[] values = message.split(","); + string[] values = message.split(";"); this.context = (uint) uint64.parse(values[0]); this.link_url = values[1]; @@ -73,6 +78,10 @@ public class Composer.WebView : Components.WebView { } this.font_size = (uint) uint64.parse(values[3]); + + Gdk.RGBA font_color = {0, 0, 0, 0}; + font_color.parse(values[4]); + this.font_color = font_color; } } diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala index 9253eab4..30b928c5 100644 --- a/src/client/composer/composer-widget.vala +++ b/src/client/composer/composer-widget.vala @@ -11,6 +11,8 @@ private errordomain AttachmentError { DUPLICATE } +[CCode (cname = "components_reflow_box_get_type")] +private extern Type components_reflow_box_get_type(); /** * A widget for editing an email message. @@ -129,8 +131,9 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { private const string ACTION_COLOR = "color"; private const string ACTION_INSERT_IMAGE = "insert-image"; private const string ACTION_INSERT_LINK = "insert-link"; - private const string ACTION_COMPOSE_AS_HTML = "compose-as-html"; + private const string ACTION_TEXT_FORMAT = "text-format"; private const string ACTION_SHOW_EXTENDED_HEADERS = "show-extended-headers"; + private const string ACTION_SHOW_FORMATTING = "show-formatting"; private const string ACTION_DISCARD = "discard"; private const string ACTION_DETACH = "detach"; private const string ACTION_SEND = "send"; @@ -180,12 +183,13 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { { ACTION_ADD_ORIGINAL_ATTACHMENTS, on_pending_attachments }, { ACTION_CLOSE, on_close }, { ACTION_DISCARD, on_discard }, - { ACTION_COMPOSE_AS_HTML, on_toggle_action, null, "true", on_compose_as_html_toggled }, + { ACTION_TEXT_FORMAT, null, "s", "'html'", on_text_format }, { ACTION_DETACH, on_detach }, { ACTION_OPEN_INSPECTOR, on_open_inspector }, { ACTION_SELECT_DICTIONARY, on_select_dictionary }, { ACTION_SEND, on_send }, { ACTION_SHOW_EXTENDED_HEADERS, on_toggle_action, null, "false", on_show_extended_headers_toggled }, + { ACTION_SHOW_FORMATTING, on_toggle_action, null, "false", on_show_formatting }, }; public static void add_accelerators(Application.Client application) { @@ -310,12 +314,14 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { [GtkChild] private Gtk.Label from_label; + [GtkChild] private Gtk.Box from_row; [GtkChild] private Gtk.Label from_single; [GtkChild] private Gtk.ComboBoxText from_multiple; private Gee.ArrayList from_list = new Gee.ArrayList(); + [GtkChild] Gtk.Box to_row; [GtkChild] private Gtk.Box to_box; [GtkChild] @@ -323,32 +329,36 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { private EmailEntry to_entry; private Components.EntryUndo to_undo; - [GtkChild] - private Gtk.Revealer extended_fields_revealer; + [GtkChild] private Gtk.Revealer extended_fields_revealer; + [GtkChild] Gtk.Box extended_fields_box; + [GtkChild] private Gtk.ToggleButton show_extended_fields; + [GtkChild] private Gtk.Box filled_fields; + [GtkChild] Gtk.Box cc_row; [GtkChild] - private Gtk.EventBox cc_box; + private Gtk.Box cc_box; [GtkChild] private Gtk.Label cc_label; private EmailEntry cc_entry; private Components.EntryUndo cc_undo; + [GtkChild] Gtk.Box bcc_row; [GtkChild] - private Gtk.EventBox bcc_box; + private Gtk.Box bcc_box; [GtkChild] private Gtk.Label bcc_label; private EmailEntry bcc_entry; private Components.EntryUndo bcc_undo; + [GtkChild] Gtk.Box reply_to_row; [GtkChild] - private Gtk.EventBox reply_to_box; + private Gtk.Box reply_to_box; [GtkChild] private Gtk.Label reply_to_label; private EmailEntry reply_to_entry; private Components.EntryUndo reply_to_undo; - [GtkChild] - private Gtk.Label subject_label; + [GtkChild] private Gtk.Box subject_row; [GtkChild] private Gtk.Entry subject_entry; private Components.EntryUndo subject_undo; @@ -371,21 +381,22 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { private Gtk.Widget recipients; [GtkChild] private Gtk.Box header_area; - [GtkChild] - private Gtk.Box insert_buttons; - [GtkChild] - private Gtk.Box font_style_buttons; - [GtkChild] - private Gtk.Box list_buttons; + + [GtkChild] private Gtk.Button new_message_attach_button; + [GtkChild] private Gtk.Box conversation_attach_buttons; + + [GtkChild] private Gtk.Revealer formatting; + [GtkChild] private Gtk.MenuButton font_button; + [GtkChild] private Gtk.Stack font_button_stack; + [GtkChild] private Gtk.MenuButton font_size_button; + [GtkChild] private Gtk.Image font_color_icon; + [GtkChild] private Gtk.MenuButton text_format_button; + [GtkChild] private Gtk.Button insert_link_button; [GtkChild] - private Gtk.Button remove_format_button; - [GtkChild] private Gtk.Button select_dictionary_button; [GtkChild] - private Gtk.MenuButton menu_button; - [GtkChild] private Gtk.Label info_label; [GtkChild] @@ -394,9 +405,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { private GLib.SimpleActionGroup composer_actions = new GLib.SimpleActionGroup(); private GLib.SimpleActionGroup editor_actions = new GLib.SimpleActionGroup(); - private Menu html_menu; - private Menu plain_menu; - private Menu context_menu_model; private Menu context_menu_rich_text; private Menu context_menu_plain_text; @@ -483,6 +491,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { public Widget(Application.Client application, Geary.Account initial_account, ComposeType compose_type) { + components_reflow_box_get_type(); base_ref(); this.application = application; this.account = initial_account; @@ -516,18 +525,21 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { this.to_undo = new Components.EntryUndo(this.to_entry); this.cc_entry = new EmailEntry(this); + this.cc_entry.hexpand = true; this.cc_entry.changed.connect(on_envelope_changed); this.cc_box.add(cc_entry); this.cc_label.set_mnemonic_widget(this.cc_entry); this.cc_undo = new Components.EntryUndo(this.cc_entry); this.bcc_entry = new EmailEntry(this); + this.bcc_entry.hexpand = true; this.bcc_entry.changed.connect(on_envelope_changed); this.bcc_box.add(bcc_entry); this.bcc_label.set_mnemonic_widget(this.bcc_entry); this.bcc_undo = new Components.EntryUndo(this.bcc_entry); this.reply_to_entry = new EmailEntry(this); + this.reply_to_entry.hexpand = true; this.reply_to_entry.changed.connect(on_envelope_changed); this.reply_to_box.add(reply_to_entry); this.reply_to_label.set_mnemonic_widget(this.reply_to_entry); @@ -551,8 +563,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { Gtk.Builder builder = new Gtk.Builder.from_resource( "/org/gnome/Geary/composer-menus.ui" ); - this.html_menu = (Menu) builder.get_object("html_menu_model"); - this.plain_menu = (Menu) builder.get_object("plain_menu_model"); this.context_menu_model = (Menu) builder.get_object("context_menu_model"); this.context_menu_rich_text = (Menu) builder.get_object("context_menu_rich_text"); this.context_menu_plain_text = (Menu) builder.get_object("context_menu_plain_text"); @@ -610,7 +620,14 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { ); this.background_work_pulse.repetition = FOREVER; + // Set the from_multiple combo box to ellipsize. This can't be done + // from the .ui file. + var cells = this.from_multiple.get_cells(); + ((Gtk.CellRendererText) cells.data).ellipsize = END; + load_entry_completions(); + + update_color_icon.begin(Util.Gtk.rgba(0, 0, 0, 0)); } public Widget.from_mailbox(Application.Client application, @@ -754,8 +771,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { // model and hence the menu_button constructs a new // popover. this.composer_actions.change_action_state( - ACTION_COMPOSE_AS_HTML, - this.application.config.compose_as_html + ACTION_TEXT_FORMAT, + this.application.config.compose_as_html ? "html" : "plain" ); set_mode(DETACHED); @@ -1036,7 +1053,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { switch (this.compose_type) { // Restoring a draft case ComposeType.NEW_MESSAGE: - bool show_extended = false; if (referred.from != null) this.from = referred.from; if (referred.to != null) @@ -1044,11 +1060,9 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { if (referred.cc != null) this.cc_entry.addresses = referred.cc; if (referred.bcc != null) { - show_extended = true; this.bcc_entry.addresses = referred.bcc; } if (referred.reply_to != null) { - show_extended = true; this.reply_to_entry.addresses = referred.reply_to; } if (referred.in_reply_to != null) @@ -1067,14 +1081,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { } catch (Error error) { debug("Error getting draft message body: %s", error.message); } - if (show_extended) { - this.editor_actions.change_action_state( - ACTION_SHOW_EXTENDED_HEADERS, true - ); - this.composer_actions.change_action_state( - ACTION_SHOW_EXTENDED_HEADERS, true - ); - } break; case ComposeType.REPLY: @@ -1097,6 +1103,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { Geary.RFC822.TextFormat.HTML); break; } + + update_extended_headers(); return referred_quote; } @@ -1146,10 +1154,16 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { ACTION_SHOW_EXTENDED_HEADERS, false ); entries_users.change_action_state( - ACTION_COMPOSE_AS_HTML, this.application.config.compose_as_html + ACTION_TEXT_FORMAT, + this.application.config.compose_as_html ? "html" : "plain" ); } + this.composer_actions.change_action_state( + ACTION_SHOW_FORMATTING, + this.application.config.formatting_toolbar_visible + ); + get_action(Action.Edit.UNDO).set_enabled(false); get_action(Action.Edit.REDO).set_enabled(false); @@ -1421,10 +1435,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { if (this.container != null) { this.container.top_window.title = subject; } - - if (this.application.config.desktop_environment != UNITY) { - this.header.title = subject; - } } internal void set_mode(PresentationMode new_mode) { @@ -1435,20 +1445,17 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { case PresentationMode.DETACHED: case PresentationMode.PANED: this.recipients.set_visible(true); - this.subject_label.set_visible(true); - this.subject_entry.set_visible(true); + this.subject_row.visible = true; break; case PresentationMode.INLINE: this.recipients.set_visible(true); - this.subject_label.set_visible(false); - this.subject_entry.set_visible(false); + this.subject_row.visible = false; break; case PresentationMode.INLINE_COMPACT: this.recipients.set_visible(false); - this.subject_label.set_visible(false); - this.subject_entry.set_visible(false); + this.subject_row.visible = false; set_compact_header_recipients(); break; } @@ -1795,7 +1802,10 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { } } } - this.header.set_show_pending_attachments(manual_enabled); + + this.new_message_attach_button.visible = !manual_enabled; + this.conversation_attach_buttons.visible = manual_enabled; + return have_added; } @@ -2114,31 +2124,63 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { action.change_state(!action.state.get_boolean()); } - private void on_compose_as_html_toggled(SimpleAction? action, Variant? new_state) { - bool compose_as_html = new_state.get_boolean(); - action.set_state(compose_as_html); + private void on_text_format(SimpleAction? action, Variant? new_state) { + bool compose_as_html = new_state.get_string() == "html"; + action.set_state(new_state.get_string()); foreach (string html_action in HTML_ACTIONS) get_action(html_action).set_enabled(compose_as_html); update_cursor_actions(); - this.insert_buttons.visible = compose_as_html; - this.font_style_buttons.visible = compose_as_html; - this.list_buttons.visible = compose_as_html; - this.remove_format_button.visible = compose_as_html; - - this.menu_button.menu_model = (compose_as_html) ? this.html_menu : this.plain_menu; + var show_formatting = (SimpleAction) this.composer_actions.lookup_action(ACTION_SHOW_FORMATTING); + show_formatting.set_enabled(compose_as_html); + update_formatting_toolbar(); this.editor.set_rich_text(compose_as_html); this.application.config.compose_as_html = compose_as_html; + this.text_format_button.popover.popdown(); + } + + private void reparent_widget(Gtk.Widget child, Gtk.Container new_parent) { + ((Gtk.Container) child.get_parent()).remove(child); + new_parent.add(child); + } + + private void update_extended_headers(bool reorder=true) { + bool cc = this.cc_entry.addresses != null; + bool bcc = this.bcc_entry.addresses != null; + bool reply_to = this.reply_to_entry.addresses != null; + + if (reorder) { + if (cc) { + reparent_widget(this.cc_row, this.filled_fields); + } else { + reparent_widget(this.cc_row, this.extended_fields_box); + } + if (bcc) { + reparent_widget(this.bcc_row, this.filled_fields); + } else { + reparent_widget(this.bcc_row, this.extended_fields_box); + } + if (reply_to) { + reparent_widget(this.reply_to_row, this.filled_fields); + } else { + reparent_widget(this.reply_to_row, this.extended_fields_box); + } + } + + this.show_extended_fields.visible = !(cc && bcc && reply_to); } private void on_show_extended_headers_toggled(GLib.SimpleAction? action, GLib.Variant? new_state) { bool show_extended = new_state.get_boolean(); action.set_state(show_extended); + + update_extended_headers(); + this.extended_fields_revealer.reveal_child = show_extended; if (show_extended && this.current_mode == INLINE_COMPACT) { @@ -2146,11 +2188,29 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { } } + private void update_formatting_toolbar() { + var show_formatting = (SimpleAction) this.composer_actions.lookup_action(ACTION_SHOW_FORMATTING); + var text_format = (SimpleAction) this.composer_actions.lookup_action(ACTION_TEXT_FORMAT); + this.formatting.reveal_child = text_format.get_state().get_string() == "html" && show_formatting.get_state().get_boolean(); + } + + private void on_show_formatting(SimpleAction? action, Variant? new_state) { + bool show_formatting = new_state.get_boolean(); + this.application.config.formatting_toolbar_visible = show_formatting; + action.set_state(new_state); + + update_formatting_toolbar(); + } + private void on_font_family(SimpleAction action, Variant? param) { + string font = param.get_string(); this.editor.execute_editing_command_with_argument( - "fontname", param.get_string() + "fontname", font ); - action.set_state(param.get_string()); + action.set_state(font); + + this.font_button_stack.visible_child_name = font; + this.font_button.popover.popdown(); } private void on_font_size(SimpleAction action, Variant? param) { @@ -2164,15 +2224,35 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { this.editor.execute_editing_command_with_argument("fontsize", size); action.set_state(param.get_string()); + + this.font_size_button.popover.popdown(); + } + + private async void update_color_icon(Gdk.RGBA color) { + var theme = Gtk.IconTheme.get_default(); + var icon = theme.lookup_icon("font-color-symbolic", 16, 0); + Gdk.RGBA fg_color = Util.Gtk.rgba(0, 0, 0, 1); + this.get_style_context().lookup_color("theme_fg_color", out fg_color); + + try { + var pixbuf = yield icon.load_symbolic_async(fg_color, color, null, null, null); + this.font_color_icon.pixbuf = pixbuf; + } catch(Error e) { + warning("Could not load icon `font-color-symbolic`!"); + this.font_color_icon.icon_name = "font-color-symbolic"; + } } private void on_select_color() { Gtk.ColorChooserDialog dialog = new Gtk.ColorChooserDialog(_("Select Color"), this.container.top_window); if (dialog.run() == Gtk.ResponseType.OK) { + var rgba = dialog.get_rgba(); this.editor.execute_editing_command_with_argument( - "forecolor", dialog.get_rgba().to_string() + "forecolor", rgba.to_string() ); + + this.update_color_icon.begin(rgba); } dialog.destroy(); } @@ -2392,7 +2472,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { // the from address had to be set private bool update_from_field() { this.from_multiple.changed.disconnect(on_from_changed); - this.from_single.visible = this.from_multiple.visible = this.from_label.visible = false; + this.from_single.visible = this.from_multiple.visible = this.from_row.visible = false; // Don't show in inline unless the current account has // multiple email accounts or aliases, since these will be replies to a @@ -2411,7 +2491,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { return false; } - this.from_label.visible = true; + this.from_row.visible = true; this.from_label.set_mnemonic_widget(this.from_multiple); // Composer label (with mnemonic underscore) for the account selector // when choosing what address to send a message from. @@ -2607,6 +2687,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { [GtkCallback] private void on_envelope_changed() { draft_changed(); + update_extended_headers(false); } private void on_from_changed() { @@ -2657,6 +2738,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { ACTION_FONT_FAMILY, context.font_family ); + this.update_color_icon.begin(context.font_color); + if (context.font_size < 11) this.editor_actions.change_action_state(ACTION_FONT_SIZE, "small"); else if (context.font_size > 20) diff --git a/src/client/composer/composer-window.vala b/src/client/composer/composer-window.vala index 5a2d5d18..526d800b 100644 --- a/src/client/composer/composer-window.vala +++ b/src/client/composer/composer-window.vala @@ -44,7 +44,6 @@ public class Composer.Window : Gtk.ApplicationWindow, Container { if (application.config.desktop_environment == UNITY) { composer.embed_header(); } else { - composer.header.show_close_button = true; set_titlebar(this.composer.header); } diff --git a/src/client/composer/spell-check-popover.vala b/src/client/composer/spell-check-popover.vala index c04183c0..44dfa021 100644 --- a/src/client/composer/spell-check-popover.vala +++ b/src/client/composer/spell-check-popover.vala @@ -60,6 +60,8 @@ public class SpellCheckPopover { this.is_lang_visible = is_active || is_visible; Gtk.Box box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 6); + box.margin = 6; + box.margin_start = 12; lang_name = Util.International.language_name_from_locale(lang_code); country_name = Util.International.country_name_from_locale(lang_code); @@ -69,7 +71,6 @@ public class SpellCheckPopover { label_text += " (" + country_name + ")"; Gtk.Label label = new Gtk.Label(label_text); label.set_halign(Gtk.Align.START); - label.set_size_request(-1, 24); box.pack_start(label, false, false); diff --git a/src/client/meson.build b/src/client/meson.build index ed99bacf..bb61d9f5 100644 --- a/src/client/meson.build +++ b/src/client/meson.build @@ -37,6 +37,7 @@ geary_client_vala_sources = files( 'components/components-inspector-system-view.vala', 'components/components-placeholder-pane.vala', 'components/components-preferences-window.vala', + 'components/components-reflow-box.c', 'components/components-search-bar.vala', 'components/components-validator.vala', 'components/components-web-view.vala', diff --git a/src/client/util/util-gtk.vala b/src/client/util/util-gtk.vala index 70864ac9..1d41f2e5 100644 --- a/src/client/util/util-gtk.vala +++ b/src/client/util/util-gtk.vala @@ -218,4 +218,13 @@ namespace Util.Gtk { return new_url; } + public Gdk.RGBA rgba(double red, double green, double blue, double alpha) { + return Gdk.RGBA() { + red = red, + green = green, + blue = blue, + alpha = alpha + }; + } + } diff --git a/subprojects/libhandy b/subprojects/libhandy deleted file mode 160000 index b6ff87ea..00000000 --- a/subprojects/libhandy +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b6ff87ea07c69171aa7c743d8c2740527b525271 diff --git a/test/client/composer/composer-web-view-test.vala b/test/client/composer/composer-web-view-test.vala index 64828f04..97c2af29 100644 --- a/test/client/composer/composer-web-view-test.vala +++ b/test/client/composer/composer-web-view-test.vala @@ -35,15 +35,20 @@ public class Composer.WebViewTest : Components.WebViewTestCase } public void edit_context() throws Error { - assert(!(new WebView.EditContext("0,,,").is_link)); - assert(new WebView.EditContext("1,,,").is_link); - assert(new WebView.EditContext("1,url,,").link_url == "url"); + assert(!(new WebView.EditContext("0;;;;").is_link)); + assert(new WebView.EditContext("1;;;;").is_link); + assert(new WebView.EditContext("1;url;;;").link_url == "url"); - assert(new WebView.EditContext("0,,Helvetica,").font_family == "sans"); - assert(new WebView.EditContext("0,,Times New Roman,").font_family == "serif"); - assert(new WebView.EditContext("0,,Courier,").font_family == "monospace"); + assert(new WebView.EditContext("0;;Helvetica;;").font_family == "sans"); + assert(new WebView.EditContext("0;;Times New Roman;;").font_family == "serif"); + assert(new WebView.EditContext("0;;Courier;;").font_family == "monospace"); - assert(new WebView.EditContext("0,,,12").font_size == 12); + assert(new WebView.EditContext("0;;;12;").font_size == 12); + + assert(new WebView.EditContext("0;;;;rgb(0, 0, 0)").font_color == Util.Gtk.rgba(0, 0, 0, 1)); + assert(new WebView.EditContext("0;;;;rgb(255, 0, 0)").font_color == Util.Gtk.rgba(1, 0, 0, 1)); + assert(new WebView.EditContext("0;;;;rgb(0, 255, 0)").font_color == Util.Gtk.rgba(0, 1, 0, 1)); + assert(new WebView.EditContext("0;;;;rgb(0, 0, 255)").font_color == Util.Gtk.rgba(0, 0, 1, 1)); } public void get_html() throws GLib.Error { diff --git a/test/js/composer-page-state-test.vala b/test/js/composer-page-state-test.vala index dfb8566c..6228cc68 100644 --- a/test/js/composer-page-state-test.vala +++ b/test/js/composer-page-state-test.vala @@ -127,7 +127,7 @@ class Composer.PageStateTest : Components.WebViewTestCase { Util.JS.to_string( run_javascript(@"new EditContext(document.getElementById('test')).encode()") .get_js_value() - ).has_prefix("1,url,")); + ).has_prefix("1;url;")); } catch (Util.JS.Error err) { print("Util.JS.Error: %s\n", err.message); assert_not_reached(); @@ -138,7 +138,7 @@ class Composer.PageStateTest : Components.WebViewTestCase { } public void edit_context_font() throws Error { - string html = "

para

"; + string html = "

para

"; load_body_fixture(html); try { @@ -146,7 +146,7 @@ class Composer.PageStateTest : Components.WebViewTestCase { Util.JS.to_string( run_javascript(@"new EditContext(document.getElementById('test')).encode()") .get_js_value() - ) == "0,,Comic Sans,144"); + ) == "0;;Comic Sans;144;rgb(255, 127, 1)"); } catch (Util.JS.Error err) { print("Util.JS.Error: %s\n", err.message); assert_not_reached(); diff --git a/ui/composer-headerbar.ui b/ui/composer-headerbar.ui index 930854f0..2e2501d0 100644 --- a/ui/composer-headerbar.ui +++ b/ui/composer-headerbar.ui @@ -5,6 +5,11 @@