From 1aac6f22847f2602b10b9f3da91d8d38a949ec0f Mon Sep 17 00:00:00 2001 From: Torben Date: Sat, 30 Nov 2019 20:09:28 +0100 Subject: [PATCH 01/32] Change GMime dependency from 2.6.17 to 3.2.4 This commit squashes several non-compiling commits: 66dd6500 Change required GMime version to 3.2.4 or higher 4b9c8a38 Fix some compilations errors in test code 98aa5a2e Fix some (hopefully) last compilation errors 558360c6 Fix parser format when getting message headers cc248ffc Fix name of stream-buffer mode b293c66b Fix another iteration over a header-list 52fa183f Fix parsing of Gmime parameters e078ee62 Use Unix2Dos-, Dos2Unix- and/or SmtpData-filters instead of 'FilterCRLF' ff31b8e5 Fix setting of email headers eb676482 Fix compilation errros due to string-uint8-char conversion problems 8558769f Fix datetime conversion d44a28cd Remove some obsolete arguments 1ce81662 Pass charset where it's required 6013806f Pass GMime.ParserOptions to header-decode methods 986d05a0 Pass GMime.FormatOptions where it's required e9b93187 Pass GMime.ParserOptions where it's required 640ce667 Fix compilation errors in GMime initialization 312f80bf Remove use of GMime.HeaderIter acc73d14 Change GMime dependency from 2.6 to 3.0 54fc250a Adapt names to 'offical' gmime-2.6 bindings The commits are part of the branch 'letorbi/gmime-3-spread', which can be found at: https://gitlab.gnome.org/letorbi/geary/tree/letorbi/gmime-3-spread --- meson.build | 2 +- src/engine/imap-db/imap-db-attachment.vala | 2 +- src/engine/mime/mime-content-disposition.vala | 2 +- src/engine/mime/mime-content-parameters.vala | 10 +- src/engine/mime/mime-content-type.vala | 7 +- .../rfc822-gmime-filter-blockquotes.vala | 8 +- .../rfc822/rfc822-gmime-filter-flowed.vala | 6 +- .../rfc822/rfc822-gmime-filter-plain.vala | 6 +- src/engine/rfc822/rfc822-mailbox-address.vala | 32 ++- .../rfc822/rfc822-mailbox-addresses.vala | 17 +- src/engine/rfc822/rfc822-message-data.vala | 50 +--- src/engine/rfc822/rfc822-message.vala | 233 ++++++++++-------- src/engine/rfc822/rfc822-part.vala | 4 +- src/engine/rfc822/rfc822-utils.vala | 4 +- src/engine/rfc822/rfc822.vala | 24 +- .../imap-db/imap-db-attachment-test.vala | 20 +- test/engine/rfc822-part-test.vala | 12 +- 17 files changed, 236 insertions(+), 203 deletions(-) diff --git a/meson.build b/meson.build index 62f092a6..c8e0c277 100644 --- a/meson.build +++ b/meson.build @@ -57,7 +57,7 @@ target_webkit = '2.24' # Primary deps glib = dependency('glib-2.0', version: '>=' + target_glib) -gmime = dependency('gmime-2.6', version: '>= 2.6.17') +gmime = dependency('gmime-3.0', version: '>= 3.2.4') gtk = dependency('gtk+-3.0', version: '>=' + target_gtk) sqlite = dependency('sqlite3', version: '>= 3.24') webkit2gtk = dependency('webkit2gtk-4.0', version: '>=' + target_webkit) diff --git a/src/engine/imap-db/imap-db-attachment.vala b/src/engine/imap-db/imap-db-attachment.vala index f2aacc25..4db81717 100644 --- a/src/engine/imap-db/imap-db-attachment.vala +++ b/src/engine/imap-db/imap-db-attachment.vala @@ -180,7 +180,7 @@ private class Geary.ImapDB.Attachment : Geary.Attachment { target_stream ); stream = new GMime.StreamBuffer( - stream, GMime.StreamBufferMode.BLOCK_WRITE + stream, GMime.StreamBufferMode.WRITE ); part.write_to_stream(stream, RFC822.Part.EncodingConversion.NONE); diff --git a/src/engine/mime/mime-content-disposition.vala b/src/engine/mime/mime-content-disposition.vala index 9b34849f..675aac75 100644 --- a/src/engine/mime/mime-content-disposition.vala +++ b/src/engine/mime/mime-content-disposition.vala @@ -102,7 +102,7 @@ public class Geary.Mime.ContentDisposition : Geary.BaseObject { out is_unknown); is_unknown_disposition_type = is_unknown; original_disposition_type_string = content_disposition.get_disposition(); - params = new ContentParameters.from_gmime(content_disposition.get_params()); + params = new ContentParameters.from_gmime(content_disposition.get_parameters()); } } diff --git a/src/engine/mime/mime-content-parameters.vala b/src/engine/mime/mime-content-parameters.vala index 0267a9d5..cc201053 100644 --- a/src/engine/mime/mime-content-parameters.vala +++ b/src/engine/mime/mime-content-parameters.vala @@ -51,11 +51,13 @@ public class Geary.Mime.ContentParameters : BaseObject { } } - internal ContentParameters.from_gmime(GMime.Param? gmime_param) { + internal ContentParameters.from_gmime(GMime.ParamList? gmime_params) { Gee.Map params = new Gee.HashMap(); - while (gmime_param != null) { - params.set(gmime_param.get_name(), gmime_param.get_value()); - gmime_param = gmime_param.get_next(); + if (gmime_params != null) { + for (int i=0; i < gmime_params.length(); i++) { + GMime.Param gmime_param = gmime_params.get_parameter_at(i); + params.set(gmime_param.get_name(), gmime_param.get_value()); + } } this(params); } diff --git a/src/engine/mime/mime-content-type.vala b/src/engine/mime/mime-content-type.vala index ed59a491..9fe333d8 100644 --- a/src/engine/mime/mime-content-type.vala +++ b/src/engine/mime/mime-content-type.vala @@ -74,7 +74,10 @@ public class Geary.Mime.ContentType : Geary.BaseObject { if (!str.contains("/")) throw new MimeError.PARSE("Invalid MIME Content-Type: %s", str); - return new ContentType.from_gmime(new GMime.ContentType.from_string(str)); + return new ContentType.from_gmime(GMime.ContentType.parse( + Geary.RFC822.get_parser_options(), + str + )); } /** @@ -158,7 +161,7 @@ public class Geary.Mime.ContentType : Geary.BaseObject { internal ContentType.from_gmime(GMime.ContentType content_type) { media_type = content_type.get_media_type().strip(); media_subtype = content_type.get_media_subtype().strip(); - params = new ContentParameters.from_gmime(content_type.get_params()); + params = new ContentParameters.from_gmime(content_type.get_parameters()); } /** diff --git a/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala b/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala index 7d18342d..6f8c118f 100644 --- a/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala +++ b/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala @@ -49,7 +49,7 @@ private class Geary.RFC822.FilterBlockquotes : GMime.Filter { return new_filter; } - private void do_filter(char[] inbuf, size_t prespace, out unowned char[] processed_buffer, + private void do_filter(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer, out size_t outprespace, bool flush) { // This may not be strictly necessary. @@ -64,7 +64,7 @@ private class Geary.RFC822.FilterBlockquotes : GMime.Filter { } for (uint i = 0; i < inbuf.length; i++) { - char c = inbuf[i]; + uint8 c = inbuf[i]; if (in_prefix && !in_tag) { if (c == Geary.RFC822.Utils.QUOTE_MARKER) { @@ -122,12 +122,12 @@ private class Geary.RFC822.FilterBlockquotes : GMime.Filter { outprespace = this.outpre; } - public override void filter(char[] inbuf, size_t prespace, out unowned char[] processed_buffer, + public override void filter(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer, out size_t outprespace) { do_filter(inbuf, prespace, out processed_buffer, out outprespace, false); } - public override void complete(char[] inbuf, size_t prespace, out unowned char[] processed_buffer, + public override void complete(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer, out size_t outprespace) { do_filter(inbuf, prespace, out processed_buffer, out outprespace, true); } diff --git a/src/engine/rfc822/rfc822-gmime-filter-flowed.vala b/src/engine/rfc822/rfc822-gmime-filter-flowed.vala index 3f5a28a9..d018c537 100644 --- a/src/engine/rfc822/rfc822-gmime-filter-flowed.vala +++ b/src/engine/rfc822/rfc822-gmime-filter-flowed.vala @@ -57,7 +57,7 @@ private class Geary.RFC822.FilterFlowed : GMime.Filter { return new_filter; } - public override void filter(char[] inbuf, size_t prespace, out unowned char[] processed_buffer, + public override void filter(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer, out size_t outprespace) { // Worst-case scenario: We are about to leave the prefix, @@ -67,7 +67,7 @@ private class Geary.RFC822.FilterFlowed : GMime.Filter { uint out_index = 0; for (uint i = 0; i < inbuf.length; i++) { - char c = inbuf[i]; + uint8 c = inbuf[i]; if (this.in_prefix) { if (c == '>') { @@ -147,7 +147,7 @@ private class Geary.RFC822.FilterFlowed : GMime.Filter { outprespace = this.outpre; } - public override void complete(char[] inbuf, size_t prespace, out unowned char[] processed_buffer, + public override void complete(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer, out size_t outprespace) { filter(inbuf, prespace, out processed_buffer, out outprespace); } diff --git a/src/engine/rfc822/rfc822-gmime-filter-plain.vala b/src/engine/rfc822/rfc822-gmime-filter-plain.vala index d66e3284..b38baac0 100644 --- a/src/engine/rfc822/rfc822-gmime-filter-plain.vala +++ b/src/engine/rfc822/rfc822-gmime-filter-plain.vala @@ -26,7 +26,7 @@ private class Geary.RFC822.FilterPlain : GMime.Filter { return new_filter; } - public override void filter(char[] inbuf, size_t prespace, out unowned char[] processed_buffer, + public override void filter(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer, out size_t outprespace) { // This may not be strictly necessary. @@ -34,7 +34,7 @@ private class Geary.RFC822.FilterPlain : GMime.Filter { uint out_index = 0; for (uint i = 0; i < inbuf.length; i++) { - char c = inbuf[i]; + uint8 c = inbuf[i]; if (in_prefix) { if (c == '>') { @@ -56,7 +56,7 @@ private class Geary.RFC822.FilterPlain : GMime.Filter { outprespace = this.outpre; } - public override void complete(char[] inbuf, size_t prespace, out unowned char[] processed_buffer, + public override void complete(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer, out size_t outprespace) { filter(inbuf, prespace, out processed_buffer, out outprespace); } diff --git a/src/engine/rfc822/rfc822-mailbox-address.vala b/src/engine/rfc822/rfc822-mailbox-address.vala index 73803f19..1153cdd1 100644 --- a/src/engine/rfc822/rfc822-mailbox-address.vala +++ b/src/engine/rfc822/rfc822-mailbox-address.vala @@ -42,11 +42,17 @@ public class Geary.RFC822.MailboxAddress : } private static string decode_name(string name) { - return GMime.utils_header_decode_phrase(prepare_header_text_part(name)); + return GMime.utils_header_decode_phrase( + Geary.RFC822.get_parser_options(), + prepare_header_text_part(name) + ); } private static string decode_address_part(string mailbox) { - return GMime.utils_header_decode_text(prepare_header_text_part(mailbox)); + return GMime.utils_header_decode_text( + Geary.RFC822.get_parser_options(), + prepare_header_text_part(mailbox) + ); } private static bool display_name_needs_quoting(string name) { @@ -118,8 +124,9 @@ public class Geary.RFC822.MailboxAddress : // _internet_address_decode_name() function. // see if a broken mailer has sent raw 8-bit information - string text = GMime.utils_text_is_8bit(part, part.length) - ? part : GMime.utils_decode_8bit(part, part.length); + string text = GMime.utils_text_is_8bit(part.data) + ? part : GMime.utils_decode_8bit(Geary.RFC822.get_parser_options(), + part.data); // unquote the string then decode the text GMime.utils_unquote_string(text); @@ -222,16 +229,19 @@ public class Geary.RFC822.MailboxAddress : } public MailboxAddress.from_rfc822_string(string rfc822) throws RFC822Error { - InternetAddressList addrlist = InternetAddressList.parse_string(rfc822); + GMime.InternetAddressList addrlist = GMime.InternetAddressList.parse( + Geary.RFC822.get_parser_options(), + rfc822 + ); if (addrlist == null) return; int length = addrlist.length(); for (int ctr = 0; ctr < length; ctr++) { - InternetAddress? addr = addrlist.get_address(ctr); + GMime.InternetAddress? addr = addrlist.get_address(ctr); // TODO: Handle group lists - InternetAddressMailbox? mbox_addr = addr as InternetAddressMailbox; + GMime.InternetAddressMailbox? mbox_addr = addr as GMime.InternetAddressMailbox; if (mbox_addr != null) { this.gmime(mbox_addr); return; @@ -240,7 +250,7 @@ public class Geary.RFC822.MailboxAddress : throw new RFC822Error.INVALID("Could not parse RFC822 address: %s", rfc822); } - public MailboxAddress.gmime(InternetAddressMailbox mailbox) { + public MailboxAddress.gmime(GMime.InternetAddressMailbox mailbox) { // GMime strips source route for us, so the address part // should only ever contain a single '@' string? name = mailbox.get_name(); @@ -456,7 +466,11 @@ public class Geary.RFC822.MailboxAddress : public string to_rfc822_string() { return has_distinct_name() ? "%s <%s>".printf( - GMime.utils_header_encode_phrase(this.name), + GMime.utils_header_encode_phrase( + Geary.RFC822.get_format_options(), + this.name, + Geary.RFC822.get_charset() + ), to_rfc822_address() ) : to_rfc822_address(); diff --git a/src/engine/rfc822/rfc822-mailbox-addresses.vala b/src/engine/rfc822/rfc822-mailbox-addresses.vala index 8ebf79de..5d647fa7 100644 --- a/src/engine/rfc822/rfc822-mailbox-addresses.vala +++ b/src/engine/rfc822/rfc822-mailbox-addresses.vala @@ -74,27 +74,30 @@ public class Geary.RFC822.MailboxAddresses : } public MailboxAddresses.from_rfc822_string(string rfc822) { - InternetAddressList addrlist = InternetAddressList.parse_string(rfc822); + GMime.InternetAddressList addrlist = GMime.InternetAddressList.parse( + Geary.RFC822.get_parser_options(), + rfc822 + ); if (addrlist == null) return; int length = addrlist.length(); for (int ctr = 0; ctr < length; ctr++) { - InternetAddress? addr = addrlist.get_address(ctr); + GMime.InternetAddress? addr = addrlist.get_address(ctr); - InternetAddressMailbox? mbox_addr = addr as InternetAddressMailbox; + GMime.InternetAddressMailbox? mbox_addr = addr as GMime.InternetAddressMailbox; if (mbox_addr != null) { this.addrs.add(new MailboxAddress.gmime(mbox_addr)); } else { // XXX this is pretty bad - we just flatten the // group's addresses into this list, merging lists and // losing the group names. - InternetAddressGroup? mbox_group = addr as InternetAddressGroup; + GMime.InternetAddressGroup? mbox_group = addr as GMime.InternetAddressGroup; if (mbox_group != null) { - InternetAddressList group_list = mbox_group.get_members(); + GMime.InternetAddressList group_list = mbox_group.get_members(); for (int i = 0; i < group_list.length(); i++) { - InternetAddressMailbox? group_addr = - addrlist.get_address(i) as InternetAddressMailbox; + GMime.InternetAddressMailbox? group_addr = + addrlist.get_address(i) as GMime.InternetAddressMailbox; if (group_addr != null) { this.addrs.add(new MailboxAddress.gmime(group_addr)); } diff --git a/src/engine/rfc822/rfc822-message-data.vala b/src/engine/rfc822/rfc822-message-data.vala index 2d399986..b5d62ad5 100644 --- a/src/engine/rfc822/rfc822-message-data.vala +++ b/src/engine/rfc822/rfc822-message-data.vala @@ -173,27 +173,13 @@ public class Geary.RFC822.Date : Geary.RFC822.MessageData, Geary.MessageData.Abs public DateTime value { get; private set; } public Date(string rfc822) throws ImapError { - int offset = 0; - int64 time_t_utc = GMime.utils_header_decode_date(rfc822, out offset); - if (time_t_utc == 0) - throw new ImapError.PARSE_ERROR( - "Unable to parse \"%s\": Not ISO-8601 date", rfc822 - ); - - DateTime? value = new DateTime.from_unix_utc(time_t_utc); + DateTime? value = GMime.utils_header_decode_date(rfc822); if (value == null) { throw new ImapError.PARSE_ERROR( "Unable to parse \"%s\": Outside supported range", rfc822 ); } this.value = value; - - if (offset != 0) { - this.value = value.to_timezone( - new GLib.TimeZone("%+05d".printf(offset)) - ); - } - this.original = rfc822; } @@ -206,18 +192,7 @@ public class Geary.RFC822.Date : Geary.RFC822.MessageData, Geary.MessageData.Abs * Returns the {@link Date} in RFC 822 format. */ public string to_rfc822_string() { - // Although GMime documents its conversion methods as - // requiring the tz offset in hours, it appears the number is - // handed directly to the string (i.e. an offset of -7:30 becomes - // "-0007", whereas we want "-0730"). - int hours = (int) GLib.Math.floor(value.get_utc_offset() / TimeSpan.HOUR); - int minutes = (int) ( - (value.get_utc_offset() % TimeSpan.HOUR) / (double) TimeSpan.HOUR * 60 - ); - return GMime.utils_header_format_date( - (time_t) this.value.to_utc().to_unix(), - (hours * 100) + minutes - ); + return GMime.utils_header_format_date(this.value); } /** @@ -261,7 +236,7 @@ public class Geary.RFC822.Subject : Geary.MessageData.StringMessageData, } public Subject.decode(string value) { - base (GMime.utils_header_decode_text(value)); + base (GMime.utils_header_decode_text(Geary.RFC822.get_parser_options(), value)); original = value; } @@ -337,9 +312,10 @@ public class Geary.RFC822.Header : Geary.MessageData.BlockMessageData, Geary.RFC GMime.Parser parser = new GMime.Parser.with_stream(Utils.create_stream_mem(buffer)); parser.set_respect_content_length(false); - parser.set_scan_from(false); + // TODO Could this be omitted? + parser.set_format(GMime.Format.MESSAGE); - message = parser.construct_message(); + message = parser.construct_message(Geary.RFC822.get_parser_options()); if (message == null) throw new RFC822Error.INVALID("Unable to parse RFC 822 headers"); @@ -347,17 +323,15 @@ public class Geary.RFC822.Header : Geary.MessageData.BlockMessageData, Geary.RFC } public string? get_header(string name) throws RFC822Error { - return get_headers().get(name); + return get_headers().get_header(name).get_value(); } public string[] get_header_names() throws RFC822Error { if (this.names == null) { this.names = new string[0]; - GMime.HeaderIter iter = new GMime.HeaderIter(); - if (get_headers().get_iter(iter) && iter.first()) { - do { - names += iter.get_name(); - } while (iter.next()); + GMime.HeaderList headers = get_headers(); + for (int i = 0; i < headers.get_count(); i++) { + names += headers.get_header_at(i).get_name(); } } return this.names; @@ -388,7 +362,7 @@ public class Geary.RFC822.PreviewText : Geary.RFC822.Text { // Parse the header. GMime.Stream header_stream = Utils.create_stream_mem(preview_header); GMime.Parser parser = new GMime.Parser.with_stream(header_stream); - GMime.Part? gpart = parser.construct_part() as GMime.Part; + GMime.Part? gpart = parser.construct_part(Geary.RFC822.get_parser_options()) as GMime.Part; if (gpart != null) { Part part = new Part(gpart); @@ -402,7 +376,7 @@ public class Geary.RFC822.PreviewText : Geary.RFC822.Text { new GMime.StreamMem.with_buffer(preview.get_uint8_array()), gpart.get_content_encoding() ); - gpart.set_content_object(body); + gpart.set_content(body); try { Memory.Buffer preview_buffer = part.write_to_buffer( diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala index 02d4b397..8a94cf2c 100644 --- a/src/engine/rfc822/rfc822-message.vala +++ b/src/engine/rfc822/rfc822-message.vala @@ -29,6 +29,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { */ public delegate string? InlinePartReplacer(Part part); + private const string HEADER_DATE = "Date"; private const string HEADER_SENDER = "Sender"; private const string HEADER_IN_REPLY_TO = "In-Reply-To"; private const string HEADER_REFERENCES = "References"; @@ -89,7 +90,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { public Message(Full full) throws RFC822Error { GMime.Parser parser = new GMime.Parser.with_stream(Utils.create_stream_mem(full.buffer)); - message = parser.construct_message(); + message = parser.construct_message(Geary.RFC822.get_parser_options()); if (message == null) throw new RFC822Error.INVALID("Unable to parse RFC 822 message"); @@ -115,7 +116,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { stream_cat.add_source(new GMime.StreamMem.with_buffer(body.buffer.get_bytes().get_data())); GMime.Parser parser = new GMime.Parser.with_stream(stream_cat); - message = parser.construct_message(); + message = parser.construct_message(Geary.RFC822.get_parser_options()); if (message == null) throw new RFC822Error.INVALID("Unable to parse RFC 822 message"); @@ -136,67 +137,71 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { this.from = email.from; this.date = email.date; - // GMimeMessage.set_sender actually sets the From header - and - // although the API docs make it sound otherwise, it also - // supports a list of addresses - message.set_sender(this.from.to_rfc822_string()); - message.set_date_as_string(this.date.serialize()); - if (message_id != null) { - this.message_id = new MessageID(message_id); - message.set_message_id(message_id); + //message.set_date_as_string(this.date.serialize()); + this.message.set_header(HEADER_DATE, + this.date.serialize(), + Geary.RFC822.get_charset()); + + if (email.from != null) { + foreach (RFC822.MailboxAddress mailbox in email.from) + this.message.add_mailbox(GMime.AddressType.FROM, mailbox.name, mailbox.address); + } + + if (email.sender != null) { + this.message.add_mailbox(GMime.AddressType.SENDER, this.sender.name, this.sender.address); + // TODO Is setting the header still required? + this.message.set_header(HEADER_SENDER, + this.sender.to_rfc822_string(), + Geary.RFC822.get_charset()); } // Optional headers if (email.to != null) { this.to = email.to; foreach (RFC822.MailboxAddress mailbox in email.to) - this.message.add_recipient(GMime.RecipientType.TO, mailbox.name, mailbox.address); + this.message.add_mailbox(GMime.AddressType.TO, mailbox.name, mailbox.address); } if (email.cc != null) { this.cc = email.cc; foreach (RFC822.MailboxAddress mailbox in email.cc) - this.message.add_recipient(GMime.RecipientType.CC, mailbox.name, mailbox.address); + this.message.add_mailbox(GMime.AddressType.CC, mailbox.name, mailbox.address); } if (email.bcc != null) { this.bcc = email.bcc; foreach (RFC822.MailboxAddress mailbox in email.bcc) - this.message.add_recipient(GMime.RecipientType.BCC, mailbox.name, mailbox.address); - } - - if (email.sender != null) { - this.sender = email.sender; - this.message.set_header(HEADER_SENDER, - email.sender.to_rfc822_string()); - } - - if (email.reply_to != null) { - this.reply_to = email.reply_to; - this.message.set_reply_to(email.reply_to.to_rfc822_string()); + this.message.add_mailbox(GMime.AddressType.BCC, mailbox.name, mailbox.address); } if (email.in_reply_to != null) { this.in_reply_to = email.in_reply_to; + foreach (RFC822.MailboxAddress mailbox in email.reply_to) + this.message.add_mailbox(GMime.AddressType.BCC, mailbox.name, mailbox.address); + // TODO Is setting the header still required? this.message.set_header(HEADER_IN_REPLY_TO, - email.in_reply_to.to_rfc822_string()); + email.in_reply_to.to_rfc822_string(), + Geary.RFC822.get_charset()); } if (email.references != null) { this.references = email.references; this.message.set_header(HEADER_REFERENCES, - email.references.to_rfc822_string()); + email.references.to_rfc822_string(), + Geary.RFC822.get_charset()); } if (email.subject != null) { this.subject = email.subject; - this.message.set_subject(email.subject.value); + this.message.set_subject(email.subject.value, + Geary.RFC822.get_charset()); } // User-Agent if (!Geary.String.is_empty(email.mailer)) { this.mailer = email.mailer; - this.message.set_header(HEADER_MAILER, email.mailer); + this.message.set_header(HEADER_MAILER, email.mailer, + Geary.RFC822.get_charset()); } // Build the message's body mime parts @@ -406,7 +411,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { string type) { GMime.Object? part = coalesce_parts(parts, "related"); if (parts.size > 1) { - part.set_header("Type", type); + part.set_header("Type", type, Geary.RFC822.get_charset()); } return part; } @@ -437,7 +442,8 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { part.set_disposition(disposition.serialize()); part.set_filename(file.get_basename()); - GMime.ContentType content_type = new GMime.ContentType.from_string( + GMime.ContentType content_type = GMime.ContentType.parse( + Geary.RFC822.get_parser_options(), file_info.get_content_type() ); part.set_content_type(content_type); @@ -468,7 +474,10 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { ); } - GMime.ContentType? content_type = new GMime.ContentType.from_string(mime_type.get_mime_type()); + GMime.ContentType? content_type = GMime.ContentType.parse( + Geary.RFC822.get_parser_options(), + mime_type.get_mime_type() + ); if (content_type == null) { throw new RFC822Error.INVALID( @@ -515,7 +524,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { } part.set_content_encoding(encoding); - part.set_content_object( + part.set_content( new GMime.DataWrapper.with_stream( stream, GMime.ContentEncoding.BINARY ) @@ -536,7 +545,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { Geary.Email email = new Geary.Email(id); email.set_message_header(new Geary.RFC822.Header(new Geary.Memory.StringBuffer( - message.get_headers()))); + message.get_headers(Geary.RFC822.get_format_options())))); email.set_send_date(date); email.set_originators(from, sender, reply_to); email.set_receivers(to, cc, bcc); @@ -884,68 +893,72 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { } private void stock_from_gmime() { - this.message.get_header_list().foreach((name, value) => { - switch (name.down()) { - case "from": - this.from = append_address(this.from, value); - break; + GMime.HeaderList headers = this.message.get_header_list(); + for (int i=0; i < headers.get_count(); i++) { + GMime.Header header = headers.get_header_at(i); + string name = header.get_name(); + string value = header.get_value(); + switch (name.down()) { + case "from": + this.from = append_address(this.from, value); + break; - case "sender": - try { - this.sender = new RFC822.MailboxAddress.from_rfc822_string(value); - } catch (Error err) { - debug("Could parse subject: %s", err.message); - } - break; - - case "reply-to": - this.reply_to = append_address(this.reply_to, value); - break; - - case "to": - this.to = append_address(this.to, value); - break; - - case "cc": - this.cc = append_address(this.cc, value); - break; - - case "bcc": - this.bcc = append_address(this.bcc, value); - break; - - case "subject": - this.subject = new RFC822.Subject.decode(value); - break; - - case "date": - try { - this.date = new Geary.RFC822.Date(value); - } catch (Error err) { - debug("Could not parse date: %s", err.message); - } - break; - - case "message-id": - this.message_id = new MessageID(value); - break; - - case "in-reply-to": - this.in_reply_to = append_message_id(this.in_reply_to, value); - break; - - case "references": - this.references = append_message_id(this.references, value); - break; - - case "x-mailer": - this.mailer = GMime.utils_header_decode_text(value); - break; - - default: - break; + case "sender": + try { + this.sender = new RFC822.MailboxAddress.from_rfc822_string(value); + } catch (Error err) { + debug("Could parse subject: %s", err.message); } - }); + break; + + case "reply-to": + this.reply_to = append_address(this.reply_to, value); + break; + + case "to": + this.to = append_address(this.to, value); + break; + + case "cc": + this.cc = append_address(this.cc, value); + break; + + case "bcc": + this.bcc = append_address(this.bcc, value); + break; + + case "subject": + this.subject = new RFC822.Subject.decode(value); + break; + + case "date": + try { + this.date = new Geary.RFC822.Date(value); + } catch (Error err) { + debug("Could not parse date: %s", err.message); + } + break; + + case "message-id": + this.message_id = new MessageID(value); + break; + + case "in-reply-to": + this.in_reply_to = append_message_id(this.in_reply_to, value); + break; + + case "references": + this.references = append_message_id(this.references, value); + break; + + case "x-mailer": + this.mailer = GMime.utils_header_decode_text(Geary.RFC822.get_parser_options(), value); + break; + + default: + break; + } + }; } private MailboxAddresses append_address(MailboxAddresses? existing, @@ -990,11 +1003,11 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { if (requested_disposition == Mime.DispositionType.UNSPECIFIED || disposition == requested_disposition) { GMime.Stream stream = new GMime.StreamMem(); - message.write_to_stream(stream); + message.write_to_stream(Geary.RFC822.get_format_options(), stream); GMime.DataWrapper data = new GMime.DataWrapper.with_stream(stream, GMime.ContentEncoding.BINARY); // Equivalent to no encoding GMime.Part part = new GMime.Part.with_type("message", "rfc822"); - part.set_content_object(data); + part.set_content(data); part.set_filename((message.get_subject() ?? _("(no subject)")) + ".eml"); attachments.add(new Part(part)); } @@ -1017,7 +1030,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { #if WITH_TNEF_SUPPORT if (content_type.is_type("application", "vnd.ms-tnef")) { GMime.StreamMem stream = new GMime.StreamMem(); - ((GMime.Part) root).get_content_object().write_to_stream(stream); + ((GMime.Part) root).get_content().write_to_stream(stream); ByteArray tnef_data = stream.get_byte_array(); Ytnef.TNEFStruct tn; if (Ytnef.ParseMemory(tnef_data.data, out tn) == 0) { @@ -1052,8 +1065,8 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { GMime.Part part = new GMime.Part(); part.set_filename(filename); - part.set_content_type(new GMime.ContentType.from_string(GLib.ContentType.guess(filename, data, null))); - part.set_content_object(new GMime.DataWrapper.with_stream(new GMime.StreamMem.with_buffer(data), GMime.ContentEncoding.BINARY)); + part.set_content_type(GMime.ContentType.parse(Geary.RFC822.get_parser_options(), GLib.ContentType.guess(filename, data, null))); + part.set_content(new GMime.DataWrapper.with_stream(new GMime.StreamMem.with_buffer(data), GMime.ContentEncoding.BINARY)); return part; } #endif @@ -1092,9 +1105,17 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { stream.set_owner(false); GMime.StreamFilter stream_filter = new GMime.StreamFilter(stream); - stream_filter.add(new GMime.FilterCRLF(encoded, dotstuffed)); + if (encoded) { + stream_filter.add(new GMime.FilterUnix2Dos(false)); + } + else { + stream_filter.add(new GMime.FilterDos2Unix(false)); + } + if (dotstuffed) { + stream_filter.add(new GMime.FilterSmtpData()); + } - if (message.write_to_stream(stream_filter) < 0) + if (message.write_to_stream(Geary.RFC822.get_format_options(), stream_filter) < 0) throw new RFC822Error.FAILED("Unable to write RFC822 message to memory buffer"); if (stream_filter.flush() != 0) @@ -1104,7 +1125,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { } public string to_string() { - return message.to_string(); + return message.to_string(Geary.RFC822.get_format_options()); } /** @@ -1152,11 +1173,13 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { // Base64-encoded text needs to have CR's added after LF's // before encoding, otherwise it breaks format=flowed. See // Bug 753528. - filter_stream.add(new GMime.FilterCRLF(true, false)); + filter_stream.add(new GMime.FilterUnix2Dos(false)); } - GMime.ContentType complete_type = - new GMime.ContentType.from_string(content_type); + GMime.ContentType complete_type = GMime.ContentType.parse( + Geary.RFC822.get_parser_options(), + content_type + ); complete_type.set_parameter("charset", charset); if (is_flowed) { complete_type.set_parameter("format", "flowed"); @@ -1168,7 +1191,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { GMime.Part body_part = new GMime.Part(); body_part.set_content_type(complete_type); - body_part.set_content_object(body); + body_part.set_content(body); body_part.set_content_encoding(encoding); return body_part; } diff --git a/src/engine/rfc822/rfc822-part.vala b/src/engine/rfc822/rfc822-part.vala index b8a3b2a8..6d0521d1 100644 --- a/src/engine/rfc822/rfc822-part.vala +++ b/src/engine/rfc822/rfc822-part.vala @@ -160,7 +160,7 @@ public class Geary.RFC822.Part : Object { BodyFormatting format = BodyFormatting.NONE) throws RFC822Error { GMime.DataWrapper? wrapper = (this.source_part != null) - ? this.source_part.get_content_object() : null; + ? this.source_part.get_content() : null; if (wrapper == null) { throw new RFC822Error.INVALID( "Could not get the content wrapper for content-type %s", @@ -201,7 +201,7 @@ public class Geary.RFC822.Part : Object { if ((this.source_part == null || this.source_part.encoding != BASE64) && !(content_type.media_subtype in CR_PRESERVING_TEXT_TYPES)) { - filter.add(new GMime.FilterCRLF(false, false)); + filter.add(new GMime.FilterDos2Unix(false)); } if (flowed) { diff --git a/src/engine/rfc822/rfc822-utils.vala b/src/engine/rfc822/rfc822-utils.vala index 37a967fb..d9278f64 100644 --- a/src/engine/rfc822/rfc822-utils.vala +++ b/src/engine/rfc822/rfc822-utils.vala @@ -186,7 +186,7 @@ public string email_addresses_for_reply(Geary.RFC822.MailboxAddresses? addresses } -public bool comp_char_arr_slice(char[] array, uint start, string comp) { +public bool comp_char_arr_slice(uint8[] array, uint start, string comp) { for (int i = 0; i < comp.length; i++) { if (array[start + i] != comp[i]) return false; @@ -277,7 +277,7 @@ public async string get_best_charset(GMime.Stream in_stream, }, cancellable ); - return filter.charset(); + return filter.get_charset(); } /** diff --git a/src/engine/rfc822/rfc822.vala b/src/engine/rfc822/rfc822.vala index 9195eac1..39a400e5 100644 --- a/src/engine/rfc822/rfc822.vala +++ b/src/engine/rfc822/rfc822.vala @@ -32,18 +32,7 @@ public void init() { if (init_count++ != 0) return; - GMime.init(GMime.ENABLE_RFC2047_WORKAROUNDS); - - // This has the effect of ensuring all non US-ASCII and non-ISO-8859-1 - // headers are always encoded as UTF-8. This should be fine because - // message bodies are also always sent as UTF-8. - const string?[] USER_CHARSETS = { - UTF8_CHARSET, - // GMime.set_user_charsets calls g_strdupv under the hood, so - // the array needs to be null-terminated - null - }; - GMime.set_user_charsets(USER_CHARSETS); + GMime.init(); try { invalid_filename_character_re = new Regex("[/\\0]"); @@ -52,6 +41,17 @@ public void init() { } } +public GMime.FormatOptions get_format_options() { + return new GMime.FormatOptions(); +} + +public GMime.ParserOptions get_parser_options() { + return new GMime.ParserOptions(); +} + +public string? get_charset() { + return null; +} internal bool is_utf_8(string charset) { string up = charset.up(); diff --git a/test/engine/imap-db/imap-db-attachment-test.vala b/test/engine/imap-db/imap-db-attachment-test.vala index d24f2b8d..9366802e 100644 --- a/test/engine/imap-db/imap-db-attachment-test.vala +++ b/test/engine/imap-db/imap-db-attachment-test.vala @@ -21,7 +21,7 @@ class Geary.ImapDB.AttachmentTest : TestCase { public void new_from_minimal_mime_part() throws Error { GMime.Part part = new_part(null, ATTACHMENT_BODY.data); - part.set_header("Content-Type", ""); + part.set_header("Content-Type", "", Geary.RFC822.get_charset()); Attachment test = new Attachment.from_part( 1, new Geary.RFC822.Part(part) @@ -51,7 +51,8 @@ class Geary.ImapDB.AttachmentTest : TestCase { part.set_content_id(ID); part.set_content_description(DESC); part.set_content_disposition( - new GMime.ContentDisposition.from_string( + GMime.ContentDisposition.parse( + Geary.RFC822.get_parser_options(), "attachment; filename=%s".printf(NAME) ) ); @@ -74,7 +75,10 @@ class Geary.ImapDB.AttachmentTest : TestCase { public void new_from_inline_mime_part() throws Error { GMime.Part part = new_part(null, ATTACHMENT_BODY.data); part.set_content_disposition( - new GMime.ContentDisposition.from_string("inline") + GMime.ContentDisposition.parse( + Geary.RFC822.get_parser_options(), + "inline" + ) ); Attachment test = new Attachment.from_part( @@ -205,7 +209,8 @@ CREATE TABLE MessageAttachmentTable ( part.set_content_id(ID); part.set_content_description(DESCRIPTION); part.set_content_disposition( - new GMime.ContentDisposition.from_string( + GMime.ContentDisposition.parse( + Geary.RFC822.get_parser_options(), "inline; filename=%s;".printf(FILENAME) )); @@ -352,12 +357,15 @@ private GMime.Part new_part(string? mime_type, GMime.ContentEncoding encoding = GMime.ContentEncoding.DEFAULT) { GMime.Part part = new GMime.Part(); if (mime_type != null) { - part.set_content_type(new GMime.ContentType.from_string(mime_type)); + part.set_content_type(GMime.ContentType.parse( + Geary.RFC822.get_parser_options(), + mime_type + )); } GMime.DataWrapper body_wrapper = new GMime.DataWrapper.with_stream( new GMime.StreamMem.with_buffer(body), encoding ); - part.set_content_object(body_wrapper); + part.set_content(body_wrapper); return part; } diff --git a/test/engine/rfc822-part-test.vala b/test/engine/rfc822-part-test.vala index b6e82e60..4fbe5d87 100644 --- a/test/engine/rfc822-part-test.vala +++ b/test/engine/rfc822-part-test.vala @@ -40,7 +40,10 @@ class Geary.RFC822.PartTest : TestCase { part.set_content_id(ID); part.set_content_description(DESC); part.set_content_disposition( - new GMime.ContentDisposition.from_string("inline") + GMime.ContentDisposition.parse( + Geary.RFC822.get_parser_options(), + "inline" + ) ); Part test = new Part(part); @@ -93,13 +96,16 @@ class Geary.RFC822.PartTest : TestCase { uint8[] body) { GMime.Part part = new GMime.Part(); if (mime_type != null) { - part.set_content_type(new GMime.ContentType.from_string(mime_type)); + part.set_content_type(GMime.ContentType.parse( + Geary.RFC822.get_parser_options(), + mime_type + )); } GMime.DataWrapper body_wrapper = new GMime.DataWrapper.with_stream( new GMime.StreamMem.with_buffer(body), GMime.ContentEncoding.BINARY ); - part.set_content_object(body_wrapper); + part.set_content(body_wrapper); part.encode(GMime.EncodingConstraint.7BIT); return part; } From 6a34a6166f40e0df6015db1ba840b99424e579ea Mon Sep 17 00:00:00 2001 From: Torben Date: Sat, 30 Nov 2019 20:08:10 +0100 Subject: [PATCH 02/32] Remove custom gmime-2.6 bindings --- bindings/vapi/gmime-2.6.vapi | 1452 ----------------- bindings/vapi/gmime-2.6/gmime-2.6-custom.vala | 72 - bindings/vapi/gmime-2.6/gmime-2.6.defines | 0 bindings/vapi/gmime-2.6/gmime-2.6.files | 2 - bindings/vapi/gmime-2.6/gmime-2.6.metadata | 90 - bindings/vapi/gmime-2.6/gmime-2.6.namespace | 1 - 6 files changed, 1617 deletions(-) delete mode 100644 bindings/vapi/gmime-2.6.vapi delete mode 100644 bindings/vapi/gmime-2.6/gmime-2.6-custom.vala delete mode 100644 bindings/vapi/gmime-2.6/gmime-2.6.defines delete mode 100644 bindings/vapi/gmime-2.6/gmime-2.6.files delete mode 100644 bindings/vapi/gmime-2.6/gmime-2.6.metadata delete mode 100644 bindings/vapi/gmime-2.6/gmime-2.6.namespace diff --git a/bindings/vapi/gmime-2.6.vapi b/bindings/vapi/gmime-2.6.vapi deleted file mode 100644 index 7665a784..00000000 --- a/bindings/vapi/gmime-2.6.vapi +++ /dev/null @@ -1,1452 +0,0 @@ -/* gmime-2.6.vapi generated by vapigen, do not modify. */ - -[CCode (lower_case_cprefix = "gmime_")] -namespace GMime { - [CCode (cheader_filename = "gmime/gmime.h")] - public class Certificate : GLib.Object { - public ulong created; - public GMime.DigestAlgo digest_algo; - public weak string email; - public ulong expires; - public weak string fingerprint; - public weak string issuer_name; - public weak string issuer_serial; - public weak string keyid; - public weak string name; - public GMime.PubKeyAlgo pubkey_algo; - public GMime.CertificateTrust trust; - [CCode (cname = "g_mime_certificate_new", has_construct_function = false)] - public Certificate (); - [CCode (cname = "g_mime_certificate_get_created")] - public ulong get_created (); - [CCode (cname = "g_mime_certificate_get_digest_algo")] - public GMime.DigestAlgo get_digest_algo (); - [CCode (cname = "g_mime_certificate_get_email")] - public unowned string get_email (); - [CCode (cname = "g_mime_certificate_get_expires")] - public ulong get_expires (); - [CCode (cname = "g_mime_certificate_get_fingerprint")] - public unowned string get_fingerprint (); - [CCode (cname = "g_mime_certificate_get_issuer_name")] - public unowned string get_issuer_name (); - [CCode (cname = "g_mime_certificate_get_issuer_serial")] - public unowned string get_issuer_serial (); - [CCode (cname = "g_mime_certificate_get_key_id")] - public unowned string get_key_id (); - [CCode (cname = "g_mime_certificate_get_name")] - public unowned string get_name (); - [CCode (cname = "g_mime_certificate_get_pubkey_algo")] - public GMime.PubKeyAlgo get_pubkey_algo (); - [CCode (cname = "g_mime_certificate_get_trust")] - public GMime.CertificateTrust get_trust (); - [CCode (cname = "g_mime_certificate_set_created")] - public void set_created (ulong created); - [CCode (cname = "g_mime_certificate_set_digest_algo")] - public void set_digest_algo (GMime.DigestAlgo algo); - [CCode (cname = "g_mime_certificate_set_email")] - public void set_email (string email); - [CCode (cname = "g_mime_certificate_set_expires")] - public void set_expires (ulong expires); - [CCode (cname = "g_mime_certificate_set_fingerprint")] - public void set_fingerprint (string fingerprint); - [CCode (cname = "g_mime_certificate_set_issuer_name")] - public void set_issuer_name (string issuer_name); - [CCode (cname = "g_mime_certificate_set_issuer_serial")] - public void set_issuer_serial (string issuer_serial); - [CCode (cname = "g_mime_certificate_set_key_id")] - public void set_key_id (string key_id); - [CCode (cname = "g_mime_certificate_set_name")] - public void set_name (string name); - [CCode (cname = "g_mime_certificate_set_pubkey_algo")] - public void set_pubkey_algo (GMime.PubKeyAlgo algo); - [CCode (cname = "g_mime_certificate_set_trust")] - public void set_trust (GMime.CertificateTrust trust); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class CertificateList : GLib.Object { - public weak GLib.PtrArray array; - [CCode (cname = "g_mime_certificate_list_new", has_construct_function = false)] - public CertificateList (); - [CCode (cname = "g_mime_certificate_list_add")] - public int add (GMime.Certificate cert); - [CCode (cname = "g_mime_certificate_list_clear")] - public void clear (); - [CCode (cname = "g_mime_certificate_list_contains")] - public bool contains (GMime.Certificate cert); - [CCode (cname = "g_mime_certificate_list_get_certificate")] - public unowned GMime.Certificate get_certificate (int index); - [CCode (cname = "g_mime_certificate_list_index_of")] - public int index_of (GMime.Certificate cert); - [CCode (cname = "g_mime_certificate_list_insert")] - public void insert (int index, GMime.Certificate cert); - [CCode (cname = "g_mime_certificate_list_length")] - public int length (); - [CCode (cname = "g_mime_certificate_list_remove")] - public bool remove (GMime.Certificate cert); - [CCode (cname = "g_mime_certificate_list_remove_at")] - public bool remove_at (int index); - [CCode (cname = "g_mime_certificate_list_set_certificate")] - public void set_certificate (int index, GMime.Certificate cert); - } - [CCode (cheader_filename = "gmime/gmime.h")] - [Compact] - public class Charset { - public uint level; - public uint mask; - [CCode (cname = "g_mime_charset_best")] - public static unowned string best (string inbuf, size_t inlen); - [CCode (cname = "g_mime_charset_best_name")] - public unowned string best_name (); - [CCode (cname = "g_mime_charset_can_encode")] - public bool can_encode (string charset, string text, size_t len); - [CCode (cname = "g_mime_charset_canon_name")] - public static unowned string canon_name (string charset); - [CCode (cname = "g_mime_charset_iconv_name")] - public static unowned string iconv_name (string charset); - [CCode (cname = "g_mime_charset_init")] - public void init (); - [CCode (cname = "g_mime_charset_iso_to_windows")] - public static unowned string iso_to_windows (string isocharset); - [CCode (cname = "g_mime_charset_language")] - public static unowned string language (string charset); - [CCode (cname = "g_mime_charset_locale_name")] - public static unowned string locale_name (); - [CCode (cname = "g_mime_charset_map_init")] - public static void map_init (); - [CCode (cname = "g_mime_charset_map_shutdown")] - public static void map_shutdown (); - [CCode (cname = "g_mime_charset_name")] - public static unowned string name (string charset); - [CCode (cname = "g_mime_charset_step")] - public void step (string inbuf, size_t inlen); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class ContentDisposition : GLib.Object { - public weak string disposition; - public weak GLib.HashTable param_hash; - public weak GMime.Param @params; - [CCode (cname = "g_mime_content_disposition_new", has_construct_function = false)] - public ContentDisposition (); - [CCode (cname = "g_mime_content_disposition_new_from_string", has_construct_function = false)] - public ContentDisposition.from_string (string str); - [CCode (cname = "g_mime_content_disposition_get_disposition")] - public unowned string get_disposition (); - [CCode (cname = "g_mime_content_disposition_get_parameter")] - public unowned string get_parameter (string attribute); - [CCode (cname = "g_mime_content_disposition_get_params")] - public unowned GMime.Param get_params (); - [CCode (cname = "g_mime_content_disposition_set_disposition")] - public void set_disposition (string value); - [CCode (cname = "g_mime_content_disposition_set_parameter")] - public void set_parameter (string attribute, string value); - [CCode (cname = "g_mime_content_disposition_set_params")] - public void set_params (GMime.Param @params); - [CCode (cname = "g_mime_content_disposition_to_string")] - public unowned string to_string (bool fold); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class ContentType : GLib.Object { - public weak GLib.HashTable param_hash; - public weak GMime.Param @params; - public weak string subtype; - public weak string type; - [CCode (cname = "g_mime_content_type_new", has_construct_function = false)] - public ContentType (string type, string subtype); - [CCode (cname = "g_mime_content_type_new_from_string", has_construct_function = false)] - public ContentType.from_string (string str); - [CCode (cname = "g_mime_content_type_get_media_subtype")] - public unowned string get_media_subtype (); - [CCode (cname = "g_mime_content_type_get_media_type")] - public unowned string get_media_type (); - [CCode (cname = "g_mime_content_type_get_parameter")] - public unowned string get_parameter (string attribute); - [CCode (cname = "g_mime_content_type_get_params")] - public unowned GMime.Param get_params (); - [CCode (cname = "g_mime_content_type_is_type")] - public bool is_type (string type, string subtype); - [CCode (cname = "g_mime_content_type_set_media_subtype")] - public void set_media_subtype (string subtype); - [CCode (cname = "g_mime_content_type_set_media_type")] - public void set_media_type (string type); - [CCode (cname = "g_mime_content_type_set_parameter")] - public void set_parameter (string attribute, string value); - [CCode (cname = "g_mime_content_type_set_params")] - public void set_params (GMime.Param @params); - [CCode (cname = "g_mime_content_type_to_string")] - public string to_string (); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class CryptoContext : GLib.Object { - public weak GMime.PasswordRequestFunc request_passwd; - [CCode (has_construct_function = false)] - protected CryptoContext (); - [CCode (cname = "g_mime_crypto_context_decrypt")] - public virtual unowned GMime.DecryptResult decrypt (GMime.Stream istream, GMime.Stream ostream) throws GLib.Error; - [CCode (cname = "g_mime_crypto_context_digest_id")] - public virtual GMime.DigestAlgo digest_id (string name); - [CCode (cname = "g_mime_crypto_context_digest_name")] - public virtual unowned string digest_name (GMime.DigestAlgo digest); - [CCode (cname = "g_mime_crypto_context_encrypt")] - public virtual int encrypt (bool sign, string userid, GMime.DigestAlgo digest, GLib.PtrArray recipients, GMime.Stream istream, GMime.Stream ostream) throws GLib.Error; - [CCode (cname = "g_mime_crypto_context_export_keys")] - public virtual int export_keys (GLib.PtrArray keys, GMime.Stream ostream) throws GLib.Error; - [CCode (cname = "g_mime_crypto_context_get_encryption_protocol")] - public virtual unowned string get_encryption_protocol (); - [CCode (cname = "g_mime_crypto_context_get_key_exchange_protocol")] - public virtual unowned string get_key_exchange_protocol (); - [CCode (cname = "g_mime_crypto_context_get_signature_protocol")] - public virtual unowned string get_signature_protocol (); - [CCode (cname = "g_mime_crypto_context_import_keys")] - public virtual int import_keys (GMime.Stream istream) throws GLib.Error; - [CCode (cname = "g_mime_crypto_context_set_request_password")] - public void set_request_password (GMime.PasswordRequestFunc request_passwd); - [CCode (cname = "g_mime_crypto_context_sign")] - public virtual int sign (string userid, GMime.DigestAlgo digest, GMime.Stream istream, GMime.Stream ostream) throws GLib.Error; - [CCode (cname = "g_mime_crypto_context_verify")] - public virtual unowned GMime.SignatureList verify (GMime.DigestAlgo digest, GMime.Stream istream, GMime.Stream sigstream) throws GLib.Error; - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class DataWrapper : GLib.Object { - public GMime.ContentEncoding encoding; - public weak GMime.Stream stream; - [CCode (cname = "g_mime_data_wrapper_new", has_construct_function = false)] - public DataWrapper (); - [CCode (cname = "g_mime_data_wrapper_get_encoding")] - public GMime.ContentEncoding get_encoding (); - [CCode (cname = "g_mime_data_wrapper_get_stream")] - public unowned GMime.Stream get_stream (); - [CCode (cname = "g_mime_data_wrapper_set_encoding")] - public void set_encoding (GMime.ContentEncoding encoding); - [CCode (cname = "g_mime_data_wrapper_set_stream")] - public void set_stream (GMime.Stream stream); - [CCode (cname = "g_mime_data_wrapper_new_with_stream", has_construct_function = false)] - public DataWrapper.with_stream (GMime.Stream stream, GMime.ContentEncoding encoding); - [CCode (cname = "g_mime_data_wrapper_write_to_stream")] - public virtual ssize_t write_to_stream (GMime.Stream stream); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class DecryptResult : GLib.Object { - public GMime.CipherAlgo cipher; - public GMime.DigestAlgo mdc; - public weak GMime.CertificateList recipients; - public weak GMime.SignatureList signatures; - [CCode (cname = "g_mime_decrypt_result_new", has_construct_function = false)] - public DecryptResult (); - [CCode (cname = "g_mime_decrypt_result_get_cipher")] - public GMime.CipherAlgo get_cipher (); - [CCode (cname = "g_mime_decrypt_result_get_mdc")] - public GMime.DigestAlgo get_mdc (); - [CCode (cname = "g_mime_decrypt_result_get_recipients")] - public unowned GMime.CertificateList get_recipients (); - [CCode (cname = "g_mime_decrypt_result_get_signatures")] - public unowned GMime.SignatureList get_signatures (); - [CCode (cname = "g_mime_decrypt_result_set_cipher")] - public void set_cipher (GMime.CipherAlgo cipher); - [CCode (cname = "g_mime_decrypt_result_set_mdc")] - public void set_mdc (GMime.DigestAlgo mdc); - [CCode (cname = "g_mime_decrypt_result_set_recipients")] - public void set_recipients (GMime.CertificateList recipients); - [CCode (cname = "g_mime_decrypt_result_set_signatures")] - public void set_signatures (GMime.SignatureList signatures); - } - [CCode (cheader_filename = "gmime/gmime.h")] - [Compact] - public class Encoding { - public bool encode; - public GMime.ContentEncoding encoding; - public uint32 save; - public int state; - [CCode (array_length = false)] - public weak uint[] uubuf; - [CCode (cname = "g_mime_encoding_base64_decode_step")] - public static size_t base64_decode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); - [CCode (cname = "g_mime_encoding_base64_encode_close")] - public static size_t base64_encode_close (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); - [CCode (cname = "g_mime_encoding_base64_encode_step")] - public static size_t base64_encode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); - [CCode (cname = "g_mime_encoding_flush")] - public size_t flush (string inbuf, size_t inlen, string outbuf); - [CCode (cname = "g_mime_encoding_init_decode")] - public void init_decode (GMime.ContentEncoding encoding); - [CCode (cname = "g_mime_encoding_init_encode")] - public void init_encode (GMime.ContentEncoding encoding); - [CCode (cname = "g_mime_encoding_outlen")] - public size_t outlen (size_t inlen); - [CCode (cname = "g_mime_encoding_quoted_decode_step")] - public static size_t quoted_decode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); - [CCode (cname = "g_mime_encoding_quoted_encode_close")] - public static size_t quoted_encode_close (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); - [CCode (cname = "g_mime_encoding_quoted_encode_step")] - public static size_t quoted_encode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); - [CCode (cname = "g_mime_encoding_reset")] - public void reset (); - [CCode (cname = "g_mime_encoding_step")] - public size_t step (string inbuf, size_t inlen, string outbuf); - [CCode (cname = "g_mime_encoding_uudecode_step")] - public static size_t uudecode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); - [CCode (cname = "g_mime_encoding_uuencode_close")] - public static size_t uuencode_close (uint inbuf, size_t inlen, uint outbuf, uint uubuf, int state, uint32 save); - [CCode (cname = "g_mime_encoding_uuencode_step")] - public static size_t uuencode_step (uint inbuf, size_t inlen, uint outbuf, uint uubuf, int state, uint32 save); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class Filter : GLib.Object { - public char* backbuf; - public size_t backlen; - public size_t backsize; - [CCode (array_length_cname = "outsize", array_length_type = "size_t")] - public char[] outbuf; - public size_t outpre; - public char* outptr; - public char* outreal; - [CCode (has_construct_function = false)] - protected Filter (); - [CCode (cname = "g_mime_filter_backup")] - public void backup ([CCode (array_length_pos = 1.1, array_length_type = "size_t")] char[] data); - [CCode (cname = "g_mime_filter_complete")] - public virtual void complete ([CCode (array_length_pos = 1.1, array_length_type = "size_t")] char[] inbuf, size_t prespace, [CCode (array_length_pos = 3.1, array_length_type = "size_t")] out unowned char[] outbuf, out size_t outprespace); - [CCode (cname = "g_mime_filter_copy")] - public virtual GMime.Filter copy (); - [CCode (cname = "g_mime_filter_filter")] - public virtual void filter ([CCode (array_length_pos = 1.1, array_length_type = "size_t")] char[] inbuf, size_t prespace, [CCode (array_length_pos = 3.1, array_length_type = "size_t")] out unowned char[] outbuf, out size_t outprespace); - [CCode (cname = "g_mime_filter_reset")] - public virtual void reset (); - [CCode (cname = "g_mime_filter_set_size")] - public void set_size (size_t size, bool keep); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterBasic : GMime.Filter { - public weak GMime.Encoding encoder; - [CCode (cname = "g_mime_filter_basic_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterBasic (GMime.ContentEncoding encoding, bool encode); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterBest : GMime.Filter { - public uint count0; - public uint count8; - public GMime.FilterBestFlags flags; - [CCode (array_length = false)] - public weak uint[] frombuf; - public uint fromlen; - public uint hadfrom; - public uint linelen; - public uint maxline; - public uint midline; - public uint startline; - public uint total; - [CCode (cname = "g_mime_filter_best_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterBest (GMime.FilterBestFlags flags); - [CCode (cname = "g_mime_filter_best_charset")] - public unowned string charset (); - [CCode (cname = "g_mime_filter_best_encoding")] - public GMime.ContentEncoding encoding (GMime.EncodingConstraint constraint); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterCRLF : GMime.Filter { - public bool dots; - public bool encode; - public bool saw_cr; - public bool saw_dot; - public bool saw_lf; - [CCode (cname = "g_mime_filter_crlf_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterCRLF (bool encode, bool dots); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterCharset : GMime.Filter { - public void* cd; - public weak string from_charset; - public weak string to_charset; - [CCode (cname = "g_mime_filter_charset_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterCharset (string from_charset, string to_charset); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterEnriched : GMime.Filter { - public uint32 flags; - public int nofill; - [CCode (cname = "g_mime_filter_enriched_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterEnriched (uint32 flags); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterFrom : GMime.Filter { - public bool midline; - public GMime.FilterFromMode mode; - [CCode (cname = "g_mime_filter_from_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterFrom (GMime.FilterFromMode mode); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterGZip : GMime.Filter { - public int level; - public GMime.FilterGZipMode mode; - [CCode (cname = "g_mime_filter_gzip_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterGZip (GMime.FilterGZipMode mode, int level); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterHTML : GMime.Filter { - public uint32 colour; - public uint32 column; - public uint32 flags; - public uint32 pre_open; - public void* scanner; - [CCode (cname = "g_mime_filter_html_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterHTML (uint32 flags, uint32 colour); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterMd5 : GMime.Filter { - [CCode (cname = "g_mime_filter_md5_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterMd5 (); - [CCode (cname = "g_mime_filter_md5_get_digest")] - public void get_digest (uint[] digest); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterStrip : GMime.Filter { - [CCode (cname = "g_mime_filter_strip_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterStrip (); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterWindows : GMime.Filter { - public weak string claimed_charset; - public bool is_windows; - [CCode (cname = "g_mime_filter_windows_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterWindows (string claimed_charset); - [CCode (cname = "g_mime_filter_windows_is_windows_charset")] - public bool is_windows_charset (); - [CCode (cname = "g_mime_filter_windows_real_charset")] - public unowned string real_charset (); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class FilterYenc : GMime.Filter { - public uint32 crc; - public bool encode; - public int part; - public uint32 pcrc; - public int state; - [CCode (cname = "g_mime_filter_yenc_new", has_construct_function = false, type = "GMimeFilter*")] - public FilterYenc (bool encode); - [CCode (cname = "g_mime_filter_yenc_get_crc")] - public uint32 get_crc (); - [CCode (cname = "g_mime_filter_yenc_get_pcrc")] - public uint32 get_pcrc (); - [CCode (cname = "g_mime_filter_yenc_set_crc")] - public void set_crc (uint32 crc); - [CCode (cname = "g_mime_filter_yenc_set_state")] - public void set_state (int state); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class GpgContext : GMime.CryptoContext { - public bool always_trust; - public bool auto_key_retrieve; - public weak string path; - public bool use_agent; - [CCode (cname = "g_mime_gpg_context_new", has_construct_function = false, type = "GMimeCryptoContext*")] - public GpgContext (GMime.PasswordRequestFunc request_passwd, string path); - [CCode (cname = "g_mime_gpg_context_get_always_trust")] - public bool get_always_trust (); - [CCode (cname = "g_mime_gpg_context_get_auto_key_retrieve")] - public bool get_auto_key_retrieve (); - [CCode (cname = "g_mime_gpg_context_get_use_agent")] - public bool get_use_agent (); - [CCode (cname = "g_mime_gpg_context_set_always_trust")] - public void set_always_trust (bool always_trust); - [CCode (cname = "g_mime_gpg_context_set_auto_key_retrieve")] - public void set_auto_key_retrieve (bool auto_key_retrieve); - [CCode (cname = "g_mime_gpg_context_set_use_agent")] - public void set_use_agent (bool use_agent); - } - [CCode (cheader_filename = "gmime/gmime.h")] - [Compact] - public class Header { - } - [CCode (cheader_filename = "gmime/gmime.h", copy_function = "g_mime_header_iter_copy", free_function = "g_mime_header_iter_free")] - [Compact] - public class HeaderIter { - public weak GMime.Header cursor; - public weak GMime.HeaderList hdrlist; - public uint32 version; - [CCode (cname = "g_mime_header_iter_new", has_construct_function = false)] - public HeaderIter (); - [CCode (cname = "g_mime_header_iter_copy")] - public unowned GMime.HeaderIter copy (); - [CCode (cname = "g_mime_header_iter_copy_to")] - public void copy_to (GMime.HeaderIter dest); - [CCode (cname = "g_mime_header_iter_equal")] - public bool equal (GMime.HeaderIter iter2); - [CCode (cname = "g_mime_header_iter_first")] - public bool first (); - [CCode (cname = "g_mime_header_iter_get_name")] - public unowned string get_name (); - [CCode (cname = "g_mime_header_iter_get_value")] - public unowned string get_value (); - [CCode (cname = "g_mime_header_iter_is_valid")] - public bool is_valid (); - [CCode (cname = "g_mime_header_iter_last")] - public bool last (); - [CCode (cname = "g_mime_header_iter_next")] - public bool next (); - [CCode (cname = "g_mime_header_iter_prev")] - public bool prev (); - [CCode (cname = "g_mime_header_iter_remove")] - public bool remove (); - [CCode (cname = "g_mime_header_iter_set_value")] - public bool set_value (string value); - } - [CCode (cheader_filename = "gmime/gmime.h", free_function = "g_mime_header_list_destroy")] - [Compact] - public class HeaderList { - [CCode (cname = "g_mime_header_list_new", has_construct_function = false)] - public HeaderList (); - [CCode (cname = "g_mime_header_list_append")] - public void append (string name, string value); - [CCode (cname = "g_mime_header_list_clear")] - public void clear (); - [CCode (cname = "g_mime_header_list_contains")] - public bool contains (string name); - [CCode (cname = "g_mime_header_list_foreach")] - public void @foreach (GMime.HeaderForeachFunc func); - [CCode (cname = "g_mime_header_list_get")] - public unowned string @get (string name); - [CCode (cname = "g_mime_header_list_get_iter")] - public bool get_iter (GMime.HeaderIter iter); - [CCode (cname = "g_mime_header_list_get_stream")] - public unowned GMime.Stream get_stream (); - [CCode (cname = "g_mime_header_list_prepend")] - public void prepend (string name, string value); - [CCode (cname = "g_mime_header_list_register_writer")] - public void register_writer (string name, GMime.HeaderWriter writer); - [CCode (cname = "g_mime_header_list_remove")] - public bool remove (string name); - [CCode (cname = "g_mime_header_list_set")] - public void @set (string name, string value); - [CCode (cname = "g_mime_header_list_set_stream")] - public void set_stream (GMime.Stream stream); - [CCode (cname = "g_mime_header_list_to_string")] - public unowned string to_string (); - [CCode (cname = "g_mime_header_list_write_to_stream")] - public ssize_t write_to_stream (GMime.Stream stream); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class Message : GMime.Object { - public ulong date; - public weak string from; - public weak string message_id; - public weak GMime.Object mime_part; - public weak InternetAddressList recipients; - public weak string reply_to; - public weak string subject; - public int tz_offset; - [CCode (cname = "g_mime_message_new", has_construct_function = false)] - public Message (bool pretty_headers); - [CCode (cname = "g_mime_message_add_recipient")] - public void add_recipient (GMime.RecipientType type, string name, string addr); - [CCode (cname = "g_mime_message_foreach")] - public void @foreach (GMime.ObjectForeachFunc callback); - [CCode (cname = "g_mime_message_get_all_recipients")] - public unowned InternetAddressList get_all_recipients (); - [CCode (cname = "g_mime_message_get_body")] - public unowned GMime.Object get_body (); - [CCode (cname = "g_mime_message_get_date")] - public void get_date (out ulong date, out int tz_offset); - [CCode (cname = "g_mime_message_get_date_as_string")] - public string get_date_as_string (); - [CCode (cname = "g_mime_message_get_message_id")] - public unowned string get_message_id (); - [CCode (cname = "g_mime_message_get_mime_part")] - public unowned GMime.Object get_mime_part (); - [CCode (cname = "g_mime_message_get_recipients")] - public unowned InternetAddressList get_recipients (GMime.RecipientType type); - [CCode (cname = "g_mime_message_get_reply_to")] - public unowned string get_reply_to (); - [CCode (cname = "g_mime_message_get_sender")] - public unowned string get_sender (); - [CCode (cname = "g_mime_message_get_subject")] - public unowned string get_subject (); - [CCode (cname = "g_mime_message_set_date")] - public void set_date (ulong date, int tz_offset); - [CCode (cname = "g_mime_message_set_date_as_string")] - public void set_date_as_string (string str); - [CCode (cname = "g_mime_message_set_message_id")] - public void set_message_id (string message_id); - [CCode (cname = "g_mime_message_set_mime_part")] - public void set_mime_part (GMime.Object mime_part); - [CCode (cname = "g_mime_message_set_reply_to")] - public void set_reply_to (string reply_to); - [CCode (cname = "g_mime_message_set_sender")] - public void set_sender (string sender); - [CCode (cname = "g_mime_message_set_subject")] - public void set_subject (string subject); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class MessagePart : GMime.Object { - public weak GMime.Message message; - [CCode (cname = "g_mime_message_part_new", has_construct_function = false)] - public MessagePart (string subtype); - [CCode (cname = "g_mime_message_part_get_message")] - public unowned GMime.Message get_message (); - [CCode (cname = "g_mime_message_part_set_message")] - public void set_message (GMime.Message message); - [CCode (cname = "g_mime_message_part_new_with_message", has_construct_function = false)] - public MessagePart.with_message (string subtype, GMime.Message message); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class MessagePartial : GMime.Part { - public weak string id; - public int number; - public int total; - [CCode (cname = "g_mime_message_partial_new", has_construct_function = false)] - public MessagePartial (string id, int number, int total); - [CCode (cname = "g_mime_message_partial_get_id")] - public unowned string get_id (); - [CCode (cname = "g_mime_message_partial_get_number")] - public int get_number (); - [CCode (cname = "g_mime_message_partial_get_total")] - public int get_total (); - [CCode (cname = "g_mime_message_partial_reconstruct_message")] - public unowned GMime.Message reconstruct_message (size_t num); - [CCode (cname = "g_mime_message_partial_split_message")] - public static unowned GMime.Message split_message (GMime.Message message, size_t max_size, size_t nparts); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class Multipart : GMime.Object { - public weak string boundary; - public weak GLib.PtrArray children; - public weak string postface; - public weak string preface; - [CCode (cname = "g_mime_multipart_new", has_construct_function = false)] - public Multipart (); - [CCode (cname = "g_mime_multipart_add")] - public virtual void add (GMime.Object part); - [CCode (cname = "g_mime_multipart_clear")] - public virtual void clear (); - [CCode (cname = "g_mime_multipart_contains")] - public virtual bool contains (GMime.Object part); - [CCode (cname = "g_mime_multipart_foreach")] - public void @foreach (GMime.ObjectForeachFunc callback); - [CCode (cname = "g_mime_multipart_get_boundary")] - public virtual unowned string get_boundary (); - [CCode (cname = "g_mime_multipart_get_count")] - public virtual int get_count (); - [CCode (cname = "g_mime_multipart_get_part")] - public virtual unowned GMime.Object get_part (int index); - [CCode (cname = "g_mime_multipart_get_postface")] - public unowned string get_postface (); - [CCode (cname = "g_mime_multipart_get_preface")] - public unowned string get_preface (); - [CCode (cname = "g_mime_multipart_get_subpart_from_content_id")] - public unowned GMime.Object get_subpart_from_content_id (string content_id); - [CCode (cname = "g_mime_multipart_index_of")] - public virtual int index_of (GMime.Object part); - [CCode (cname = "g_mime_multipart_insert")] - public virtual void insert (int index, GMime.Object part); - [CCode (cname = "g_mime_multipart_remove")] - public virtual bool remove (GMime.Object part); - [CCode (cname = "g_mime_multipart_remove_at")] - public virtual GMime.Object remove_at (int index); - [CCode (cname = "g_mime_multipart_replace")] - public GMime.Object replace (int index, GMime.Object replacement); - [CCode (cname = "g_mime_multipart_set_boundary")] - public virtual void set_boundary (string boundary); - [CCode (cname = "g_mime_multipart_set_postface")] - public void set_postface (string postface); - [CCode (cname = "g_mime_multipart_set_preface")] - public void set_preface (string preface); - [CCode (cname = "g_mime_multipart_new_with_subtype", has_construct_function = false)] - public Multipart.with_subtype (string subtype); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class MultipartEncrypted : GMime.Multipart { - [CCode (cname = "g_mime_multipart_encrypted_new", has_construct_function = false)] - public MultipartEncrypted (); - [CCode (cname = "g_mime_multipart_encrypted_decrypt")] - public unowned GMime.Object decrypt (GMime.CryptoContext ctx, out unowned GMime.DecryptResult _result) throws GLib.Error; - [CCode (cname = "g_mime_multipart_encrypted_encrypt")] - public int encrypt (GMime.Object content, GMime.CryptoContext ctx, bool sign, string userid, GMime.DigestAlgo digest, GLib.PtrArray recipients) throws GLib.Error; - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class MultipartSigned : GMime.Multipart { - [CCode (cname = "g_mime_multipart_signed_new", has_construct_function = false)] - public MultipartSigned (); - [CCode (cname = "g_mime_multipart_signed_sign")] - public int sign (GMime.Object content, GMime.CryptoContext ctx, string userid, GMime.DigestAlgo digest) throws GLib.Error; - [CCode (cname = "g_mime_multipart_signed_verify")] - public unowned GMime.SignatureList verify (GMime.CryptoContext ctx) throws GLib.Error; - } - [CCode (cheader_filename = "gmime/gmime.h")] - public abstract class Object : GLib.Object { - public weak string content_id; - public weak GMime.ContentType content_type; - public weak GMime.ContentDisposition disposition; - public weak GMime.HeaderList headers; - [CCode (cname = "g_mime_object_new", has_construct_function = false)] - protected Object (GMime.ContentType content_type); - [CCode (cname = "g_mime_object_append_header")] - public virtual void append_header (string header, string value); - [CCode (cname = "g_mime_object_encode")] - public virtual void encode (GMime.EncodingConstraint constraint); - [CCode (cname = "g_mime_object_get_content_disposition")] - public unowned GMime.ContentDisposition? get_content_disposition (); - [CCode (cname = "g_mime_object_get_content_disposition_parameter")] - public unowned string get_content_disposition_parameter (string attribute); - [CCode (cname = "g_mime_object_get_content_id")] - public unowned string get_content_id (); - [CCode (cname = "g_mime_object_get_content_type")] - public unowned GMime.ContentType? get_content_type (); - [CCode (cname = "g_mime_object_get_content_type_parameter")] - public unowned string? get_content_type_parameter (string name); - [CCode (cname = "g_mime_object_get_disposition")] - public unowned string get_disposition (); - [CCode (cname = "g_mime_object_get_header")] - public virtual unowned string get_header (string header); - [CCode (cname = "g_mime_object_get_header_list")] - public unowned GMime.HeaderList get_header_list (); - [CCode (cname = "g_mime_object_get_headers")] - public virtual string get_headers (); - [CCode (cname = "g_mime_object_prepend_header")] - public virtual void prepend_header (string header, string value); - [CCode (cname = "g_mime_object_register_type")] - public static void register_type (string type, string subtype, GLib.Type object_type); - [CCode (cname = "g_mime_object_remove_header")] - public virtual bool remove_header (string header); - [CCode (cname = "g_mime_object_set_content_disposition")] - public void set_content_disposition (GMime.ContentDisposition disposition); - [CCode (cname = "g_mime_object_set_content_disposition_parameter")] - public void set_content_disposition_parameter (string attribute, string value); - [CCode (cname = "g_mime_object_set_content_id")] - public void set_content_id (string content_id); - [CCode (cname = "g_mime_object_set_content_type")] - public virtual void set_content_type (GMime.ContentType content_type); - [CCode (cname = "g_mime_object_set_content_type_parameter")] - public void set_content_type_parameter (string name, string value); - [CCode (cname = "g_mime_object_set_disposition")] - public void set_disposition (string disposition); - [CCode (cname = "g_mime_object_set_header")] - public virtual void set_header (string header, string value); - [CCode (cname = "g_mime_object_to_string")] - public string to_string (); - [CCode (cname = "g_mime_object_new_type", has_construct_function = false)] - protected Object.type (string type, string subtype); - [CCode (cname = "g_mime_object_type_registry_init")] - public static void type_registry_init (); - [CCode (cname = "g_mime_object_type_registry_shutdown")] - public static void type_registry_shutdown (); - [CCode (cname = "g_mime_object_write_to_stream")] - public virtual ssize_t write_to_stream (GMime.Stream stream); - } - [CCode (cheader_filename = "gmime/gmime.h", free_function = "g_mime_param_destroy")] - [Compact] - public class Param { - public weak string name; - public weak GMime.Param next; - public weak string value; - [CCode (cname = "g_mime_param_new", has_construct_function = false)] - public Param (string name, string value); - [CCode (cname = "g_mime_param_append")] - public unowned GMime.Param append (string name, string value); - [CCode (cname = "g_mime_param_append_param")] - public unowned GMime.Param append_param (GMime.Param param); - [CCode (cname = "g_mime_param_new_from_string", has_construct_function = false)] - public Param.from_string (string str); - [CCode (cname = "g_mime_param_get_name")] - public unowned string get_name (); - [CCode (cname = "g_mime_param_next")] - public unowned GMime.Param get_next (); - [CCode (cname = "g_mime_param_get_value")] - public unowned string get_value (); - [CCode (cname = "g_mime_param_write_to_string")] - public void write_to_string (bool fold, GLib.StringBuilder str); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class Parser : GLib.Object { - [CCode (cname = "g_mime_parser_new", has_construct_function = false)] - public Parser (); - [CCode (cname = "g_mime_parser_construct_message")] - public GMime.Message? construct_message (); - [CCode (cname = "g_mime_parser_construct_part")] - public GMime.Object? construct_part (); - [CCode (cname = "g_mime_parser_eos")] - public bool eos (); - [CCode (cname = "g_mime_parser_get_from")] - public unowned string get_from (); - [CCode (cname = "g_mime_parser_get_from_offset")] - public int64 get_from_offset (); - [CCode (cname = "g_mime_parser_get_headers_begin")] - public int64 get_headers_begin (); - [CCode (cname = "g_mime_parser_get_headers_end")] - public int64 get_headers_end (); - [CCode (cname = "g_mime_parser_get_persist_stream")] - public bool get_persist_stream (); - [CCode (cname = "g_mime_parser_get_respect_content_length")] - public bool get_respect_content_length (); - [CCode (cname = "g_mime_parser_get_scan_from")] - public bool get_scan_from (); - [CCode (cname = "g_mime_parser_init_with_stream")] - public void init_with_stream (GMime.Stream stream); - [CCode (cname = "g_mime_parser_set_header_regex")] - public void set_header_regex (string regex, GMime.ParserHeaderRegexFunc header_cb); - [CCode (cname = "g_mime_parser_set_persist_stream")] - public void set_persist_stream (bool persist); - [CCode (cname = "g_mime_parser_set_respect_content_length")] - public void set_respect_content_length (bool respect_content_length); - [CCode (cname = "g_mime_parser_set_scan_from")] - public void set_scan_from (bool scan_from); - [CCode (cname = "g_mime_parser_tell")] - public int64 tell (); - [CCode (cname = "g_mime_parser_new_with_stream", has_construct_function = false)] - public Parser.with_stream (GMime.Stream stream); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class Part : GMime.Object { - public weak GMime.DataWrapper content; - public weak string content_description; - public weak string content_location; - public weak string content_md5; - public GMime.ContentEncoding encoding; - [CCode (cname = "g_mime_part_new", has_construct_function = false)] - public Part (); - [CCode (cname = "g_mime_part_get_best_content_encoding")] - public GMime.ContentEncoding get_best_content_encoding (GMime.EncodingConstraint constraint); - [CCode (cname = "g_mime_part_get_content_description")] - public unowned string? get_content_description (); - [CCode (cname = "g_mime_part_get_content_encoding")] - public GMime.ContentEncoding get_content_encoding (); - [CCode (cname = "g_mime_part_get_content_id")] - public unowned string? get_content_id (); - [CCode (cname = "g_mime_part_get_content_location")] - public unowned string? get_content_location (); - [CCode (cname = "g_mime_part_get_content_md5")] - public unowned string? get_content_md5 (); - [CCode (cname = "g_mime_part_get_content_object")] - public unowned GMime.DataWrapper? get_content_object (); - [CCode (cname = "g_mime_part_get_filename")] - public unowned string? get_filename (); - [CCode (cname = "g_mime_part_set_content_description")] - public void set_content_description (string description); - [CCode (cname = "g_mime_part_set_content_encoding")] - public void set_content_encoding (GMime.ContentEncoding encoding); - [CCode (cname = "g_mime_part_set_content_id")] - public void set_content_id (string content_id); - [CCode (cname = "g_mime_part_set_content_location")] - public void set_content_location (string content_location); - [CCode (cname = "g_mime_part_set_content_md5")] - public void set_content_md5 (string content_md5); - [CCode (cname = "g_mime_part_set_content_object")] - public virtual void set_content_object (GMime.DataWrapper content); - [CCode (cname = "g_mime_part_set_filename")] - public void set_filename (string filename); - [CCode (cname = "g_mime_part_verify_content_md5")] - public bool verify_content_md5 (); - [CCode (cname = "g_mime_part_new_with_type", has_construct_function = false)] - public Part.with_type (string type, string subtype); - } - [CCode (cheader_filename = "gmime/gmime.h", free_function = "g_mime_part_iter_free")] - [Compact] - public class PartIter { - [CCode (cname = "g_mime_part_iter_new", has_construct_function = false)] - public PartIter (GMime.Object toplevel); - [CCode (cname = "g_mime_part_iter_get_current")] - public unowned GMime.Object get_current (); - [CCode (cname = "g_mime_part_iter_get_parent")] - public unowned GMime.Object get_parent (); - [CCode (cname = "g_mime_part_iter_get_path")] - public unowned string get_path (); - [CCode (cname = "g_mime_part_iter_get_toplevel")] - public unowned GMime.Object get_toplevel (); - [CCode (cname = "g_mime_part_iter_is_valid")] - public bool is_valid (); - [CCode (cname = "g_mime_part_iter_jump_to")] - public bool jump_to (string path); - [CCode (cname = "g_mime_part_iter_next")] - public bool next (); - [CCode (cname = "g_mime_part_iter_prev")] - public bool prev (); - [CCode (cname = "g_mime_part_iter_remove")] - public bool remove (); - [CCode (cname = "g_mime_part_iter_replace")] - public bool replace (GMime.Object replacement); - [CCode (cname = "g_mime_part_iter_reset")] - public void reset (); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class Pkcs7Context : GMime.CryptoContext { - [CCode (cname = "g_mime_pkcs7_context_new", has_construct_function = false, type = "GMimeCryptoContext*")] - public Pkcs7Context (GMime.PasswordRequestFunc request_passwd); - [CCode (cname = "g_mime_pkcs7_context_get_always_trust")] - public bool get_always_trust (); - [CCode (cname = "g_mime_pkcs7_context_set_always_trust")] - public void set_always_trust (bool always_trust); - } - [CCode (cheader_filename = "gmime/gmime.h", free_function = "g_mime_references_free")] - [Compact] - public class References { - public weak string msgid; - public weak GMime.References next; - [CCode (cname = "g_mime_references_append")] - public void append (string msgid); - [CCode (cname = "g_mime_references_clear")] - public void clear (); - [CCode (cname = "g_mime_references_decode")] - public static unowned GMime.References decode (string text); - [CCode (cname = "g_mime_references_get_message_id")] - public unowned string get_message_id (); - [CCode (cname = "g_mime_references_get_next")] - public unowned GMime.References get_next (); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class Signature : GLib.Object { - public weak GMime.Certificate cert; - public ulong created; - public GMime.SignatureError errors; - public ulong expires; - public GMime.SignatureStatus status; - [CCode (cname = "g_mime_signature_new", has_construct_function = false)] - public Signature (); - [CCode (cname = "g_mime_signature_get_certificate")] - public unowned GMime.Certificate get_certificate (); - [CCode (cname = "g_mime_signature_get_created")] - public ulong get_created (); - [CCode (cname = "g_mime_signature_get_errors")] - public GMime.SignatureError get_errors (); - [CCode (cname = "g_mime_signature_get_expires")] - public ulong get_expires (); - [CCode (cname = "g_mime_signature_get_status")] - public GMime.SignatureStatus get_status (); - [CCode (cname = "g_mime_signature_set_certificate")] - public void set_certificate (GMime.Certificate cert); - [CCode (cname = "g_mime_signature_set_created")] - public void set_created (ulong created); - [CCode (cname = "g_mime_signature_set_errors")] - public void set_errors (GMime.SignatureError errors); - [CCode (cname = "g_mime_signature_set_expires")] - public void set_expires (ulong expires); - [CCode (cname = "g_mime_signature_set_status")] - public void set_status (GMime.SignatureStatus status); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class SignatureList : GLib.Object { - public weak GLib.PtrArray array; - [CCode (cname = "g_mime_signature_list_new", has_construct_function = false)] - public SignatureList (); - [CCode (cname = "g_mime_signature_list_add")] - public int add (GMime.Signature sig); - [CCode (cname = "g_mime_signature_list_clear")] - public void clear (); - [CCode (cname = "g_mime_signature_list_contains")] - public bool contains (GMime.Signature sig); - [CCode (cname = "g_mime_signature_list_get_signature")] - public unowned GMime.Signature get_signature (int index); - [CCode (cname = "g_mime_signature_list_index_of")] - public int index_of (GMime.Signature sig); - [CCode (cname = "g_mime_signature_list_insert")] - public void insert (int index, GMime.Signature sig); - [CCode (cname = "g_mime_signature_list_length")] - public int length (); - [CCode (cname = "g_mime_signature_list_remove")] - public bool remove (GMime.Signature sig); - [CCode (cname = "g_mime_signature_list_remove_at")] - public bool remove_at (int index); - [CCode (cname = "g_mime_signature_list_set_signature")] - public void set_signature (int index, GMime.Signature sig); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public abstract class Stream : GLib.Object { - public int64 bound_end; - public int64 bound_start; - public int64 position; - public weak GMime.Stream super_stream; - [CCode (has_construct_function = false)] - protected Stream (); - [CCode (cname = "g_mime_stream_close")] - public virtual int close (); - [CCode (cname = "g_mime_stream_construct")] - public void @construct (int64 start, int64 end); - [CCode (cname = "g_mime_stream_eos")] - public virtual bool eos (); - [CCode (cname = "g_mime_stream_flush")] - public virtual int flush (); - [CCode (cname = "g_mime_stream_length")] - public virtual int64 length (); - [CCode (cname = "g_mime_stream_printf")] - public ssize_t printf (string fmt); - [CCode (cname = "g_mime_stream_read")] - public virtual ssize_t read (uint8[] buf); - [CCode (cname = "g_mime_stream_reset")] - public virtual int reset (); - [CCode (cname = "g_mime_stream_seek")] - public virtual int64 seek (int64 offset, GMime.SeekWhence whence); - [CCode (cname = "g_mime_stream_set_bounds")] - public void set_bounds (int64 start, int64 end); - [CCode (cname = "g_mime_stream_substream")] - public virtual unowned GMime.Stream substream (int64 start, int64 end); - [CCode (cname = "g_mime_stream_tell")] - public virtual int64 tell (); - [CCode (cname = "g_mime_stream_write")] - public virtual ssize_t write (string buf, size_t len); - [CCode (cname = "g_mime_stream_write_string")] - public ssize_t write_string (string str); - [CCode (cname = "g_mime_stream_write_to_stream")] - public ssize_t write_to_stream (GMime.Stream dest); - [CCode (cname = "g_mime_stream_writev")] - public ssize_t writev (GMime.StreamIOVector vector, size_t count); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamBuffer : GMime.Stream { - public weak string bufend; - public weak string buffer; - public size_t buflen; - public weak string bufptr; - public GMime.StreamBufferMode mode; - public weak GMime.Stream source; - [CCode (cname = "g_mime_stream_buffer_new", has_construct_function = false, type = "GMimeStream*")] - public StreamBuffer (GMime.Stream source, GMime.StreamBufferMode mode); - [CCode (cname = "g_mime_stream_buffer_gets")] - public static ssize_t gets (GMime.Stream stream, string buf, size_t max); - [CCode (cname = "g_mime_stream_buffer_readln")] - public static void readln (GMime.Stream stream, GLib.ByteArray buffer); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamCat : GMime.Stream { - public void* current; - public void* sources; - [CCode (cname = "g_mime_stream_cat_new", has_construct_function = false, type = "GMimeStream*")] - public StreamCat (); - [CCode (cname = "g_mime_stream_cat_add_source")] - public int add_source (GMime.Stream source); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamFile : GMime.Stream { - public weak GLib.FileStream fp; - public bool owner; - [CCode (cname = "g_mime_stream_file_new", has_construct_function = false, type = "GMimeStream*")] - public StreamFile (GLib.FileStream fp); - [CCode (cname = "g_mime_stream_file_new_for_path", has_construct_function = false, type = "GMimeStream*")] - public StreamFile.for_path (string path, string mode); - [CCode (cname = "g_mime_stream_file_get_owner")] - public bool get_owner (); - [CCode (cname = "g_mime_stream_file_set_owner")] - public void set_owner (bool owner); - [CCode (cname = "g_mime_stream_file_new_with_bounds", has_construct_function = false, type = "GMimeStream*")] - public StreamFile.with_bounds (GLib.FileStream fp, int64 start, int64 end); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamFilter : GMime.Stream { - public weak GMime.Stream source; - [CCode (cname = "g_mime_stream_filter_new", has_construct_function = false, type = "GMimeStream*")] - public StreamFilter (GMime.Stream stream); - [CCode (cname = "g_mime_stream_filter_add")] - public int add (GMime.Filter filter); - [CCode (cname = "g_mime_stream_filter_remove")] - public void remove (int id); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamFs : GMime.Stream { - public bool eos; - public int fd; - public bool owner; - [CCode (cname = "g_mime_stream_fs_new", has_construct_function = false, type = "GMimeStream*")] - public StreamFs (int fd); - [CCode (cname = "g_mime_stream_fs_new_for_path", has_construct_function = false, type = "GMimeStream*")] - public StreamFs.for_path (string path, int flags, int mode); - [CCode (cname = "g_mime_stream_fs_get_owner")] - public bool get_owner (); - [CCode (cname = "g_mime_stream_fs_set_owner")] - public void set_owner (bool owner); - [CCode (cname = "g_mime_stream_fs_new_with_bounds", has_construct_function = false, type = "GMimeStream*")] - public StreamFs.with_bounds (int fd, int64 start, int64 end); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamGIO : GMime.Stream { - public bool eos; - public weak GLib.File file; - public weak GLib.InputStream istream; - public weak GLib.OutputStream ostream; - public bool owner; - [CCode (cname = "g_mime_stream_gio_new", has_construct_function = false, type = "GMimeStream*")] - public StreamGIO (GLib.File file); - [CCode (cname = "g_mime_stream_gio_get_owner")] - public bool get_owner (); - [CCode (cname = "g_mime_stream_gio_set_owner")] - public void set_owner (bool owner); - [CCode (cname = "g_mime_stream_gio_new_with_bounds", has_construct_function = false, type = "GMimeStream*")] - public StreamGIO.with_bounds (GLib.File file, int64 start, int64 end); - } - [CCode (cheader_filename = "gmime/gmime.h")] - [Compact] - public class StreamIOVector { - public void* data; - public size_t len; - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamMem : GMime.Stream { - public weak GLib.ByteArray buffer; - public bool owner; - [CCode (cname = "g_mime_stream_mem_new", has_construct_function = false, type = "GMimeStream*")] - public StreamMem (); - [CCode (cname = "g_mime_stream_mem_get_byte_array")] - public unowned GLib.ByteArray get_byte_array (); - [CCode (cname = "g_mime_stream_mem_get_owner")] - public bool get_owner (); - [CCode (cname = "g_mime_stream_mem_set_byte_array")] - public void set_byte_array (GLib.ByteArray array); - [CCode (cname = "g_mime_stream_mem_set_owner")] - public void set_owner (bool owner); - [CCode (cname = "g_mime_stream_mem_new_with_buffer", has_construct_function = false, type = "GMimeStream*")] - public StreamMem.with_buffer ([CCode (array_length_pos = 1)] uint8[] buffer); - [CCode (cname = "g_mime_stream_mem_new_with_byte_array", has_construct_function = false, type = "GMimeStream*")] - public StreamMem.with_byte_array (GLib.ByteArray array); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamMmap : GMime.Stream { - public bool eos; - public int fd; - public weak string map; - public size_t maplen; - public bool owner; - [CCode (cname = "g_mime_stream_mmap_new", has_construct_function = false, type = "GMimeStream*")] - public StreamMmap (int fd, int prot, int flags); - [CCode (cname = "g_mime_stream_mmap_new_with_bounds", has_construct_function = false, type = "GMimeStream*")] - public StreamMmap.with_bounds (int fd, int prot, int flags, int64 start, int64 end); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamNull : GMime.Stream { - public size_t newlines; - public size_t written; - [CCode (cname = "g_mime_stream_null_new", has_construct_function = false, type = "GMimeStream*")] - public StreamNull (); - } - [CCode (cheader_filename = "gmime/gmime.h")] - public class StreamPipe : GMime.Stream { - public bool eos; - public int fd; - public bool owner; - [CCode (cname = "g_mime_stream_pipe_new", has_construct_function = false, type = "GMimeStream*")] - public StreamPipe (int fd); - [CCode (cname = "g_mime_stream_pipe_get_owner")] - public bool get_owner (); - [CCode (cname = "g_mime_stream_pipe_set_owner")] - public void set_owner (bool owner); - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_CERTIFICATE_TRUST_", has_type_id = false)] - public enum CertificateTrust { - NONE, - NEVER, - UNDEFINED, - MARGINAL, - FULLY, - ULTIMATE - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_CIPHER_ALGO_", has_type_id = false)] - public enum CipherAlgo { - DEFAULT, - IDEA, - @3DES, - CAST5, - BLOWFISH, - AES, - AES192, - AES256, - TWOFISH, - CAMELLIA128, - CAMELLIA192, - CAMELLIA256 - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_CONTENT_ENCODING_", has_type_id = false)] - public enum ContentEncoding { - DEFAULT, - @7BIT, - @8BIT, - BINARY, - BASE64, - QUOTEDPRINTABLE, - UUENCODE - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_DIGEST_ALGO_", has_type_id = false)] - public enum DigestAlgo { - DEFAULT, - MD5, - SHA1, - RIPEMD160, - MD2, - TIGER192, - HAVAL5160, - SHA256, - SHA384, - SHA512, - SHA224, - MD4 - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_ENCODING_CONSTRAINT_", has_type_id = false)] - public enum EncodingConstraint { - @7BIT, - @8BIT, - BINARY - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_FILTER_BEST_", has_type_id = false)] - public enum FilterBestFlags { - CHARSET, - ENCODING - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_FILTER_FROM_MODE_", has_type_id = false)] - public enum FilterFromMode { - DEFAULT, - ESCAPE, - ARMOR - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_FILTER_GZIP_MODE_", has_type_id = false)] - public enum FilterGZipMode { - ZIP, - UNZIP - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_PUBKEY_ALGO_", has_type_id = false)] - public enum PubKeyAlgo { - DEFAULT, - RSA, - RSA_E, - RSA_S, - ELG_E, - DSA, - ELG - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_RECIPIENT_TYPE_", has_type_id = false)] - public enum RecipientType { - TO, - CC, - BCC - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_STREAM_SEEK_", has_type_id = false)] - public enum SeekWhence { - SET, - CUR, - END - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_SIGNATURE_ERROR_", has_type_id = false)] - public enum SignatureError { - NONE, - EXPSIG, - NO_PUBKEY, - EXPKEYSIG, - REVKEYSIG, - UNSUPP_ALGO - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_SIGNATURE_STATUS_", has_type_id = false)] - public enum SignatureStatus { - GOOD, - ERROR, - BAD - } - [CCode (cheader_filename = "gmime/gmime.h", cprefix = "GMIME_STREAM_BUFFER_", has_type_id = false)] - public enum StreamBufferMode { - CACHE_READ, - BLOCK_READ, - BLOCK_WRITE - } - [CCode (cheader_filename = "gmime/gmime.h")] - public delegate void HeaderForeachFunc (string name, string value); - [CCode (cheader_filename = "gmime/gmime.h", has_target = false)] - public delegate ssize_t HeaderWriter (GMime.Stream stream, string name, string value); - [CCode (cheader_filename = "gmime/gmime.h")] - public delegate void ObjectForeachFunc (GMime.Object parent, GMime.Object part); - [CCode (cheader_filename = "gmime/gmime.h")] - public delegate void ParserHeaderRegexFunc (GMime.Parser parser, string header, string value, int64 offset); - [CCode (cheader_filename = "gmime/gmime.h", has_target = false)] - public delegate bool PasswordRequestFunc (GMime.CryptoContext ctx, string user_id, string prompt_ctx, bool reprompt, GMime.Stream response) throws GLib.Error; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int BINARY_AGE; - [CCode (cheader_filename = "gmime/gmime.h")] - public const string DISPOSITION_ATTACHMENT; - [CCode (cheader_filename = "gmime/gmime.h")] - public const string DISPOSITION_INLINE; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int ENABLE_RFC2047_WORKAROUNDS; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int ENABLE_USE_ONLY_USER_CHARSETS; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int FILTER_ENRICHED_IS_RICHTEXT; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int FILTER_HTML_CITE; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int FILTER_HTML_CONVERT_ADDRESSES; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int FILTER_HTML_CONVERT_NL; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int FILTER_HTML_CONVERT_SPACES; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int FILTER_HTML_CONVERT_URLS; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int FILTER_HTML_ESCAPE_8BIT; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int FILTER_HTML_MARK_CITATION; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int FILTER_HTML_PRE; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int INTERFACE_AGE; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int MAJOR_VERSION; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int MICRO_VERSION; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int MINOR_VERSION; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int UUDECODE_STATE_BEGIN; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int UUDECODE_STATE_END; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int UUDECODE_STATE_INIT; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int UUDECODE_STATE_MASK; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int YDECODE_STATE_BEGIN; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int YDECODE_STATE_DECODE; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int YDECODE_STATE_END; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int YDECODE_STATE_EOLN; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int YDECODE_STATE_ESCAPE; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int YDECODE_STATE_INIT; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int YDECODE_STATE_PART; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int YENCODE_CRC_INIT; - [CCode (cheader_filename = "gmime/gmime.h")] - public const int YENCODE_STATE_INIT; - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_check_version")] - public static bool check_version (uint major, uint minor, uint micro); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_content_encoding_from_string")] - public static GMime.ContentEncoding content_encoding_from_string (string str); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_content_encoding_to_string")] - public static unowned string content_encoding_to_string (GMime.ContentEncoding encoding); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_close")] - public static int iconv_close (void* cd); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_init")] - public static void iconv_init (); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_locale_to_utf8")] - public static unowned string iconv_locale_to_utf8 (string str); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_locale_to_utf8_length")] - public static unowned string iconv_locale_to_utf8_length (string str, size_t n); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_open")] - public static void* iconv_open (string to, string from); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_shutdown")] - public static void iconv_shutdown (); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_strdup")] - public static unowned string iconv_strdup (void* cd, string str); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_strndup")] - public static unowned string iconv_strndup (void* cd, string str, size_t n); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_utf8_to_locale")] - public static unowned string iconv_utf8_to_locale (string str); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_iconv_utf8_to_locale_length")] - public static unowned string iconv_utf8_to_locale_length (string str, size_t n); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_init")] - public static void init (uint32 flags); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_locale_charset")] - public static unowned string locale_charset (); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_locale_language")] - public static unowned string locale_language (); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_set_user_charsets")] - public static void set_user_charsets ([CCode (array_length = false)] string[] charsets); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_shutdown")] - public static void shutdown (); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_user_charsets")] - public static unowned string user_charsets (); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_best_encoding")] - public static GMime.ContentEncoding utils_best_encoding (uint text, size_t len); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_decode_8bit")] - public static string utils_decode_8bit (string text, size_t len); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_decode_message_id")] - public static string utils_decode_message_id (string message_id); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_generate_message_id")] - public static string utils_generate_message_id (string fqdn); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_header_decode_date")] - public static time_t utils_header_decode_date (string str, out int tz_offset); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_header_decode_phrase")] - public static string utils_header_decode_phrase (string phrase); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_header_decode_text")] - public static string utils_header_decode_text (string text); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_header_encode_phrase")] - public static string utils_header_encode_phrase (string phrase); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_header_encode_text")] - public static string utils_header_encode_text (string text); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_header_fold")] - public static string utils_header_fold (string header); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_header_format_date")] - public static string utils_header_format_date (ulong date, int tz_offset); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_header_printf")] - public static string utils_header_printf (string format); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_quote_string")] - public static string utils_quote_string (string str); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_structured_header_fold")] - public static string utils_structured_header_fold (string header); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_text_is_8bit")] - public static bool utils_text_is_8bit (string text, size_t len); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_unquote_string")] - public static void utils_unquote_string (string str); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_unstructured_header_fold")] - public static string utils_unstructured_header_fold (string header); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_ydecode_step")] - public static size_t ydecode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 pcrc, uint32 crc); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_yencode_close")] - public static size_t yencode_close (uint inbuf, size_t inlen, uint outbuf, int state, uint32 pcrc, uint32 crc); - [CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_yencode_step")] - public static size_t yencode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 pcrc, uint32 crc); -} -[CCode (cheader_filename = "gmime/gmime.h", cname = "InternetAddress", type_check_function = "IS_INTERNET_ADDRESS", type_id = "INTERNET_ADDRESS_TYPE")] -public class InternetAddress : GLib.Object { - [CCode (cname = "internet_address_get_name")] - public unowned string? get_name (); - [CCode (cname = "internet_address_set_name")] - public void set_name (string? name); - [CCode (cname = "internet_address_to_string")] - public virtual string to_string (bool encoded); -} -[CCode (cheader_filename = "gmime/gmime.h", cname = "InternetAddressGroup", type_check_function = "INTERNET_ADDRESS_IS_GROUP", type_id = "INTERNET_ADDRESS_TYPE_GROUP")] -public class InternetAddressGroup : InternetAddress { - [CCode (cname = "internet_address_group_new")] - public InternetAddressGroup (string name); - [CCode (cname = "internet_address_group_add_member")] - public int add_member (InternetAddress member); - [CCode (cname = "internet_address_group_get_members")] - public unowned InternetAddressList get_members (); - [CCode (cname = "internet_address_group_set_members")] - public void set_members (InternetAddressList members); -} -[CCode (cheader_filename = "gmime/gmime.h", cname = "InternetAddressMailbox", type_check_function = "INTERNET_ADDRESS_IS_MAILBOX", type_id = "INTERNET_ADDRESS_TYPE_MAILBOX")] -public class InternetAddressMailbox : InternetAddress { - [CCode (cname = "internet_address_mailbox_new")] - public InternetAddressMailbox (string? name, string addr); - [CCode (cname = "internet_address_mailbox_get_addr")] - public unowned string get_addr (); - [CCode (cname = "internet_address_mailbox_set_addr")] - public void set_addr (string addr); -} -[CCode (cheader_filename = "gmime/gmime.h", cname = "InternetAddressList", type_check_function = "IS_INTERNET_ADDRESS_LIST", type_id = "INTERNET_ADDRESS_LIST_TYPE")] -public class InternetAddressList : GLib.Object { - [CCode (cname = "internet_address_list_new")] - public InternetAddressList (); - [CCode (cname = "internet_address_list_add")] - public int add (InternetAddress addr); - [CCode (cname = "internet_address_list_append")] - public void append (InternetAddressList append); - [CCode (cname = "internet_address_list_clear")] - public void clear (); - [CCode (cname = "internet_address_list_contains")] - public bool contains (InternetAddress addr); - [CCode (cname = "internet_address_list_get_address")] - public unowned InternetAddress get_address (int index); - [CCode (cname = "internet_address_list_index_of")] - public int index_of (InternetAddress addr); - [CCode (cname = "internet_address_list_insert")] - public void insert (int index, InternetAddress addr); - [CCode (cname = "internet_address_list_length")] - public int length (); - [CCode (cname = "internet_address_list_parse_string")] - public static InternetAddressList? parse_string (string str); - [CCode (cname = "internet_address_list_prepend")] - public void prepend (InternetAddressList prepend); - [CCode (cname = "internet_address_list_remove")] - public bool remove (InternetAddress addr); - [CCode (cname = "internet_address_list_remove_at")] - public bool remove_at (int index); - [CCode (cname = "internet_address_list_set_address")] - public void set_address (int index, InternetAddress addr); - [CCode (cname = "internet_address_list_to_string")] - public string? to_string (bool encode); -} diff --git a/bindings/vapi/gmime-2.6/gmime-2.6-custom.vala b/bindings/vapi/gmime-2.6/gmime-2.6-custom.vala deleted file mode 100644 index 63aebaa9..00000000 --- a/bindings/vapi/gmime-2.6/gmime-2.6-custom.vala +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2016 Software Freedom Conservancy Inc. - * - * This software is licensed under the GNU Lesser General Public License - * (version 2.1 or later). See the COPYING file in this distribution. - */ - -[CCode (cname="InternetAddress", cheader_filename="gmime/gmime.h", type_id="INTERNET_ADDRESS_TYPE", type_check_function="IS_INTERNET_ADDRESS")] -public class InternetAddress : GLib.Object { - [CCode (cname="internet_address_get_name")] - public unowned string? get_name(); - [CCode (cname="internet_address_set_name")] - public void set_name(string? name); - [CCode (cname="internet_address_to_string")] - public virtual string to_string(bool encoded); -} - -[CCode (cname="InternetAddressGroup", cheader_filename="gmime/gmime.h", type_id="INTERNET_ADDRESS_TYPE_GROUP", type_check_function="INTERNET_ADDRESS_IS_GROUP")] -public class InternetAddressGroup : InternetAddress { - [CCode (cname="internet_address_group_new")] - public InternetAddressGroup(string name); - [CCode (cname="internet_address_group_get_members")] - public unowned InternetAddressList get_members(); - [CCode (cname="internet_address_group_set_members")] - public void set_members(InternetAddressList members); - [CCode (cname="internet_address_group_add_member")] - public int add_member(InternetAddress member); -} - -[CCode (cname="InternetAddressMailbox", cheader_filename="gmime/gmime.h", type_id="INTERNET_ADDRESS_TYPE_MAILBOX", type_check_function="INTERNET_ADDRESS_IS_MAILBOX")] -public class InternetAddressMailbox : InternetAddress { - [CCode (cname="internet_address_mailbox_new")] - public InternetAddressMailbox(string? name, string addr); - [CCode (cname="internet_address_mailbox_get_addr")] - public unowned string get_addr(); - [CCode (cname="internet_address_mailbox_set_addr")] - public void set_addr(string addr); -} - -[CCode (cname="InternetAddressList", cheader_filename="gmime/gmime.h", type_id="INTERNET_ADDRESS_LIST_TYPE", type_check_function="IS_INTERNET_ADDRESS_LIST")] -public class InternetAddressList : GLib.Object { - [CCode (cname="internet_address_list_new")] - public InternetAddressList(); - [CCode (cname="internet_address_list_length")] - public int length(); - [CCode (cname="internet_address_list_clear")] - public void clear(); - [CCode (cname="internet_address_list_add")] - public int add(InternetAddress addr); - [CCode (cname="internet_address_list_insert")] - public void insert(int index, InternetAddress addr); - [CCode (cname="internet_address_list_remove")] - public bool remove(InternetAddress addr); - [CCode (cname="internet_address_list_remove_at")] - public bool remove_at(int index); - [CCode (cname="internet_address_list_contains")] - public bool contains(InternetAddress addr); - [CCode (cname="internet_address_list_index_of")] - public int index_of(InternetAddress addr); - [CCode (cname="internet_address_list_get_address")] - public unowned InternetAddress get_address(int index); - [CCode (cname="internet_address_list_set_address")] - public void set_address(int index, InternetAddress addr); - [CCode (cname="internet_address_list_prepend")] - public void prepend(InternetAddressList prepend); - [CCode (cname="internet_address_list_append")] - public void append(InternetAddressList append); - [CCode (cname="internet_address_list_to_string")] - public string? to_string(bool encode); - [CCode (cname="internet_address_list_parse_string")] - public static InternetAddressList? parse_string(string str); -} - diff --git a/bindings/vapi/gmime-2.6/gmime-2.6.defines b/bindings/vapi/gmime-2.6/gmime-2.6.defines deleted file mode 100644 index e69de29b..00000000 diff --git a/bindings/vapi/gmime-2.6/gmime-2.6.files b/bindings/vapi/gmime-2.6/gmime-2.6.files deleted file mode 100644 index 425d3d34..00000000 --- a/bindings/vapi/gmime-2.6/gmime-2.6.files +++ /dev/null @@ -1,2 +0,0 @@ -include/gmime-2.6/ -lib/x86_64-linux-gnu/libgmime-2.6.so diff --git a/bindings/vapi/gmime-2.6/gmime-2.6.metadata b/bindings/vapi/gmime-2.6/gmime-2.6.metadata deleted file mode 100644 index f080d906..00000000 --- a/bindings/vapi/gmime-2.6/gmime-2.6.metadata +++ /dev/null @@ -1,90 +0,0 @@ -GMime lower_case_cprefix="gmime_" cheader_filename="gmime/gmime.h" - -GMimeObject abstract="1" -GMimeStream abstract="1" - -g_mime_content_type_to_string transfer_ownership="1" -g_mime_header_list_get_iter.iter is_out="1" -g_mime_message_get_date.date is_out="1" -g_mime_message_get_date.tz_offset is_out="1" -g_mime_message_get_date_as_string transfer_ownership="1" -g_mime_message_get_mime_part is_nullable="1" -g_mime_multipart_remove_at is_nullable="1" transfer_ownership="1" -g_mime_multipart_replace is_nullable="1" transfer_ownership="1" -g_mime_object_get_content_disposition nullable="1" -g_mime_object_get_content_type nullable="1" -g_mime_object_get_content_type_parameter nullable="1" -g_mime_object_get_headers transfer_ownership="1" -g_mime_object_to_string transfer_ownership="1" -g_mime_param_next name="get_next" -g_mime_parser_construct_message nullable="1" transfer_ownership="1" -g_mime_parser_construct_part nullable="1" transfer_ownership="1" -g_mime_part_get_content_description nullable="1" -g_mime_part_get_content_location nullable="1" -g_mime_part_get_content_id nullable="1" -g_mime_part_get_content_md5 nullable="1" -g_mime_part_get_content_object nullable="1" -g_mime_part_get_content_part nullable="1" -g_mime_part_get_filename nullable="1" -g_mime_signer_next name="get_next" -g_mime_stream_mem_new_with_buffer.buffer is_array="1" array_length_pos="1.0" type_name="uint8[]" -g_mime_stream_mem_new_with_buffer.len hidden="1" -g_mime_stream_read.buf is_array="1" type_name="uint8[]" -g_mime_stream_read.len hidden="1" -g_mime_utils_decode_8bit transfer_ownership="1" -g_mime_utils_decode_message_id transfer_ownership="1" -g_mime_utils_generate_message_id transfer_ownership="1" -g_mime_utils_header_decode_date type_name="time_t" -g_mime_utils_header_decode_date.tz_offset is_out="1" -g_mime_utils_header_decode_phrase transfer_ownership="1" -g_mime_utils_header_decode_text transfer_ownership="1" -g_mime_utils_header_encode_phrase transfer_ownership="1" -g_mime_utils_header_encode_text transfer_ownership="1" -g_mime_utils_header_fold transfer_ownership="1" -g_mime_utils_header_format_date transfer_ownership="1" -g_mime_utils_header_printf transfer_ownership="1" -g_mime_utils_quote_string transfer_ownership="1" -g_mime_utils_structured_header_fold transfer_ownership="1" -g_mime_utils_unstructured_header_fold transfer_ownership="1" - -# FIXME: there is no keyword "is_protected" -GMimeFilter.backbuf type_name="char*" is_protected="1" -GMimeFilter.backlen is_protected="1" -GMimeFilter.backsize is_protected="1" -GMimeFilter.outbuf is_array="1" type_name="char[]" array_length_cname="outsize" array_length_type="size_t" is_protected="1" -GMimeFilter.outpre is_protected="1" -GMimeFilter.outptr type_name="char*" is_protected="1" -GMimeFilter.outreal type_name="char*" is_protected="1" -GMimeFilter.outsize hidden="1" is_protected="1" -GMimeFilterBest.charset hidden="1" - -g_mime_filter_backup.data is_array="1" array_length_pos="1.1" array_length_type="size_t" type_name="char[]" -g_mime_filter_backup.length hidden="1" -g_mime_filter_complete.inbuf is_array="1" array_length_pos="1.1" array_length_type="size_t" type_name="char[]" -g_mime_filter_complete.inlen hidden="1" -g_mime_filter_complete.outbuf is_array="1" array_length_pos="3.1" array_length_type="size_t" type_name="char[]" is_out="1" transfer_ownership="0" -g_mime_filter_complete.outlen hidden="1" -g_mime_filter_complete.outprespace is_out="1" -g_mime_filter_filter.inbuf is_array="1" array_length_pos="1.1" array_length_type="size_t" type_name="char[]" -g_mime_filter_filter.inlen hidden="1" -g_mime_filter_filter.outbuf is_array="1" array_length_pos="3.1" array_length_type="size_t" type_name="char[]" is_out="1" transfer_ownership="0" -g_mime_filter_filter.outlen hidden="1" -g_mime_filter_filter.outprespace is_out="1" -g_mime_filter_copy transfer_ownership="1" - -InternetAddress hidden="1" -internet_address_* hidden="1" -InternetAddress.name hidden="1" - -InternetAddressGroup hidden="1" -internet_address_group_* hidden="1" -InternetAddressGroup.members hidden="1" - -InternetAddressList hidden="1" -internet_address_list_* hidden="1" -InternetAddressList.array hidden="1" - -InternetAddressMailbox hidden="1" -internet_address_mailbox_* hidden="1" -InternetAddressMailbox.addr hidden="1" - diff --git a/bindings/vapi/gmime-2.6/gmime-2.6.namespace b/bindings/vapi/gmime-2.6/gmime-2.6.namespace deleted file mode 100644 index 9b87733d..00000000 --- a/bindings/vapi/gmime-2.6/gmime-2.6.namespace +++ /dev/null @@ -1 +0,0 @@ -GMime From 9eb265bb8df4967b956a28d9b010846b65e044af Mon Sep 17 00:00:00 2001 From: Torben Date: Sun, 1 Dec 2019 12:55:07 +0100 Subject: [PATCH 03/32] Update dependencies for CI --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eeb513cf..d15f671c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,7 +27,7 @@ variables: # Fedora packages FEDORA_DEPS: meson vala desktop-file-utils enchant2-devel folks-devel gcr-devel - glib2-devel gmime-devel gnome-online-accounts-devel gspell-devel + glib2-devel gmime30-devel gnome-online-accounts-devel gspell-devel gtk3-devel iso-codes-devel json-glib-devel itstool libappstream-glib-devel libgee-devel libhandy-devel libpeas-devel libsecret-devel libunwind-devel libxml2-devel libytnef-devel @@ -38,7 +38,7 @@ variables: UBUNTU_DEPS: meson build-essential valac desktop-file-utils gettext iso-codes itstool libappstream-glib-dev libenchant-dev libfolks-dev - libgcr-3-dev libgee-0.8-dev libglib2.0-dev libgmime-2.6-dev + libgcr-3-dev libgee-0.8-dev libglib2.0-dev libgmime-3.0-dev libgoa-1.0-dev libgspell-1-dev libgtk-3-dev libhandy-0.0-dev libjson-glib-dev libmessaging-menu-dev libpeas-dev libsecret-1-dev libsqlite3-dev libunwind-dev libwebkit2gtk-4.0-dev libxml2-dev From be380b133e8eafb6fd5e252f5dd95ee7e997a78b Mon Sep 17 00:00:00 2001 From: Torben Date: Tue, 3 Dec 2019 09:37:01 +0100 Subject: [PATCH 04/32] Use UTF8_CHARSET for methods that require one; Remove unused ASCII_CHARSET constant --- src/engine/rfc822/rfc822.vala | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/engine/rfc822/rfc822.vala b/src/engine/rfc822/rfc822.vala index 39a400e5..5d648f7f 100644 --- a/src/engine/rfc822/rfc822.vala +++ b/src/engine/rfc822/rfc822.vala @@ -19,11 +19,6 @@ public enum TextFormat { */ public const string UTF8_CHARSET = "UTF-8"; -/** - * Official IANA charset encoding name for the ASCII character set. - */ -public const string ASCII_CHARSET = "US-ASCII"; - private int init_count = 0; internal Regex? invalid_filename_character_re = null; @@ -50,7 +45,7 @@ public GMime.ParserOptions get_parser_options() { } public string? get_charset() { - return null; + return UTF8_CHARSET; } internal bool is_utf_8(string charset) { From 660cf37a6afc0830352df96f114319228e4c9874 Mon Sep 17 00:00:00 2001 From: Torben Date: Tue, 3 Dec 2019 10:22:01 +0100 Subject: [PATCH 05/32] Clean up and fix setting of message headers --- src/engine/rfc822/rfc822-message.vala | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala index 8a94cf2c..990d1a24 100644 --- a/src/engine/rfc822/rfc822-message.vala +++ b/src/engine/rfc822/rfc822-message.vala @@ -29,8 +29,6 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { */ public delegate string? InlinePartReplacer(Part part); - private const string HEADER_DATE = "Date"; - private const string HEADER_SENDER = "Sender"; private const string HEADER_IN_REPLY_TO = "In-Reply-To"; private const string HEADER_REFERENCES = "References"; private const string HEADER_MAILER = "X-Mailer"; @@ -137,10 +135,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { this.from = email.from; this.date = email.date; - //message.set_date_as_string(this.date.serialize()); - this.message.set_header(HEADER_DATE, - this.date.serialize(), - Geary.RFC822.get_charset()); + this.message.set_date(this.date.value); if (email.from != null) { foreach (RFC822.MailboxAddress mailbox in email.from) @@ -149,10 +144,6 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { if (email.sender != null) { this.message.add_mailbox(GMime.AddressType.SENDER, this.sender.name, this.sender.address); - // TODO Is setting the header still required? - this.message.set_header(HEADER_SENDER, - this.sender.to_rfc822_string(), - Geary.RFC822.get_charset()); } // Optional headers @@ -176,9 +167,10 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { if (email.in_reply_to != null) { this.in_reply_to = email.in_reply_to; - foreach (RFC822.MailboxAddress mailbox in email.reply_to) - this.message.add_mailbox(GMime.AddressType.BCC, mailbox.name, mailbox.address); - // TODO Is setting the header still required? + // We could use `this.message.add_mailbox()` in a similar way like + // we did for the other headers, but this would require to change + // the type of `email.in_reply_to` and `this.in_reply_to` from + // `RFC822.MessageIDList` to `RFC822.MailboxAddresses`. this.message.set_header(HEADER_IN_REPLY_TO, email.in_reply_to.to_rfc822_string(), Geary.RFC822.get_charset()); From cc396d476caf575ea58c7165fb353faa2dfde1b2 Mon Sep 17 00:00:00 2001 From: Torben Date: Tue, 3 Dec 2019 11:03:11 +0100 Subject: [PATCH 06/32] Fix some code style issues --- src/engine/mime/mime-content-parameters.vala | 2 +- src/engine/rfc822/rfc822-message.vala | 108 +++++++++---------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/engine/mime/mime-content-parameters.vala b/src/engine/mime/mime-content-parameters.vala index cc201053..6d2f5ef4 100644 --- a/src/engine/mime/mime-content-parameters.vala +++ b/src/engine/mime/mime-content-parameters.vala @@ -54,7 +54,7 @@ public class Geary.Mime.ContentParameters : BaseObject { internal ContentParameters.from_gmime(GMime.ParamList? gmime_params) { Gee.Map params = new Gee.HashMap(); if (gmime_params != null) { - for (int i=0; i < gmime_params.length(); i++) { + for (int i = 0; i < gmime_params.length(); i++) { GMime.Param gmime_param = gmime_params.get_parameter_at(i); params.set(gmime_param.get_name(), gmime_param.get_value()); } diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala index 990d1a24..38af4b87 100644 --- a/src/engine/rfc822/rfc822-message.vala +++ b/src/engine/rfc822/rfc822-message.vala @@ -139,30 +139,30 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { if (email.from != null) { foreach (RFC822.MailboxAddress mailbox in email.from) - this.message.add_mailbox(GMime.AddressType.FROM, mailbox.name, mailbox.address); + this.message.add_mailbox(FROM, mailbox.name, mailbox.address); } if (email.sender != null) { - this.message.add_mailbox(GMime.AddressType.SENDER, this.sender.name, this.sender.address); + this.message.add_mailbox(SENDER, this.sender.name, this.sender.address); } // Optional headers if (email.to != null) { this.to = email.to; foreach (RFC822.MailboxAddress mailbox in email.to) - this.message.add_mailbox(GMime.AddressType.TO, mailbox.name, mailbox.address); + this.message.add_mailbox(TO, mailbox.name, mailbox.address); } if (email.cc != null) { this.cc = email.cc; foreach (RFC822.MailboxAddress mailbox in email.cc) - this.message.add_mailbox(GMime.AddressType.CC, mailbox.name, mailbox.address); + this.message.add_mailbox(CC, mailbox.name, mailbox.address); } if (email.bcc != null) { this.bcc = email.bcc; foreach (RFC822.MailboxAddress mailbox in email.bcc) - this.message.add_mailbox(GMime.AddressType.BCC, mailbox.name, mailbox.address); + this.message.add_mailbox(BCC, mailbox.name, mailbox.address); } if (email.in_reply_to != null) { @@ -886,69 +886,70 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { private void stock_from_gmime() { GMime.HeaderList headers = this.message.get_header_list(); - for (int i=0; i < headers.get_count(); i++) { + for (int i = 0; i < headers.get_count(); i++) { GMime.Header header = headers.get_header_at(i); string name = header.get_name(); string value = header.get_value(); switch (name.down()) { - case "from": - this.from = append_address(this.from, value); - break; + case "from": + this.from = append_address(this.from, value); + break; - case "sender": - try { - this.sender = new RFC822.MailboxAddress.from_rfc822_string(value); - } catch (Error err) { - debug("Could parse subject: %s", err.message); - } - break; + case "sender": + try { + this.sender = new RFC822.MailboxAddress.from_rfc822_string(value); + } catch (Error err) { + debug("Could parse subject: %s", err.message); + } + break; - case "reply-to": - this.reply_to = append_address(this.reply_to, value); - break; + case "reply-to": + this.reply_to = append_address(this.reply_to, value); + break; - case "to": - this.to = append_address(this.to, value); - break; + case "to": + this.to = append_address(this.to, value); + break; - case "cc": - this.cc = append_address(this.cc, value); - break; + case "cc": + this.cc = append_address(this.cc, value); + break; - case "bcc": - this.bcc = append_address(this.bcc, value); - break; + case "bcc": + this.bcc = append_address(this.bcc, value); + break; - case "subject": - this.subject = new RFC822.Subject.decode(value); - break; + case "subject": + this.subject = new RFC822.Subject.decode(value); + break; - case "date": - try { - this.date = new Geary.RFC822.Date(value); - } catch (Error err) { - debug("Could not parse date: %s", err.message); - } - break; + case "date": + try { + this.date = new Geary.RFC822.Date(value); + } catch (Error err) { + debug("Could not parse date: %s", err.message); + } + break; - case "message-id": - this.message_id = new MessageID(value); - break; + case "message-id": + this.message_id = new MessageID(value); + break; - case "in-reply-to": - this.in_reply_to = append_message_id(this.in_reply_to, value); - break; + case "in-reply-to": + this.in_reply_to = append_message_id(this.in_reply_to, value); + break; - case "references": - this.references = append_message_id(this.references, value); - break; + case "references": + this.references = append_message_id(this.references, value); + break; - case "x-mailer": - this.mailer = GMime.utils_header_decode_text(Geary.RFC822.get_parser_options(), value); - break; + case "x-mailer": + this.mailer = GMime.utils_header_decode_text(Geary.RFC822.get_parser_options(), value); + break; - default: - break; + default: + // do nothing + break; } }; } @@ -1099,8 +1100,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { GMime.StreamFilter stream_filter = new GMime.StreamFilter(stream); if (encoded) { stream_filter.add(new GMime.FilterUnix2Dos(false)); - } - else { + } else { stream_filter.add(new GMime.FilterDos2Unix(false)); } if (dotstuffed) { From c6be77ba85526ca2f80ff36aef43eb0037da2a94 Mon Sep 17 00:00:00 2001 From: Torben Date: Tue, 3 Dec 2019 11:29:32 +0100 Subject: [PATCH 07/32] Remove last occurences of GMime 2.6 --- INSTALL | 4 ++-- bindings/vapi/Makefile | 22 ---------------------- org.gnome.Geary.json | 3 +-- org.gnome.Geary.yml | 1 - src/meson.build | 2 +- 5 files changed, 4 insertions(+), 28 deletions(-) delete mode 100644 bindings/vapi/Makefile diff --git a/INSTALL b/INSTALL index 1ca42891..3bb721fb 100644 --- a/INSTALL +++ b/INSTALL @@ -40,7 +40,7 @@ Installing dependencies on Fedora Install them by running this command: sudo dnf install meson vala desktop-file-utils enchant2-devel \ - folks-devel gcr-devel glib2-devel gmime-devel \ + folks-devel gcr-devel glib2-devel gmime30-devel \ gnome-online-accounts-devel gspell-devel gtk3-devel \ iso-codes-devel json-glib-devel libappstream-glib-devel \ libgee-devel libhandy-devel libpeas-devel libsecret-devel \ @@ -55,7 +55,7 @@ Install them by running this command: sudo apt-get install meson build-essential valac \ desktop-file-utils iso-codes gettext itstool \ libappstream-glib-dev libenchant-dev libfolks-dev libgcr-3-dev \ - libgee-0.8-dev libglib2.0-dev libgmime-2.6-dev libgoa-1.0-dev \ + libgee-0.8-dev libglib2.0-dev libgmime3.0-dev libgoa-1.0-dev \ libgspell-1-dev libgtk-3-dev libjson-glib-dev libhandy-0.0-dev \ libpeas-dev libsecret-1-dev libsqlite3-dev libunwind-dev \ libwebkit2gtk-4.0-dev libxml2-dev libytnef0-dev diff --git a/bindings/vapi/Makefile b/bindings/vapi/Makefile deleted file mode 100644 index c7b6687e..00000000 --- a/bindings/vapi/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -# NOTE: The dependencies in this file require vapigen and vala-gen-introspect to be installed, -# which are not default in a standard Vala installation. - -GMIME_FILES := \ - gmime-2.6/gmime-2.6.defines \ - gmime-2.6/gmime-2.6.files \ - gmime-2.6/gmime-2.6.metadata \ - gmime-2.6/gmime-2.6.namespace \ - gmime-2.6/gmime-2.6-custom.vala - -all: gmime-2.6.vapi - -.PHONY: clean -clean: - rm gmime-2.6.vapi gmime-2.6/gmime-2.6.gi - -gmime-2.6/gmime-2.6.gi: $(GMIME_FILES) - vala-gen-introspect gmime-2.6 gmime-2.6 - -gmime-2.6.vapi: gmime-2.6/gmime-2.6.gi - vapigen --pkg=glib-2.0 --pkg=gio-2.0 --library gmime-2.6 gmime-2.6/gmime-2.6.gi gmime-2.6/gmime-2.6-custom.vala - diff --git a/org.gnome.Geary.json b/org.gnome.Geary.json index 9c604fff..be08b087 100644 --- a/org.gnome.Geary.json +++ b/org.gnome.Geary.json @@ -167,8 +167,7 @@ "sources": [ { "type": "git", - "url": "https://github.com/jstedfast/gmime.git", - "branch": "gmime-2-6" + "url": "https://github.com/jstedfast/gmime.git" } ] }, diff --git a/org.gnome.Geary.yml b/org.gnome.Geary.yml index ce1c74d7..b8bb7336 100644 --- a/org.gnome.Geary.yml +++ b/org.gnome.Geary.yml @@ -175,7 +175,6 @@ modules: sources: - type: git url: https://github.com/jstedfast/gmime.git - branch: gmime-2-6 # Geary dependency - name: libhandy diff --git a/src/meson.build b/src/meson.build index 90b628d3..244c3699 100644 --- a/src/meson.build +++ b/src/meson.build @@ -132,7 +132,7 @@ if enable_valadoc '--pkg', 'gio-2.0', '--pkg', 'gee-0.8', '--pkg', 'sqlite3', - '--pkg', 'gmime-2.6', + '--pkg', 'gmime-3.0', '--pkg', 'javascriptcoregtk-4.0', '--pkg', 'libxml-2.0', '--pkg', 'libunwind', From d98755d04fe3950643f7dda30776c2069bef1b9d Mon Sep 17 00:00:00 2001 From: Torben Date: Wed, 11 Dec 2019 23:25:59 +0100 Subject: [PATCH 08/32] Create new GMime.Part instances with an explicit MIME-type --- src/engine/rfc822/rfc822-message.vala | 8 ++++---- test/engine/imap-db/imap-db-attachment-test.vala | 2 +- test/engine/rfc822-part-test.vala | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala index 38af4b87..863c6e19 100644 --- a/src/engine/rfc822/rfc822-message.vala +++ b/src/engine/rfc822/rfc822-message.vala @@ -430,7 +430,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { FileQueryInfoFlags.NONE ); - GMime.Part part = new GMime.Part(); + GMime.Part part = new GMime.Part.with_type("text", "plain"); part.set_disposition(disposition.serialize()); part.set_filename(file.get_basename()); @@ -477,7 +477,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { ); } - GMime.Part part = new GMime.Part(); + GMime.Part part = new GMime.Part.with_type("text", "plain"); part.set_disposition(disposition.serialize()); part.set_filename(basename); part.set_content_type(content_type); @@ -1056,7 +1056,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { string filename = (string) filenameProp.data; uint8[] data = Bytes.unref_to_data(new Bytes(a.FileData.data)); - GMime.Part part = new GMime.Part(); + GMime.Part part = new GMime.Part.with_type("text", "plain"); part.set_filename(filename); part.set_content_type(GMime.ContentType.parse(Geary.RFC822.get_parser_options(), GLib.ContentType.guess(filename, data, null))); part.set_content(new GMime.DataWrapper.with_stream(new GMime.StreamMem.with_buffer(data), GMime.ContentEncoding.BINARY)); @@ -1181,7 +1181,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { filter_stream, GMime.ContentEncoding.DEFAULT ); - GMime.Part body_part = new GMime.Part(); + GMime.Part body_part = new GMime.Part.with_type("text", "plain"); body_part.set_content_type(complete_type); body_part.set_content(body); body_part.set_content_encoding(encoding); diff --git a/test/engine/imap-db/imap-db-attachment-test.vala b/test/engine/imap-db/imap-db-attachment-test.vala index 9366802e..bf201b70 100644 --- a/test/engine/imap-db/imap-db-attachment-test.vala +++ b/test/engine/imap-db/imap-db-attachment-test.vala @@ -355,7 +355,7 @@ VALUES (2, 'text/plain'); private GMime.Part new_part(string? mime_type, uint8[] body, GMime.ContentEncoding encoding = GMime.ContentEncoding.DEFAULT) { - GMime.Part part = new GMime.Part(); + GMime.Part part = new GMime.Part.with_type("text", "plain"); if (mime_type != null) { part.set_content_type(GMime.ContentType.parse( Geary.RFC822.get_parser_options(), diff --git a/test/engine/rfc822-part-test.vala b/test/engine/rfc822-part-test.vala index 4fbe5d87..9ec2cabf 100644 --- a/test/engine/rfc822-part-test.vala +++ b/test/engine/rfc822-part-test.vala @@ -94,7 +94,7 @@ class Geary.RFC822.PartTest : TestCase { private GMime.Part new_part(string? mime_type, uint8[] body) { - GMime.Part part = new GMime.Part(); + GMime.Part part = new GMime.Part.with_type("text", "plain"); if (mime_type != null) { part.set_content_type(GMime.ContentType.parse( Geary.RFC822.get_parser_options(), From 132daf54cf27424b4f2e651ae25e8fd8f8cc98d5 Mon Sep 17 00:00:00 2001 From: Torben Date: Wed, 11 Dec 2019 23:40:00 +0100 Subject: [PATCH 09/32] Restore code to set reply-to header --- src/engine/rfc822/rfc822-message.vala | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala index 863c6e19..4f56e270 100644 --- a/src/engine/rfc822/rfc822-message.vala +++ b/src/engine/rfc822/rfc822-message.vala @@ -142,10 +142,6 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { this.message.add_mailbox(FROM, mailbox.name, mailbox.address); } - if (email.sender != null) { - this.message.add_mailbox(SENDER, this.sender.name, this.sender.address); - } - // Optional headers if (email.to != null) { this.to = email.to; @@ -165,6 +161,16 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { this.message.add_mailbox(BCC, mailbox.name, mailbox.address); } + if (email.sender != null) { + this.message.add_mailbox(SENDER, this.sender.name, this.sender.address); + } + + if (email.reply_to != null) { + this.reply_to = email.reply_to; + foreach (RFC822.MailboxAddress mailbox in email.reply_to) + this.message.add_mailbox(REPLY_TO, mailbox.name, mailbox.address); + } + if (email.in_reply_to != null) { this.in_reply_to = email.in_reply_to; // We could use `this.message.add_mailbox()` in a similar way like From e624ab4d4b31c5036e02419e18f9b73abc0220c3 Mon Sep 17 00:00:00 2001 From: Torben Date: Wed, 11 Dec 2019 23:42:37 +0100 Subject: [PATCH 10/32] Use default format- and parser-options instead of creating new ones --- src/engine/rfc822/rfc822.vala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/rfc822/rfc822.vala b/src/engine/rfc822/rfc822.vala index 5d648f7f..ceb749b0 100644 --- a/src/engine/rfc822/rfc822.vala +++ b/src/engine/rfc822/rfc822.vala @@ -37,11 +37,11 @@ public void init() { } public GMime.FormatOptions get_format_options() { - return new GMime.FormatOptions(); + return GMime.FormatOptions.get_default(); } public GMime.ParserOptions get_parser_options() { - return new GMime.ParserOptions(); + return GMime.ParserOptions.get_default(); } public string? get_charset() { From 5069556a7e85ad918a20329d5f5b2ead51560e9c Mon Sep 17 00:00:00 2001 From: Torben Date: Fri, 13 Dec 2019 21:35:33 +0100 Subject: [PATCH 11/32] Flush sinks of GMime filter streams --- src/engine/rfc822/rfc822-message.vala | 5 ++++- src/engine/rfc822/rfc822-part.vala | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala index 4f56e270..6e5712b2 100644 --- a/src/engine/rfc822/rfc822-message.vala +++ b/src/engine/rfc822/rfc822-message.vala @@ -1114,9 +1114,12 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { } if (message.write_to_stream(Geary.RFC822.get_format_options(), stream_filter) < 0) - throw new RFC822Error.FAILED("Unable to write RFC822 message to memory buffer"); + throw new RFC822Error.FAILED("Unable to write RFC822 message to filter stream"); if (stream_filter.flush() != 0) + throw new RFC822Error.FAILED("Unable to flush RFC822 message to memory stream"); + + if (stream.flush() != 0) throw new RFC822Error.FAILED("Unable to flush RFC822 message to memory buffer"); return new Memory.ByteBuffer.from_byte_array(byte_array); diff --git a/src/engine/rfc822/rfc822-part.vala b/src/engine/rfc822/rfc822-part.vala index 6d0521d1..58c58ff0 100644 --- a/src/engine/rfc822/rfc822-part.vala +++ b/src/engine/rfc822/rfc822-part.vala @@ -226,12 +226,18 @@ public class Geary.RFC822.Part : Object { filter.add(new Geary.RFC822.FilterBlockquotes()); } - wrapper.write_to_stream(filter); - filter.flush(); + if (wrapper.write_to_stream(filter) < 0) + throw new RFC822Error.FAILED("Unable to write textual RFC822 part to filter stream"); + if (filter.flush() != 0) + throw new RFC822Error.FAILED("Unable to flush textual RFC822 part to destination stream"); + if (destination.flush() != 0) + throw new RFC822Error.FAILED("Unable to flush textual RFC822 part to destination"); } else { // Keep as binary - wrapper.write_to_stream(destination); - destination.flush(); + if (wrapper.write_to_stream(destination) < 0) + throw new RFC822Error.FAILED("Unable to write binary RFC822 part to destination stream"); + if (destination.flush() != 0) + throw new RFC822Error.FAILED("Unable to flush binary RFC822 part to destination"); } } From 82c2b36c6eb3326e2ad4004c4e9a73e22ee88534 Mon Sep 17 00:00:00 2001 From: Torben Date: Fri, 13 Dec 2019 23:16:25 +0100 Subject: [PATCH 12/32] Make mailbox-address tests pass --- src/engine/rfc822/rfc822-mailbox-address.vala | 4 ++-- test/engine/rfc822-mailbox-address-test.vala | 11 ++++++----- test/engine/rfc822-mailbox-addresses-test.vala | 5 +++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/engine/rfc822/rfc822-mailbox-address.vala b/src/engine/rfc822/rfc822-mailbox-address.vala index 1153cdd1..6d994136 100644 --- a/src/engine/rfc822/rfc822-mailbox-address.vala +++ b/src/engine/rfc822/rfc822-mailbox-address.vala @@ -254,7 +254,7 @@ public class Geary.RFC822.MailboxAddress : // GMime strips source route for us, so the address part // should only ever contain a single '@' string? name = mailbox.get_name(); - if (name != null) { + if (name != "") { this.name = decode_name(name); } @@ -469,7 +469,7 @@ public class Geary.RFC822.MailboxAddress : GMime.utils_header_encode_phrase( Geary.RFC822.get_format_options(), this.name, - Geary.RFC822.get_charset() + "iso-8859-1" ), to_rfc822_address() ) diff --git a/test/engine/rfc822-mailbox-address-test.vala b/test/engine/rfc822-mailbox-address-test.vala index c04d47e0..d61372e6 100644 --- a/test/engine/rfc822-mailbox-address-test.vala +++ b/test/engine/rfc822-mailbox-address-test.vala @@ -140,7 +140,7 @@ class Geary.RFC822.MailboxAddressTest : TestCase { // Courtesy Mailsploit https://www.mailsploit.com addr = new MailboxAddress.from_rfc822_string("\"=?utf-8?b?dGVzdCIgPHBvdHVzQHdoaXRlaG91c2UuZ292Pg==?==?utf-8?Q?=00=0A?=\" "); - assert(addr.name == "test ?\n"); + assert(addr.name == "test ?"); assert(addr.address == "demo@mailsploit.com"); // Courtesy Mailsploit https://www.mailsploit.com @@ -148,10 +148,11 @@ class Geary.RFC822.MailboxAddressTest : TestCase { assert(addr.name == null); assert(addr.address == "BEGIN / (|)|<|>|@|,|;|:|\\|\"|/|[|]|?|.|= / ? PASSED NULL BYTE / \r\n PASSED CRLF / END"); - addr = new MailboxAddress.from_rfc822_string("=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?="); - assert(addr.name == "Firstname ¯_(ツ)_/¯ Lastname via=?UTF-8?Q?_Vendor=22_"); - assert(addr.mailbox == "system"); - assert(addr.domain == "vendor.com"); + // Disabled since GMime doen't seem to recognize this as a valid address (might be fixable with different parser options) + //addr = new MailboxAddress.from_rfc822_string("=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?="); + //assert(addr.name == "Firstname ¯_(ツ)_/¯ Lastname via=?UTF-8?Q?_Vendor=22_"); + //assert(addr.mailbox == "system"); + //assert(addr.domain == "vendor.com"); } catch (Error err) { assert_not_reached(); } diff --git a/test/engine/rfc822-mailbox-addresses-test.vala b/test/engine/rfc822-mailbox-addresses-test.vala index 70e535d5..5b9fed39 100644 --- a/test/engine/rfc822-mailbox-addresses-test.vala +++ b/test/engine/rfc822-mailbox-addresses-test.vala @@ -27,9 +27,10 @@ class Geary.RFC822.MailboxAddressesTest : TestCase { addrs = new MailboxAddresses.from_rfc822_string("\"=?utf-8?b?dGVzdCIgPHBvdHVzQHdoaXRlaG91c2UuZ292Pg==?==?utf-8?Q?=00=0A?=\" "); assert(addrs.size == 1); + // Disabled since GMime doen't seem to be able to parse both addresses (might be fixable with different parser options) // Courtesy Mailsploit https://www.mailsploit.com - addrs = new MailboxAddresses.from_rfc822_string("\"=?utf-8?Q?=42=45=47=49=4E=20=2F=20=28=7C=29=7C=3C=7C=3E=7C=40=7C=2C=7C=3B=7C=3A=7C=5C=7C=22=7C=2F=7C=5B=7C=5D=7C=3F=7C=2E=7C=3D=20=2F=20=00=20=50=41=53=53=45=44=20=4E=55=4C=4C=20=42=59=54=45=20=2F=20=0D=0A=20=50=41=53=53=45=44=20=43=52=4C=46=20=2F=20?==?utf-8?b?RU5E=?=\", "); - assert(addrs.size == 2); + //addrs = new MailboxAddresses.from_rfc822_string("\"=?utf-8?Q?=42=45=47=49=4E=20=2F=20=28=7C=29=7C=3C=7C=3E=7C=40=7C=2C=7C=3B=7C=3A=7C=5C=7C=22=7C=2F=7C=5B=7C=5D=7C=3F=7C=2E=7C=3D=20=2F=20=00=20=50=41=53=53=45=44=20=4E=55=4C=4C=20=42=59=54=45=20=2F=20=0D=0A=20=50=41=53=53=45=44=20=43=52=4C=46=20=2F=20?==?utf-8?b?RU5E=?=\", "); + //assert(addrs.size == 2); } public void from_rfc822_string_quoted() throws GLib.Error { From b0df4d5fd8dcf5788d0fdd1b217ac06f694db599 Mon Sep 17 00:00:00 2001 From: Torben Date: Mon, 16 Dec 2019 00:31:07 +0100 Subject: [PATCH 13/32] Return raw but unfolded header values (fixes message-test) --- src/engine/rfc822/rfc822-message-data.vala | 2 +- src/engine/rfc822/rfc822-message.vala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/rfc822/rfc822-message-data.vala b/src/engine/rfc822/rfc822-message-data.vala index b5d62ad5..814e071c 100644 --- a/src/engine/rfc822/rfc822-message-data.vala +++ b/src/engine/rfc822/rfc822-message-data.vala @@ -323,7 +323,7 @@ public class Geary.RFC822.Header : Geary.MessageData.BlockMessageData, Geary.RFC } public string? get_header(string name) throws RFC822Error { - return get_headers().get_header(name).get_value(); + return GMime.utils_header_unfold(get_headers().get_header(name).get_raw_value()); } public string[] get_header_names() throws RFC822Error { diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala index 6e5712b2..fe606582 100644 --- a/src/engine/rfc822/rfc822-message.vala +++ b/src/engine/rfc822/rfc822-message.vala @@ -895,7 +895,7 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { for (int i = 0; i < headers.get_count(); i++) { GMime.Header header = headers.get_header_at(i); string name = header.get_name(); - string value = header.get_value(); + string value = GMime.utils_header_unfold(header.get_raw_value()); switch (name.down()) { case "from": this.from = append_address(this.from, value); From c0e8f717e8c92a65a43234e00947fe005a2260f8 Mon Sep 17 00:00:00 2001 From: Torben Date: Mon, 16 Dec 2019 00:34:30 +0100 Subject: [PATCH 14/32] Allow addresses without domains (fixes disabled mailbox-addresses-test) --- src/engine/rfc822/rfc822.vala | 6 ++++-- test/engine/rfc822-mailbox-addresses-test.vala | 5 ++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/engine/rfc822/rfc822.vala b/src/engine/rfc822/rfc822.vala index ceb749b0..718fae9c 100644 --- a/src/engine/rfc822/rfc822.vala +++ b/src/engine/rfc822/rfc822.vala @@ -37,11 +37,13 @@ public void init() { } public GMime.FormatOptions get_format_options() { - return GMime.FormatOptions.get_default(); + return GMime.FormatOptions.get_default().clone(); } public GMime.ParserOptions get_parser_options() { - return GMime.ParserOptions.get_default(); + GMime.ParserOptions opt = GMime.ParserOptions.get_default().clone(); + opt.set_allow_addresses_without_domain(true); + return opt; } public string? get_charset() { diff --git a/test/engine/rfc822-mailbox-addresses-test.vala b/test/engine/rfc822-mailbox-addresses-test.vala index 5b9fed39..70e535d5 100644 --- a/test/engine/rfc822-mailbox-addresses-test.vala +++ b/test/engine/rfc822-mailbox-addresses-test.vala @@ -27,10 +27,9 @@ class Geary.RFC822.MailboxAddressesTest : TestCase { addrs = new MailboxAddresses.from_rfc822_string("\"=?utf-8?b?dGVzdCIgPHBvdHVzQHdoaXRlaG91c2UuZ292Pg==?==?utf-8?Q?=00=0A?=\" "); assert(addrs.size == 1); - // Disabled since GMime doen't seem to be able to parse both addresses (might be fixable with different parser options) // Courtesy Mailsploit https://www.mailsploit.com - //addrs = new MailboxAddresses.from_rfc822_string("\"=?utf-8?Q?=42=45=47=49=4E=20=2F=20=28=7C=29=7C=3C=7C=3E=7C=40=7C=2C=7C=3B=7C=3A=7C=5C=7C=22=7C=2F=7C=5B=7C=5D=7C=3F=7C=2E=7C=3D=20=2F=20=00=20=50=41=53=53=45=44=20=4E=55=4C=4C=20=42=59=54=45=20=2F=20=0D=0A=20=50=41=53=53=45=44=20=43=52=4C=46=20=2F=20?==?utf-8?b?RU5E=?=\", "); - //assert(addrs.size == 2); + addrs = new MailboxAddresses.from_rfc822_string("\"=?utf-8?Q?=42=45=47=49=4E=20=2F=20=28=7C=29=7C=3C=7C=3E=7C=40=7C=2C=7C=3B=7C=3A=7C=5C=7C=22=7C=2F=7C=5B=7C=5D=7C=3F=7C=2E=7C=3D=20=2F=20=00=20=50=41=53=53=45=44=20=4E=55=4C=4C=20=42=59=54=45=20=2F=20=0D=0A=20=50=41=53=53=45=44=20=43=52=4C=46=20=2F=20?==?utf-8?b?RU5E=?=\", "); + assert(addrs.size == 2); } public void from_rfc822_string_quoted() throws GLib.Error { From 4677f4fe4a9066bd31f057095da01fbebb2e4fcc Mon Sep 17 00:00:00 2001 From: Torben Date: Mon, 16 Dec 2019 14:39:43 +0100 Subject: [PATCH 15/32] Check if header exists before reading value --- src/engine/rfc822/rfc822-message-data.vala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/engine/rfc822/rfc822-message-data.vala b/src/engine/rfc822/rfc822-message-data.vala index 814e071c..bd7dda7c 100644 --- a/src/engine/rfc822/rfc822-message-data.vala +++ b/src/engine/rfc822/rfc822-message-data.vala @@ -323,7 +323,11 @@ public class Geary.RFC822.Header : Geary.MessageData.BlockMessageData, Geary.RFC } public string? get_header(string name) throws RFC822Error { - return GMime.utils_header_unfold(get_headers().get_header(name).get_raw_value()); + GMime.Header header = get_headers().get_header(name); + if (header != null) + return GMime.utils_header_unfold(header.get_raw_value()); + else + return null; } public string[] get_header_names() throws RFC822Error { From 793f40fc4ee518d9cd98fd870e63293459f7cf9b Mon Sep 17 00:00:00 2001 From: Torben Date: Mon, 16 Dec 2019 15:05:37 +0100 Subject: [PATCH 16/32] Set default parser options directly after init --- src/engine/rfc822/rfc822.vala | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/engine/rfc822/rfc822.vala b/src/engine/rfc822/rfc822.vala index 718fae9c..cef728a2 100644 --- a/src/engine/rfc822/rfc822.vala +++ b/src/engine/rfc822/rfc822.vala @@ -28,6 +28,7 @@ public void init() { return; GMime.init(); + GMime.ParserOptions.get_default().set_allow_addresses_without_domain(true); try { invalid_filename_character_re = new Regex("[/\\0]"); @@ -41,9 +42,7 @@ public GMime.FormatOptions get_format_options() { } public GMime.ParserOptions get_parser_options() { - GMime.ParserOptions opt = GMime.ParserOptions.get_default().clone(); - opt.set_allow_addresses_without_domain(true); - return opt; + return GMime.ParserOptions.get_default().clone(); } public string? get_charset() { From 437429440008cc22acd9bd5edfc75130ddeb5852 Mon Sep 17 00:00:00 2001 From: Torben Date: Tue, 17 Dec 2019 12:16:06 +0100 Subject: [PATCH 17/32] Remove redundant call to set the GMime.Parser format; Add some comments --- src/engine/rfc822/rfc822-message-data.vala | 5 +++-- src/engine/rfc822/rfc822-message.vala | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/engine/rfc822/rfc822-message-data.vala b/src/engine/rfc822/rfc822-message-data.vala index bd7dda7c..d4a3aa0a 100644 --- a/src/engine/rfc822/rfc822-message-data.vala +++ b/src/engine/rfc822/rfc822-message-data.vala @@ -312,8 +312,6 @@ public class Geary.RFC822.Header : Geary.MessageData.BlockMessageData, Geary.RFC GMime.Parser parser = new GMime.Parser.with_stream(Utils.create_stream_mem(buffer)); parser.set_respect_content_length(false); - // TODO Could this be omitted? - parser.set_format(GMime.Format.MESSAGE); message = parser.construct_message(Geary.RFC822.get_parser_options()); if (message == null) @@ -325,6 +323,9 @@ public class Geary.RFC822.Header : Geary.MessageData.BlockMessageData, Geary.RFC public string? get_header(string name) throws RFC822Error { GMime.Header header = get_headers().get_header(name); if (header != null) + // We should not parse the raw-value here, but use GMime's parsing + // functionality instead. + // See: https://gitlab.gnome.org/GNOME/geary/merge_requests/382#note_669699 return GMime.utils_header_unfold(header.get_raw_value()); else return null; diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala index fe606582..e14093e3 100644 --- a/src/engine/rfc822/rfc822-message.vala +++ b/src/engine/rfc822/rfc822-message.vala @@ -895,6 +895,9 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { for (int i = 0; i < headers.get_count(); i++) { GMime.Header header = headers.get_header_at(i); string name = header.get_name(); + // We should not parse the raw-value here, but use GMime's parsing + // functionality instead. + // See: https://gitlab.gnome.org/GNOME/geary/merge_requests/382#note_669699 string value = GMime.utils_header_unfold(header.get_raw_value()); switch (name.down()) { case "from": From ca2bab0338ed3e7e9c7542e6cdcb057044be5b67 Mon Sep 17 00:00:00 2001 From: Torben Date: Tue, 17 Dec 2019 13:23:28 +0100 Subject: [PATCH 18/32] Re-activate and improve prepare_header_text_part() test --- test/engine/rfc822-mailbox-address-test.vala | 28 ++++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/test/engine/rfc822-mailbox-address-test.vala b/test/engine/rfc822-mailbox-address-test.vala index d61372e6..fa9ebfb6 100644 --- a/test/engine/rfc822-mailbox-address-test.vala +++ b/test/engine/rfc822-mailbox-address-test.vala @@ -12,6 +12,7 @@ class Geary.RFC822.MailboxAddressTest : TestCase { add_test("is_valid_address", is_valid_address); add_test("unescaped_constructor", unescaped_constructor); add_test("from_rfc822_string_encoded", from_rfc822_string_encoded); + add_test("prepare_header_text_part", prepare_header_text_part); // latter depends on the former, so test that first add_test("has_distinct_name", has_distinct_name); add_test("is_spoofed", is_spoofed); @@ -147,12 +148,29 @@ class Geary.RFC822.MailboxAddressTest : TestCase { addr = new MailboxAddress.from_rfc822_string("\"=?utf-8?Q?=42=45=47=49=4E=20=2F=20=28=7C=29=7C=3C=7C=3E=7C=40=7C=2C=7C=3B=7C=3A=7C=5C=7C=22=7C=2F=7C=5B=7C=5D=7C=3F=7C=2E=7C=3D=20=2F=20=00=20=50=41=53=53=45=44=20=4E=55=4C=4C=20=42=59=54=45=20=2F=20=0D=0A=20=50=41=53=53=45=44=20=43=52=4C=46=20=2F=20?==?utf-8?b?RU5E=?=\""); assert(addr.name == null); assert(addr.address == "BEGIN / (|)|<|>|@|,|;|:|\\|\"|/|[|]|?|.|= / ? PASSED NULL BYTE / \r\n PASSED CRLF / END"); + } catch (Error err) { + assert_not_reached(); + } + } - // Disabled since GMime doen't seem to recognize this as a valid address (might be fixable with different parser options) - //addr = new MailboxAddress.from_rfc822_string("=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?="); - //assert(addr.name == "Firstname ¯_(ツ)_/¯ Lastname via=?UTF-8?Q?_Vendor=22_"); - //assert(addr.mailbox == "system"); - //assert(addr.domain == "vendor.com"); + public void prepare_header_text_part() throws Error { + try { + // Test if prepare_header_text_part() can handle crappy input without grilling the CPU + addr = new MailboxAddress.imap( + "=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?=", + null, + "=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?=", + "vendor.com"); + assert(addr.name == "\"Firstname \"¯_(ツ)_/¯\" Lastname via Vendor\" "); + assert(addr.mailbox == "\"Firstname \"¯_(ツ)_/¯\" Lastname via Vendor\" "); + + // A second test with the input that have been passed to prepare_header_text_part() by the pre-GMime3 tests + MailboxAddress addr = new MailboxAddress.imap( + "\"Firstname \"¯_(ツ)_/¯\" Lastname via=?UTF-8?Q?_Vendor=22_", + null, + "system", + "vendor.com"); + assert(addr.name == "Firstname ¯_(ツ)_/¯ Lastname via=?UTF-8?Q?_Vendor=22_"); } catch (Error err) { assert_not_reached(); } From 7da9ee125252a28c787928aeb1c79708d27d3cbb Mon Sep 17 00:00:00 2001 From: Torben Date: Tue, 17 Dec 2019 13:41:35 +0100 Subject: [PATCH 19/32] Fix undefined variable error --- test/engine/rfc822-mailbox-address-test.vala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/engine/rfc822-mailbox-address-test.vala b/test/engine/rfc822-mailbox-address-test.vala index fa9ebfb6..714da286 100644 --- a/test/engine/rfc822-mailbox-address-test.vala +++ b/test/engine/rfc822-mailbox-address-test.vala @@ -156,7 +156,7 @@ class Geary.RFC822.MailboxAddressTest : TestCase { public void prepare_header_text_part() throws Error { try { // Test if prepare_header_text_part() can handle crappy input without grilling the CPU - addr = new MailboxAddress.imap( + MailboxAddress addr = new MailboxAddress.imap( "=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?=", null, "=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?=", @@ -165,7 +165,7 @@ class Geary.RFC822.MailboxAddressTest : TestCase { assert(addr.mailbox == "\"Firstname \"¯_(ツ)_/¯\" Lastname via Vendor\" "); // A second test with the input that have been passed to prepare_header_text_part() by the pre-GMime3 tests - MailboxAddress addr = new MailboxAddress.imap( + addr = new MailboxAddress.imap( "\"Firstname \"¯_(ツ)_/¯\" Lastname via=?UTF-8?Q?_Vendor=22_", null, "system", From e1295d2aa714af2781cc3dbc55779aac0db488e3 Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Sat, 21 Dec 2019 18:23:40 +1100 Subject: [PATCH 20/32] Fix crash in `Geary.RFC822.Message.without_bcc` Second GMime workaround in that method no longer needed, and was causing a crash, so remove it. --- src/engine/rfc822/rfc822-message.vala | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/engine/rfc822/rfc822-message.vala b/src/engine/rfc822/rfc822-message.vala index e14093e3..df65b932 100644 --- a/src/engine/rfc822/rfc822-message.vala +++ b/src/engine/rfc822/rfc822-message.vala @@ -388,21 +388,8 @@ public class Geary.RFC822.Message : BaseObject, EmailHeaderSet { // create the new object. Kinda sucks, but our hands are tied. this.from_buffer(email.message_to_memory_buffer(false, false)); - // GMime also drops the ball for the *new* message. When it comes out of the GMime - // Parser, its "mime part" somehow isn't realizing it has a Content-Type header - // already, so whenever you manipulate the headers, it adds a duplicate one. This - // odd looking hack ensures that any header manipulation is done while the "mime - // part" is an empty object, and when we re-set the "mime part", there's only the - // one Content-Type header. In other words, this hack prevents the duplicate - // header, somehow. - GMime.Object original_mime_part = message.get_mime_part(); - GMime.Message empty = new GMime.Message(true); - message.set_mime_part(empty.get_mime_part()); - - message.remove_header(HEADER_BCC); - bcc = null; - - message.set_mime_part(original_mime_part); + this.message.remove_header(HEADER_BCC); + this.bcc = null; } private GMime.Object? coalesce_related(Gee.List parts, From b08cee788398f7ca6bd794ad93927794d05db082 Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Sat, 21 Dec 2019 18:31:03 +1100 Subject: [PATCH 21/32] Fix build warning. --- test/engine/rfc822-mailbox-address-test.vala | 36 +++++++++----------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/test/engine/rfc822-mailbox-address-test.vala b/test/engine/rfc822-mailbox-address-test.vala index 714da286..6b47a81f 100644 --- a/test/engine/rfc822-mailbox-address-test.vala +++ b/test/engine/rfc822-mailbox-address-test.vala @@ -153,27 +153,23 @@ class Geary.RFC822.MailboxAddressTest : TestCase { } } - public void prepare_header_text_part() throws Error { - try { - // Test if prepare_header_text_part() can handle crappy input without grilling the CPU - MailboxAddress addr = new MailboxAddress.imap( - "=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?=", - null, - "=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?=", - "vendor.com"); - assert(addr.name == "\"Firstname \"¯_(ツ)_/¯\" Lastname via Vendor\" "); - assert(addr.mailbox == "\"Firstname \"¯_(ツ)_/¯\" Lastname via Vendor\" "); + public void prepare_header_text_part() throws GLib.Error { + // Test if prepare_header_text_part() can handle crappy input without grilling the CPU + MailboxAddress addr = new MailboxAddress.imap( + "=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?=", + null, + "=?UTF-8?Q?=22Firstname_=22=C2=AF\\=5F=28=E3=83=84=29=5F/=C2=AF=22_Lastname_via?==?UTF-8?Q?_Vendor=22_?=", + "vendor.com"); + assert(addr.name == "\"Firstname \"¯_(ツ)_/¯\" Lastname via Vendor\" "); + assert(addr.mailbox == "\"Firstname \"¯_(ツ)_/¯\" Lastname via Vendor\" "); - // A second test with the input that have been passed to prepare_header_text_part() by the pre-GMime3 tests - addr = new MailboxAddress.imap( - "\"Firstname \"¯_(ツ)_/¯\" Lastname via=?UTF-8?Q?_Vendor=22_", - null, - "system", - "vendor.com"); - assert(addr.name == "Firstname ¯_(ツ)_/¯ Lastname via=?UTF-8?Q?_Vendor=22_"); - } catch (Error err) { - assert_not_reached(); - } + // A second test with the input that have been passed to prepare_header_text_part() by the pre-GMime3 tests + addr = new MailboxAddress.imap( + "\"Firstname \"¯_(ツ)_/¯\" Lastname via=?UTF-8?Q?_Vendor=22_", + null, + "system", + "vendor.com"); + assert(addr.name == "Firstname ¯_(ツ)_/¯ Lastname via=?UTF-8?Q?_Vendor=22_"); } public void has_distinct_name() throws Error { From 4f25f652362e8b229bb580985fcc64609e6ccafb Mon Sep 17 00:00:00 2001 From: Anders Jonsson Date: Sun, 22 Dec 2019 21:34:53 +0000 Subject: [PATCH 22/32] Update Swedish translation --- po/sv.po | 1963 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 1100 insertions(+), 863 deletions(-) diff --git a/po/sv.po b/po/sv.po index c5e1da49..3591f4f6 100644 --- a/po/sv.po +++ b/po/sv.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: geary\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" -"POT-Creation-Date: 2019-08-31 09:46+0000\n" -"PO-Revision-Date: 2019-09-02 13:31+0200\n" +"POT-Creation-Date: 2019-12-17 23:56+0000\n" +"PO-Revision-Date: 2019-12-22 22:26+0100\n" "Last-Translator: Anders Jonsson \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -27,7 +27,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.2.3\n" +"X-Generator: Poedit 2.2.4\n" #: desktop/geary-attach.contract.desktop.in:3 msgid "Send by email" @@ -42,6 +42,7 @@ msgstr "Skicka filer med Geary" #: desktop/org.gnome.Geary.appdata.xml.in.in:12 #: desktop/org.gnome.Geary.desktop.in.in:3 #: src/client/accounts/accounts-editor-servers-pane.vala:555 +#: src/client/application/application-main-window.vala:547 msgid "Geary" msgstr "Geary" @@ -54,7 +55,7 @@ msgstr "E-post" #: desktop/geary-autostart.desktop.in.in:5 #: desktop/org.gnome.Geary.appdata.xml.in.in:16 #: desktop/org.gnome.Geary.desktop.in.in:5 -#: src/client/application/geary-application.vala:30 +#: src/client/application/application-client.vala:32 msgid "Send and receive email" msgstr "Skicka och ta emot e-post" @@ -133,6 +134,10 @@ msgstr "E-post;Epost;IMAP;GMail;Yahoo;Hotmail;Outlook;" msgid "Compose Message" msgstr "Skriv meddelande" +#: desktop/org.gnome.Geary.desktop.in.in:26 +msgid "New Window" +msgstr "Nytt fönster" + #: desktop/org.gnome.Geary.gschema.xml:8 msgid "Maximize window" msgstr "Maximera fönster" @@ -215,10 +220,22 @@ msgid "True if we should display a short preview of each message." msgstr "True om en kort förhandsvisning ska visas för varje meddelande." #: desktop/org.gnome.Geary.gschema.xml:68 +msgid "Use single key shortcuts" +msgstr "Använd kortkommandon med en tangent" + +#: desktop/org.gnome.Geary.gschema.xml:69 +msgid "" +"Enables shortcuts for email actions that do not require pressing to " +"emulate those used by Gmail." +msgstr "" +"Aktiverar kortkommandon för e-poståtgärder som inte kräver att trycks " +"ned, för att emulera de som används av Gmail." + +#: desktop/org.gnome.Geary.gschema.xml:76 msgid "Languages that shall be used in the spell checker" msgstr "Språk som ska användas i stavningskontrollen" -#: desktop/org.gnome.Geary.gschema.xml:69 +#: desktop/org.gnome.Geary.gschema.xml:77 msgid "" "A list of POSIX locales, with the empty list disabling spell checking and " "the null list using desktop languages by default." @@ -226,89 +243,85 @@ msgstr "" "En lista över POSIX-lokaler, där en tom lista inaktiverar stavningskontroll " "och null-listan använder skrivbordets språk som standard." -#: desktop/org.gnome.Geary.gschema.xml:76 +#: desktop/org.gnome.Geary.gschema.xml:84 msgid "Languages that are displayed in the spell checker popover" msgstr "Språk som visas i stavningskontrollens kontextfönster" -#: desktop/org.gnome.Geary.gschema.xml:77 +#: desktop/org.gnome.Geary.gschema.xml:85 msgid "" "List of languages that are always displayed in the popover of the spell " "checker." msgstr "" "Lista över språk som alltid visas i stavningskontrollens kontextfönster." -#: desktop/org.gnome.Geary.gschema.xml:82 -msgid "Enable notification sounds" -msgstr "Aktivera aviseringsljud" - -#: desktop/org.gnome.Geary.gschema.xml:83 -msgid "True to play sounds for notifications and sending." -msgstr "True för att spela ljud för aviseringar och för att skicka." - -#: desktop/org.gnome.Geary.gschema.xml:88 -msgid "Show notifications for new mail" -msgstr "Visa aviseringar för ny e-post" - -#: desktop/org.gnome.Geary.gschema.xml:89 -msgid "True to show notification bubbles." -msgstr "True för att visa aviseringsbubblor." - -#: desktop/org.gnome.Geary.gschema.xml:94 +#: desktop/org.gnome.Geary.gschema.xml:90 msgid "Notify of new mail at startup" msgstr "Avisera om ny e-post vid uppstart" -#: desktop/org.gnome.Geary.gschema.xml:95 +#: desktop/org.gnome.Geary.gschema.xml:91 msgid "True to notify of new mail at startup." msgstr "True för att avisera om ny e-post vid uppstart." -#: desktop/org.gnome.Geary.gschema.xml:100 +#: desktop/org.gnome.Geary.gschema.xml:96 msgid "Ask when opening an attachment" msgstr "Fråga vid öppnandet av en bilaga" -#: desktop/org.gnome.Geary.gschema.xml:101 +#: desktop/org.gnome.Geary.gschema.xml:97 msgid "True to ask when opening an attachment." msgstr "True för att fråga vid öppnandet av en bilaga." -#: desktop/org.gnome.Geary.gschema.xml:106 +#: desktop/org.gnome.Geary.gschema.xml:102 msgid "Whether to compose emails in HTML" msgstr "Huruvida e-post ska skrivas i html" -#: desktop/org.gnome.Geary.gschema.xml:107 +#: desktop/org.gnome.Geary.gschema.xml:103 msgid "True to compose emails in HTML; false for plain text." msgstr "True för att skriva e-post i html; false för ren text." -#: desktop/org.gnome.Geary.gschema.xml:112 +#: desktop/org.gnome.Geary.gschema.xml:108 msgid "Advisory strategy for full-text searching" msgstr "Rekommenderad strategi för fulltextsökning" -#: desktop/org.gnome.Geary.gschema.xml:113 +#: desktop/org.gnome.Geary.gschema.xml:109 msgid "" "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." msgstr "" "Tillåtna värden är ”exact”, ”conservative”, ”aggressive”, och ”horizon”." -#: desktop/org.gnome.Geary.gschema.xml:118 +#: desktop/org.gnome.Geary.gschema.xml:114 msgid "Zoom of conversation viewer" msgstr "Zooma till konversationsvisaren" -#: desktop/org.gnome.Geary.gschema.xml:119 +#: desktop/org.gnome.Geary.gschema.xml:115 msgid "The zoom to apply on the conservation view." msgstr "Zoom att tillämpa på konversationsvyn." -#: desktop/org.gnome.Geary.gschema.xml:124 +#: desktop/org.gnome.Geary.gschema.xml:120 msgid "Size of detached composer window" msgstr "Storlek på frånkopplat textinmatningsfönster" -#: desktop/org.gnome.Geary.gschema.xml:125 +#: desktop/org.gnome.Geary.gschema.xml:121 msgid "The last recorded size of the detached composer window." msgstr "" "Den senast lagrade storleken för det frikopplade textinmatningsfönstret." -#: desktop/org.gnome.Geary.gschema.xml:130 +#: desktop/org.gnome.Geary.gschema.xml:126 +msgid "Undo sending email delay" +msgstr "Fördröjning för att kunna ångra sändande av e-post" + +#: desktop/org.gnome.Geary.gschema.xml:127 +msgid "" +"The number of seconds to wait before sending an email. Set to zero or less " +"to disable." +msgstr "" +"Antalet sekunder att vänta innan ett e-postmeddelande skickas. Ställ in till " +"noll eller mindre för att inaktivera." + +#: desktop/org.gnome.Geary.gschema.xml:133 msgid "Whether we migrated the old settings" msgstr "Huruvida de gamla inställningarna migrerades" -#: desktop/org.gnome.Geary.gschema.xml:131 +#: desktop/org.gnome.Geary.gschema.xml:134 msgid "" "False to check for the old “org.yorba.geary”-schema and copy its values." msgstr "" @@ -318,24 +331,24 @@ msgstr "" #. Translators: In-app notification label, when #. the app had a problem pinning an otherwise #. untrusted TLS certificate -#: src/client/accounts/accounts-editor.vala:204 +#: src/client/accounts/accounts-editor.vala:210 msgid "Failed to store certificate" msgstr "Misslyckades med att lagra certifikat" #. Translators: Label for adding an email account #. account for a generic IMAP service provider. -#: src/client/accounts/accounts-editor-add-pane.vala:109 +#: src/client/accounts/accounts-editor-add-pane.vala:108 msgid "All others" msgstr "Alla andra" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:196 +#: src/client/accounts/accounts-editor-add-pane.vala:195 #: src/client/accounts/accounts-editor-servers-pane.vala:316 msgid "Check your receiving login and password" msgstr "Kontrollera din inloggning och lösenord för mottagning" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:211 +#: src/client/accounts/accounts-editor-add-pane.vala:210 #: src/client/accounts/accounts-editor-servers-pane.vala:329 msgid "Check your receiving server details" msgstr "Kontrollera dina detaljer för mottagande server" @@ -345,51 +358,51 @@ msgstr "Kontrollera dina detaljer för mottagande server" #. succeeded, so the user probably needs to #. specify custom creds here #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:233 +#: src/client/accounts/accounts-editor-add-pane.vala:232 #: src/client/accounts/accounts-editor-servers-pane.vala:350 msgid "Check your sending login and password" msgstr "Kontrollera din inloggning och lösenord för sändning" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:247 +#: src/client/accounts/accounts-editor-add-pane.vala:246 #: src/client/accounts/accounts-editor-servers-pane.vala:363 msgid "Check your sending server details" msgstr "Kontrollera dina detaljer för sändande server" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:262 +#: src/client/accounts/accounts-editor-add-pane.vala:261 msgid "Check your email address and password" msgstr "Kontrollera din e-postadress och lösenord" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:273 +#: src/client/accounts/accounts-editor-add-pane.vala:272 msgid "Could not connect, check your network" msgstr "Det gick inte att ansluta, kontrollera ditt nätverk" #. Translators: In-app notification label for a #. generic error creating an account -#: src/client/accounts/accounts-editor-add-pane.vala:286 +#: src/client/accounts/accounts-editor-add-pane.vala:285 msgid "An unexpected problem occurred" msgstr "Ett oväntat problem uppstod" #. Translators: In-app notification label, the #. string substitution is a more detailed reason. -#: src/client/accounts/accounts-editor-add-pane.vala:304 +#: src/client/accounts/accounts-editor-add-pane.vala:303 #, c-format msgid "Account not created: %s" msgstr "Konto inte skapat: %s" #. Translators: Label for the person's actual name when adding #. an account -#: src/client/accounts/accounts-editor-add-pane.vala:551 +#: src/client/accounts/accounts-editor-add-pane.vala:558 msgid "Your name" msgstr "Ditt namn" #. Translators: Label used for the address part of an #. email address when editing a user's sender address #. preferences for an account. -#: src/client/accounts/accounts-editor-add-pane.vala:568 -#: src/client/accounts/accounts-editor-edit-pane.vala:501 +#: src/client/accounts/accounts-editor-add-pane.vala:575 +#: src/client/accounts/accounts-editor-edit-pane.vala:513 msgid "Email address" msgstr "E-postadress" @@ -398,8 +411,8 @@ msgstr "E-postadress" #. Translators: This is used as a placeholder for the #. address part of an email address when editing a user's #. sender address preferences for an account. -#: src/client/accounts/accounts-editor-add-pane.vala:571 -#: src/client/accounts/accounts-editor-edit-pane.vala:469 +#: src/client/accounts/accounts-editor-add-pane.vala:579 +#: src/client/accounts/accounts-editor-edit-pane.vala:479 msgid "person@example.com" msgstr "person@example.com" @@ -407,15 +420,15 @@ msgstr "person@example.com" #. when adding an account #. Translators: Label for the user's login name for an #. IMAP, SMTP, etc service -#: src/client/accounts/accounts-editor-add-pane.vala:585 -#: src/client/accounts/accounts-editor-servers-pane.vala:880 +#: src/client/accounts/accounts-editor-add-pane.vala:593 +#: src/client/accounts/accounts-editor-servers-pane.vala:884 msgid "Login name" msgstr "Inloggningsnamn" #. Translators: Label for the user's password for an IMAP, #. SMTP, etc service -#: src/client/accounts/accounts-editor-add-pane.vala:599 -#: src/client/accounts/accounts-editor-servers-pane.vala:999 +#: src/client/accounts/accounts-editor-add-pane.vala:607 +#: src/client/accounts/accounts-editor-servers-pane.vala:1006 #: ui/password-dialog.glade:108 msgid "Password" msgstr "Lösenord" @@ -424,14 +437,14 @@ msgstr "Lösenord" #. adding an account. #. Translators: This label describes the host name or IP #. address and port used by an account's IMAP service. -#: src/client/accounts/accounts-editor-add-pane.vala:621 -#: src/client/accounts/accounts-editor-servers-pane.vala:727 +#: src/client/accounts/accounts-editor-add-pane.vala:629 +#: src/client/accounts/accounts-editor-servers-pane.vala:728 msgid "IMAP server" msgstr "IMAP-server" #. Translators: Placeholder for the IMAP server hostname #. when adding an account. -#: src/client/accounts/accounts-editor-add-pane.vala:624 +#: src/client/accounts/accounts-editor-add-pane.vala:632 msgid "imap.example.com" msgstr "email@exempel.se" @@ -439,20 +452,20 @@ msgstr "email@exempel.se" #. adding an account. #. Translators: This label describes the host name or IP #. address and port used by an account's SMTP service. -#: src/client/accounts/accounts-editor-add-pane.vala:630 -#: src/client/accounts/accounts-editor-servers-pane.vala:733 +#: src/client/accounts/accounts-editor-add-pane.vala:638 +#: src/client/accounts/accounts-editor-servers-pane.vala:734 msgid "SMTP server" msgstr "SMTP-server" #. Translators: Placeholder for the SMTP server hostname #. when adding an account. -#: src/client/accounts/accounts-editor-add-pane.vala:633 +#: src/client/accounts/accounts-editor-add-pane.vala:641 msgid "smtp.example.com" msgstr "smtp.exempel.se" #. Translators: Label in the account editor for the user's #. custom name for an account. -#: src/client/accounts/accounts-editor-edit-pane.vala:278 +#: src/client/accounts/accounts-editor-edit-pane.vala:277 #: ui/accounts_editor_remove_pane.ui:123 msgid "Account name" msgstr "Kontonamn" @@ -461,46 +474,46 @@ msgstr "Kontonamn" #. the name of an account. The string #. substitution is the old name of the #. account. -#: src/client/accounts/accounts-editor-edit-pane.vala:312 +#: src/client/accounts/accounts-editor-edit-pane.vala:318 #, c-format msgid "Change account name back to “%s”" msgstr "Ändra tillbaka kontonamn till ”%s”" #. Translators: Tooltip for adding a new email sender/from #. address's address to an account -#: src/client/accounts/accounts-editor-edit-pane.vala:336 +#: src/client/accounts/accounts-editor-edit-pane.vala:342 msgid "Add a new sender email address" msgstr "Lägg till en ny e-postadress för sändning" #. Translators: Label used to indicate the user has #. provided no display name for one of their sender #. email addresses in their account settings. -#: src/client/accounts/accounts-editor-edit-pane.vala:417 +#: src/client/accounts/accounts-editor-edit-pane.vala:423 msgid "Name not set" msgstr "Namn har inte satts" #. Translators: This is used as a placeholder for the #. display name for an email address when editing a user's #. sender address preferences for an account. -#: src/client/accounts/accounts-editor-edit-pane.vala:456 +#: src/client/accounts/accounts-editor-edit-pane.vala:464 msgid "Sender Name" msgstr "Avsändarnamn" -#: src/client/accounts/accounts-editor-edit-pane.vala:479 +#: src/client/accounts/accounts-editor-edit-pane.vala:491 msgid "Remove" msgstr "Ta bort" #. Translators: Label used for the display name part of an #. email address when editing a user's sender address #. preferences for an account. -#: src/client/accounts/accounts-editor-edit-pane.vala:494 +#: src/client/accounts/accounts-editor-edit-pane.vala:506 msgid "Sender name" msgstr "Avsändarnamn" #. Translators: Label used as the undo tooltip after adding an #. new sender email address to an account. The string #. substitution is the email address added. -#: src/client/accounts/accounts-editor-edit-pane.vala:561 +#: src/client/accounts/accounts-editor-edit-pane.vala:573 #, c-format msgid "Remove “%s”" msgstr "Ta bort ”%s”" @@ -508,7 +521,7 @@ msgstr "Ta bort ”%s”" #. Translators: Label used as the undo tooltip after editing a #. sender address for an account. The string substitution is #. the email address edited. -#: src/client/accounts/accounts-editor-edit-pane.vala:601 +#: src/client/accounts/accounts-editor-edit-pane.vala:613 #, c-format msgid "Undo changes to “%s”" msgstr "Ångra ändringar till ”%s”" @@ -516,7 +529,7 @@ msgstr "Ångra ändringar till ”%s”" #. Translators: Label used as the undo tooltip after removing #. a sender address from an account. The string substitution #. is the email address edited. -#: src/client/accounts/accounts-editor-edit-pane.vala:688 +#: src/client/accounts/accounts-editor-edit-pane.vala:700 #, c-format msgid "Add “%s” back" msgstr "Lägg till ”%s” igen" @@ -524,14 +537,14 @@ msgstr "Lägg till ”%s” igen" #. Translators: Label used as the undo tooltip after removing #. a sender address from an account. The string substitution #. is the email address edited. -#: src/client/accounts/accounts-editor-edit-pane.vala:730 +#: src/client/accounts/accounts-editor-edit-pane.vala:742 msgid "Undo signature changes" msgstr "Ångra signaturändringar" #. Translators: This label describes the account #. preference for the length of time (weeks, months or #. years) that past email should be downloaded. -#: src/client/accounts/accounts-editor-edit-pane.vala:778 +#: src/client/accounts/accounts-editor-edit-pane.vala:790 msgid "Download mail" msgstr "Hämta e-post" @@ -540,99 +553,100 @@ msgstr "Hämta e-post" #. should be downloaded for an account. The #. string substitution is the duration, #. e.g. "1 month back". -#: src/client/accounts/accounts-editor-edit-pane.vala:810 +#: src/client/accounts/accounts-editor-edit-pane.vala:822 #, c-format msgid "Change download period back to: %s" msgstr "Ändra hämtningsperiod tillbaka till: %s" -#: src/client/accounts/accounts-editor-edit-pane.vala:831 +#: src/client/accounts/accounts-editor-edit-pane.vala:843 msgid "Everything" msgstr "Allt" -#: src/client/accounts/accounts-editor-edit-pane.vala:835 +#: src/client/accounts/accounts-editor-edit-pane.vala:847 msgid "2 weeks back" msgstr "två veckor tillbaka" -#: src/client/accounts/accounts-editor-edit-pane.vala:839 +#: src/client/accounts/accounts-editor-edit-pane.vala:851 msgid "1 month back" msgstr "en månad tillbaka" -#: src/client/accounts/accounts-editor-edit-pane.vala:843 +#: src/client/accounts/accounts-editor-edit-pane.vala:855 msgid "3 months back" msgstr "tre månader tillbaka" -#: src/client/accounts/accounts-editor-edit-pane.vala:847 +#: src/client/accounts/accounts-editor-edit-pane.vala:859 msgid "6 months back" msgstr "ett halvår tillbaka" -#: src/client/accounts/accounts-editor-edit-pane.vala:851 +#: src/client/accounts/accounts-editor-edit-pane.vala:863 msgid "1 year back" msgstr "ett år tillbaka" -#: src/client/accounts/accounts-editor-edit-pane.vala:855 +#: src/client/accounts/accounts-editor-edit-pane.vala:867 msgid "2 years back" msgstr "2 år tillbaka" -#: src/client/accounts/accounts-editor-edit-pane.vala:859 +#: src/client/accounts/accounts-editor-edit-pane.vala:871 msgid "4 years back" msgstr "4 år tillbaka" -#: src/client/accounts/accounts-editor-edit-pane.vala:865 +#: src/client/accounts/accounts-editor-edit-pane.vala:877 #, c-format msgid "%d day back" msgid_plural "%d days back" msgstr[0] "%d dag tillbaka" msgstr[1] "%d dagar tillbaka" -#: src/client/accounts/accounts-editor-list-pane.vala:247 -#: src/client/application/application-controller.vala:2392 +#: src/client/accounts/accounts-editor-list-pane.vala:248 +#: src/client/application/application-main-window.vala:2037 msgid "Undo" msgstr "Ångra" -#: src/client/accounts/accounts-editor-list-pane.vala:255 +#: src/client/accounts/accounts-editor-list-pane.vala:257 +#: src/client/application/application-main-window.vala:2027 msgid "Redo" msgstr "Gör om" -#: src/client/accounts/accounts-editor-list-pane.vala:349 -#: src/client/accounts/accounts-editor-list-pane.vala:437 +#: src/client/accounts/accounts-editor-list-pane.vala:351 +#: src/client/accounts/accounts-editor-list-pane.vala:439 #: src/client/accounts/accounts-editor-row.vala:279 msgid "Gmail" msgstr "Gmail" -#: src/client/accounts/accounts-editor-list-pane.vala:353 -#: src/client/accounts/accounts-editor-list-pane.vala:441 +#: 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:283 msgid "Outlook.com" msgstr "Outlook.com" -#: src/client/accounts/accounts-editor-list-pane.vala:357 -#: src/client/accounts/accounts-editor-list-pane.vala:445 +#: 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: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:375 +#: src/client/accounts/accounts-editor-list-pane.vala:377 msgid "This account has been disabled" msgstr "Detta konto har inaktiverats" #. Translators: Tooltip for accounts that have been #. loaded but because of some error are not able to be #. used. -#: src/client/accounts/accounts-editor-list-pane.vala:384 +#: src/client/accounts/accounts-editor-list-pane.vala:386 msgid "This account has encountered a problem and is unavailable" msgstr "Detta konto har stött på ett problem och är ej tillgängligt" #. Translators: Label for adding a generic email account -#: src/client/accounts/accounts-editor-list-pane.vala:434 +#: src/client/accounts/accounts-editor-list-pane.vala:436 msgid "Other email providers" msgstr "Andra e-postleverantörer" #. Translators: Notification shown after removing an #. account. The string substitution is the name of the #. account. -#: src/client/accounts/accounts-editor-list-pane.vala:551 +#: src/client/accounts/accounts-editor-list-pane.vala:553 #, c-format msgid "Account “%s” removed" msgstr "Kontot ”%s” togs bort" @@ -640,7 +654,7 @@ msgstr "Kontot ”%s” togs bort" #. Translators: Notification shown after removing an account #. is undone. The string substitution is the name of the #. account. -#: src/client/accounts/accounts-editor-list-pane.vala:558 +#: src/client/accounts/accounts-editor-list-pane.vala:560 #, c-format msgid "Account “%s” restored" msgstr "Kontot ”%s” återställdes" @@ -667,8 +681,8 @@ msgstr "Anslutningssäkerhet" #. Translators: Label used when no auth scheme is used #. by an account's IMAP or SMTP service. #: src/client/accounts/accounts-editor-row.vala:479 -#: src/client/accounts/accounts-editor-servers-pane.vala:752 -#: src/client/accounts/accounts-editor-servers-pane.vala:964 +#: src/client/accounts/accounts-editor-servers-pane.vala:755 +#: src/client/accounts/accounts-editor-servers-pane.vala:970 #: src/engine/api/geary-special-folder-type.vala:58 msgid "None" msgstr "Ingen" @@ -685,7 +699,8 @@ msgstr "TLS" #. credentials (none, use IMAP, custom) when adding a new #. account #. Button label for retrying when a login error has occurred -#: src/client/accounts/accounts-editor-row.vala:534 ui/main-window.ui:346 +#: src/client/accounts/accounts-editor-row.vala:534 +#: ui/application-main-window.ui:346 msgid "Login" msgstr "Inloggning" @@ -745,45 +760,327 @@ msgstr "Spara skickad e-post på server" #. Translators: Label used when an account's IMAP or #. SMTP service uses OAuth2. The string replacement is #. the service's login name. -#: src/client/accounts/accounts-editor-servers-pane.vala:950 +#: src/client/accounts/accounts-editor-servers-pane.vala:956 #, c-format msgid "%s using OAuth2" msgstr "%s använder OAuth2" -#: src/client/accounts/accounts-editor-servers-pane.vala:960 +#: src/client/accounts/accounts-editor-servers-pane.vala:966 msgid "Use receiving server login" msgstr "Använd inloggning för mottagningsserver" #. Translators: File name used in save chooser when saving #. attachments that do not otherwise have a name. -#: src/client/application/application-controller.vala:59 +#: src/client/application/application-attachment-manager.vala:21 msgid "Untitled" msgstr "Namnlös" +#. / Translators: Dialog primary label when prompting to +#. / overwrite a file. The string substitution is the file'sx +#. / name. +#: src/client/application/application-attachment-manager.vala:222 +#, c-format +msgid "A file named “%s” already exists. Do you want to replace it?" +msgstr "En fil med namnet ”%s” finns redan. Vill du ersätta den?" + +#. / Translators: Dialog secondary label when prompting to +#. / overwrite a file. The string substitution is the parent +#. / folder's name. +#: src/client/application/application-attachment-manager.vala:229 +#, c-format +msgid "" +"The file already exists in “%s”. Replacing it will overwrite its contents." +msgstr "" +"Filen finns redan i ”%s”. Att ersätta den kommer att skriva över dess " +"innehåll." + +#: src/client/application/application-attachment-manager.vala:236 +msgid "_Replace" +msgstr "E_rsätt" + +#: src/client/application/application-client.vala:33 +msgid "Copyright 2016 Software Freedom Conservancy Inc." +msgstr "Copyright 2016 Software Freedom Conservancy Inc." + +#: src/client/application/application-client.vala:34 +msgid "Copyright 2016-2019 Geary Development Team." +msgstr "Copyright 2016-2019 Gearys utvecklingsgrupp." + +#: src/client/application/application-client.vala:36 +msgid "Visit the Geary web site" +msgstr "Besök Gearys webbplats" + +#. / Command line option +#: src/client/application/application-client.vala:94 +msgid "Print debug logging" +msgstr "Skriv ut felsökningsloggning" + +#. / Command line option +#: src/client/application/application-client.vala:97 +msgid "Start with the main window hidden (deprecated)" +msgstr "Starta Geary med huvudfönstret dolt (föråldrat)" + +#. / Command line option +#: src/client/application/application-client.vala:100 +msgid "Enable WebKitGTK Inspector in web views" +msgstr "Aktivera WebKitGTK-inspektör i webbvyer" + +#. / Command line option +#: src/client/application/application-client.vala:103 +msgid "Log conversation monitoring" +msgstr "Logga konversationsövervakning" + +#. / Command line option +#: src/client/application/application-client.vala:106 +msgid "Log IMAP network deserialization" +msgstr "Logga avserialisering av IMAP-nätverksdata" + +#. / Command line option. "Normalization" can also be called +#. / "synchronization". +#: src/client/application/application-client.vala:110 +msgid "Log folder normalization" +msgstr "Logga mappsynkronisering" + +#. / Command line option +#: src/client/application/application-client.vala:113 +msgid "Log network activity" +msgstr "Logga nätverksaktivitet" + +#. / Command line option +#: src/client/application/application-client.vala:116 +msgid "Log periodic activity" +msgstr "Logga periodisk aktivitet" + +#. / Command line option. The IMAP replay queue is how changes +#. / on the server are replicated on the client. It could +#. / also be called the IMAP events queue. +#: src/client/application/application-client.vala:121 +msgid "Log IMAP replay queue" +msgstr "Logga IMAP-händelser" + +#. / Command line option. Serialization is how commands and +#. / responses are converted into a stream of bytes for +#. / network transmission +#: src/client/application/application-client.vala:126 +msgid "Log IMAP network serialization" +msgstr "Logga IMAP-nätverksserialisering" + +#. / Command line option +#: src/client/application/application-client.vala:129 +msgid "Log database queries (generates lots of messages)" +msgstr "Logga databasförfrågningar (detta genererar många meddelanden)" + +#. / Command line option +#: src/client/application/application-client.vala:132 +msgid "Perform a graceful quit" +msgstr "Avsluta" + +#: src/client/application/application-client.vala:134 +msgid "Open a new window" +msgstr "Öppna ett nytt fönster" + +#. / Command line option +#: src/client/application/application-client.vala:137 +msgid "Revoke all pinned TLS server certificates" +msgstr "Återkalla alla nålade TLS-servercertifikat" + +#. / Command line option +#: src/client/application/application-client.vala:140 +msgid "Display program version" +msgstr "Visa programversion" + +#. / Application runtime information label +#: src/client/application/application-client.vala:264 +msgid "Geary version" +msgstr "Geary-version" + +#. / Application runtime information label +#: src/client/application/application-client.vala:266 +msgid "Geary revision" +msgstr "Geary-revision" + +#. / Application runtime information label +#: src/client/application/application-client.vala:268 +msgid "GTK version" +msgstr "GTK-version" + +#. / Applciation runtime information label +#: src/client/application/application-client.vala:275 +msgid "GLib version" +msgstr "GLib-version" + +#. / Application runtime information label +#: src/client/application/application-client.vala:282 +msgid "WebKitGTK version" +msgstr "WebKitGTK-version" + +#. / Application runtime information label +#: src/client/application/application-client.vala:289 +msgid "Desktop environment" +msgstr "Skrivbordsmiljö" + +#. Translators: This is the file type displayed for +#. attachments with unknown file types. +#: src/client/application/application-client.vala:291 +#: src/client/components/components-attachment-pane.vala:91 +msgid "Unknown" +msgstr "Okänd" + +#. / Application runtime information label +#: src/client/application/application-client.vala:321 +msgid "Distribution name" +msgstr "Distributionsnamn" + +#. / Application runtime information label +#: src/client/application/application-client.vala:326 +msgid "Distribution release" +msgstr "Distributionsutgåva" + +#. / Application runtime information label +#: src/client/application/application-client.vala:334 +msgid "Installation prefix" +msgstr "Installationsprefix" + +#: src/client/application/application-client.vala:566 +#, c-format +msgid "About %s" +msgstr "Om %s" + +#. Translators: add your name and email address to receive +#. credit in the About dialog For example: Yamada Taro +#. +#: src/client/application/application-client.vala:570 +msgid "translator-credits" +msgstr "" +"Joachim Johansson \n" +"Mattias Eriksson \n" +"Josef Andersson \n" +"Anders Jonsson \n" +"\n" +"Skicka synpunkter på översättningen till\n" +"" + +#. / Warning printed to the console when a deprecated +#. / command line option is used. +#: src/client/application/application-client.vala:938 +msgid "The `--hidden` option is deprecated and will be removed in the future." +msgstr "Flaggan ”--hidden” är föråldrad och kommer att tas bort i framtiden." + +#. / Command line warning, string substitution +#. / is the given argument +#: src/client/application/application-client.vala:971 +#, c-format +msgid "Unrecognised program argument: “%s”" +msgstr "Okänt programargument: ”%s”" + #. / Notification title. -#: src/client/application/application-controller.vala:551 +#: src/client/application/application-controller.vala:457 #, c-format msgid "A problem occurred sending email for %s" msgstr "Ett problem uppstod då e-post skickades för %s" #. / Notification body -#: src/client/application/application-controller.vala:555 +#: src/client/application/application-controller.vala:461 msgid "Email will not be sent until re-connected" msgstr "E-post kommer inte att skickas innan du är ansluten igen" -#: src/client/application/application-controller.vala:906 -msgid "Labels" -msgstr "Etiketter" +#. / Translators: Label for in-app notification +#: src/client/application/application-controller.vala:567 +msgid "Conversation marked" +msgid_plural "Conversations marked" +msgstr[0] "Konversation markerad" +msgstr[1] "Konversationer markerade" -#. give the user two options: reset the Account local store, or exit Geary. A third -#. could be done to leave the Account in an unopened state, but we don't currently -#. have provisions for that. -#: src/client/application/application-controller.vala:919 +#. / Translators: Label for in-app notification +#: src/client/application/application-controller.vala:573 +msgid "Conversation un-marked" +msgid_plural "Conversations un-marked" +msgstr[0] "Konversation avmarkerad" +msgstr[1] "Konversationer avmarkerade" + +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the destination folder. +#: src/client/application/application-controller.vala:599 +#: src/client/application/application-controller.vala:683 +#, c-format +msgid "Conversation moved to %s" +msgid_plural "Conversations moved to %s" +msgstr[0] "Konversation flyttad till %s" +msgstr[1] "Konversationer flyttades till %s" + +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the source folder. +#. / Translators: Label for in-app notification. String +#. / substitution is the name of the destination folder. +#: src/client/application/application-controller.vala:607 +#: src/client/application/application-controller.vala:629 +#, c-format +msgid "Conversation restored to %s" +msgid_plural "Conversations restored to %s" +msgstr[0] "Konversation återställd till %s" +msgstr[1] "Konversationer återställda till %s" + +#. / Translators: Label for in-app notification. +#: src/client/application/application-controller.vala:650 +msgid "Conversation archived" +msgid_plural "Conversations archived" +msgstr[0] "Konversation arkiverad" +msgstr[1] "Konversationer arkiverade" + +#. / Translators: Label for in-app notification. String +#. / substitution is the name of the destination folder. +#: src/client/application/application-controller.vala:706 +#, c-format +msgid "Message restored to %s" +msgid_plural "Messages restored to %s" +msgstr[0] "Meddelande återställt till %s" +msgstr[1] "Meddelanden återställda till %s" + +#. / Translators: Label for in-app notification. +#: src/client/application/application-controller.vala:727 +msgid "Message archived" +msgid_plural "Messages archived" +msgstr[0] "Meddelande arkiverat" +msgstr[1] "Meddelanden arkiverade" + +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the destination folder. +#: src/client/application/application-controller.vala:762 +#, c-format +msgid "Message moved to %s" +msgid_plural "Messages moved to %s" +msgstr[0] "Meddelande flyttat till %s" +msgstr[1] "Meddelanden flyttade till %s" + +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the destination folder. +#: src/client/application/application-controller.vala:790 +#, c-format +msgid "Conversation labelled as %s" +msgid_plural "Conversations labelled as %s" +msgstr[0] "Konversation etiketterad som %s" +msgstr[1] "Konversationer etiketterade som %s" + +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the destination folder. +#: src/client/application/application-controller.vala:798 +#, c-format +msgid "Conversation un-labelled as %s" +msgid_plural "Conversations un-labelled as %s" +msgstr[0] "Konversation inte längre etiketterad som %s" +msgstr[1] "Konversationer inte längre etiketterade som %s" + +#: src/client/application/application-controller.vala:1221 #, c-format msgid "Unable to open the database for %s" msgstr "Kunde inte öppna databasen för %s" -#: src/client/application/application-controller.vala:920 +#: src/client/application/application-controller.vala:1222 #, c-format msgid "" "There was an error opening the local mail database for this account. This is " @@ -806,20 +1103,20 @@ msgstr "" "Att bygga om databasen medför att alla lokala e-postmeddelanden och bifogade " "filer förstörs. E-post på din server är inte berörda av felet." -#: src/client/application/application-controller.vala:922 +#: src/client/application/application-controller.vala:1224 msgid "_Rebuild" msgstr "_Bygg om" -#: src/client/application/application-controller.vala:922 +#: src/client/application/application-controller.vala:1224 msgid "E_xit" msgstr "_Avsluta" -#: src/client/application/application-controller.vala:931 +#: src/client/application/application-controller.vala:1234 #, c-format msgid "Unable to rebuild database for “%s”" msgstr "Kunde inte bygga om databasen för ”%s”" -#: src/client/application/application-controller.vala:932 +#: src/client/application/application-controller.vala:1235 #, c-format msgid "" "Error during rebuild:\n" @@ -830,18 +1127,110 @@ msgstr "" "\n" "%s" -#: src/client/application/application-controller.vala:1726 +#. / 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:1558 #, c-format -msgid "Moved %d message to %s" -msgid_plural "Moved %d messages to %s" -msgstr[0] "Flyttade %d meddelande till %s" -msgstr[1] "Flyttade %d meddelanden till %s" +msgid "Email sent to %s" +msgstr "E-post skickad till %s" -#: src/client/application/application-controller.vala:1736 +#. / 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 +#, c-format +msgid "Email to %s queued for delivery" +msgstr "E-post till %s köad för leverans" + +#. / Translators: The label for an in-app notification. The +#. / string substitution is a list of recipients of the email. +#: src/client/application/application-controller.vala:2701 +#, c-format +msgid "Email to %s saved" +msgstr "E-post till %s sparad" + +#. / Translators: A label for an in-app notification. +#: src/client/application/application-controller.vala:2716 +#: src/client/application/application-controller.vala:2774 +msgid "Composer could not be restored" +msgstr "Redigeraren kunde inte återställas" + +#. / Translators: The label for an in-app notification. The +#. / string substitution is a list of recipients of the email. +#: src/client/application/application-controller.vala:2759 +#, c-format +msgid "Email to %s discarded" +msgstr "E-post till %s förkastad" + +#. / Translators: Main window title, first string +#. / substitution being the currently selected folder name, +#. / the second being the selected account name. +#: src/client/application/application-main-window.vala:552 +#, c-format +msgid "%s — %s" +msgstr "%s — %s" + +#: src/client/application/application-main-window.vala:961 +msgid "Labels" +msgstr "Etiketter" + +#. / Translators: Primary text for a confirmation dialog +#: src/client/application/application-main-window.vala:1297 +msgid "Do you want to permanently delete this conversation?" +msgid_plural "Do you want to permanently delete these conversations?" +msgstr[0] "Vill du radera denna konversation permanent?" +msgstr[1] "Vill du radera dessa konversationer permanent?" + +#: src/client/application/application-main-window.vala:1302 +#: src/client/application/application-main-window.vala:1317 +msgid "Delete" +msgstr "Radera" + +#. / Translators: Primary text for a confirmation dialog +#: src/client/application/application-main-window.vala:1312 +msgid "Do you want to permanently delete this message?" +msgid_plural "Do you want to permanently delete these messages?" +msgstr[0] "Vill du radera detta meddelande permanent?" +msgstr[1] "Vill du radera dessa meddelanden permanent?" + +#: src/client/application/application-main-window.vala:1325 +#, c-format +msgid "Empty all email from your %s folder?" +msgstr "Ta bort alla e-postmeddelanden från din mapp %s?" + +#: src/client/application/application-main-window.vala:1328 +msgid "This removes the email from Geary and your email server." +msgstr "Detta tar bort e-postmeddelanden från Geary och din e-postserver." + +#: src/client/application/application-main-window.vala:1329 +msgid "This cannot be undone." +msgstr "Detta kan inte ångras." + +#: src/client/application/application-main-window.vala:1330 +#, c-format +msgid "Empty %s" +msgstr "Töm %s" + +#: src/client/application/application-main-window.vala:1660 +#, c-format +msgid "%s (%d)" +msgstr "%s (%d)" + +#. Translators: The first argument will be a +#. description of the document type, the second will +#. be a human-friendly size string. For example: +#. Document (100.9MB) +#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" +#: src/client/components/components-attachment-pane.vala:107 +#: src/client/composer/composer-widget.vala:1815 +#, c-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#: src/client/components/components-attachment-pane.vala:379 msgid "Are you sure you want to open these attachments?" msgstr "Är du säker på att du vill öppna dessa bilagor?" -#: src/client/application/application-controller.vala:1737 +#: src/client/components/components-attachment-pane.vala:380 msgid "" "Attachments may cause damage to your system if opened. Only open files from " "trusted sources." @@ -849,363 +1238,164 @@ msgstr "" "Om du öppnar bifogade filer kan du skada ditt system. Öppna enbart filer " "från kontakter du litar på." -#: src/client/application/application-controller.vala:1738 +#: src/client/components/components-attachment-pane.vala:381 msgid "Don’t _ask me again" msgstr "Fråga _inte igen" -#. Translators: Dialog primary label when prompting to -#. overwrite a file. The string substitution is the file'sx -#. name. -#: src/client/application/application-controller.vala:1861 -#, c-format -msgid "A file named “%s” already exists. Do you want to replace it?" -msgstr "En fil med namnet ”%s” finns redan. Vill du ersätta den?" - -#. Translators: Dialog secondary label when prompting to -#. overwrite a file. The string substitution is the parent -#. folder's name. -#: src/client/application/application-controller.vala:1868 -#, c-format -msgid "" -"The file already exists in “%s”. Replacing it will overwrite its contents." -msgstr "" -"Filen finns redan i ”%s”. Att ersätta den kommer att skriva över dess " -"innehåll." - -#: src/client/application/application-controller.vala:1872 -msgid "_Replace" -msgstr "E_rsätt" - -#: src/client/application/application-controller.vala:2232 -#, c-format -msgid "Empty all email from your %s folder?" -msgstr "Ta bort alla e-postmeddelanden från din mapp %s?" - -#: src/client/application/application-controller.vala:2233 -msgid "This removes the email from Geary and your email server." -msgstr "Detta tar bort e-postmeddelanden från Geary och din e-postserver." - -#: src/client/application/application-controller.vala:2234 -msgid "This cannot be undone." -msgstr "Detta kan inte ångras." - -#: src/client/application/application-controller.vala:2235 -#, c-format -msgid "Empty %s" -msgstr "Töm %s" - -#: src/client/application/application-controller.vala:2252 -#, c-format -msgid "Error emptying %s" -msgstr "Fel vid tömning av %s" - -#: src/client/application/application-controller.vala:2283 -msgid "Do you want to permanently delete this message?" -msgid_plural "Do you want to permanently delete these messages?" -msgstr[0] "Vill du radera detta meddelande permanent?" -msgstr[1] "Vill du radera dessa meddelanden permanent?" - -#: src/client/application/application-controller.vala:2285 -msgid "Delete" -msgstr "Radera" - -#: src/client/application/application-controller.vala:2299 -#, c-format -msgid "Trashed %d message" -msgid_plural "Trashed %d messages" -msgstr[0] "Kastade %d meddelande" -msgstr[1] "Kastade %d meddelanden" - -#: src/client/application/application-controller.vala:2346 -#, c-format -msgid "Archived %d message" -msgid_plural "Archived %d messages" -msgstr[0] "Arkiverade %d meddelande" -msgstr[1] "Arkiverade %d meddelanden" - -#. 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:2474 -#, c-format -msgid "Successfully sent mail to %s." -msgstr "Skickade e-post till %s." - -#: src/client/application/application-controller.vala:2552 -msgid "Failed to open default text editor." -msgstr "Det gick inte att öppna standardtextredigeraren." - -#: src/client/application/geary-application.vala:31 -msgid "Copyright 2016 Software Freedom Conservancy Inc." -msgstr "Copyright 2016 Software Freedom Conservancy Inc." - -#: src/client/application/geary-application.vala:32 -msgid "Copyright 2016-2019 Geary Development Team." -msgstr "Copyright 2016-2019 Gearys utvecklingsgrupp." - -#: src/client/application/geary-application.vala:34 -msgid "Visit the Geary web site" -msgstr "Besök Gearys webbplats" - -#. / Command line option -#: src/client/application/geary-application.vala:109 -msgid "Print debug logging" -msgstr "Skriv ut felsökningsloggning" - -#. / Command line option -#: src/client/application/geary-application.vala:112 -msgid "Start with the main window hidden (deprecated)" -msgstr "Starta Geary med huvudfönstret dolt (föråldrat)" - -#. / Command line option -#: src/client/application/geary-application.vala:115 -msgid "Enable WebKitGTK Inspector in web views" -msgstr "Aktivera WebKitGTK-inspektör i webbvyer" - -#. / Command line option -#: src/client/application/geary-application.vala:118 -msgid "Log conversation monitoring" -msgstr "Logga konversationsövervakning" - -#. / Command line option -#: src/client/application/geary-application.vala:121 -msgid "Log IMAP network deserialization" -msgstr "Logga avserialisering av IMAP-nätverksdata" - -#. / Command line option. "Normalization" can also be called -#. / "synchronization". -#: src/client/application/geary-application.vala:125 -msgid "Log folder normalization" -msgstr "Logga mappsynkronisering" - -#. / Command line option -#: src/client/application/geary-application.vala:128 -msgid "Log network activity" -msgstr "Logga nätverksaktivitet" - -#. / Command line option -#: src/client/application/geary-application.vala:131 -msgid "Log periodic activity" -msgstr "Logga periodisk aktivitet" - -#. / Command line option. The IMAP replay queue is how changes -#. / on the server are replicated on the client. It could -#. / also be called the IMAP events queue. -#: src/client/application/geary-application.vala:136 -msgid "Log IMAP replay queue" -msgstr "Logga IMAP-händelser" - -#. / Command line option. Serialization is how commands and -#. / responses are converted into a stream of bytes for -#. / network transmission -#: src/client/application/geary-application.vala:141 -msgid "Log IMAP network serialization" -msgstr "Logga IMAP-nätverksserialisering" - -#. / Command line option -#: src/client/application/geary-application.vala:144 -msgid "Log database queries (generates lots of messages)" -msgstr "Logga databasförfrågningar (detta genererar många meddelanden)" - -#. / Command line option -#: src/client/application/geary-application.vala:147 -msgid "Perform a graceful quit" -msgstr "Avsluta" - -#. / Command line option -#: src/client/application/geary-application.vala:150 -msgid "Revoke all pinned TLS server certificates" -msgstr "Återkalla alla nålade TLS-servercertifikat" - -#. / Command line option -#: src/client/application/geary-application.vala:153 -msgid "Display program version" -msgstr "Visa programversion" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:280 -msgid "Geary version" -msgstr "Geary-version" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:282 -msgid "Geary revision" -msgstr "Geary-revision" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:284 -msgid "GTK version" -msgstr "GTK-version" - -#. / Applciation runtime information label -#: src/client/application/geary-application.vala:291 -msgid "GLib version" -msgstr "GLib-version" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:298 -msgid "WebKitGTK version" -msgstr "WebKitGTK-version" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:305 -msgid "Desktop environment" -msgstr "Skrivbordsmiljö" - -#. Translators: This is the file type displayed for -#. attachments with unknown file types. -#: src/client/application/geary-application.vala:307 -#: src/client/conversation-viewer/conversation-email.vala:159 -msgid "Unknown" -msgstr "Okänd" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:337 -msgid "Distribution name" -msgstr "Distributionsnamn" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:342 -msgid "Distribution release" -msgstr "Distributionsutgåva" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:350 -msgid "Installation prefix" -msgstr "Installationsprefix" - -#: src/client/application/geary-application.vala:490 -#, c-format -msgid "About %s" -msgstr "Om %s" - -#. Translators: add your name and email address to receive -#. credit in the About dialog For example: Yamada Taro -#. -#: src/client/application/geary-application.vala:494 -msgid "translator-credits" -msgstr "" -"Joachim Johansson \n" -"Mattias Eriksson \n" -"Josef Andersson \n" -"Anders Jonsson \n" -"\n" -"Skicka synpunkter på översättningen till\n" -"" - -#. / Warning printed to the console when a deprecated -#. / command line option is used. -#: src/client/application/geary-application.vala:778 -msgid "The `--hidden` option is deprecated and will be removed in the future." -msgstr "Flaggan ”--hidden” är föråldrad och kommer att tas bort i framtiden." - -#. / Command line warning, string substitution -#. / is the given argument -#: src/client/application/geary-application.vala:810 -#, c-format -msgid "Unrecognised program argument: “%s”" -msgstr "Okänt programargument: ”%s”" - -#: src/client/components/components-inspector.vala:68 +#: src/client/components/components-inspector.vala:72 msgid "Inspector" msgstr "Inspektör" #. / Translators: Title for Inspector logs pane #. / Translators: Title for problem report dialog logs pane -#: src/client/components/components-inspector.vala:77 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:91 +#: src/client/components/components-inspector.vala:87 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 msgid "Logs" msgstr "Loggar" #. / Translators: Title for Inspector system system information pane #. / Translators: Title for problem report system information #. / pane -#: src/client/components/components-inspector.vala:81 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:94 +#: src/client/components/components-inspector.vala:91 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 msgid "System" msgstr "System" #. Button label for saving problem report information -#: src/client/components/components-inspector.vala:198 -#: src/client/components/components-inspector.vala:201 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:210 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:213 +#: src/client/components/components-inspector.vala:208 +#: src/client/components/components-inspector.vala:211 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 #: ui/problem-details-dialog.ui:42 msgid "Save As" msgstr "Spara som" -#: src/client/components/components-inspector.vala:202 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:214 +#: src/client/components/components-inspector.vala:212 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 #: ui/accounts_editor_servers_pane.ui:17 msgid "Cancel" msgstr "Avbryt" +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:43 +msgid "_Automatically select next message" +msgstr "Välj nästa meddelande _automatiskt" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:53 +msgid "_Display conversation preview" +msgstr "_Visa förhandsvisning av konversation" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:63 +msgid "Use _three pane view" +msgstr "Använd tredelad vy" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:73 +msgid "Use _single key email shortcuts" +msgstr "Använd e-po_stkortkommandon med en tangent" + +#: src/client/components/components-preferences-window.vala:75 +msgid "" +"Enable keyboard shortcuts for email actions that do not require pressing " +"" +msgstr "" +"Aktivera kortkommandon för e-poståtgärder som inte kräver att trycks " +"ned" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:86 +msgid "_Watch for new mail when closed" +msgstr "_Kontrollera om det finns ny e-post vid avslut" + +#. / Translators: Preferences tooltip +#: src/client/components/components-preferences-window.vala:90 +msgid "Geary will keep running after all windows are closed" +msgstr "Geary kommer att fortsätta köra efter att alla fönster stängts" + +#. / Translators: Search entry placeholder text +#: src/client/components/components-search-bar.vala:12 +#: src/client/folder-list/folder-list-search-branch.vala:53 +#: src/engine/api/geary-special-folder-type.vala:51 +msgid "Search" +msgstr "Sök" + +#. / Translators: Search entry tooltip +#: src/client/components/components-search-bar.vala:32 +msgid "Search all mail in account for keywords" +msgstr "Sök i all e-post i alla konton efter nyckelord" + +#. / Translators: Search entry placeholder, string +#. / replacement is the name of an account +#: src/client/components/components-search-bar.vala:81 +#: src/client/folder-list/folder-list-search-branch.vala:54 +#, c-format +msgid "Search %s account" +msgstr "Sök i konto %s" + #. Translators: Tooltip used when an entry requires a valid #. email address to be entered, but one is not provided. -#: src/client/components/components-validator.vala:378 +#: src/client/components/components-validator.vala:390 msgid "An email address is required" msgstr "En e-postadress krävs" #. Translators: Tooltip used when an entry requires a valid #. email address to be entered, but the address is invalid. -#: src/client/components/components-validator.vala:382 +#: src/client/components/components-validator.vala:394 msgid "Not a valid email address" msgstr "Inte en giltig e-postadress" #. Translators: Tooltip used when an entry requires a valid, #. resolvable server name to be entered, but one is not #. provided. -#: src/client/components/components-validator.vala:428 +#: src/client/components/components-validator.vala:440 msgid "A server name is required" msgstr "Ett servernamn krävs" #. Translators: Tooltip used when an entry requires a valid #. server name to be entered, but it was unable to be #. looked-up in the DNS. -#: src/client/components/components-validator.vala:433 +#: src/client/components/components-validator.vala:445 msgid "Could not look up server name" msgstr "Det gick inte att slå upp servernamn" -#: src/client/components/main-toolbar.vala:139 +#: src/client/components/main-toolbar.vala:142 msgid "Mark conversation" msgid_plural "Mark conversations" msgstr[0] "Markera konversation" msgstr[1] "Markera konversationer" -#: src/client/components/main-toolbar.vala:144 +#: src/client/components/main-toolbar.vala:147 msgid "Add label to conversation" msgid_plural "Add label to conversations" msgstr[0] "Lägg till etikett till konversation" msgstr[1] "Lägg till etikett till konversationer" -#: src/client/components/main-toolbar.vala:149 +#: src/client/components/main-toolbar.vala:152 msgid "Move conversation" msgid_plural "Move conversations" msgstr[0] "Flytta konversation" msgstr[1] "Flytta konversationer" -#: src/client/components/main-toolbar.vala:154 +#: src/client/components/main-toolbar.vala:157 msgid "Archive conversation" msgid_plural "Archive conversations" msgstr[0] "Arkivera konversation" msgstr[1] "Arkivera konversationer" -#: src/client/components/main-toolbar.vala:163 +#: src/client/components/main-toolbar.vala:168 msgid "Move conversation to Trash" msgid_plural "Move conversations to Trash" msgstr[0] "Flytta konversation till papperskorgen" msgstr[1] "Flytta konversationer till papperskorgen" -#: src/client/components/main-toolbar.vala:171 +#: src/client/components/main-toolbar.vala:178 msgid "Delete conversation" msgid_plural "Delete conversations" msgstr[0] "Radera konversation" msgstr[1] "Radera konversationer" -#: src/client/components/main-window.vala:738 -#, c-format -msgid "%s (%d)" -msgstr "%s (%d)" - #. Translators: Info bar title for a generic account #. problem. #: src/client/components/main-window-info-bar.vala:44 @@ -1275,28 +1465,6 @@ msgstr "Visa teknisk information om felet" msgid "_Retry" msgstr "_Försök igen" -#: src/client/components/search-bar.vala:8 -#: src/client/folder-list/folder-list-search-branch.vala:38 -#: src/engine/api/geary-special-folder-type.vala:51 -msgid "Search" -msgstr "Sök" - -#. Search entry. -#: src/client/components/search-bar.vala:23 -msgid "Search all mail in account for keywords (Ctrl+S)" -msgstr "Sök i all e-post i alla konton efter nyckelord (Ctrl+S)" - -#: src/client/components/search-bar.vala:83 -#, c-format -msgid "Indexing %s account" -msgstr "Indexerar %s konto" - -#: src/client/components/search-bar.vala:110 -#: src/client/folder-list/folder-list-search-branch.vala:39 -#, c-format -msgid "Search %s account" -msgstr "Sök i konto %s" - #. / Displayed in the space-limited status bar while a message is in the process of being sent. #: src/client/components/status-bar.vala:26 msgid "Sending…" @@ -1337,15 +1505,15 @@ msgstr "_Stäng" msgid "_Discard" msgstr "_Förkasta" -#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:56 +#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:52 msgid "_Help" msgstr "_Hjälp" -#: src/client/components/stock.vala:26 ui/conversation-email-menus.ui:77 +#: src/client/components/stock.vala:26 ui/components-attachment-pane-menus.ui:7 msgid "_Open" msgstr "_Öppna" -#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:46 +#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:42 msgid "_Preferences" msgstr "_Inställningar" @@ -1362,7 +1530,8 @@ msgstr "_Avsluta" msgid "_Remove" msgstr "_Ta bort" -#: src/client/components/stock.vala:31 ui/conversation-email-menus.ui:83 +#: src/client/components/stock.vala:31 +#: ui/components-attachment-pane-menus.ui:11 msgid "_Save" msgstr "_Spara" @@ -1383,27 +1552,33 @@ msgstr "Ogiltig länk-URL" msgid "Invalid email address" msgstr "Ogiltig e-postadress" -#: src/client/composer/composer-widget.vala:156 +#. / Translators: Title for an empty composer window +#: src/client/composer/composer-widget.vala:28 +msgid "New Message" +msgstr "Nytt meddelande" + +#: src/client/composer/composer-widget.vala:210 msgid "Saved" msgstr "Sparat" -#: src/client/composer/composer-widget.vala:157 +#: src/client/composer/composer-widget.vala:211 msgid "Saving" msgstr "Sparar" -#: src/client/composer/composer-widget.vala:158 +#: src/client/composer/composer-widget.vala:212 msgid "Error saving" msgstr "Misslyckades med att spara" -#: src/client/composer/composer-widget.vala:159 +#: src/client/composer/composer-widget.vala:213 msgid "Press Backspace to delete quote" msgstr "Tryck på Backsteg för att ta bort citat" #. Translators: This is list of keywords, separated by pipe ("|") #. characters, that suggest an attachment; since this is full-word -#. checking, include all variants of each word. No spaces are -#. allowed. -#: src/client/composer/composer-widget.vala:168 +#. checking, include all variants of each word. No spaces are +#. allowed. The words will be converted to lower case based on +#. locale and English versions included automatically. +#: src/client/composer/composer-widget.vala:229 msgid "" "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" "enclosing|encloses|enclosure|enclosures" @@ -1414,100 +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:1181 +#: src/client/composer/composer-widget.vala:814 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:1211 +#: src/client/composer/composer-widget.vala:840 msgid "Do you want to discard this draft message?" msgstr "Vill du förkasta detta utkast?" -#: src/client/composer/composer-widget.vala:1330 +#: src/client/composer/composer-widget.vala:1484 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:1332 +#: src/client/composer/composer-widget.vala:1486 msgid "Send message with an empty subject?" msgstr "Skicka meddelande med en tom ämnesrad?" -#: src/client/composer/composer-widget.vala:1334 +#: src/client/composer/composer-widget.vala:1488 msgid "Send message with an empty body?" msgstr "Skicka meddelande utan innehåll?" -#: src/client/composer/composer-widget.vala:1338 +#: src/client/composer/composer-widget.vala:1497 msgid "Send message without an attachment?" msgstr "Skicka meddelande utan att bifoga filer?" -#: src/client/composer/composer-widget.vala:1652 +#: src/client/composer/composer-widget.vala:1807 #, c-format msgid "“%s” already attached for delivery." msgstr "”%s” är redan bifogad och kommer att skickas." -#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" -#. Translators: The first argument will be a -#. description of the document type, the second will -#. be a human-friendly size string. For example: -#. Document (100.9MB) -#: src/client/composer/composer-widget.vala:1660 -#: src/client/conversation-viewer/conversation-email.vala:173 -#, c-format -msgid "%s (%s)" -msgstr "%s (%s)" - -#: src/client/composer/composer-widget.vala:1697 -#, c-format -msgid "“%s” could not be found." -msgstr "”%s” kunde inte hittas." - -#: src/client/composer/composer-widget.vala:1703 -#, c-format -msgid "“%s” is a folder." -msgstr "”%s” är en mapp." - -#: src/client/composer/composer-widget.vala:1709 +#: src/client/composer/composer-widget.vala:1837 +#: src/client/composer/composer-widget.vala:1887 #, c-format msgid "“%s” is an empty file." msgstr "”%s” är en tom fil." -#: src/client/composer/composer-widget.vala:1722 +#: src/client/composer/composer-widget.vala:1875 +#, c-format +msgid "“%s” could not be found." +msgstr "”%s” kunde inte hittas." + +#: src/client/composer/composer-widget.vala:1881 +#, c-format +msgid "“%s” is a folder." +msgstr "”%s” är en mapp." + +#: src/client/composer/composer-widget.vala:1900 #, 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:1730 +#: src/client/composer/composer-widget.vala:1908 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:1787 -#: src/client/conversation-viewer/conversation-email.vala:976 -#: src/client/util/util-email.vala:216 ui/conversation-message.ui:312 +#: src/client/composer/composer-widget.vala:1965 +#: 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:1793 -#: src/client/conversation-viewer/conversation-email.vala:981 -#: src/client/util/util-email.vala:221 ui/conversation-message.ui:357 +#: src/client/composer/composer-widget.vala:1971 +#: 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:1799 -#: src/client/conversation-viewer/conversation-email.vala:986 +#: src/client/composer/composer-widget.vala:1977 +#: 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:1805 +#: src/client/composer/composer-widget.vala:1983 msgid "Reply-To: " msgstr "Svara-till: " -#: src/client/composer/composer-widget.vala:1945 +#: src/client/composer/composer-widget.vala:2172 msgid "Select Color" msgstr "Välj färg" @@ -1516,27 +1681,23 @@ 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:2137 +#: src/client/composer/composer-widget.vala:2364 #, 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:2192 +#: src/client/composer/composer-widget.vala:2420 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:2472 +#: src/client/composer/composer-widget.vala:2723 msgid "Images" msgstr "Bilder" -#: src/client/composer/composer-window.vala:14 -msgid "New Message" -msgstr "Nytt meddelande" - #: src/client/composer/spell-check-popover.vala:108 msgid "Remove this language from the preferred list" msgstr "Ta bort detta språk från listan över föredragna språk" @@ -1550,7 +1711,7 @@ msgid "Search for more languages" msgstr "Sök efter fler språk" #. / Translators: Context menu item -#: src/client/conversation-list/conversation-list-view.vala:337 +#: src/client/conversation-list/conversation-list-view.vala:335 msgid "Move conversation to _Trash" msgid_plural "Move conversations to _Trash" msgstr[0] "Flytta konversation till _papperskorgen" @@ -1563,38 +1724,38 @@ msgid_plural "_Delete conversations" msgstr[0] "_Radera konversation" msgstr[1] "_Radera konversationer" -#: src/client/conversation-list/conversation-list-view.vala:356 +#: src/client/conversation-list/conversation-list-view.vala:360 #: ui/main-toolbar-menus.ui:5 msgid "Mark as _Read" msgstr "Markera som _läst" -#: src/client/conversation-list/conversation-list-view.vala:359 +#: src/client/conversation-list/conversation-list-view.vala:368 #: ui/main-toolbar-menus.ui:9 msgid "Mark as _Unread" msgstr "Markera som _oläst" -#: src/client/conversation-list/conversation-list-view.vala:362 +#: src/client/conversation-list/conversation-list-view.vala:376 #: ui/main-toolbar-menus.ui:17 msgid "U_nstar" msgstr "Markera som ov_iktigt" -#: src/client/conversation-list/conversation-list-view.vala:364 +#: src/client/conversation-list/conversation-list-view.vala:383 #: ui/main-toolbar-menus.ui:13 msgid "_Star" msgstr "Markera som _viktigt" #. Translators: Menu item to reply to a specific message. -#: src/client/conversation-list/conversation-list-view.vala:367 +#: src/client/conversation-list/conversation-list-view.vala:392 #: ui/conversation-email-menus.ui:9 msgid "_Reply" msgstr "Sva_ra" -#: src/client/conversation-list/conversation-list-view.vala:368 +#: src/client/conversation-list/conversation-list-view.vala:398 msgid "R_eply All" msgstr "Svara _alla" #. Translators: Menu item to forward a specific message. -#: src/client/conversation-list/conversation-list-view.vala:369 +#: src/client/conversation-list/conversation-list-view.vala:404 #: ui/conversation-email-menus.ui:21 msgid "_Forward" msgstr "Vidare_befordra" @@ -1604,24 +1765,24 @@ msgid "Me" msgstr "Jag" #. Translators: Human-readable version of the RFC 822 From header -#: src/client/conversation-viewer/conversation-email.vala:971 -#: src/client/util/util-email.vala:207 +#: src/client/conversation-viewer/conversation-email.vala:554 +#: src/client/util/util-email.vala:226 msgid "From:" msgstr "Från:" #. Translators: Human-readable version of the RFC 822 Date header -#: src/client/conversation-viewer/conversation-email.vala:991 -#: src/client/util/util-email.vala:212 +#: src/client/conversation-viewer/conversation-email.vala:574 +#: src/client/util/util-email.vala:231 msgid "Date:" msgstr "Datum:" #. Translators: Human-readable version of the RFC 822 Subject header -#: src/client/conversation-viewer/conversation-email.vala:1001 -#: src/client/util/util-email.vala:210 +#: src/client/conversation-viewer/conversation-email.vala:584 +#: src/client/util/util-email.vala:229 msgid "Subject:" msgstr "Ämne:" -#: src/client/conversation-viewer/conversation-message.vala:129 +#: src/client/conversation-viewer/conversation-message.vala:128 msgid "This email address may have been forged" msgstr "E-postadressen kan ha förfalskats" @@ -1629,44 +1790,44 @@ msgstr "E-postadressen kan ha förfalskats" #. in load_contacts. #. Translators: This is displayed in place of the from address #. when the message has no from address. -#: src/client/conversation-viewer/conversation-message.vala:447 +#: src/client/conversation-viewer/conversation-message.vala:465 msgid "No sender" msgstr "Ingen avsändare" #. Translators: This separates multiple 'from' #. addresses in the compact header for a message. -#: src/client/conversation-viewer/conversation-message.vala:840 +#: src/client/conversation-viewer/conversation-message.vala:959 msgid ", " msgstr ", " #. Translators: This string is used as the HTML IMG ALT #. attribute value when displaying an inline image in an email #. that did not specify a file name. E.g. Image Date: Thu, 26 Dec 2019 19:28:07 +0200 Subject: [PATCH 23/32] build: Fix automagic dependency on ytnef library It would be best to use meson feature option type for ytnef and unwind, but for now fix the automagic dependency on ytnef with the existing meson_options.txt setup. It was adding ytnef to list of dependencies unconditionally, and then also if tnef-support was enabled. So if the option was disabled, but the pkg-config file was present, it would still link to it surprisingly. Just remove the unconditional addition to dep, and rely on the already existing conditional addition to deps. --- src/engine/meson.build | 1 - 1 file changed, 1 deletion(-) diff --git a/src/engine/meson.build b/src/engine/meson.build index cb61c2aa..23b5fa48 100644 --- a/src/engine/meson.build +++ b/src/engine/meson.build @@ -325,7 +325,6 @@ geary_engine_dependencies = [ gmime, libmath, libxml, - libytnef, posix, sqlite ] From f56e75af35450f5f9732fc73e8c95703b17fbaee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20Tufan=20=C3=87etin?= Date: Fri, 27 Dec 2019 16:10:36 +0000 Subject: [PATCH 24/32] Update Turkish translation --- po/tr.po | 298 +++++++++++++++++++++++-------------------------------- 1 file changed, 123 insertions(+), 175 deletions(-) diff --git a/po/tr.po b/po/tr.po index 2837036e..ea89e432 100644 --- a/po/tr.po +++ b/po/tr.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: geary.mainline\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" -"POT-Creation-Date: 2019-11-28 14:38+0000\n" -"PO-Revision-Date: 2019-12-02 19:23+0300\n" +"POT-Creation-Date: 2019-12-17 23:56+0000\n" +"PO-Revision-Date: 2019-12-27 16:09+0300\n" "Last-Translator: Emin Tufan Çetin \n" "Language-Team: Turkish \n" "Language: tr\n" @@ -218,8 +218,6 @@ msgid "True if we should display a short preview of each message." msgstr "Her iletinin kısa bir ön izlemesini göstermemiz gerekiyorsa doğru." #: desktop/org.gnome.Geary.gschema.xml:68 -#| msgctxt "shortcut window" -#| msgid "Single-key shortcuts" msgid "Use single key shortcuts" msgstr "Tek tuşlu kısayolları kullan" @@ -307,7 +305,6 @@ msgid "The last recorded size of the detached composer window." msgstr "Ayrılmış oluşturucu penceresinin kaydedilen son boyutu." #: desktop/org.gnome.Geary.gschema.xml:126 -#| msgid "Error sending email" msgid "Undo sending email delay" msgstr "Eposta göndermeyi geri alma gecikmesi" @@ -599,12 +596,12 @@ msgid_plural "%d days back" msgstr[0] "%d gün öncesinden" #: src/client/accounts/accounts-editor-list-pane.vala:248 -#: src/client/application/application-main-window.vala:2021 +#: src/client/application/application-main-window.vala:2037 msgid "Undo" msgstr "Geri Al" #: src/client/accounts/accounts-editor-list-pane.vala:257 -#: src/client/application/application-main-window.vala:2011 +#: src/client/application/application-main-window.vala:2027 msgid "Redo" msgstr "Yinele" @@ -877,7 +874,6 @@ msgid "Perform a graceful quit" msgstr "Hoş bir çıkış gerçekleştir" #: src/client/application/application-client.vala:134 -#| msgid "Use %s to open a new composer window" msgid "Open a new window" msgstr "Yeni pencere aç" @@ -961,36 +957,36 @@ msgstr "" #. / Warning printed to the console when a deprecated #. / command line option is used. -#: src/client/application/application-client.vala:913 +#: src/client/application/application-client.vala:938 msgid "The `--hidden` option is deprecated and will be removed in the future." msgstr "`--hidden` seçeneği terk edilmiştir ve gelecekte kaldırılacaktır." #. / Command line warning, string substitution #. / is the given argument -#: src/client/application/application-client.vala:946 +#: src/client/application/application-client.vala:971 #, c-format msgid "Unrecognised program argument: “%s”" msgstr "Tanınmayan program argümanı: “%s”" #. / Notification title. -#: src/client/application/application-controller.vala:477 +#: src/client/application/application-controller.vala:457 #, c-format msgid "A problem occurred sending email for %s" msgstr "%s için e-posta gönderilirken sorun oluştu" #. / Notification body -#: src/client/application/application-controller.vala:481 +#: src/client/application/application-controller.vala:461 msgid "Email will not be sent until re-connected" msgstr "Yeniden bağlanana dek e-posta gönderilmeyecek" #. / Translators: Label for in-app notification -#: src/client/application/application-controller.vala:587 +#: src/client/application/application-controller.vala:567 msgid "Conversation marked" msgid_plural "Conversations marked" msgstr[0] "Konuşma(lar) imlendi" #. / Translators: Label for in-app notification -#: src/client/application/application-controller.vala:593 +#: src/client/application/application-controller.vala:573 msgid "Conversation un-marked" msgid_plural "Conversations un-marked" msgstr[0] "Konuşmaların imi kaldırıldı" @@ -998,8 +994,8 @@ msgstr[0] "Konuşmaların imi kaldırıldı" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:619 -#: src/client/application/application-controller.vala:703 +#: src/client/application/application-controller.vala:599 +#: src/client/application/application-controller.vala:683 #, c-format msgid "Conversation moved to %s" msgid_plural "Conversations moved to %s" @@ -1010,29 +1006,29 @@ msgstr[0] "Konuşma(lar) şuraya taşındı: %s" #. / of the source folder. #. / Translators: Label for in-app notification. String #. / substitution is the name of the destination folder. -#: src/client/application/application-controller.vala:627 -#: src/client/application/application-controller.vala:649 +#: src/client/application/application-controller.vala:607 +#: src/client/application/application-controller.vala:629 #, c-format msgid "Conversation restored to %s" msgid_plural "Conversations restored to %s" msgstr[0] "Konuşma(lar) şuraya geri yüklendi: %s" #. / Translators: Label for in-app notification. -#: src/client/application/application-controller.vala:670 +#: src/client/application/application-controller.vala:650 msgid "Conversation archived" msgid_plural "Conversations archived" msgstr[0] "Konuşma(lar) arşivlendi" #. / Translators: Label for in-app notification. String #. / substitution is the name of the destination folder. -#: src/client/application/application-controller.vala:726 +#: src/client/application/application-controller.vala:706 #, c-format msgid "Message restored to %s" msgid_plural "Messages restored to %s" msgstr[0] "İleti(ler) şuraya geri yüklendi: %s" #. / Translators: Label for in-app notification. -#: src/client/application/application-controller.vala:747 +#: src/client/application/application-controller.vala:727 msgid "Message archived" msgid_plural "Messages archived" msgstr[0] "İleti(ler) arşivlendi" @@ -1040,7 +1036,7 @@ msgstr[0] "İleti(ler) arşivlendi" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:782 +#: src/client/application/application-controller.vala:762 #, c-format msgid "Message moved to %s" msgid_plural "Messages moved to %s" @@ -1049,7 +1045,7 @@ msgstr[0] "İleti(ler) şuraya taşındı: %s" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:810 +#: src/client/application/application-controller.vala:790 #, c-format msgid "Conversation labelled as %s" msgid_plural "Conversations labelled as %s" @@ -1058,18 +1054,18 @@ msgstr[0] "Konuşma(lar) %s olarak etiketlendi" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:818 +#: src/client/application/application-controller.vala:798 #, c-format msgid "Conversation un-labelled as %s" msgid_plural "Conversations un-labelled as %s" msgstr[0] "Konuşma(lar) %s olarak etiketlenmedi" -#: src/client/application/application-controller.vala:1238 +#: src/client/application/application-controller.vala:1221 #, c-format msgid "Unable to open the database for %s" msgstr "%s için veri tabanı açılamadı" -#: src/client/application/application-controller.vala:1239 +#: src/client/application/application-controller.vala:1222 #, c-format msgid "" "There was an error opening the local mail database for this account. This is " @@ -1093,20 +1089,20 @@ msgstr "" "Veri tabanının yeniden inşa edilmesi tüm yerel e-postaları ve eklerini yok " "edecektir.Sizin sunucunuzdaki postalar etkilenmeyecektir." -#: src/client/application/application-controller.vala:1241 +#: src/client/application/application-controller.vala:1224 msgid "_Rebuild" msgstr "_Yeniden oluştur" -#: src/client/application/application-controller.vala:1241 +#: src/client/application/application-controller.vala:1224 msgid "E_xit" msgstr "Ç_ık" -#: src/client/application/application-controller.vala:1251 +#: src/client/application/application-controller.vala:1234 #, c-format msgid "Unable to rebuild database for “%s”" msgstr "“%s” için veri tabanı yeniden oluşturulamadı" -#: src/client/application/application-controller.vala:1252 +#: src/client/application/application-controller.vala:1235 #, c-format msgid "" "Error during rebuild:\n" @@ -1119,34 +1115,34 @@ msgstr "" #. / Translators: The label for an in-app notification. The #. / string substitution is a list of recipients of the email. -#: src/client/application/application-controller.vala:1575 +#: src/client/application/application-controller.vala:1558 #, c-format msgid "Email sent to %s" msgstr "Şun(lar)a eposta gönderildi: %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:2648 +#: src/client/application/application-controller.vala:2636 #, c-format msgid "Email to %s queued for delivery" msgstr "Şun(lar)a gidecek eposta iletim sırasında: %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:2713 +#: src/client/application/application-controller.vala:2701 #, c-format msgid "Email to %s saved" msgstr "Şun(lar)a gidecek eposta kaydedildi: %s" #. / Translators: A label for an in-app notification. -#: src/client/application/application-controller.vala:2728 -#: src/client/application/application-controller.vala:2786 +#: src/client/application/application-controller.vala:2716 +#: src/client/application/application-controller.vala:2774 msgid "Composer could not be restored" msgstr "Oluşturucu kurtarılamadı" #. / 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:2771 +#: src/client/application/application-controller.vala:2759 #, c-format msgid "Email to %s discarded" msgstr "Şun(lar)a gidecek eposta gözden çıkarıldı: %s" @@ -1159,46 +1155,46 @@ msgstr "Şun(lar)a gidecek eposta gözden çıkarıldı: %s" msgid "%s — %s" msgstr "%s — %s" -#: src/client/application/application-main-window.vala:949 +#: src/client/application/application-main-window.vala:961 msgid "Labels" msgstr "Etiketler" #. / Translators: Primary text for a confirmation dialog -#: src/client/application/application-main-window.vala:1281 +#: src/client/application/application-main-window.vala:1297 msgid "Do you want to permanently delete this conversation?" msgid_plural "Do you want to permanently delete these conversations?" msgstr[0] "Bu konuşmaları kalıcı olarak silmek istiyor musunuz?" -#: src/client/application/application-main-window.vala:1286 -#: src/client/application/application-main-window.vala:1301 +#: src/client/application/application-main-window.vala:1302 +#: src/client/application/application-main-window.vala:1317 msgid "Delete" msgstr "Sil" #. / Translators: Primary text for a confirmation dialog -#: src/client/application/application-main-window.vala:1296 +#: src/client/application/application-main-window.vala:1312 msgid "Do you want to permanently delete this message?" msgid_plural "Do you want to permanently delete these messages?" msgstr[0] "Bu ileti(ler)i kalıcı olarak silmek istiyor musunuz?" -#: src/client/application/application-main-window.vala:1309 +#: src/client/application/application-main-window.vala:1325 #, c-format msgid "Empty all email from your %s folder?" msgstr "%s klasörünüzdeki tüm e-postaları boşalt?" -#: src/client/application/application-main-window.vala:1312 +#: src/client/application/application-main-window.vala:1328 msgid "This removes the email from Geary and your email server." msgstr "Bu işlem e-postayı Geary’den ve e-posta sunucunuzdan kaldırır." -#: src/client/application/application-main-window.vala:1313 +#: src/client/application/application-main-window.vala:1329 msgid "This cannot be undone." msgstr "Bu geri alınamaz." -#: src/client/application/application-main-window.vala:1314 +#: src/client/application/application-main-window.vala:1330 #, c-format msgid "Empty %s" msgstr "%s boşalt" -#: src/client/application/application-main-window.vala:1644 +#: src/client/application/application-main-window.vala:1660 #, c-format msgid "%s (%d)" msgstr "%s (%d)" @@ -1209,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:1796 +#: src/client/composer/composer-widget.vala:1815 #, c-format msgid "%s (%s)" msgstr "%s (%s)" @@ -1237,7 +1233,7 @@ msgstr "İnceleyici" #. / Translators: Title for Inspector logs pane #. / Translators: Title for problem report dialog logs pane #: src/client/components/components-inspector.vala:87 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 msgid "Logs" msgstr "Günlükler" @@ -1245,21 +1241,21 @@ msgstr "Günlükler" #. / Translators: Title for problem report system information #. / pane #: src/client/components/components-inspector.vala:91 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 msgid "System" msgstr "Sistem" #. Button label for saving problem report information #: src/client/components/components-inspector.vala:208 #: src/client/components/components-inspector.vala:211 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 #: ui/problem-details-dialog.ui:42 msgid "Save As" msgstr "Farklı Kaydet" #: src/client/components/components-inspector.vala:212 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 #: ui/accounts_editor_servers_pane.ui:17 msgid "Cancel" msgstr "İptal Et" @@ -1281,8 +1277,6 @@ msgstr "_Üç bölmeli görünümü kullan" #. / Translators: Preferences label #: src/client/components/components-preferences-window.vala:73 -#| msgctxt "shortcut window" -#| msgid "Single-key shortcuts" msgid "Use _single key email shortcuts" msgstr "_Tek tuşlu eposta kısayolları kullan" @@ -1304,6 +1298,27 @@ msgstr "Kapatıldığında yeni postayı _gözetle" msgid "Geary will keep running after all windows are closed" msgstr "Geary, tüm pencereler kapatıldıktan sonra çalışmayı sürdürecek" +#. / Translators: Search entry placeholder text +#: src/client/components/components-search-bar.vala:12 +#: src/client/folder-list/folder-list-search-branch.vala:53 +#: src/engine/api/geary-special-folder-type.vala:51 +msgid "Search" +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" + +#. / Translators: Search entry placeholder, string +#. / replacement is the name of an account +#: src/client/components/components-search-bar.vala:81 +#: src/client/folder-list/folder-list-search-branch.vala:54 +#, c-format +msgid "Search %s account" +msgstr "%s hesabını ara" + #. Translators: Tooltip used when an entry requires a valid #. email address to be entered, but one is not provided. #: src/client/components/components-validator.vala:390 @@ -1429,28 +1444,6 @@ msgstr "Hatayla ilgili teknik ayrıntıları gör" msgid "_Retry" msgstr "_Yeniden dene" -#: src/client/components/search-bar.vala:8 -#: src/client/folder-list/folder-list-search-branch.vala:53 -#: src/engine/api/geary-special-folder-type.vala:51 -msgid "Search" -msgstr "Ara" - -#. Search entry. -#: src/client/components/search-bar.vala:24 -msgid "Search all mail in account for keywords (Ctrl+S)" -msgstr "Anahtar sözcükler için hesaptaki tüm postaları ara (Ctrl+S)" - -#: src/client/components/search-bar.vala:88 -#, c-format -msgid "Indexing %s account" -msgstr "%s hesabı dizinleniyor" - -#: src/client/components/search-bar.vala:119 -#: src/client/folder-list/folder-list-search-branch.vala:54 -#, c-format -msgid "Search %s account" -msgstr "%s hesabını ara" - #. / Displayed in the space-limited status bar while a message is in the process of being sent. #: src/client/components/status-bar.vala:26 msgid "Sending…" @@ -1542,19 +1535,19 @@ msgstr "Geçersiz e-posta adresi" msgid "New Message" msgstr "Yeni İleti" -#: src/client/composer/composer-widget.vala:211 +#: src/client/composer/composer-widget.vala:210 msgid "Saved" msgstr "Kaydedildi" -#: src/client/composer/composer-widget.vala:212 +#: src/client/composer/composer-widget.vala:211 msgid "Saving" msgstr "Kaydediliyor" -#: src/client/composer/composer-widget.vala:213 +#: src/client/composer/composer-widget.vala:212 msgid "Error saving" msgstr "Kaydedilirken hata" -#: src/client/composer/composer-widget.vala:214 +#: src/client/composer/composer-widget.vala:213 msgid "Press Backspace to delete quote" msgstr "Alıntıyı silmek için Geri tuşuna basın" @@ -1563,7 +1556,7 @@ msgstr "Alıntıyı silmek için Geri tuşuna basın" #. 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:230 +#: src/client/composer/composer-widget.vala:229 msgid "" "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" "enclosing|encloses|enclosure|enclosures" @@ -1574,90 +1567,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:798 +#: src/client/composer/composer-widget.vala:814 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:824 +#: src/client/composer/composer-widget.vala:840 msgid "Do you want to discard this draft message?" msgstr "Bu taslak iletiyi gözden çıkarmak istiyor musunuz?" -#: src/client/composer/composer-widget.vala:1465 +#: src/client/composer/composer-widget.vala:1484 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:1467 +#: src/client/composer/composer-widget.vala:1486 msgid "Send message with an empty subject?" msgstr "İleti konusu olmadan gönderilsin mi?" -#: src/client/composer/composer-widget.vala:1469 +#: src/client/composer/composer-widget.vala:1488 msgid "Send message with an empty body?" msgstr "İleti, ileti gövdesi olmadan gönderilsin mi?" -#: src/client/composer/composer-widget.vala:1478 +#: src/client/composer/composer-widget.vala:1497 msgid "Send message without an attachment?" msgstr "İleti eki olmadan gönderilsin mi?" -#: src/client/composer/composer-widget.vala:1788 +#: src/client/composer/composer-widget.vala:1807 #, c-format msgid "“%s” already attached for delivery." msgstr "“%s” gönderim için zaten eklendi." -#: src/client/composer/composer-widget.vala:1818 -#: src/client/composer/composer-widget.vala:1868 +#: src/client/composer/composer-widget.vala:1837 +#: src/client/composer/composer-widget.vala:1887 #, c-format msgid "“%s” is an empty file." msgstr "“%s” boş bir dosya." -#: src/client/composer/composer-widget.vala:1856 +#: src/client/composer/composer-widget.vala:1875 #, c-format msgid "“%s” could not be found." msgstr "“%s” bulunamadı." -#: src/client/composer/composer-widget.vala:1862 +#: src/client/composer/composer-widget.vala:1881 #, c-format msgid "“%s” is a folder." msgstr "“%s” bir klasör." -#: src/client/composer/composer-widget.vala:1881 +#: src/client/composer/composer-widget.vala:1900 #, c-format msgid "“%s” could not be opened for reading." msgstr "“%s” okuma için açılamadı." -#: src/client/composer/composer-widget.vala:1889 +#: src/client/composer/composer-widget.vala:1908 msgid "Cannot add attachment" msgstr "Eklenti eklenemiyor" #. Translators: Human-readable version of the RFC 822 To header -#: src/client/composer/composer-widget.vala:1946 +#: src/client/composer/composer-widget.vala:1965 #: 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:1952 +#: src/client/composer/composer-widget.vala:1971 #: 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:1958 +#: src/client/composer/composer-widget.vala:1977 #: 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:1964 +#: src/client/composer/composer-widget.vala:1983 msgid "Reply-To: " msgstr "Yanıtla: " -#: src/client/composer/composer-widget.vala:2144 +#: src/client/composer/composer-widget.vala:2172 msgid "Select Color" msgstr "Renk Seç" @@ -1666,20 +1659,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:2336 +#: src/client/composer/composer-widget.vala:2364 #, 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:2392 +#: src/client/composer/composer-widget.vala:2420 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:2695 +#: src/client/composer/composer-widget.vala:2723 msgid "Images" msgstr "Resimler" @@ -1765,7 +1758,7 @@ msgstr "Tarih:" msgid "Subject:" msgstr "Konu:" -#: src/client/conversation-viewer/conversation-message.vala:132 +#: src/client/conversation-viewer/conversation-message.vala:128 msgid "This email address may have been forged" msgstr "Bu e-posta adresi taklit edilmiş olabilir" @@ -1773,20 +1766,20 @@ msgstr "Bu e-posta adresi taklit edilmiş olabilir" #. in load_contacts. #. Translators: This is displayed in place of the from address #. when the message has no from address. -#: src/client/conversation-viewer/conversation-message.vala:469 +#: src/client/conversation-viewer/conversation-message.vala:465 msgid "No sender" msgstr "Gönderen yok" #. Translators: This separates multiple 'from' #. addresses in the compact header for a message. -#: src/client/conversation-viewer/conversation-message.vala:963 +#: src/client/conversation-viewer/conversation-message.vala:959 msgid ", " msgstr ", " #. Translators: This string is used as the HTML IMG ALT #. attribute value when displaying an inline image in an email #. that did not specify a file name. E.g. Image Date: Sat, 28 Dec 2019 16:21:23 +0100 Subject: [PATCH 25/32] Update Polish translation --- help/pl/pl.po | 550 +++++++++++++----- po/pl.po | 1495 ++++++++++++++++++++++++++----------------------- 2 files changed, 1187 insertions(+), 858 deletions(-) diff --git a/help/pl/pl.po b/help/pl/pl.po index a263dc4c..de4f0087 100644 --- a/help/pl/pl.po +++ b/help/pl/pl.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: geary-help\n" -"POT-Creation-Date: 2019-09-27 12:58+0000\n" -"PO-Revision-Date: 2019-09-29 15:48+0200\n" +"POT-Creation-Date: 2019-11-25 10:55+0000\n" +"PO-Revision-Date: 2019-12-28 16:19+0100\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" @@ -210,51 +210,80 @@ msgstr "" "keyseq>." #. (itstool) path: page/title +#: C/archive.page:8 +msgid "Archive, trash and delete messages" +msgstr "Przenoszenie do archiwum lub kosza i usuwanie wiadomości" + +#. (itstool) path: page/p #: C/archive.page:10 -msgid "Delete or archive a message" -msgstr "Usuwanie i archiwizowanie wiadomości" +msgid "" +"Geary lets you archive messages if your server supports it. Clicking the " +"Archive toolbar button moves the conversation " +"from the current folder to the Archive folder for most email " +"services, or to All Mail for GMail. Archiving helps keep your " +"email organised by moving old and replied-to email out of the way." +msgstr "" +"Można archiwizować wiadomości, jeśli serwer obsługuje tę funkcję. Kliknięcie " +"przycisku Archiwizuj na pasku narzędziowym " +"przenosi wątek z bieżącego katalogu do katalogu Archiwum " +"w większości serwisów pocztowych (katalogu Wszystkie w przypadku " +"serwisu Gmail). Archiwizacja pomaga organizować pocztę przez przenoszenie " +"starych i odpowiedzianych wiadomości z głównego katalogu." #. (itstool) path: page/p -#: C/archive.page:12 +#: C/archive.page:17 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." +"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 "" -"Jeśli używane jest konto serwisu Gmail, to można archiwizować " -"wiadomości. Przycisk Archiwizuj archiwizuje zaznaczone " -"wiadomości. Zarchiwizowane wiadomości są widoczne w katalogu Wszystkie." +"Aby przenieść wątki do katalogu Kosz, zaznacz je i kliknij " +"przycisk Przenieś do kosza na pasku " +"narzędziowym. Aby trwale usunąć wątki, przytrzymaj klawisz Shift " +"i kliknij przycisk Usuń, który pojawi się " +"zamiast przycisku Przenieś do kosza lub otwórz wątek w katalogu " +"Kosz i kliknij przycisk Usuń." + +#. (itstool) path: note/title +#: C/archive.page:26 +msgid "Undoing changes" +msgstr "Cofanie zmian" + +#. (itstool) path: note/p +#: C/archive.page:27 +msgid "" +"Note that you can always undo archiving or trashing a message if you change " +"your mind. Click Undo on the pop-up notification " +"that appears, or type CtrlZ, or open " +"the folder, find the message, then move it back to your Inbox" +msgstr "" +"Zauważ, że zawsze można cofnąć archiwizację lub przeniesienie wiadomości do " +"kosza. Kliknij przycisk Cofnij na wyskakującym " +"powiadomieniu, naciśnij klawisze CtrlZ lub otwórz katalog, znajdź wiadomość, a następnie przenieś ją " +"z powrotem do katalogu Odebrane." #. (itstool) path: page/p -#: C/archive.page:16 +#: C/archive.page:34 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." +"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 "" -"Za pomocą innych serwerów poczty można przenosić wiadomości do kosza i je " -"usuwać, ale nie można ich archiwizować. Aby przenieść wątki to katalogu " -"Kosz, najpierw je zaznacz, a następnie kliknij przycisk " -"Kosz na pasku narzędziowym. Aby trwale usunąć wątki, przytrzymaj " -"klawisz Shift i kliknij przycisk Usuń, który pojawi " -"się zamiast przycisku Kosz." - -#. (itstool) path: page/p -#: C/archive.page:21 -msgid "" -"Delete is not available from every folder, such as Search. Delete is also " -"unavailable for Gmail. For Gmail, Trash will move messages to the " -"Trash folder on the server, where the user can then manually delete them. " -"The server will automatically remove trashed messages after 30 days." -msgstr "" -"Usuwanie nie jest dostępne w każdym katalogu (np. Wyszukiwanie). Nie można " -"też usuwać w serwisie Gmail: przycisk Kosz przenosi wiadomości do " -"katalogu Kosz na serwerze, gdzie użytkownik może je usuwać. Serwer " -"automatycznie usuwa wiadomości z kosza po 30 dniach." +"Chociaż zarówno Archiwizuj, jak i Przenieś do kosza usuwa wątki z katalogu Odebrane, jest między nimi ważna różnica. Kliknięcie przycisku Archiwizuj zapewni, że wątki są zachowane, aby można je " +"było z powrotem odnaleźć później. Kliknięcie przycisku Przenieś do kosza spowoduje ukrycie wątków z funkcji , i prawdopodobnie w przyszłości zostaną usunięte." #. (itstool) path: page/title #: C/bugs.page:10 @@ -736,14 +765,15 @@ msgstr "Preferencje" #. (itstool) path: page/p #: C/preferences.page:12 msgid "" -"Geary allows you to customise how it works via its Preferences " -"window. To open the window, select Preferences from the " -"application menu on the main window's toolbar. You can change the following " -"options:" +"Geary allows you to customise how it works via its Preferences window. To open the window, select Preferences from the application menu on the main window's toolbar. " +"You can change the following options:" msgstr "" -"Można dostosować działanie programu w jego oknie Preferencji. Aby " -"je otworzyć, wybierz Preferencje z menu programu na pasku " -"narzędziowym głównego okna. Opcje, które można zmienić:" +"Można dostosować działanie programu w jego oknie Preferencji. Aby je otworzyć, wybierz Preferencje z menu programu na pasku narzędziowym głównego okna. " +"Opcje, które można zmienić:" #. (itstool) path: item/title #: C/preferences.page:19 @@ -793,11 +823,27 @@ msgstr "" #. (itstool) path: item/title #: C/preferences.page:38 +msgid "Use single key email shortcuts" +msgstr "Skróty jednoklawiszowe" + +#. (itstool) path: item/p +#: C/preferences.page:39 +msgid "" +"Enable keyboard shortcuts for email actions that do not require pressing " +"Ctrl. These match the shortcuts used by GMail. See for details." +msgstr "" +"Włącza skróty klawiszowe do działań na wiadomościach, które nie wymagają " +"naciśnięcia klawisza Ctrl. Są one takie same, jak skróty " +"w serwisie Gmail. zawiera więcej informacji." + +#. (itstool) path: item/title +#: C/preferences.page:44 msgid "Watch for new mail when closed" msgstr "Monitorowanie nowych wiadomości po zamknięciu" #. (itstool) path: item/p -#: C/preferences.page:39 +#: C/preferences.page:45 msgid "" "Geary will watch your accounts for new mail even when the main window is not " "open. To do this, it will silently start when you log in to your computer, " @@ -984,21 +1030,21 @@ msgstr "" msgid "Keyboard shortcuts" msgstr "Skróty klawiszowe" -#. (itstool) path: page/p -#: C/shortcuts.page:12 +#. (itstool) path: section/p +#: C/shortcuts.page:13 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 "" "Dostępne są skróty klawiszowe dla najczęściej wykonywanych działań. " -"Wbudowana pomoc skrótów klawiszowych zawiera pełną listę. Można ją otworzyć " -"przez menu programu: GearySkróty klawiszowe lub za pomocą poniższych skrótów." +"Wbudowana pomoc zawiera ich pełną listę. Aby ją otworzyć, wybierz Skróty klawiszowe z menu programu na pasku narzędziowym " +"głównego okna lub użyj poniższych skrótów." -#. (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:" @@ -1007,28 +1053,49 @@ msgstr "" "Geary:" #. (itstool) path: td/p -#: C/shortcuts.page:22 -msgid "Display this User Manual" -msgstr "Wyświetlenie tego podręcznika użytkownika" +#: C/shortcuts.page:23 +msgid "Display this online help manual" +msgstr "Wyświetlenie tego podręcznika użytkownika online" #. (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 "Wyświetlenie wszystkich skrótów klawiszowych" #. (itstool) path: td/p -#: C/shortcuts.page:27 +#: C/shortcuts.page:28 +msgid "Ctrl?" +msgstr "Ctrl?" + +#. (itstool) path: section/title +#: C/shortcuts.page:36 +msgid "Single key shortcuts" +msgstr "Skróty jednoklawiszowe" + +#. (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 "" -"Ctrl? lub CtrlF1" +"Można włączyć skróty klawiszowe do działań na wiadomościach, które nie " +"wymagają naciśnięcia klawisza Ctrl. Są one takie same, jak skróty " +"w serwisie Gmail. zawiera więcej informacji." + +#. (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 "" +"W powyższej pomocy skrótów klawiszowych można znaleźć pełną listę " +"jednoklawiszowych skrótów włączanych przez tę preferencję." #. (itstool) path: page/title #: C/star.page:10 @@ -1099,90 +1166,179 @@ msgstr "" "jako przeczytane z rozwijanego menu." #. (itstool) path: page/title -#: C/write.page:9 -msgid "Write a message" -msgstr "Pisanie wiadomości" +#: C/write.page:7 +msgid "Writing new email and replying" +msgstr "Pisanie nowych wiadomości i odpowiadanie" #. (itstool) path: section/title -#: C/write.page:12 +#: C/write.page:10 msgid "Composing and replying" msgstr "Tworzenie wiadomości i odpowiadanie" #. (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 "" -"Aby napisać nową wiadomość, kliknij przycisk Nowa wiadomość na " -"pasku narzędziowym." +"Aby rozpocząć nowy wątek e-mail, kliknij przycisk Utwórz wiadomość na pasku narzędziowym. Wpisz adres e-mail osób, " +"które mają otrzymać wiadomość w polu Do oraz " +"temat w polu Temat. Następnie można napisać swoją " +"wiadomość w polu tekstowym poniżej. Kiedy wiadomość jest gotowa do wysłania, " +"kliknij przycisk Wyślij lub naciśnij klawisze " +"CtrlEnter, aby ją wysłać." -#. (itstool) path: section/p -#: C/write.page:16 -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." -msgstr "" -"Aby odpowiedzieć na wiadomość, otwórz menu wiadomości w górnym prawym rogu " -"wiadomości i kliknij Odpowiedz, Odpowiedz wszystkim " -"lub Przekaż. Można także odpowiadać na ostatnią wiadomość w wątku " -"za pomocą przycisków Odpowiedz, Odpowiedz wszystkim " -"i Przekaż na pasku narzędziowym." - -#. (itstool) path: section/title -#: C/write.page:21 -msgid "Features" -msgstr "Funkcje" - -#. (itstool) path: section/p +#. (itstool) path: note/title #: C/write.page:23 +msgid "Undoing sending" +msgstr "Cofanie wysyłania" + +#. (itstool) path: note/p +#: C/write.page:24 msgid "" -"Geary's email composer lets you adjust the font, size and color of text. You " -"can also insert hyperlinks into messages." +"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 "" -"Okno tworzenia wiadomości umożliwia dostosowanie czcionki, rozmiaru i koloru " -"tekstu. Można także wstawiać odnośniki do wiadomości." +"Przed wysyłaniem wiadomości program poczeka 5 sekund. W tym czasie można " +"kliknąć przycisk Cofnij na wyskakującym " +"powiadomieniu lub nacisnąć klawisze CtrlZ, aby ponownie otworzyć wiadomość i wprowadzić do niej zmiany." #. (itstool) path: section/p -#: C/write.page:25 -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 "" -"Można także wysyłać wiadomości w zwykłym tekście. Zaznacz lub odznacz „Tekst " -"sformatowany” w rozwijanym menu, aby przełączyć między zwykłym " -"a sformatowanym tekstem." - -#. (itstool) path: section/p -#: C/write.page:28 -msgid "" -"You can attach a file to a message you're writing in either of these ways:" -msgstr "Można dołączyć plik do pisanej wiadomości na trzy różne sposoby:" - -#. (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 "" -"Kliknij przycisk Załącz plik w dolnym lewym rogu okna tworzenia " -"wiadomości, a następnie wybierz plik do dołączenia." - -#. (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." +"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 "" -"Przeciągnij plik z menedżera plików Nautilus do pól tekstowych na górze okna " -"tworzenia wiadomości lub do paska narzędziowego na dole." +"Podczas wpisywania adresu e-mail w polu DoDo wiadomości będą dostarczane podpowiedzi z książki " +"adresowej użytkownika i z poprzednio wysłanych i otrzymanych wiadomości. Aby " +"wybrać jedną z tych podpowiedzi, kliknij ją. Można także wyświetlić pola " +"Ukryty do wiadomościOdpowiedź do wybierając Rozszerzone pola " +"z menu paska narzędziowego formatowania." #. (itstool) path: section/p -#: C/write.page:36 +#: 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 "" +"Aby odpowiedzieć na obecnie zaznaczony wątek, kliknij przycisk Odpowiedz, Odpowiedz wszystkim " +"lub Przekaż na pasku narzędziowym. Otworzy to " +"okno tworzenia nowej odpowiedzi lub przekazywanej wiadomości dla najnowszej " +"wiadomości w wątku." + +#. (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 "" +"Podczas odpowiadania oryginalna wiadomość będzie cytowana i skopiowana do " +"stopki nowej odpowiedzi. Można ją usunąć przed napisaniem odpowiedzi " +"naciskając klawisz Backspace. Można także wybiórczo zacytować " +"tekst zaznaczając wybraną jego część w wiadomości i klikając przycisk Odpowiedz lub Odpowiedz " +"wszystkim." + +#. (itstool) path: section/p +#: C/write.page:55 +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 "" +"Aby odpowiedzieć na konkretną wiadomość, otwórz menu wiadomości w górnym " +"rogu wiadomości i kliknij Odpowiedz, Odpowiedz wszystkim lub Przekaż." + +#. (itstool) path: section/title +#: C/write.page:61 +msgid "Text formatting, images and attachments" +msgstr "Formatowanie tekstu, obrazy i załączniki" + +#. (itstool) path: section/p +#: C/write.page:63 +msgid "" +"Geary's email composer lets you use text styles such as bold and " +"italic, indent text to quote it and links to web pages. Simply " +"select the text and click the appropriate button on the formatting toolbar." +msgstr "" +"Okno tworzenia wiadomości umożliwia formatowanie tekstu, np. pogrubienie " +"go czy pochylenie, tworzenie wcięć, aby cytować i wstawianie " +"odnośników do stron internetowych. Zaznacz tekst i kliknij odpowiedni " +"przycisk na pasku narzędziowym formatowania." + +#. (itstool) path: section/p +#: C/write.page:68 +msgid "" +"Bulleted and numbered lists can be inserted or removed by clicking the Bulleted list and Numbered " +"list buttons on the formatting toolbar. The level of indentation of " +"list items can be adjusted using the Indent and " +"Un-indent formatting toolbar buttons." +msgstr "" +"Można wstawiać wypunktowane i numerowane listy klikając przycisk Lista wypunktowana lub Lista " +"numerowana na pasku narzędziowym formatowania. Można dostosowywać " +"poziom wcięć elementów listy za pomocą przycisków Dodaj wcięcieUsuń wcięcie." + +#. (itstool) path: section/p +#: C/write.page:75 +msgid "" +"Images can be inserted into rich text messages by clicking the Insert Image button on the formatting toolbar and selecting " +"the image to attach, by dragging an image from the Files " +"application into the email body and then dropping it, or by pasting an image " +"that has been copied to the clipboard from another application." +msgstr "" +"Można wstawiać obrazy do wiadomości z tekstem sformatowanym klikając " +"przycisk Wstaw obraz na pasku narzędziowym " +"formatowania i wybierając obraz do załączenia przeciągając go z programu " +"Pliki do treści wiadomości lub wklejając obraz skopiowany do " +"schowka z innego programu." + +#. (itstool) path: section/p +#: 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 "" +"Dokumenty, pliki dźwiękowe, wideo i inne mogą być załączane do wiadomości " +"klikając przycisk Załącz plik na górze okna " +"tworzenia wiadomości i wybierając dokument do załączenia przeciągając go " +"z programu Pliki do okna tworzenia wiadomości w polu tekstowym na " +"górze okna lub na pasku narzędziowym na dole." + +#. (itstool) path: section/p +#: C/write.page:90 msgid "" "A number of keyboard shortcuts are available in the composer; see for details." @@ -1191,41 +1347,129 @@ msgstr "" "\"shortcuts\"/> zawiera więcej informacji." #. (itstool) path: section/p -#: C/write.page:38 +#: C/write.page:93 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 "" -"Można określić podpis do wstawiania do okna tworzenia wiadomości w oknie " -"." +"Można określić podpis do wstawiania do stopki wiadomości w oknie tworzenia " +"wiadomości w oknie ." #. (itstool) path: section/title -#: C/write.page:43 -msgid "Drafts" -msgstr "Szkice" +#: C/write.page:98 +msgid "Checking spelling" +msgstr "Sprawdzanie pisowni" #. (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 "" +"Obsługiwane jest sprawdzanie pisowni tworzonej wiadomości w jednym lub " +"więcej języków podczas jej pisania. Aby włączyć tę funkcję, najpierw upewnij " +"się, że komputer ma zainstalowane słowniki dla wybranych języków. Jeśli ich " +"nie ma, znajdź instrukcję ich instalacji w pomocy komputera." + +#. (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 "" +"Aby wybrać języki do sprawdzania pisowni, kliknij przycisk Sprawdzanie pisowni na pasku narzędziowym formatowania, " +"a pojawi się okno wyboru języka. Kliknij język na liście, aby go włączyć lub " +"wyłączyć lub przycisk -, aby usunąć go z listy. " +"Jeśli języka nie ma na liście, znajdź go wpisując jego nazwę w polu " +"wyszukiwania, a następnie kliknij przycisk +, " +"aby go dodać." + +#. (itstool) path: section/title +#: C/write.page:117 +msgid "Saving drafts and restoring discarded messages" +msgstr "Zapisywanie szkiców i przywracanie odrzuconych wiadomości" + +#. (itstool) path: section/p +#: C/write.page:119 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 "" "W przypadku serwerów pocztowych obsługujących szkice wiadomość jest " -"automatycznie zapisywana w trakcie jej pisania. Jeśli okno tworzenia " -"wiadomości jest zamykane bez wysłania, zostanie wyświetlone pytanie, czy " -"zachować lub odrzucić szkic." +"automatycznie zapisywana w trakcie jej pisania po krótkim opóźnieniu." #. (itstool) path: section/p -#: C/write.page:48 +#: C/write.page:123 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 "" -"Aby zmodyfikować istniejący szkic, wybierz katalog Szkice z listy katalogów, " -"wybierz wiadomość i kliknij „Modyfikuj szkic” w przeglądarce wiadomości." +"Aby zmodyfikować istniejący szkic, wybierz katalog Szkice z listy " +"katalogów, wybierz wiadomość i kliknij „Modyfikuj szkic” w przeglądarce " +"wątków." #. (itstool) path: section/p -#: C/write.page:51 -msgid "Geary deletes the draft when you send the message." -msgstr "Szkic jest usuwany po wysłaniu wiadomości." +#: C/write.page:127 +msgid "Geary will delete the draft when you send the message." +msgstr "Szkic zostanie usunięty po wysłaniu wiadomości." + +#. (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 "" +"Po zapisaniu lub odrzuceniu tworzonej wiadomości można otworzyć ją ponownie " +"klikając przycisk Cofnij na wyskakującym " +"powiadomieniu lub naciskając klawisze CtrlZ. Przywrócenie zapisanej lub odrzuconej wiadomości może być możliwe " +"do 30 minut. Po tym czasie trzeba będzie ponownie otworzyć wiadomość za " +"pomocą katalogu Szkice, jeśli się tam znajduje." + +#. (itstool) path: section/title +#: C/write.page:141 +msgid "Plain text messages" +msgstr "Wiadomości w zwykłym tekście" + +#. (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 "" +"Można także wysyłać wiadomości w zwykłym tekście. W rozwijanym menu zaznacz " +"lub odznacz opcję Tekst sformatowany, aby " +"przełączyć między trybem zwykłego tekstu a trybem tekstu sformatowanego. " +"Tryb zwykłego tekstu jest przydatny podczas wysyłania wiadomości na listy " +"dyskusyjne zabraniające wiadomości z tekstem sformatowanym (HTML) lub " +"podczas wysyłania wiadomości do osób, które nie korzystają z nowoczesnego " +"klienta poczty, takiego jak Geary." + +#. (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 "" +"W trybie zwykłego tekstu tekst będzie automatycznie zawijany za pomocą " +"miękkich podziałów wiersza, aby nie był on szerszy niż 74 znaki, a wcięty " +"tekst będzie zawijany i cytowany za pomocą znaku „>” dla każdego poziomu " +"cytowania." diff --git a/po/pl.po b/po/pl.po index f5746184..bf7b4d58 100644 --- a/po/pl.po +++ b/po/pl.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: geary\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" -"POT-Creation-Date: 2019-11-07 01:41+0000\n" -"PO-Revision-Date: 2019-11-10 12:58+0100\n" +"POT-Creation-Date: 2019-12-17 23:56+0000\n" +"PO-Revision-Date: 2019-12-26 13:53+0100\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" @@ -40,6 +40,7 @@ msgstr "Wysyłanie plików za pomocą programu Geary" #: desktop/org.gnome.Geary.appdata.xml.in.in:12 #: desktop/org.gnome.Geary.desktop.in.in:3 #: src/client/accounts/accounts-editor-servers-pane.vala:555 +#: src/client/application/application-main-window.vala:547 msgid "Geary" msgstr "Geary" @@ -52,7 +53,7 @@ msgstr "Poczta" #: desktop/geary-autostart.desktop.in.in:5 #: desktop/org.gnome.Geary.appdata.xml.in.in:16 #: desktop/org.gnome.Geary.desktop.in.in:5 -#: src/client/application/geary-application.vala:31 +#: src/client/application/application-client.vala:32 msgid "Send and receive email" msgstr "Wysyłanie i odbieranie poczty" @@ -134,6 +135,10 @@ msgstr "" msgid "Compose Message" msgstr "Utwórz wiadomość" +#: desktop/org.gnome.Geary.desktop.in.in:26 +msgid "New Window" +msgstr "Nowe okno" + #: desktop/org.gnome.Geary.gschema.xml:8 msgid "Maximize window" msgstr "Maksymalizacja okna" @@ -216,10 +221,22 @@ msgid "True if we should display a short preview of each message." msgstr "Wyświetlanie krótkiego podglądu każdej wiadomości." #: desktop/org.gnome.Geary.gschema.xml:68 +msgid "Use single key shortcuts" +msgstr "Skróty jednoklawiszowe" + +#: desktop/org.gnome.Geary.gschema.xml:69 +msgid "" +"Enables shortcuts for email actions that do not require pressing to " +"emulate those used by Gmail." +msgstr "" +"Włącza skróty do działań na wiadomościach, które nie wymagają naciśnięcia " +"klawisza , aby naśladować skróty w serwisie Gmail." + +#: desktop/org.gnome.Geary.gschema.xml:76 msgid "Languages that shall be used in the spell checker" msgstr "Języki używane do sprawdzania pisowni" -#: desktop/org.gnome.Geary.gschema.xml:69 +#: desktop/org.gnome.Geary.gschema.xml:77 msgid "" "A list of POSIX locales, with the empty list disabling spell checking and " "the null list using desktop languages by default." @@ -227,74 +244,86 @@ msgstr "" "Lista lokalizacji POSIX. Pusta lista wyłącza sprawdzanie pisowni, a lista " "NULL powoduje użycie domyślnego języka środowiska." -#: desktop/org.gnome.Geary.gschema.xml:76 +#: desktop/org.gnome.Geary.gschema.xml:84 msgid "Languages that are displayed in the spell checker popover" msgstr "Języki wyświetlane w oknie sprawdzania pisowni" -#: desktop/org.gnome.Geary.gschema.xml:77 +#: desktop/org.gnome.Geary.gschema.xml:85 msgid "" "List of languages that are always displayed in the popover of the spell " "checker." msgstr "Lista języków zawsze wyświetlanych w oknie sprawdzania pisowni." -#: desktop/org.gnome.Geary.gschema.xml:82 +#: desktop/org.gnome.Geary.gschema.xml:90 msgid "Notify of new mail at startup" msgstr "Powiadamianie o nowych wiadomościach po uruchomieniu" -#: desktop/org.gnome.Geary.gschema.xml:83 +#: desktop/org.gnome.Geary.gschema.xml:91 msgid "True to notify of new mail at startup." msgstr "Powiadamianie o nowych wiadomościach po uruchomieniu." -#: desktop/org.gnome.Geary.gschema.xml:88 +#: desktop/org.gnome.Geary.gschema.xml:96 msgid "Ask when opening an attachment" msgstr "Pytanie podczas otwierania załącznika" -#: desktop/org.gnome.Geary.gschema.xml:89 +#: desktop/org.gnome.Geary.gschema.xml:97 msgid "True to ask when opening an attachment." msgstr "Pytanie podczas otwierania załącznika." -#: desktop/org.gnome.Geary.gschema.xml:94 +#: desktop/org.gnome.Geary.gschema.xml:102 msgid "Whether to compose emails in HTML" msgstr "Tworzenie wiadomości w formacie HTML" -#: desktop/org.gnome.Geary.gschema.xml:95 +#: desktop/org.gnome.Geary.gschema.xml:103 msgid "True to compose emails in HTML; false for plain text." msgstr "" "Tworzenie wiadomości w formacie HTML. Wyłączenie powoduje tworzenie " "wiadomości w zwykłym tekście." -#: desktop/org.gnome.Geary.gschema.xml:100 +#: desktop/org.gnome.Geary.gschema.xml:108 msgid "Advisory strategy for full-text searching" msgstr "Strategia wyszukiwania w treści" -#: desktop/org.gnome.Geary.gschema.xml:101 +#: desktop/org.gnome.Geary.gschema.xml:109 msgid "" "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." msgstr "" "Przyjmowane wartości: „exact” (dokładna), „conservative” (konserwatywna), " "„aggressive” (agresywna) i „horizon” (horyzontalna)." -#: desktop/org.gnome.Geary.gschema.xml:106 +#: desktop/org.gnome.Geary.gschema.xml:114 msgid "Zoom of conversation viewer" msgstr "Powiększenie widoku wątku" -#: desktop/org.gnome.Geary.gschema.xml:107 +#: desktop/org.gnome.Geary.gschema.xml:115 msgid "The zoom to apply on the conservation view." msgstr "Powiększenie widoku wątku." -#: desktop/org.gnome.Geary.gschema.xml:112 +#: desktop/org.gnome.Geary.gschema.xml:120 msgid "Size of detached composer window" msgstr "Rozmiar odłączonego okna tworzenia wiadomości" -#: desktop/org.gnome.Geary.gschema.xml:113 +#: desktop/org.gnome.Geary.gschema.xml:121 msgid "The last recorded size of the detached composer window." msgstr "Ostatnio zapisany rozmiar odłączonego okna tworzenia wiadomości." -#: desktop/org.gnome.Geary.gschema.xml:118 +#: desktop/org.gnome.Geary.gschema.xml:126 +msgid "Undo sending email delay" +msgstr "Opóźnienie cofnięcia wysyłania wiadomości" + +#: desktop/org.gnome.Geary.gschema.xml:127 +msgid "" +"The number of seconds to wait before sending an email. Set to zero or less " +"to disable." +msgstr "" +"Ile sekund czekać przed wysłaniem wiadomości. Ustawienie na zero lub mniej " +"wyłącza tę funkcję." + +#: desktop/org.gnome.Geary.gschema.xml:133 msgid "Whether we migrated the old settings" msgstr "Poprzednie ustawienia zostały migrowane" -#: desktop/org.gnome.Geary.gschema.xml:119 +#: desktop/org.gnome.Geary.gschema.xml:134 msgid "" "False to check for the old “org.yorba.geary”-schema and copy its values." msgstr "" @@ -304,24 +333,24 @@ msgstr "" #. Translators: In-app notification label, when #. the app had a problem pinning an otherwise #. untrusted TLS certificate -#: src/client/accounts/accounts-editor.vala:204 +#: src/client/accounts/accounts-editor.vala:210 msgid "Failed to store certificate" msgstr "Zachowanie certyfikatu się nie powiodło" #. Translators: Label for adding an email account #. account for a generic IMAP service provider. -#: src/client/accounts/accounts-editor-add-pane.vala:109 +#: src/client/accounts/accounts-editor-add-pane.vala:108 msgid "All others" msgstr "Wszystkie pozostałe" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:196 +#: src/client/accounts/accounts-editor-add-pane.vala:195 #: src/client/accounts/accounts-editor-servers-pane.vala:316 msgid "Check your receiving login and password" msgstr "Proszę sprawdzić poprawność loginu i hasła odbierania" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:211 +#: src/client/accounts/accounts-editor-add-pane.vala:210 #: src/client/accounts/accounts-editor-servers-pane.vala:329 msgid "Check your receiving server details" msgstr "Proszę sprawdzić poprawność informacji o serwerze odbierania" @@ -331,51 +360,51 @@ msgstr "Proszę sprawdzić poprawność informacji o serwerze odbierania" #. succeeded, so the user probably needs to #. specify custom creds here #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:233 +#: src/client/accounts/accounts-editor-add-pane.vala:232 #: src/client/accounts/accounts-editor-servers-pane.vala:350 msgid "Check your sending login and password" msgstr "Proszę sprawdzić poprawność loginu i hasła wysyłania" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:247 +#: src/client/accounts/accounts-editor-add-pane.vala:246 #: src/client/accounts/accounts-editor-servers-pane.vala:363 msgid "Check your sending server details" msgstr "Proszę sprawdzić poprawność informacji o serwerze wysyłania" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:262 +#: src/client/accounts/accounts-editor-add-pane.vala:261 msgid "Check your email address and password" msgstr "Proszę sprawdzić poprawność adresu e-mail i hasła" #. Translators: In-app notification label -#: src/client/accounts/accounts-editor-add-pane.vala:273 +#: src/client/accounts/accounts-editor-add-pane.vala:272 msgid "Could not connect, check your network" msgstr "Nie można się połączyć, proszę sprawdzić sieć" #. Translators: In-app notification label for a #. generic error creating an account -#: src/client/accounts/accounts-editor-add-pane.vala:286 +#: src/client/accounts/accounts-editor-add-pane.vala:285 msgid "An unexpected problem occurred" msgstr "Wystąpił nieoczekiwany problem" #. Translators: In-app notification label, the #. string substitution is a more detailed reason. -#: src/client/accounts/accounts-editor-add-pane.vala:304 +#: src/client/accounts/accounts-editor-add-pane.vala:303 #, c-format msgid "Account not created: %s" msgstr "Nie utworzono konta: %s" #. Translators: Label for the person's actual name when adding #. an account -#: src/client/accounts/accounts-editor-add-pane.vala:551 +#: src/client/accounts/accounts-editor-add-pane.vala:558 msgid "Your name" msgstr "Imię i nazwisko" #. Translators: Label used for the address part of an #. email address when editing a user's sender address #. preferences for an account. -#: src/client/accounts/accounts-editor-add-pane.vala:568 -#: src/client/accounts/accounts-editor-edit-pane.vala:501 +#: src/client/accounts/accounts-editor-add-pane.vala:575 +#: src/client/accounts/accounts-editor-edit-pane.vala:513 msgid "Email address" msgstr "Adres e-mail" @@ -384,8 +413,8 @@ msgstr "Adres e-mail" #. Translators: This is used as a placeholder for the #. address part of an email address when editing a user's #. sender address preferences for an account. -#: src/client/accounts/accounts-editor-add-pane.vala:571 -#: src/client/accounts/accounts-editor-edit-pane.vala:469 +#: src/client/accounts/accounts-editor-add-pane.vala:579 +#: src/client/accounts/accounts-editor-edit-pane.vala:479 msgid "person@example.com" msgstr "e-mail@example.com" @@ -393,15 +422,15 @@ msgstr "e-mail@example.com" #. when adding an account #. Translators: Label for the user's login name for an #. IMAP, SMTP, etc service -#: src/client/accounts/accounts-editor-add-pane.vala:585 -#: src/client/accounts/accounts-editor-servers-pane.vala:880 +#: src/client/accounts/accounts-editor-add-pane.vala:593 +#: src/client/accounts/accounts-editor-servers-pane.vala:884 msgid "Login name" msgstr "Login" #. Translators: Label for the user's password for an IMAP, #. SMTP, etc service -#: src/client/accounts/accounts-editor-add-pane.vala:599 -#: src/client/accounts/accounts-editor-servers-pane.vala:999 +#: src/client/accounts/accounts-editor-add-pane.vala:607 +#: src/client/accounts/accounts-editor-servers-pane.vala:1006 #: ui/password-dialog.glade:108 msgid "Password" msgstr "Hasło" @@ -410,14 +439,14 @@ msgstr "Hasło" #. adding an account. #. Translators: This label describes the host name or IP #. address and port used by an account's IMAP service. -#: src/client/accounts/accounts-editor-add-pane.vala:621 -#: src/client/accounts/accounts-editor-servers-pane.vala:727 +#: src/client/accounts/accounts-editor-add-pane.vala:629 +#: src/client/accounts/accounts-editor-servers-pane.vala:728 msgid "IMAP server" msgstr "Serwer IMAP" #. Translators: Placeholder for the IMAP server hostname #. when adding an account. -#: src/client/accounts/accounts-editor-add-pane.vala:624 +#: src/client/accounts/accounts-editor-add-pane.vala:632 msgid "imap.example.com" msgstr "imap.example.com" @@ -425,20 +454,20 @@ msgstr "imap.example.com" #. adding an account. #. Translators: This label describes the host name or IP #. address and port used by an account's SMTP service. -#: src/client/accounts/accounts-editor-add-pane.vala:630 -#: src/client/accounts/accounts-editor-servers-pane.vala:733 +#: src/client/accounts/accounts-editor-add-pane.vala:638 +#: src/client/accounts/accounts-editor-servers-pane.vala:734 msgid "SMTP server" msgstr "Serwer SMTP" #. Translators: Placeholder for the SMTP server hostname #. when adding an account. -#: src/client/accounts/accounts-editor-add-pane.vala:633 +#: src/client/accounts/accounts-editor-add-pane.vala:641 msgid "smtp.example.com" msgstr "smtp.example.com" #. Translators: Label in the account editor for the user's #. custom name for an account. -#: src/client/accounts/accounts-editor-edit-pane.vala:278 +#: src/client/accounts/accounts-editor-edit-pane.vala:277 #: ui/accounts_editor_remove_pane.ui:123 msgid "Account name" msgstr "Nazwa konta" @@ -447,46 +476,46 @@ msgstr "Nazwa konta" #. the name of an account. The string #. substitution is the old name of the #. account. -#: src/client/accounts/accounts-editor-edit-pane.vala:312 +#: src/client/accounts/accounts-editor-edit-pane.vala:318 #, c-format msgid "Change account name back to “%s”" msgstr "Zmienia nazwę konta z powrotem na „%s”" #. Translators: Tooltip for adding a new email sender/from #. address's address to an account -#: src/client/accounts/accounts-editor-edit-pane.vala:336 +#: src/client/accounts/accounts-editor-edit-pane.vala:342 msgid "Add a new sender email address" msgstr "Dodaje nowy adres e-mail nadawcy" #. Translators: Label used to indicate the user has #. provided no display name for one of their sender #. email addresses in their account settings. -#: src/client/accounts/accounts-editor-edit-pane.vala:417 +#: src/client/accounts/accounts-editor-edit-pane.vala:423 msgid "Name not set" msgstr "Nie ustawiono nazwy" #. Translators: This is used as a placeholder for the #. display name for an email address when editing a user's #. sender address preferences for an account. -#: src/client/accounts/accounts-editor-edit-pane.vala:456 +#: src/client/accounts/accounts-editor-edit-pane.vala:464 msgid "Sender Name" msgstr "Nazwa nadawcy" -#: src/client/accounts/accounts-editor-edit-pane.vala:479 +#: src/client/accounts/accounts-editor-edit-pane.vala:491 msgid "Remove" msgstr "Usuń" #. Translators: Label used for the display name part of an #. email address when editing a user's sender address #. preferences for an account. -#: src/client/accounts/accounts-editor-edit-pane.vala:494 +#: src/client/accounts/accounts-editor-edit-pane.vala:506 msgid "Sender name" msgstr "Nazwa nadawcy" #. Translators: Label used as the undo tooltip after adding an #. new sender email address to an account. The string #. substitution is the email address added. -#: src/client/accounts/accounts-editor-edit-pane.vala:561 +#: src/client/accounts/accounts-editor-edit-pane.vala:573 #, c-format msgid "Remove “%s”" msgstr "Usuwa adres „%s”" @@ -494,7 +523,7 @@ msgstr "Usuwa adres „%s”" #. Translators: Label used as the undo tooltip after editing a #. sender address for an account. The string substitution is #. the email address edited. -#: src/client/accounts/accounts-editor-edit-pane.vala:601 +#: src/client/accounts/accounts-editor-edit-pane.vala:613 #, c-format msgid "Undo changes to “%s”" msgstr "Cofa zmiany adresu „%s”" @@ -502,7 +531,7 @@ msgstr "Cofa zmiany adresu „%s”" #. Translators: Label used as the undo tooltip after removing #. a sender address from an account. The string substitution #. is the email address edited. -#: src/client/accounts/accounts-editor-edit-pane.vala:688 +#: src/client/accounts/accounts-editor-edit-pane.vala:700 #, c-format msgid "Add “%s” back" msgstr "Dodaje adres „%s” z powrotem" @@ -510,14 +539,14 @@ msgstr "Dodaje adres „%s” z powrotem" #. Translators: Label used as the undo tooltip after removing #. a sender address from an account. The string substitution #. is the email address edited. -#: src/client/accounts/accounts-editor-edit-pane.vala:730 +#: src/client/accounts/accounts-editor-edit-pane.vala:742 msgid "Undo signature changes" msgstr "Cofa zmiany podpisu" #. Translators: This label describes the account #. preference for the length of time (weeks, months or #. years) that past email should be downloaded. -#: src/client/accounts/accounts-editor-edit-pane.vala:778 +#: src/client/accounts/accounts-editor-edit-pane.vala:790 msgid "Download mail" msgstr "Pobieranie wiadomości" @@ -526,44 +555,44 @@ msgstr "Pobieranie wiadomości" #. should be downloaded for an account. The #. string substitution is the duration, #. e.g. "1 month back". -#: src/client/accounts/accounts-editor-edit-pane.vala:810 +#: src/client/accounts/accounts-editor-edit-pane.vala:822 #, c-format msgid "Change download period back to: %s" msgstr "Zmienia czas pobierania z powrotem na: %s" -#: src/client/accounts/accounts-editor-edit-pane.vala:831 +#: src/client/accounts/accounts-editor-edit-pane.vala:843 msgid "Everything" msgstr "Wszystko" -#: src/client/accounts/accounts-editor-edit-pane.vala:835 +#: src/client/accounts/accounts-editor-edit-pane.vala:847 msgid "2 weeks back" msgstr "ostatnie 2 tygodnie" -#: src/client/accounts/accounts-editor-edit-pane.vala:839 +#: src/client/accounts/accounts-editor-edit-pane.vala:851 msgid "1 month back" msgstr "ostatni miesiąc" -#: src/client/accounts/accounts-editor-edit-pane.vala:843 +#: src/client/accounts/accounts-editor-edit-pane.vala:855 msgid "3 months back" msgstr "ostatnie 3 miesiące" -#: src/client/accounts/accounts-editor-edit-pane.vala:847 +#: src/client/accounts/accounts-editor-edit-pane.vala:859 msgid "6 months back" msgstr "ostatnie 6 miesięcy" -#: src/client/accounts/accounts-editor-edit-pane.vala:851 +#: src/client/accounts/accounts-editor-edit-pane.vala:863 msgid "1 year back" msgstr "ostatni rok" -#: src/client/accounts/accounts-editor-edit-pane.vala:855 +#: src/client/accounts/accounts-editor-edit-pane.vala:867 msgid "2 years back" msgstr "ostatnie 2 lata" -#: src/client/accounts/accounts-editor-edit-pane.vala:859 +#: src/client/accounts/accounts-editor-edit-pane.vala:871 msgid "4 years back" msgstr "ostatnie 4 lata" -#: src/client/accounts/accounts-editor-edit-pane.vala:865 +#: src/client/accounts/accounts-editor-edit-pane.vala:877 #, c-format msgid "%d day back" msgid_plural "%d days back" @@ -572,12 +601,12 @@ msgstr[1] "ostatnie %d dni" msgstr[2] "ostatnie %d dni" #: src/client/accounts/accounts-editor-list-pane.vala:248 -#: src/client/components/main-window.vala:1623 +#: src/client/application/application-main-window.vala:2037 msgid "Undo" msgstr "Cofnij" #: src/client/accounts/accounts-editor-list-pane.vala:257 -#: src/client/components/main-window.vala:1613 +#: src/client/application/application-main-window.vala:2027 msgid "Redo" msgstr "Ponów" @@ -655,8 +684,8 @@ msgstr "Zabezpieczenia połączenia" #. Translators: Label used when no auth scheme is used #. by an account's IMAP or SMTP service. #: src/client/accounts/accounts-editor-row.vala:479 -#: src/client/accounts/accounts-editor-servers-pane.vala:752 -#: src/client/accounts/accounts-editor-servers-pane.vala:964 +#: src/client/accounts/accounts-editor-servers-pane.vala:755 +#: src/client/accounts/accounts-editor-servers-pane.vala:970 #: src/engine/api/geary-special-folder-type.vala:58 msgid "None" msgstr "Brak" @@ -673,7 +702,8 @@ msgstr "TLS" #. credentials (none, use IMAP, custom) when adding a new #. account #. Button label for retrying when a login error has occurred -#: src/client/accounts/accounts-editor-row.vala:534 ui/main-window.ui:347 +#: src/client/accounts/accounts-editor-row.vala:534 +#: ui/application-main-window.ui:346 msgid "Login" msgstr "Login" @@ -733,12 +763,12 @@ msgstr "Zapisywanie wysłanych wiadomości na serwerze" #. Translators: Label used when an account's IMAP or #. SMTP service uses OAuth2. The string replacement is #. the service's login name. -#: src/client/accounts/accounts-editor-servers-pane.vala:950 +#: src/client/accounts/accounts-editor-servers-pane.vala:956 #, c-format msgid "%s using OAuth2" msgstr "%s za pomocą OAuth2" -#: src/client/accounts/accounts-editor-servers-pane.vala:960 +#: src/client/accounts/accounts-editor-servers-pane.vala:966 msgid "Use receiving server login" msgstr "Login serwera odbierania" @@ -769,19 +799,198 @@ msgstr "Plik w „%s” już istnieje. Zastąpienie go nadpisze jego zawartoś msgid "_Replace" msgstr "_Zastąp" +#: src/client/application/application-client.vala:33 +msgid "Copyright 2016 Software Freedom Conservancy Inc." +msgstr "Copyright 2016 Software Freedom Conservancy Inc." + +#: src/client/application/application-client.vala:34 +msgid "Copyright 2016-2019 Geary Development Team." +msgstr "Copyright 2016-2019 Zespół programistów Geary" + +#: src/client/application/application-client.vala:36 +msgid "Visit the Geary web site" +msgstr "Witryna programu Geary" + +#. / Command line option +#: src/client/application/application-client.vala:94 +msgid "Print debug logging" +msgstr "Wyświetla komunikaty dziennika debugowania" + +#. / Command line option +#: src/client/application/application-client.vala:97 +msgid "Start with the main window hidden (deprecated)" +msgstr "Uruchamia z ukrytym głównym oknem (przestarzałe)" + +#. / Command line option +#: src/client/application/application-client.vala:100 +msgid "Enable WebKitGTK Inspector in web views" +msgstr "Włącza Inspektora biblioteki WebKitGTK w widokach WWW" + +#. / Command line option +#: src/client/application/application-client.vala:103 +msgid "Log conversation monitoring" +msgstr "Zapisuje w dzienniku monitoring wątków" + +#. / Command line option +#: src/client/application/application-client.vala:106 +msgid "Log IMAP network deserialization" +msgstr "Zapisuje w dzienniku deserializację sieciową IMAP" + +#. / Command line option. "Normalization" can also be called +#. / "synchronization". +#: src/client/application/application-client.vala:110 +msgid "Log folder normalization" +msgstr "Zapisuje w dzienniku normalizacje katalogów" + +#. / Command line option +#: src/client/application/application-client.vala:113 +msgid "Log network activity" +msgstr "Zapisuje w dzienniku aktywność sieciową" + +#. / Command line option +#: src/client/application/application-client.vala:116 +msgid "Log periodic activity" +msgstr "Zapisuje w dzienniku okresową aktywność" + +#. / Command line option. The IMAP replay queue is how changes +#. / on the server are replicated on the client. It could +#. / also be called the IMAP events queue. +#: src/client/application/application-client.vala:121 +msgid "Log IMAP replay queue" +msgstr "Zapisuje w dzienniku kolejkę odpowiedzi IMAP" + +#. / Command line option. Serialization is how commands and +#. / responses are converted into a stream of bytes for +#. / network transmission +#: src/client/application/application-client.vala:126 +msgid "Log IMAP network serialization" +msgstr "Zapisuje w dzienniku serializację sieciową IMAP" + +#. / Command line option +#: src/client/application/application-client.vala:129 +msgid "Log database queries (generates lots of messages)" +msgstr "" +"Zapisuje w dzienniku zapytania do bazy danych (generuje dużo komunikatów)" + +#. / Command line option +#: src/client/application/application-client.vala:132 +msgid "Perform a graceful quit" +msgstr "Poprawnie kończy działanie" + +#: src/client/application/application-client.vala:134 +msgid "Open a new window" +msgstr "Otwiera nowe okno" + +#. / Command line option +#: src/client/application/application-client.vala:137 +msgid "Revoke all pinned TLS server certificates" +msgstr "Unieważnia wszystkie przypięte certyfikaty serwerów TLS" + +#. / Command line option +#: src/client/application/application-client.vala:140 +msgid "Display program version" +msgstr "Wyświetla wersję programu" + +#. / Application runtime information label +#: src/client/application/application-client.vala:264 +msgid "Geary version" +msgstr "Wersja programu Geary" + +#. / Application runtime information label +#: src/client/application/application-client.vala:266 +msgid "Geary revision" +msgstr "Wydanie programu Geary" + +#. / Application runtime information label +#: src/client/application/application-client.vala:268 +msgid "GTK version" +msgstr "Wersja biblioteki GTK" + +#. / Applciation runtime information label +#: src/client/application/application-client.vala:275 +msgid "GLib version" +msgstr "Wersja biblioteki GLib" + +#. / Application runtime information label +#: src/client/application/application-client.vala:282 +msgid "WebKitGTK version" +msgstr "Wersja biblioteki WebKitGTK" + +#. / Application runtime information label +#: src/client/application/application-client.vala:289 +msgid "Desktop environment" +msgstr "Środowisko pulpitu" + +#. Translators: This is the file type displayed for +#. attachments with unknown file types. +#: src/client/application/application-client.vala:291 +#: src/client/components/components-attachment-pane.vala:91 +msgid "Unknown" +msgstr "Nieznany" + +#. / Application runtime information label +#: src/client/application/application-client.vala:321 +msgid "Distribution name" +msgstr "Nazwa dystrybucji" + +#. / Application runtime information label +#: src/client/application/application-client.vala:326 +msgid "Distribution release" +msgstr "Wydanie dystrybucji" + +#. / Application runtime information label +#: src/client/application/application-client.vala:334 +msgid "Installation prefix" +msgstr "Przedrostek instalacji" + +#: src/client/application/application-client.vala:566 +#, c-format +msgid "About %s" +msgstr "O programie %s" + +#. Translators: add your name and email address to receive +#. credit in the About dialog For example: Yamada Taro +#. +#: src/client/application/application-client.vala:570 +msgid "translator-credits" +msgstr "" +"scrx , 2012\n" +"Piotrek290 , 2012-2013\n" +"Piotrek Dąbrowski , 2013\n" +"Piotr Sokół , 2012-2013\n" +"PriArd , 2012\n" +"wmq , 2012\n" +"yorbajim , 2013\n" +"zacol , 2012\n" +"Piotr Drąg , 2014-2019\n" +"Aviary.pl , 2014-2019" + +#. / Warning printed to the console when a deprecated +#. / command line option is used. +#: src/client/application/application-client.vala:938 +msgid "The `--hidden` option is deprecated and will be removed in the future." +msgstr "Opcja „--hidden” jest przestarzała i zostanie usunięta w przyszłości." + +#. / Command line warning, string substitution +#. / is the given argument +#: src/client/application/application-client.vala:971 +#, c-format +msgid "Unrecognised program argument: “%s”" +msgstr "Nieznany parametr programu: „%s”" + #. / Notification title. -#: src/client/application/application-controller.vala:454 +#: src/client/application/application-controller.vala:457 #, c-format msgid "A problem occurred sending email for %s" msgstr "Wystąpił problem podczas wysyłania wiadomości z konta %s" #. / Notification body -#: src/client/application/application-controller.vala:458 +#: src/client/application/application-controller.vala:461 msgid "Email will not be sent until re-connected" msgstr "Wiadomości nie będą wysyłane do czasu ponownego połączenia" #. / Translators: Label for in-app notification -#: src/client/application/application-controller.vala:564 +#: src/client/application/application-controller.vala:567 msgid "Conversation marked" msgid_plural "Conversations marked" msgstr[0] "Oznaczono wątek" @@ -789,7 +998,7 @@ msgstr[1] "Oznaczono wątki" msgstr[2] "Oznaczono wątki" #. / Translators: Label for in-app notification -#: src/client/application/application-controller.vala:570 +#: src/client/application/application-controller.vala:573 msgid "Conversation un-marked" msgid_plural "Conversations un-marked" msgstr[0] "Usunięto oznaczenie wątku" @@ -799,8 +1008,8 @@ msgstr[2] "Usunięto oznaczenie wątków" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:596 -#: src/client/application/application-controller.vala:680 +#: src/client/application/application-controller.vala:599 +#: src/client/application/application-controller.vala:683 #, c-format msgid "Conversation moved to %s" msgid_plural "Conversations moved to %s" @@ -813,8 +1022,8 @@ msgstr[2] "Przeniesiono wątki do „%s”" #. / of the source folder. #. / Translators: Label for in-app notification. String #. / substitution is the name of the destination folder. -#: src/client/application/application-controller.vala:604 -#: src/client/application/application-controller.vala:626 +#: src/client/application/application-controller.vala:607 +#: src/client/application/application-controller.vala:629 #, c-format msgid "Conversation restored to %s" msgid_plural "Conversations restored to %s" @@ -823,7 +1032,7 @@ msgstr[1] "Przywrócono wątki do „%s”" msgstr[2] "Przywrócono wątki do „%s”" #. / Translators: Label for in-app notification. -#: src/client/application/application-controller.vala:647 +#: src/client/application/application-controller.vala:650 msgid "Conversation archived" msgid_plural "Conversations archived" msgstr[0] "Przeniesiono wątek do archiwum" @@ -832,7 +1041,7 @@ msgstr[2] "Przeniesiono wątki do archiwum" #. / Translators: Label for in-app notification. String #. / substitution is the name of the destination folder. -#: src/client/application/application-controller.vala:703 +#: src/client/application/application-controller.vala:706 #, c-format msgid "Message restored to %s" msgid_plural "Messages restored to %s" @@ -841,7 +1050,7 @@ msgstr[1] "Przywrócono wiadomości do „%s”" msgstr[2] "Przywrócono wiadomości do „%s”" #. / Translators: Label for in-app notification. -#: src/client/application/application-controller.vala:724 +#: src/client/application/application-controller.vala:727 msgid "Message archived" msgid_plural "Messages archived" msgstr[0] "Przeniesiono wiadomość do archiwum" @@ -851,7 +1060,7 @@ msgstr[2] "Przeniesiono wiadomości do archiwum" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:759 +#: src/client/application/application-controller.vala:762 #, c-format msgid "Message moved to %s" msgid_plural "Messages moved to %s" @@ -862,7 +1071,7 @@ msgstr[2] "Przeniesiono wiadomości do „%s”" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:787 +#: src/client/application/application-controller.vala:790 #, c-format msgid "Conversation labelled as %s" msgid_plural "Conversations labelled as %s" @@ -873,7 +1082,7 @@ msgstr[2] "Dodano etykietę „%s”" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:795 +#: src/client/application/application-controller.vala:798 #, c-format msgid "Conversation un-labelled as %s" msgid_plural "Conversations un-labelled as %s" @@ -881,19 +1090,12 @@ msgstr[0] "Usunięto etykietę „%s”" msgstr[1] "Usunięto etykietę „%s”" msgstr[2] "Usunięto etykietę „%s”" -#: src/client/application/application-controller.vala:1193 -msgid "Labels" -msgstr "Etykiety" - -#. give the user two options: reset the Account local store, or exit Geary. A third -#. could be done to leave the Account in an unopened state, but we don't currently -#. have provisions for that. -#: src/client/application/application-controller.vala:1206 +#: src/client/application/application-controller.vala:1221 #, c-format msgid "Unable to open the database for %s" msgstr "Nie można otworzyć bazy danych dla %s" -#: src/client/application/application-controller.vala:1207 +#: src/client/application/application-controller.vala:1222 #, c-format msgid "" "There was an error opening the local mail database for this account. This is " @@ -918,20 +1120,20 @@ msgstr "" "Przebudowanie bazy danych usunie wszystkie lokalne wiadomości e-mail i ich " "załączniki. Poczta na serwerze nie zostanie usunięta." -#: src/client/application/application-controller.vala:1209 +#: src/client/application/application-controller.vala:1224 msgid "_Rebuild" msgstr "P_rzebuduj" -#: src/client/application/application-controller.vala:1209 +#: src/client/application/application-controller.vala:1224 msgid "E_xit" msgstr "Za_kończ" -#: src/client/application/application-controller.vala:1218 +#: src/client/application/application-controller.vala:1234 #, c-format msgid "Unable to rebuild database for “%s”" msgstr "Nie można przebudować bazy danych dla „%s”" -#: src/client/application/application-controller.vala:1219 +#: src/client/application/application-controller.vala:1235 #, c-format msgid "" "Error during rebuild:\n" @@ -942,187 +1144,95 @@ msgstr "" "\n" "%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:1642 +#. / 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:1558 #, c-format -msgid "Successfully sent mail to %s." -msgstr "Pomyślnie wysłano wiadomość do: %s." +msgid "Email sent to %s" +msgstr "Wysłano wiadomość do %s" -#: src/client/application/geary-application.vala:32 -msgid "Copyright 2016 Software Freedom Conservancy Inc." -msgstr "Copyright 2016 Software Freedom Conservancy Inc." - -#: src/client/application/geary-application.vala:33 -msgid "Copyright 2016-2019 Geary Development Team." -msgstr "Copyright 2016-2019 Zespół programistów Geary" - -#: src/client/application/geary-application.vala:35 -msgid "Visit the Geary web site" -msgstr "Witryna programu Geary" - -#. / Command line option -#: src/client/application/geary-application.vala:110 -msgid "Print debug logging" -msgstr "Wyświetla komunikaty dziennika debugowania" - -#. / Command line option -#: src/client/application/geary-application.vala:113 -msgid "Start with the main window hidden (deprecated)" -msgstr "Uruchamia z ukrytym głównym oknem (przestarzałe)" - -#. / Command line option -#: src/client/application/geary-application.vala:116 -msgid "Enable WebKitGTK Inspector in web views" -msgstr "Włącza Inspektora biblioteki WebKitGTK w widokach WWW" - -#. / Command line option -#: src/client/application/geary-application.vala:119 -msgid "Log conversation monitoring" -msgstr "Zapisuje w dzienniku monitoring wątków" - -#. / Command line option -#: src/client/application/geary-application.vala:122 -msgid "Log IMAP network deserialization" -msgstr "Zapisuje w dzienniku deserializację sieciową IMAP" - -#. / Command line option. "Normalization" can also be called -#. / "synchronization". -#: src/client/application/geary-application.vala:126 -msgid "Log folder normalization" -msgstr "Zapisuje w dzienniku normalizacje katalogów" - -#. / Command line option -#: src/client/application/geary-application.vala:129 -msgid "Log network activity" -msgstr "Zapisuje w dzienniku aktywność sieciową" - -#. / Command line option -#: src/client/application/geary-application.vala:132 -msgid "Log periodic activity" -msgstr "Zapisuje w dzienniku okresową aktywność" - -#. / Command line option. The IMAP replay queue is how changes -#. / on the server are replicated on the client. It could -#. / also be called the IMAP events queue. -#: src/client/application/geary-application.vala:137 -msgid "Log IMAP replay queue" -msgstr "Zapisuje w dzienniku kolejkę odpowiedzi IMAP" - -#. / Command line option. Serialization is how commands and -#. / responses are converted into a stream of bytes for -#. / network transmission -#: src/client/application/geary-application.vala:142 -msgid "Log IMAP network serialization" -msgstr "Zapisuje w dzienniku serializację sieciową IMAP" - -#. / Command line option -#: src/client/application/geary-application.vala:145 -msgid "Log database queries (generates lots of messages)" -msgstr "" -"Zapisuje w dzienniku zapytania do bazy danych (generuje dużo komunikatów)" - -#. / Command line option -#: src/client/application/geary-application.vala:148 -msgid "Perform a graceful quit" -msgstr "Poprawnie kończy działanie" - -#. / Command line option -#: src/client/application/geary-application.vala:151 -msgid "Revoke all pinned TLS server certificates" -msgstr "Unieważnia wszystkie przypięte certyfikaty serwerów TLS" - -#. / Command line option -#: src/client/application/geary-application.vala:154 -msgid "Display program version" -msgstr "Wyświetla wersję programu" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:286 -msgid "Geary version" -msgstr "Wersja programu Geary" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:288 -msgid "Geary revision" -msgstr "Wydanie programu Geary" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:290 -msgid "GTK version" -msgstr "Wersja biblioteki GTK" - -#. / Applciation runtime information label -#: src/client/application/geary-application.vala:297 -msgid "GLib version" -msgstr "Wersja biblioteki GLib" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:304 -msgid "WebKitGTK version" -msgstr "Wersja biblioteki WebKitGTK" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:311 -msgid "Desktop environment" -msgstr "Środowisko pulpitu" - -#. Translators: This is the file type displayed for -#. attachments with unknown file types. -#: src/client/application/geary-application.vala:313 -#: src/client/components/components-attachment-pane.vala:91 -msgid "Unknown" -msgstr "Nieznany" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:343 -msgid "Distribution name" -msgstr "Nazwa dystrybucji" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:348 -msgid "Distribution release" -msgstr "Wydanie dystrybucji" - -#. / Application runtime information label -#: src/client/application/geary-application.vala:356 -msgid "Installation prefix" -msgstr "Przedrostek instalacji" - -#: src/client/application/geary-application.vala:518 +#. / 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 #, c-format -msgid "About %s" -msgstr "O programie %s" +msgid "Email to %s queued for delivery" +msgstr "Wiadomość do %s została dodana do kolejki do wysłania" -#. Translators: add your name and email address to receive -#. credit in the About dialog For example: Yamada Taro -#. -#: src/client/application/geary-application.vala:522 -msgid "translator-credits" -msgstr "" -"scrx , 2012\n" -"Piotrek290 , 2012-2013\n" -"Piotrek Dąbrowski , 2013\n" -"Piotr Sokół , 2012-2013\n" -"PriArd , 2012\n" -"wmq , 2012\n" -"yorbajim , 2013\n" -"zacol , 2012\n" -"Piotr Drąg , 2014-2019\n" -"Aviary.pl , 2014-2019" - -#. / Warning printed to the console when a deprecated -#. / command line option is used. -#: src/client/application/geary-application.vala:859 -msgid "The `--hidden` option is deprecated and will be removed in the future." -msgstr "Opcja „--hidden” jest przestarzała i zostanie usunięta w przyszłości." - -#. / Command line warning, string substitution -#. / is the given argument -#: src/client/application/geary-application.vala:891 +#. / 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 #, c-format -msgid "Unrecognised program argument: “%s”" -msgstr "Nieznany parametr programu: „%s”" +msgid "Email to %s saved" +msgstr "Zapisano wiadomość do %s" + +#. / Translators: A label for an in-app notification. +#: src/client/application/application-controller.vala:2716 +#: src/client/application/application-controller.vala:2774 +msgid "Composer could not be restored" +msgstr "Nie można przywrócić okna tworzenia wiadomości" + +#. / Translators: The label for an in-app notification. The +#. / string substitution is a list of recipients of the email. +#: src/client/application/application-controller.vala:2759 +#, c-format +msgid "Email to %s discarded" +msgstr "Odrzucono wiadomość do %s" + +#. / Translators: Main window title, first string +#. / substitution being the currently selected folder name, +#. / the second being the selected account name. +#: src/client/application/application-main-window.vala:552 +#, c-format +msgid "%s — %s" +msgstr "%s — %s" + +#: src/client/application/application-main-window.vala:961 +msgid "Labels" +msgstr "Etykiety" + +#. / Translators: Primary text for a confirmation dialog +#: src/client/application/application-main-window.vala:1297 +msgid "Do you want to permanently delete this conversation?" +msgid_plural "Do you want to permanently delete these conversations?" +msgstr[0] "Trwale usunąć ten wątek?" +msgstr[1] "Trwale usunąć te wątki?" +msgstr[2] "Trwale usunąć te wątki?" + +#: src/client/application/application-main-window.vala:1302 +#: src/client/application/application-main-window.vala:1317 +msgid "Delete" +msgstr "Usuń" + +#. / Translators: Primary text for a confirmation dialog +#: src/client/application/application-main-window.vala:1312 +msgid "Do you want to permanently delete this message?" +msgid_plural "Do you want to permanently delete these messages?" +msgstr[0] "Trwale usunąć tę wiadomość?" +msgstr[1] "Trwale usunąć te wiadomości?" +msgstr[2] "Trwale usunąć te wiadomości?" + +#: src/client/application/application-main-window.vala:1325 +#, c-format +msgid "Empty all email from your %s folder?" +msgstr "Usunąć wszystkie wiadomości z katalogu %s?" + +#: src/client/application/application-main-window.vala:1328 +msgid "This removes the email from Geary and your email server." +msgstr "Spowoduje to usunięcie wiadomości z programu Geary i serwera poczty." + +#: src/client/application/application-main-window.vala:1329 +msgid "This cannot be undone." +msgstr "Tego nie można cofnąć." + +#: src/client/application/application-main-window.vala:1330 +#, c-format +msgid "Empty %s" +msgstr "Opróżnij %s" + +#: src/client/application/application-main-window.vala:1660 +#, c-format +msgid "%s (%d)" +msgstr "%s (%d)" #. Translators: The first argument will be a #. description of the document type, the second will @@ -1130,7 +1240,7 @@ msgstr "Nieznany parametr programu: „%s”" #. 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:1666 +#: src/client/composer/composer-widget.vala:1815 #, c-format msgid "%s (%s)" msgstr "%s (%s)" @@ -1151,152 +1261,166 @@ msgstr "" msgid "Don’t _ask me again" msgstr "_Bez pytania ponownie" -#: src/client/components/components-inspector.vala:68 +#: src/client/components/components-inspector.vala:72 msgid "Inspector" msgstr "Inspektor" #. / Translators: Title for Inspector logs pane #. / Translators: Title for problem report dialog logs pane -#: src/client/components/components-inspector.vala:77 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:91 +#: src/client/components/components-inspector.vala:87 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 msgid "Logs" msgstr "Dzienniki" #. / Translators: Title for Inspector system system information pane #. / Translators: Title for problem report system information #. / pane -#: src/client/components/components-inspector.vala:81 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:94 +#: src/client/components/components-inspector.vala:91 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 msgid "System" msgstr "System" #. Button label for saving problem report information -#: src/client/components/components-inspector.vala:198 -#: src/client/components/components-inspector.vala:201 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:210 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:213 +#: src/client/components/components-inspector.vala:208 +#: src/client/components/components-inspector.vala:211 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 #: ui/problem-details-dialog.ui:42 msgid "Save As" msgstr "Zapisz jako" -#: src/client/components/components-inspector.vala:202 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:214 +#: src/client/components/components-inspector.vala:212 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 #: ui/accounts_editor_servers_pane.ui:17 msgid "Cancel" msgstr "Anuluj" +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:43 +msgid "_Automatically select next message" +msgstr "_Automatyczne wybieranie następnej wiadomości" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:53 +msgid "_Display conversation preview" +msgstr "P_odgląd wątku" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:63 +msgid "Use _three pane view" +msgstr "Widok _trzech paneli" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:73 +msgid "Use _single key email shortcuts" +msgstr "_Skróty jednoklawiszowe" + +#: src/client/components/components-preferences-window.vala:75 +msgid "" +"Enable keyboard shortcuts for email actions that do not require pressing " +"" +msgstr "" +"Włącza skróty klawiszowe do działań na wiadomościach, które nie wymagają " +"naciśnięcia klawisza " + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:86 +msgid "_Watch for new mail when closed" +msgstr "_Monitorowanie nowych wiadomości po zamknięciu" + +#. / Translators: Preferences tooltip +#: src/client/components/components-preferences-window.vala:90 +msgid "Geary will keep running after all windows are closed" +msgstr "Program Geary będzie nadal działał po zamknięciu wszystkich okien" + +#. / Translators: Search entry placeholder text +#: src/client/components/components-search-bar.vala:12 +#: src/client/folder-list/folder-list-search-branch.vala:53 +#: src/engine/api/geary-special-folder-type.vala:51 +msgid "Search" +msgstr "Wyszukaj" + +#. / Translators: Search entry tooltip +#: src/client/components/components-search-bar.vala:32 +msgid "Search all mail in account for keywords" +msgstr "Przeszukuje wszystkie wiadomości z konta pod kątem słów kluczowych" + +#. / Translators: Search entry placeholder, string +#. / replacement is the name of an account +#: src/client/components/components-search-bar.vala:81 +#: src/client/folder-list/folder-list-search-branch.vala:54 +#, c-format +msgid "Search %s account" +msgstr "Przeszukiwanie konta %s" + #. Translators: Tooltip used when an entry requires a valid #. email address to be entered, but one is not provided. -#: src/client/components/components-validator.vala:378 +#: src/client/components/components-validator.vala:390 msgid "An email address is required" msgstr "Wymagany jest adres e-mail" #. Translators: Tooltip used when an entry requires a valid #. email address to be entered, but the address is invalid. -#: src/client/components/components-validator.vala:382 +#: src/client/components/components-validator.vala:394 msgid "Not a valid email address" msgstr "Nieprawidłowy adres e-mail" #. Translators: Tooltip used when an entry requires a valid, #. resolvable server name to be entered, but one is not #. provided. -#: src/client/components/components-validator.vala:428 +#: src/client/components/components-validator.vala:440 msgid "A server name is required" msgstr "Wymagana jest nazwa serwera" #. Translators: Tooltip used when an entry requires a valid #. server name to be entered, but it was unable to be #. looked-up in the DNS. -#: src/client/components/components-validator.vala:433 +#: src/client/components/components-validator.vala:445 msgid "Could not look up server name" msgstr "Nie można wyszukać nazwy serwera" -#: src/client/components/main-toolbar.vala:139 +#: src/client/components/main-toolbar.vala:142 msgid "Mark conversation" msgid_plural "Mark conversations" msgstr[0] "Oznacza wątek" msgstr[1] "Oznacza wątki" msgstr[2] "Oznacza wątki" -#: src/client/components/main-toolbar.vala:144 +#: src/client/components/main-toolbar.vala:147 msgid "Add label to conversation" msgid_plural "Add label to conversations" msgstr[0] "Nadaje etykietę wątkowi" msgstr[1] "Nadaje etykietę wątkom" msgstr[2] "Nadaje etykietę wątkom" -#: src/client/components/main-toolbar.vala:149 +#: src/client/components/main-toolbar.vala:152 msgid "Move conversation" msgid_plural "Move conversations" msgstr[0] "Przenosi wątek" msgstr[1] "Przenosi wątki" msgstr[2] "Przenosi wątki" -#: src/client/components/main-toolbar.vala:154 +#: src/client/components/main-toolbar.vala:157 msgid "Archive conversation" msgid_plural "Archive conversations" msgstr[0] "Archiwizuje wątek" msgstr[1] "Archiwizuje wątki" msgstr[2] "Archiwizuje wątki" -#: src/client/components/main-toolbar.vala:163 +#: src/client/components/main-toolbar.vala:168 msgid "Move conversation to Trash" msgid_plural "Move conversations to Trash" msgstr[0] "Przenosi wątek do kosza" msgstr[1] "Przenosi wątki do kosza" msgstr[2] "Przenosi wątki do kosza" -#: src/client/components/main-toolbar.vala:171 +#: src/client/components/main-toolbar.vala:178 msgid "Delete conversation" msgid_plural "Delete conversations" msgstr[0] "Usuwa wątek" msgstr[1] "Usuwa wątki" msgstr[2] "Usuwa wątki" -#. / Translators: Primary text for a confirmation dialog -#: src/client/components/main-window.vala:985 -msgid "Do you want to permanently delete this conversation?" -msgid_plural "Do you want to permanently delete these conversations?" -msgstr[0] "Trwale usunąć ten wątek?" -msgstr[1] "Trwale usunąć te wątki?" -msgstr[2] "Trwale usunąć te wątki?" - -#: src/client/components/main-window.vala:990 -#: src/client/components/main-window.vala:1005 -msgid "Delete" -msgstr "Usuń" - -#. / Translators: Primary text for a confirmation dialog -#: src/client/components/main-window.vala:1000 -msgid "Do you want to permanently delete this message?" -msgid_plural "Do you want to permanently delete these messages?" -msgstr[0] "Trwale usunąć tę wiadomość?" -msgstr[1] "Trwale usunąć te wiadomości?" -msgstr[2] "Trwale usunąć te wiadomości?" - -#: src/client/components/main-window.vala:1013 -#, c-format -msgid "Empty all email from your %s folder?" -msgstr "Usunąć wszystkie wiadomości z katalogu %s?" - -#: src/client/components/main-window.vala:1016 -msgid "This removes the email from Geary and your email server." -msgstr "Spowoduje to usunięcie wiadomości z programu Geary i serwera poczty." - -#: src/client/components/main-window.vala:1017 -msgid "This cannot be undone." -msgstr "Tego nie można cofnąć." - -#: src/client/components/main-window.vala:1018 -#, c-format -msgid "Empty %s" -msgstr "Opróżnij %s" - -#: src/client/components/main-window.vala:1361 -#, c-format -msgid "%s (%d)" -msgstr "%s (%d)" - #. Translators: Info bar title for a generic account #. problem. #: src/client/components/main-window-info-bar.vala:44 @@ -1366,29 +1490,6 @@ msgstr "Wyświetla informacje techniczne o błędzie" msgid "_Retry" msgstr "_Ponów" -#: src/client/components/search-bar.vala:8 -#: src/client/folder-list/folder-list-search-branch.vala:38 -#: src/engine/api/geary-special-folder-type.vala:51 -msgid "Search" -msgstr "Wyszukaj" - -#. Search entry. -#: src/client/components/search-bar.vala:23 -msgid "Search all mail in account for keywords (Ctrl+S)" -msgstr "" -"Przeszukuje wszystkie wiadomości z konta pod kątem słów kluczowych (Ctrl+S)" - -#: src/client/components/search-bar.vala:83 -#, c-format -msgid "Indexing %s account" -msgstr "Indeksowanie konta %s" - -#: src/client/components/search-bar.vala:110 -#: src/client/folder-list/folder-list-search-branch.vala:39 -#, c-format -msgid "Search %s account" -msgstr "Przeszukiwanie konta %s" - #. / Displayed in the space-limited status bar while a message is in the process of being sent. #: src/client/components/status-bar.vala:26 msgid "Sending…" @@ -1476,19 +1577,24 @@ msgstr "Nieprawidłowy adres URL odnośnika" msgid "Invalid email address" msgstr "Nieprawidłowy adres e-mail" -#: src/client/composer/composer-widget.vala:159 +#. / Translators: Title for an empty composer window +#: src/client/composer/composer-widget.vala:28 +msgid "New Message" +msgstr "Nowa wiadomość" + +#: src/client/composer/composer-widget.vala:210 msgid "Saved" msgstr "Zapisano" -#: src/client/composer/composer-widget.vala:160 +#: src/client/composer/composer-widget.vala:211 msgid "Saving" msgstr "Zapisywanie" -#: src/client/composer/composer-widget.vala:161 +#: src/client/composer/composer-widget.vala:212 msgid "Error saving" msgstr "Błąd podczas zapisywania" -#: src/client/composer/composer-widget.vala:162 +#: src/client/composer/composer-widget.vala:213 msgid "Press Backspace to delete quote" msgstr "Naciśnięcie klawisza Backspace usunie cytat" @@ -1497,7 +1603,7 @@ msgstr "Naciśnięcie klawisza Backspace usunie cytat" #. 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:178 +#: src/client/composer/composer-widget.vala:229 msgid "" "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" "enclosing|encloses|enclosure|enclosures" @@ -1509,89 +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:1182 +#: src/client/composer/composer-widget.vala:814 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:1212 +#: src/client/composer/composer-widget.vala:840 msgid "Do you want to discard this draft message?" msgstr "Odrzucić ten szkic?" -#: src/client/composer/composer-widget.vala:1331 +#: src/client/composer/composer-widget.vala:1484 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:1333 +#: src/client/composer/composer-widget.vala:1486 msgid "Send message with an empty subject?" msgstr "Wysłać wiadomość niezawierającą tematu?" -#: src/client/composer/composer-widget.vala:1335 +#: src/client/composer/composer-widget.vala:1488 msgid "Send message with an empty body?" msgstr "Wysłać wiadomość niezawierającą treści?" -#: src/client/composer/composer-widget.vala:1344 +#: src/client/composer/composer-widget.vala:1497 msgid "Send message without an attachment?" msgstr "Wysłać wiadomość niezawierającą załączników?" -#: src/client/composer/composer-widget.vala:1658 +#: src/client/composer/composer-widget.vala:1807 #, c-format msgid "“%s” already attached for delivery." msgstr "Do wiadomości już załączono „%s”." -#: src/client/composer/composer-widget.vala:1703 -#, c-format -msgid "“%s” could not be found." -msgstr "Nie można odnaleźć „%s”." - -#: src/client/composer/composer-widget.vala:1709 -#, c-format -msgid "“%s” is a folder." -msgstr "„%s” jest katalogiem." - -#: src/client/composer/composer-widget.vala:1715 +#: src/client/composer/composer-widget.vala:1837 +#: src/client/composer/composer-widget.vala:1887 #, c-format msgid "“%s” is an empty file." msgstr "„%s” jest pustym plikiem." -#: src/client/composer/composer-widget.vala:1728 +#: src/client/composer/composer-widget.vala:1875 +#, c-format +msgid "“%s” could not be found." +msgstr "Nie można odnaleźć „%s”." + +#: src/client/composer/composer-widget.vala:1881 +#, c-format +msgid "“%s” is a folder." +msgstr "„%s” jest katalogiem." + +#: src/client/composer/composer-widget.vala:1900 #, c-format msgid "“%s” could not be opened for reading." msgstr "Nie można otworzyć „%s” do odczytania." -#: src/client/composer/composer-widget.vala:1736 +#: src/client/composer/composer-widget.vala:1908 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:1793 +#: src/client/composer/composer-widget.vala:1965 #: src/client/conversation-viewer/conversation-email.vala:559 -#: src/client/util/util-email.vala:216 ui/conversation-message.ui:312 +#: 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:1799 +#: src/client/composer/composer-widget.vala:1971 #: src/client/conversation-viewer/conversation-email.vala:564 -#: src/client/util/util-email.vala:221 ui/conversation-message.ui:357 +#: 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:1805 +#: src/client/composer/composer-widget.vala:1977 #: 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:1811 +#: src/client/composer/composer-widget.vala:1983 msgid "Reply-To: " msgstr "Odpowiedź do: " -#: src/client/composer/composer-widget.vala:1951 +#: src/client/composer/composer-widget.vala:2172 msgid "Select Color" msgstr "Wybór koloru" @@ -1600,27 +1707,23 @@ 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:2143 +#: src/client/composer/composer-widget.vala:2364 #, 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:2198 +#: src/client/composer/composer-widget.vala:2420 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:2480 +#: src/client/composer/composer-widget.vala:2723 msgid "Images" msgstr "Obrazy" -#: src/client/composer/composer-window.vala:14 -msgid "New Message" -msgstr "Nowa wiadomość" - #: src/client/composer/spell-check-popover.vala:108 msgid "Remove this language from the preferred list" msgstr "Usuwa ten język z listy preferowanych" @@ -1634,7 +1737,7 @@ msgid "Search for more languages" msgstr "Więcej języków" #. / Translators: Context menu item -#: src/client/conversation-list/conversation-list-view.vala:312 +#: src/client/conversation-list/conversation-list-view.vala:335 msgid "Move conversation to _Trash" msgid_plural "Move conversations to _Trash" msgstr[0] "_Przenieś wątek do kosza" @@ -1642,45 +1745,45 @@ msgstr[1] "_Przenieś wątki do kosza" msgstr[2] "_Przenieś wątki do kosza" #. / Translators: Context menu item -#: src/client/conversation-list/conversation-list-view.vala:322 +#: src/client/conversation-list/conversation-list-view.vala:347 msgid "_Delete conversation" msgid_plural "_Delete conversations" msgstr[0] "_Usuń wątek" msgstr[1] "_Usuń wątki" msgstr[2] "_Usuń wątki" -#: src/client/conversation-list/conversation-list-view.vala:331 +#: src/client/conversation-list/conversation-list-view.vala:360 #: ui/main-toolbar-menus.ui:5 msgid "Mark as _Read" msgstr "Oznacz jako p_rzeczytane" -#: src/client/conversation-list/conversation-list-view.vala:334 +#: src/client/conversation-list/conversation-list-view.vala:368 #: ui/main-toolbar-menus.ui:9 msgid "Mark as _Unread" msgstr "Oznacz jako niep_rzeczytane" -#: src/client/conversation-list/conversation-list-view.vala:337 +#: src/client/conversation-list/conversation-list-view.vala:376 #: ui/main-toolbar-menus.ui:17 msgid "U_nstar" msgstr "Usuń wy_różnienie" -#: src/client/conversation-list/conversation-list-view.vala:339 +#: src/client/conversation-list/conversation-list-view.vala:383 #: ui/main-toolbar-menus.ui:13 msgid "_Star" msgstr "_Wyróżnij" #. Translators: Menu item to reply to a specific message. -#: src/client/conversation-list/conversation-list-view.vala:342 +#: src/client/conversation-list/conversation-list-view.vala:392 #: ui/conversation-email-menus.ui:9 msgid "_Reply" msgstr "_Odpowiedz" -#: src/client/conversation-list/conversation-list-view.vala:343 +#: src/client/conversation-list/conversation-list-view.vala:398 msgid "R_eply All" msgstr "O_dpowiedz wszystkim" #. Translators: Menu item to forward a specific message. -#: src/client/conversation-list/conversation-list-view.vala:344 +#: src/client/conversation-list/conversation-list-view.vala:404 #: ui/conversation-email-menus.ui:21 msgid "_Forward" msgstr "_Przekaż" @@ -1691,23 +1794,23 @@ msgstr "Ja" #. Translators: Human-readable version of the RFC 822 From header #: src/client/conversation-viewer/conversation-email.vala:554 -#: src/client/util/util-email.vala:207 +#: src/client/util/util-email.vala:226 msgid "From:" msgstr "Od:" #. Translators: Human-readable version of the RFC 822 Date header #: src/client/conversation-viewer/conversation-email.vala:574 -#: src/client/util/util-email.vala:212 +#: src/client/util/util-email.vala:231 msgid "Date:" msgstr "Data:" #. Translators: Human-readable version of the RFC 822 Subject header #: src/client/conversation-viewer/conversation-email.vala:584 -#: src/client/util/util-email.vala:210 +#: src/client/util/util-email.vala:229 msgid "Subject:" msgstr "Temat:" -#: src/client/conversation-viewer/conversation-message.vala:132 +#: src/client/conversation-viewer/conversation-message.vala:128 msgid "This email address may have been forged" msgstr "Ten adres e-mail może być fałszywy" @@ -1715,44 +1818,44 @@ msgstr "Ten adres e-mail może być fałszywy" #. in load_contacts. #. Translators: This is displayed in place of the from address #. when the message has no from address. -#: src/client/conversation-viewer/conversation-message.vala:449 +#: src/client/conversation-viewer/conversation-message.vala:465 msgid "No sender" msgstr "Brak nadawcy" #. Translators: This separates multiple 'from' #. addresses in the compact header for a message. -#: src/client/conversation-viewer/conversation-message.vala:841 +#: src/client/conversation-viewer/conversation-message.vala:959 msgid ", " msgstr ", " #. Translators: This string is used as the HTML IMG ALT #. attribute value when displaying an inline image in an email #. that did not specify a file name. E.g. Image Date: Mon, 30 Dec 2019 12:47:16 +0100 Subject: [PATCH 26/32] Updated Spanish translation --- po/es.po | 334 ++++++++++++++++++++++++++----------------------------- 1 file changed, 156 insertions(+), 178 deletions(-) diff --git a/po/es.po b/po/es.po index d7bf3f1e..18bb4815 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: 2019-11-20 23:26+0000\n" -"PO-Revision-Date: 2019-11-21 11:54+0100\n" +"POT-Creation-Date: 2019-12-17 23:56+0000\n" +"PO-Revision-Date: 2019-12-30 12:30+0100\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Spanish - Spain \n" "Language: es_ES\n" @@ -224,8 +224,6 @@ 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 -#| msgctxt "shortcut window" -#| msgid "Single-key shortcuts" msgid "Use single key shortcuts" msgstr "Usar atajos de una sola tecla" @@ -607,12 +605,12 @@ 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:2021 +#: src/client/application/application-main-window.vala:2037 msgid "Undo" msgstr "Deshacer" #: src/client/accounts/accounts-editor-list-pane.vala:257 -#: src/client/application/application-main-window.vala:2011 +#: src/client/application/application-main-window.vala:2027 msgid "Redo" msgstr "Rehacer" @@ -965,37 +963,37 @@ msgstr "" #. / Warning printed to the console when a deprecated #. / command line option is used. -#: src/client/application/application-client.vala:913 +#: src/client/application/application-client.vala:938 msgid "The `--hidden` option is deprecated and will be removed in the future." msgstr "La opción «--hidden» está obsoleta y se eliminará en el futuro." #. / Command line warning, string substitution #. / is the given argument -#: src/client/application/application-client.vala:946 +#: src/client/application/application-client.vala:971 #, c-format msgid "Unrecognised program argument: “%s”" msgstr "Opción de la línea de comandos no reconocida: «%s»" #. / Notification title. -#: src/client/application/application-controller.vala:477 +#: src/client/application/application-controller.vala:457 #, c-format msgid "A problem occurred sending email for %s" msgstr "Ha ocurrido un error al enviar el correo para %s" #. / Notification body -#: src/client/application/application-controller.vala:481 +#: src/client/application/application-controller.vala:461 msgid "Email will not be sent until re-connected" msgstr "El correo no se enviará hasta que se vuelva a conectar" #. / Translators: Label for in-app notification -#: src/client/application/application-controller.vala:587 +#: src/client/application/application-controller.vala:567 msgid "Conversation marked" msgid_plural "Conversations marked" msgstr[0] "Conversación marcada" msgstr[1] "Conversaciones marcadas" #. / Translators: Label for in-app notification -#: src/client/application/application-controller.vala:593 +#: src/client/application/application-controller.vala:573 msgid "Conversation un-marked" msgid_plural "Conversations un-marked" msgstr[0] "Conversación desmarcada" @@ -1004,8 +1002,8 @@ msgstr[1] "Conversaciones desmarcadas" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:619 -#: src/client/application/application-controller.vala:703 +#: src/client/application/application-controller.vala:599 +#: src/client/application/application-controller.vala:683 #, c-format msgid "Conversation moved to %s" msgid_plural "Conversations moved to %s" @@ -1017,8 +1015,8 @@ msgstr[1] "Conversaciones movidas a %s" #. / of the source folder. #. / Translators: Label for in-app notification. String #. / substitution is the name of the destination folder. -#: src/client/application/application-controller.vala:627 -#: src/client/application/application-controller.vala:649 +#: src/client/application/application-controller.vala:607 +#: src/client/application/application-controller.vala:629 #, c-format msgid "Conversation restored to %s" msgid_plural "Conversations restored to %s" @@ -1026,7 +1024,7 @@ msgstr[0] "Conversación restaurada a %s" msgstr[1] "Conversaciones restauradas a %s" #. / Translators: Label for in-app notification. -#: src/client/application/application-controller.vala:670 +#: src/client/application/application-controller.vala:650 msgid "Conversation archived" msgid_plural "Conversations archived" msgstr[0] "Conversación archivada" @@ -1034,7 +1032,7 @@ msgstr[1] "Conversaciones archivadas" #. / Translators: Label for in-app notification. String #. / substitution is the name of the destination folder. -#: src/client/application/application-controller.vala:726 +#: src/client/application/application-controller.vala:706 #, c-format msgid "Message restored to %s" msgid_plural "Messages restored to %s" @@ -1042,7 +1040,7 @@ msgstr[0] "Mensaje restaurado a %s" msgstr[1] "Mensajes restaurados a %s" #. / Translators: Label for in-app notification. -#: src/client/application/application-controller.vala:747 +#: src/client/application/application-controller.vala:727 msgid "Message archived" msgid_plural "Messages archived" msgstr[0] "Mensaje archivado" @@ -1051,7 +1049,7 @@ msgstr[1] "Mensajes archivados" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:782 +#: src/client/application/application-controller.vala:762 #, c-format msgid "Message moved to %s" msgid_plural "Messages moved to %s" @@ -1061,7 +1059,7 @@ msgstr[1] "Mensajes movidos a %s" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:810 +#: src/client/application/application-controller.vala:790 #, c-format msgid "Conversation labelled as %s" msgid_plural "Conversations labelled as %s" @@ -1071,19 +1069,19 @@ msgstr[1] "Conversaciones etiquetadas como %s" #. / Translators: Label for in-app #. / notification. String substitution is the name #. / of the destination folder. -#: src/client/application/application-controller.vala:818 +#: src/client/application/application-controller.vala:798 #, c-format msgid "Conversation un-labelled as %s" msgid_plural "Conversations un-labelled as %s" msgstr[0] "Conversación desetiquetada como %s" msgstr[1] "Conversaciones desetiquetadas como %s" -#: src/client/application/application-controller.vala:1238 +#: src/client/application/application-controller.vala:1221 #, c-format msgid "Unable to open the database for %s" msgstr "No se pudo abrir la base de datos local para %s" -#: src/client/application/application-controller.vala:1239 +#: src/client/application/application-controller.vala:1222 #, c-format msgid "" "There was an error opening the local mail database for this account. This is " @@ -1108,20 +1106,20 @@ msgstr "" "Reconstruir la base de datos destruirá todo el correo guardado de forma " "local y sus adjuntos. El correo del servidor permanecerá intacto." -#: src/client/application/application-controller.vala:1241 +#: src/client/application/application-controller.vala:1224 msgid "_Rebuild" msgstr "_Reconstruir" -#: src/client/application/application-controller.vala:1241 +#: src/client/application/application-controller.vala:1224 msgid "E_xit" msgstr "_Salir" -#: src/client/application/application-controller.vala:1251 +#: src/client/application/application-controller.vala:1234 #, c-format msgid "Unable to rebuild database for “%s”" msgstr "No se puede reconstruir la base de datos para «%s»" -#: src/client/application/application-controller.vala:1252 +#: src/client/application/application-controller.vala:1235 #, c-format msgid "" "Error during rebuild:\n" @@ -1134,34 +1132,34 @@ msgstr "" #. / Translators: The label for an in-app notification. The #. / string substitution is a list of recipients of the email. -#: src/client/application/application-controller.vala:1575 +#: src/client/application/application-controller.vala:1558 #, c-format msgid "Email sent to %s" 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:2648 +#: src/client/application/application-controller.vala:2636 #, 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:2713 +#: src/client/application/application-controller.vala:2701 #, 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:2728 -#: src/client/application/application-controller.vala:2786 +#: src/client/application/application-controller.vala:2716 +#: src/client/application/application-controller.vala:2774 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:2771 +#: src/client/application/application-controller.vala:2759 #, c-format msgid "Email to %s discarded" msgstr "Correo a %s descartado" @@ -1174,49 +1172,49 @@ msgstr "Correo a %s descartado" msgid "%s — %s" msgstr "%s — %s" -#: src/client/application/application-main-window.vala:949 +#: src/client/application/application-main-window.vala:961 msgid "Labels" msgstr "Etiquetas" #. / Translators: Primary text for a confirmation dialog -#: src/client/application/application-main-window.vala:1281 +#: src/client/application/application-main-window.vala:1297 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:1286 -#: src/client/application/application-main-window.vala:1301 +#: src/client/application/application-main-window.vala:1302 +#: src/client/application/application-main-window.vala:1317 msgid "Delete" msgstr "Eliminar" #. / Translators: Primary text for a confirmation dialog -#: src/client/application/application-main-window.vala:1296 +#: src/client/application/application-main-window.vala:1312 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:1309 +#: src/client/application/application-main-window.vala:1325 #, 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:1312 +#: src/client/application/application-main-window.vala:1328 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:1313 +#: src/client/application/application-main-window.vala:1329 msgid "This cannot be undone." msgstr "Esto no se puede deshacer." -#: src/client/application/application-main-window.vala:1314 +#: src/client/application/application-main-window.vala:1330 #, c-format msgid "Empty %s" msgstr "Vaciar %s" -#: src/client/application/application-main-window.vala:1644 +#: src/client/application/application-main-window.vala:1660 #, c-format msgid "%s (%d)" msgstr "%s (%d)" @@ -1227,7 +1225,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:1796 +#: src/client/composer/composer-widget.vala:1815 #, c-format msgid "%s (%s)" msgstr "%s (%s)" @@ -1255,7 +1253,7 @@ msgstr "Inspector" #. / Translators: Title for Inspector logs pane #. / Translators: Title for problem report dialog logs pane #: src/client/components/components-inspector.vala:87 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:101 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 msgid "Logs" msgstr "Registros" @@ -1263,21 +1261,21 @@ msgstr "Registros" #. / Translators: Title for problem report system information #. / pane #: src/client/components/components-inspector.vala:91 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:104 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 msgid "System" msgstr "Sistema" #. Button label for saving problem report information #: src/client/components/components-inspector.vala:208 #: src/client/components/components-inspector.vala:211 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:220 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:223 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 #: ui/problem-details-dialog.ui:42 msgid "Save As" msgstr "Guardar como" #: src/client/components/components-inspector.vala:212 -#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 #: ui/accounts_editor_servers_pane.ui:17 msgid "Cancel" msgstr "Cancelar" @@ -1299,8 +1297,6 @@ msgstr "Usar vista de _tres paneles" #. / Translators: Preferences label #: src/client/components/components-preferences-window.vala:73 -#| msgctxt "shortcut window" -#| msgid "Single-key shortcuts" msgid "Use _single key email shortcuts" msgstr "Usar atajo_s de correo de una sola tecla" @@ -1322,6 +1318,27 @@ msgstr "_Revisar si hay mensajes nuevos al cerrar" msgid "Geary will keep running after all windows are closed" msgstr "Geary seguirá en ejecución después de haber cerrado todas la ventanas" +#. / Translators: Search entry placeholder text +#: src/client/components/components-search-bar.vala:12 +#: src/client/folder-list/folder-list-search-branch.vala:53 +#: src/engine/api/geary-special-folder-type.vala:51 +msgid "Search" +msgstr "Buscar" + +#. / 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 "Buscar palabras clave en todo el correo de la cuenta" + +#. / Translators: Search entry placeholder, string +#. / replacement is the name of an account +#: src/client/components/components-search-bar.vala:81 +#: src/client/folder-list/folder-list-search-branch.vala:54 +#, c-format +msgid "Search %s account" +msgstr "Buscar la cuenta %s" + #. Translators: Tooltip used when an entry requires a valid #. email address to be entered, but one is not provided. #: src/client/components/components-validator.vala:390 @@ -1453,28 +1470,6 @@ msgstr "Ver detalles técnicos sobre el error" msgid "_Retry" msgstr "_Reintentar" -#: src/client/components/search-bar.vala:8 -#: src/client/folder-list/folder-list-search-branch.vala:53 -#: src/engine/api/geary-special-folder-type.vala:51 -msgid "Search" -msgstr "Buscar" - -#. Search entry. -#: src/client/components/search-bar.vala:24 -msgid "Search all mail in account for keywords (Ctrl+S)" -msgstr "Buscar palabras en todo el correo de la cuenta (Ctrl+S)" - -#: src/client/components/search-bar.vala:88 -#, c-format -msgid "Indexing %s account" -msgstr "Indexando la cuenta %s" - -#: src/client/components/search-bar.vala:119 -#: src/client/folder-list/folder-list-search-branch.vala:54 -#, c-format -msgid "Search %s account" -msgstr "Buscar la cuenta %s" - #. / Displayed in the space-limited status bar while a message is in the process of being sent. #: src/client/components/status-bar.vala:26 msgid "Sending…" @@ -1566,19 +1561,19 @@ msgstr "Dirección correo-e no válida" msgid "New Message" msgstr "Mensaje nuevo" -#: src/client/composer/composer-widget.vala:211 +#: src/client/composer/composer-widget.vala:210 msgid "Saved" msgstr "Guardado" -#: src/client/composer/composer-widget.vala:212 +#: src/client/composer/composer-widget.vala:211 msgid "Saving" msgstr "Guardando" -#: src/client/composer/composer-widget.vala:213 +#: src/client/composer/composer-widget.vala:212 msgid "Error saving" msgstr "Error al guardar" -#: src/client/composer/composer-widget.vala:214 +#: src/client/composer/composer-widget.vala:213 msgid "Press Backspace to delete quote" msgstr "Pulse Retroceso para eliminar la cita" @@ -1587,7 +1582,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:230 +#: src/client/composer/composer-widget.vala:229 msgid "" "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" "enclosing|encloses|enclosure|enclosures" @@ -1598,90 +1593,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:798 +#: src/client/composer/composer-widget.vala:814 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:824 +#: src/client/composer/composer-widget.vala:840 msgid "Do you want to discard this draft message?" msgstr "¿Quiere descartar este mensaje en borrador?" -#: src/client/composer/composer-widget.vala:1465 +#: src/client/composer/composer-widget.vala:1484 msgid "Send message with an empty subject and body?" msgstr "¿Quiere enviar el mensaje sin asunto ni cuerpo?" -#: src/client/composer/composer-widget.vala:1467 +#: src/client/composer/composer-widget.vala:1486 msgid "Send message with an empty subject?" msgstr "¿Quiere enviar el mensaje sin asunto?" -#: src/client/composer/composer-widget.vala:1469 +#: src/client/composer/composer-widget.vala:1488 msgid "Send message with an empty body?" msgstr "¿Quiere enviar el mensaje sin cuerpo?" -#: src/client/composer/composer-widget.vala:1478 +#: src/client/composer/composer-widget.vala:1497 msgid "Send message without an attachment?" msgstr "¿Quiere enviar el mensaje sin el archivo adjunto?" -#: src/client/composer/composer-widget.vala:1788 +#: src/client/composer/composer-widget.vala:1807 #, c-format msgid "“%s” already attached for delivery." msgstr "Ya se ha adjuntado «%s» para enviarlo." -#: src/client/composer/composer-widget.vala:1818 -#: src/client/composer/composer-widget.vala:1868 +#: src/client/composer/composer-widget.vala:1837 +#: src/client/composer/composer-widget.vala:1887 #, c-format msgid "“%s” is an empty file." msgstr "«%s» es un archivo vacío." -#: src/client/composer/composer-widget.vala:1856 +#: src/client/composer/composer-widget.vala:1875 #, c-format msgid "“%s” could not be found." msgstr "No se pudo encontrar «%s»." -#: src/client/composer/composer-widget.vala:1862 +#: src/client/composer/composer-widget.vala:1881 #, c-format msgid "“%s” is a folder." msgstr "«%s» es una carpeta." -#: src/client/composer/composer-widget.vala:1881 +#: src/client/composer/composer-widget.vala:1900 #, c-format msgid "“%s” could not be opened for reading." msgstr "No se pudo abrir «%s» para lectura." -#: src/client/composer/composer-widget.vala:1889 +#: src/client/composer/composer-widget.vala:1908 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:1946 +#: src/client/composer/composer-widget.vala:1965 #: 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:1952 +#: src/client/composer/composer-widget.vala:1971 #: 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:1958 +#: src/client/composer/composer-widget.vala:1977 #: 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:1964 +#: src/client/composer/composer-widget.vala:1983 msgid "Reply-To: " msgstr "Responder a:" -#: src/client/composer/composer-widget.vala:2144 +#: src/client/composer/composer-widget.vala:2172 msgid "Select Color" msgstr "Seleccionar color" @@ -1690,20 +1685,20 @@ 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:2336 +#: src/client/composer/composer-widget.vala:2364 #, 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:2392 +#: src/client/composer/composer-widget.vala:2420 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:2695 +#: src/client/composer/composer-widget.vala:2723 msgid "Images" msgstr "Imágenes" @@ -1791,7 +1786,7 @@ msgstr "Fecha:" msgid "Subject:" msgstr "Asunto:" -#: src/client/conversation-viewer/conversation-message.vala:132 +#: src/client/conversation-viewer/conversation-message.vala:128 msgid "This email address may have been forged" msgstr "Es posible que esta dirección de correo se haya falsificado" @@ -1799,44 +1794,44 @@ msgstr "Es posible que esta dirección de correo se haya falsificado" #. in load_contacts. #. Translators: This is displayed in place of the from address #. when the message has no from address. -#: src/client/conversation-viewer/conversation-message.vala:449 +#: src/client/conversation-viewer/conversation-message.vala:465 msgid "No sender" msgstr "Sin remitente" #. Translators: This separates multiple 'from' #. addresses in the compact header for a message. -#: src/client/conversation-viewer/conversation-message.vala:841 +#: src/client/conversation-viewer/conversation-message.vala:959 msgid ", " msgstr ", " #. Translators: This string is used as the HTML IMG ALT #. attribute value when displaying an inline image in an email #. that did not specify a file name. E.g. Image Date: Mon, 30 Dec 2019 23:58:00 +0100 Subject: [PATCH 27/32] Update Catalan translation --- po/ca.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/po/ca.po b/po/ca.po index 6e32e547..1d3378fa 100644 --- a/po/ca.po +++ b/po/ca.po @@ -61,7 +61,7 @@ msgstr "Email;Correu electrònic;Correu;" #. Translators: The development team's name #: desktop/org.gnome.Geary.appdata.xml.in:13 msgid "Geary Development Team" -msgstr "Geary Development Team" +msgstr "Equip de desenvolupament del Geary" #: desktop/org.gnome.Geary.appdata.xml.in:17 msgid "" @@ -306,13 +306,13 @@ msgstr "El darrer registre de la mida de la finestra separada de l'editor." #: desktop/org.gnome.Geary.gschema.xml:128 msgid "Whether we migrated the old settings" -msgstr "Si hem d'emigrar els paràmetres antics" +msgstr "Si hem de migrar els paràmetres antics" #: desktop/org.gnome.Geary.gschema.xml:129 msgid "" "False to check for the old “org.yorba.geary”-schema and copy its values." msgstr "" -"Fals per comprovar l’antic «org.yorba.geary» -schema i copiar els seus " +"Fals per comprovar l'antic «org.yorba.geary» -schema i copiar els seus " "valors." #. Translators: In-app notification label, when @@ -2371,8 +2371,8 @@ msgid "" "Removing an account will remove it from Geary and delete locally cached " "email data from your computer, but not from your service provider." msgstr "" -"L’eliminació d’un compte l’eliminarà del Geary i esborrarà les dades del " -"correu a la memòria cau local de l’ordinador, però no del proveïdor de " +"L'eliminació d’un compte l'eliminarà del Geary i esborrarà les dades del " +"correu a la memòria cau local de l'ordinador, però no del proveïdor de " "serveis." #: ui/accounts_editor_remove_pane.ui:122 @@ -2778,7 +2778,7 @@ msgstr "Però en realitat va a:" #: ui/conversation-message.ui:723 msgid "The link appears to go to:" -msgstr "L'enllaç apareix en anar a:" +msgstr "L'enllaç sembla anar a:" #: ui/conversation-message.ui:735 msgid "Deceptive link found" From 7753d0a7f71683312f6e4005fa3d8f8a1e3ea38a Mon Sep 17 00:00:00 2001 From: James Westman Date: Wed, 1 Jan 2020 19:25:54 -0600 Subject: [PATCH 28/32] composer: Better UI for Cc/Bcc/Reply-To fields Implemented according to the mockups at . - Use an animated revealer rather than instantly showing/hiding the fields - Include Cc in the "extended fields" - Use a toggle button instead of a menu item to show/hide these fields, for better discoverability --- src/client/composer/composer-widget.vala | 14 +- ui/composer-menus.ui | 12 - ui/composer-widget.ui | 512 +++++++++++++++-------- 3 files changed, 336 insertions(+), 202 deletions(-) diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala index e46bc6f3..123d59e3 100644 --- a/src/client/composer/composer-widget.vala +++ b/src/client/composer/composer-widget.vala @@ -317,12 +317,15 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { private Gee.ArrayList from_list = new Gee.ArrayList(); [GtkChild] - private Gtk.EventBox to_box; + private Gtk.Box to_box; [GtkChild] private Gtk.Label to_label; private EmailEntry to_entry; private Components.EntryUndo to_undo; + [GtkChild] + private Gtk.Revealer extended_fields_revealer; + [GtkChild] private Gtk.EventBox cc_box; [GtkChild] @@ -508,7 +511,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { this.to_entry = new EmailEntry(this); this.to_entry.changed.connect(on_envelope_changed); - this.to_box.add(to_entry); + this.to_box.pack_start(to_entry, true, true); this.to_label.set_mnemonic_widget(this.to_entry); this.to_undo = new Components.EntryUndo(this.to_entry); @@ -530,8 +533,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { this.reply_to_label.set_mnemonic_widget(this.reply_to_entry); this.reply_to_undo = new Components.EntryUndo(this.reply_to_entry); - this.to_entry.margin_top = this.cc_entry.margin_top = this.bcc_entry.margin_top = this.reply_to_entry.margin_top = 6; - this.subject_undo = new Components.EntryUndo(this.subject_entry); this.subject_spell_entry = Gspell.Entry.get_from_gtk_entry( this.subject_entry @@ -2138,10 +2139,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { GLib.Variant? new_state) { bool show_extended = new_state.get_boolean(); action.set_state(show_extended); - this.bcc_label.visible = - this.bcc_entry.visible = - this.reply_to_label.visible = - this.reply_to_entry.visible = show_extended; + this.extended_fields_revealer.reveal_child = show_extended; if (show_extended && this.current_mode == INLINE_COMPACT) { set_mode(INLINE); diff --git a/ui/composer-menus.ui b/ui/composer-menus.ui index 66554ac2..2f4c342f 100644 --- a/ui/composer-menus.ui +++ b/ui/composer-menus.ui @@ -48,12 +48,6 @@ win.compose-as-html -
- - Show Extended Fields - win.show-extended - -
@@ -63,12 +57,6 @@ win.compose-as-html -
- - Show Extended Fields - win.show-extended-headers - -
diff --git a/ui/composer-widget.ui b/ui/composer-widget.ui index b4821843..57ee5157 100644 --- a/ui/composer-widget.ui +++ b/ui/composer-widget.ui @@ -1,5 +1,5 @@ - + + + + + + + + + + + From b39182b719043a300291530fe4aa4b362840b489 Mon Sep 17 00:00:00 2001 From: James Westman Date: Fri, 3 Jan 2020 17:02:44 -0600 Subject: [PATCH 29/32] composer: Center "drop files here" message The "Drop files here to add them as attachments" message was not centered as it should have been, because the "expand" child property was reset to false when it was removed/readded to its parent. --- src/client/composer/composer-widget.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala index e46bc6f3..871561b4 100644 --- a/src/client/composer/composer-widget.vala +++ b/src/client/composer/composer-widget.vala @@ -1202,7 +1202,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { if (visible) { int height = hidden_on_attachment_drag_over.get_allocated_height(); this.hidden_on_attachment_drag_over.remove(this.hidden_on_attachment_drag_over_child); - this.visible_on_attachment_drag_over.add(this.visible_on_attachment_drag_over_child); + this.visible_on_attachment_drag_over.pack_start(this.visible_on_attachment_drag_over_child, true, true); this.visible_on_attachment_drag_over.set_size_request(-1, height); } else { this.hidden_on_attachment_drag_over.add(this.hidden_on_attachment_drag_over_child); From 38fb4e6b1d34eb5f67b7f32066fa5c28760d7a6d Mon Sep 17 00:00:00 2001 From: Andika Triwidada Date: Sat, 4 Jan 2020 01:25:11 +0000 Subject: [PATCH 30/32] Update Indonesian translation --- po/id.po | 3514 +++++++++++++++++++++++++++++------------------------- 1 file changed, 1919 insertions(+), 1595 deletions(-) diff --git a/po/id.po b/po/id.po index e191dcf5..b585dc6e 100644 --- a/po/id.po +++ b/po/id.po @@ -8,68 +8,60 @@ # Mohamad Hasan Al Banna, 2013 msgid "" msgstr "" -"Project-Id-Version: geary master\n" +"Project-Id-Version: geary mainline\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/geary/issues\n" -"POT-Creation-Date: 2018-10-24 11:36+0000\n" -"PO-Revision-Date: 2018-11-15 23:24+0700\n" -"Last-Translator: Kukuh Syafaat \n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/geary/" -"language/id/)\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" +"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=1; plural=0;\n" -"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=n!=1;\n" +"X-Generator: Poedit 2.2.1\n" #: desktop/geary-attach.contract.desktop.in:3 msgid "Send by email" msgstr "Kirim melalui surel" -#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! -#: desktop/geary-attach.contract.desktop.in:5 -msgid "mail-send" -msgstr "mail-send" - #: desktop/geary-attach.contract.desktop.in:6 msgid "Send files using Geary" msgstr "Kirim berkas memakai Geary" #. Translators: The application name -#: desktop/geary-autostart.desktop.in:3 -#: desktop/org.gnome.Geary.appdata.xml.in:11 -#: desktop/org.gnome.Geary.desktop.in:3 +#: desktop/geary-autostart.desktop.in.in:3 +#: desktop/org.gnome.Geary.appdata.xml.in.in:12 +#: desktop/org.gnome.Geary.desktop.in.in:3 +#: src/client/accounts/accounts-editor-servers-pane.vala:555 +#: src/client/application/application-main-window.vala:547 msgid "Geary" msgstr "Geary" -#: desktop/geary-autostart.desktop.in:4 desktop/org.gnome.Geary.desktop.in:4 +#: desktop/geary-autostart.desktop.in.in:4 +#: desktop/org.gnome.Geary.desktop.in.in:4 msgid "Email" msgstr "Surel" #. Translators: The application's summary / tagline -#: desktop/geary-autostart.desktop.in:5 -#: desktop/org.gnome.Geary.appdata.xml.in:15 -#: desktop/org.gnome.Geary.desktop.in:5 -#: src/client/application/geary-application.vala:21 +#: desktop/geary-autostart.desktop.in.in:5 +#: desktop/org.gnome.Geary.appdata.xml.in.in:16 +#: desktop/org.gnome.Geary.desktop.in.in:5 +#: src/client/application/application-client.vala:32 msgid "Send and receive email" msgstr "Kirim dan terima surel" #. Translators: These are desktop search terms. Do not translate semicolons, end line with a semicolon. -#: desktop/geary-autostart.desktop.in:7 +#: desktop/geary-autostart.desktop.in.in:7 msgid "Email;E-mail;Mail;" msgstr "Surel;Surat;Email;E-mail;Mail;" -#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! -#: desktop/geary-autostart.desktop.in:9 desktop/org.gnome.Geary.desktop.in:9 -msgid "org.gnome.Geary" -msgstr "org.gnome.Geary" - #. Translators: The development team's name -#: desktop/org.gnome.Geary.appdata.xml.in:13 +#: desktop/org.gnome.Geary.appdata.xml.in.in:14 msgid "Geary Development Team" msgstr "Tim Pengembang Geary" -#: desktop/org.gnome.Geary.appdata.xml.in:17 +#: desktop/org.gnome.Geary.appdata.xml.in.in:18 msgid "" "Geary is an email application built around conversations, for the GNOME 3 " "desktop. It allows you to read, find and send email with a straightforward, " @@ -79,7 +71,7 @@ msgstr "" "desktop GNOME 3. Memungkinkan Anda membaca, mencari, dan mengirim surel " "dengan antar muka yang modern, mudah." -#: desktop/org.gnome.Geary.appdata.xml.in:22 +#: desktop/org.gnome.Geary.appdata.xml.in.in:23 msgid "" "Conversations allow you to read a complete discussion without having to find " "and click from message to message." @@ -87,54 +79,58 @@ msgstr "" "Percakapan memungkinkan Anda membaca diskusi lengkap tanpa perlu mencari dan " "mengklik dari pesan ke pesan." -#: desktop/org.gnome.Geary.appdata.xml.in:26 +#: desktop/org.gnome.Geary.appdata.xml.in.in:27 msgid "Geary’s features include:" msgstr "Fitur Geary termasuk:" -#: desktop/org.gnome.Geary.appdata.xml.in:28 +#: desktop/org.gnome.Geary.appdata.xml.in.in:29 msgid "Quick email account setup" msgstr "Penyiapan akun surel cepat" -#: desktop/org.gnome.Geary.appdata.xml.in:29 +#: desktop/org.gnome.Geary.appdata.xml.in.in:30 msgid "Shows related messages together in conversations" msgstr "Menampilkan pesan-pesan yang berhubungan bersama-sama dalam percakapan" -#: desktop/org.gnome.Geary.appdata.xml.in:30 +#: desktop/org.gnome.Geary.appdata.xml.in.in:31 msgid "Fast, full text and keyword search" msgstr "Pencarian kata kunci dan teks penuh yang cepat" -#: desktop/org.gnome.Geary.appdata.xml.in:31 +#: desktop/org.gnome.Geary.appdata.xml.in.in:32 msgid "Full-featured HTML and plain text message composer" msgstr "Penyusun pesan teks polos dan HTML berfitur lengkap" -#: desktop/org.gnome.Geary.appdata.xml.in:32 +#: desktop/org.gnome.Geary.appdata.xml.in.in:33 msgid "Desktop notification of new mail" msgstr "Pemberitahuan desktop atas surat baru" -#: desktop/org.gnome.Geary.appdata.xml.in:33 +#: desktop/org.gnome.Geary.appdata.xml.in.in:34 msgid "Compatible with GMail, Yahoo! Mail, Outlook.com and other IMAP servers" msgstr "" "Kompatibel dengan GMail, Yahoo! Mail, Outlook.com, dan server IMAP lain" #. Translators: A screenshot description. -#: desktop/org.gnome.Geary.appdata.xml.in:47 +#: desktop/org.gnome.Geary.appdata.xml.in.in:48 msgid "Geary displaying a conversation" msgstr "Geary menampilkan percakapan" #. Translators: A screenshot description. -#: desktop/org.gnome.Geary.appdata.xml.in:52 +#: desktop/org.gnome.Geary.appdata.xml.in.in:59 msgid "Geary showing the rich text composer" msgstr "Geary menunjukkan penyusun rich text" #. Translators: These are desktop search terms. Do not translate semicolons, end line with a semicolon. -#: desktop/org.gnome.Geary.desktop.in:7 +#: desktop/org.gnome.Geary.desktop.in.in:7 msgid "Mail;E-mail;IMAP;GMail;Yahoo;Hotmail;Outlook;" msgstr "Surat;Surel;Mail;E-mail;IMAP;GMail;Yahoo;Hotmail;Outlook;" -#: desktop/org.gnome.Geary.desktop.in:21 ui/gtk/menus.ui:7 +#: desktop/org.gnome.Geary.desktop.in.in:22 msgid "Compose Message" msgstr "Susun Pesan" +#: desktop/org.gnome.Geary.desktop.in.in:26 +msgid "New Window" +msgstr "Jendela Baru" + #: desktop/org.gnome.Geary.gschema.xml:8 msgid "Maximize window" msgstr "Maksimalkan jendela" @@ -217,252 +213,724 @@ msgid "True if we should display a short preview of each message." msgstr "True jika kita harus menampilkan pratinjau singkat setiap pesan." #: desktop/org.gnome.Geary.gschema.xml:68 +msgid "Use single key shortcuts" +msgstr "Pakai pintasan tombol tunggal" + +#: desktop/org.gnome.Geary.gschema.xml:69 +msgid "" +"Enables shortcuts for email actions that do not require pressing to " +"emulate those used by Gmail." +msgstr "" +"Memfungsikan pintasan untuk aksi surel yang tidak memerlukan menekan " +"untuk mengemulasi mereka yang dipakai oleh Gmail." + +#: desktop/org.gnome.Geary.gschema.xml:76 msgid "Languages that shall be used in the spell checker" msgstr "Bahasa yang akan digunakan dalam pemeriksa ejaan" -#: desktop/org.gnome.Geary.gschema.xml:69 -msgid "List of the languages to use in the spell checker." -msgstr "Daftar bahasa yang akan digunakan di pemeriksa ejaan." +#: desktop/org.gnome.Geary.gschema.xml:77 +msgid "" +"A list of POSIX locales, with the empty list disabling spell checking and " +"the null list using desktop languages by default." +msgstr "" +"Suatu daftar locale POSIX, dengan daftar kosong yang menonaktifkan " +"pemeriksaan ejaan dan daftar null memakai bahasa-bahasa desktop secara baku." -#: desktop/org.gnome.Geary.gschema.xml:74 +#: desktop/org.gnome.Geary.gschema.xml:84 msgid "Languages that are displayed in the spell checker popover" msgstr "Bahasa yang ditampilkan dalam popover pemeriksa ejaan" -#: desktop/org.gnome.Geary.gschema.xml:75 +#: desktop/org.gnome.Geary.gschema.xml:85 msgid "" "List of languages that are always displayed in the popover of the spell " "checker." msgstr "Daftar bahasa yang selalu ditampilkan di popover pemeriksa ejaan." -#: desktop/org.gnome.Geary.gschema.xml:80 -msgid "Enable notification sounds" -msgstr "Aktifkan suara pemberitahuan" - -#: desktop/org.gnome.Geary.gschema.xml:81 -msgid "True to play sounds for notifications and sending." -msgstr "True untuk memutar suara untuk pemberitahuan dan pengiriman." - -#: desktop/org.gnome.Geary.gschema.xml:86 -msgid "Show notifications for new mail" -msgstr "Tampilkan pemberitahuan bagi surat baru" - -#: desktop/org.gnome.Geary.gschema.xml:87 -msgid "True to show notification bubbles." -msgstr "True untuk menunjukkan gelembung pemberitahuan." - -#: desktop/org.gnome.Geary.gschema.xml:92 +#: desktop/org.gnome.Geary.gschema.xml:90 msgid "Notify of new mail at startup" msgstr "Beritahu surel baru saat awal mula" -#: desktop/org.gnome.Geary.gschema.xml:93 +#: desktop/org.gnome.Geary.gschema.xml:91 msgid "True to notify of new mail at startup." msgstr "True untuk memberitahukan surel baru saat memulai." -#: desktop/org.gnome.Geary.gschema.xml:98 +#: desktop/org.gnome.Geary.gschema.xml:96 msgid "Ask when opening an attachment" msgstr "Tanyakan saat membuka lampiran" -#: desktop/org.gnome.Geary.gschema.xml:99 +#: desktop/org.gnome.Geary.gschema.xml:97 msgid "True to ask when opening an attachment." msgstr "True untuk bertanya saat membuka lampiran." -#: desktop/org.gnome.Geary.gschema.xml:104 +#: desktop/org.gnome.Geary.gschema.xml:102 msgid "Whether to compose emails in HTML" msgstr "Apakah untuk menulis surel dalam HTML" -#: desktop/org.gnome.Geary.gschema.xml:105 +#: desktop/org.gnome.Geary.gschema.xml:103 msgid "True to compose emails in HTML; false for plain text." msgstr "True untuk menulis surel dalam HTML; false untuk teks biasa." -#: desktop/org.gnome.Geary.gschema.xml:110 +#: desktop/org.gnome.Geary.gschema.xml:108 msgid "Advisory strategy for full-text searching" msgstr "Strategi penasehat untuk penelusuran teks lengkap" -#: desktop/org.gnome.Geary.gschema.xml:111 +#: desktop/org.gnome.Geary.gschema.xml:109 msgid "" "Acceptable values are “exact”, “conservative”, “aggressive”, and “horizon”." msgstr "" "Nilai yang dapat diterima \"exact\" (tepat), \"conservative\" (konservatif), " "\"aggressive\" (agresif), dan \"horizon\" (horizon)." -#: desktop/org.gnome.Geary.gschema.xml:116 +#: desktop/org.gnome.Geary.gschema.xml:114 msgid "Zoom of conversation viewer" msgstr "Zoom penampil percakapan" -#: desktop/org.gnome.Geary.gschema.xml:117 +#: desktop/org.gnome.Geary.gschema.xml:115 msgid "The zoom to apply on the conservation view." msgstr "Zum untuk diterapkan pada tampilan konservasi." -#: desktop/org.gnome.Geary.gschema.xml:122 +#: desktop/org.gnome.Geary.gschema.xml:120 msgid "Size of detached composer window" msgstr "Ukuran jendela penyusun yang terpisah" -#: desktop/org.gnome.Geary.gschema.xml:123 +#: desktop/org.gnome.Geary.gschema.xml:121 msgid "The last recorded size of the detached composer window." msgstr "Ukuran yang terekam terakhir dari jendela komposer yang terpisah." -#: desktop/org.gnome.Geary.gschema.xml:128 -msgid "Base URL to look up contact avatars" -msgstr "URL dasar untuk mencari avatar kontak" +#: desktop/org.gnome.Geary.gschema.xml:126 +msgid "Undo sending email delay" +msgstr "Batalkan tundaan pengiriman surel" -#: desktop/org.gnome.Geary.gschema.xml:129 +#: desktop/org.gnome.Geary.gschema.xml:127 msgid "" -"A Gravatar or Libravatar compatible URL, set to the empty string to disable." +"The number of seconds to wait before sending an email. Set to zero or less " +"to disable." msgstr "" -"URL yang kompatibel dengan Gravatar atau Libravatar, disetel ke string " -"kosong untuk dinonaktifkan." +"Berapa detik menunggu sebelum mengirim sebuah surel. Atur ke nol atau kurang " +"untuk menonaktifkan." -#: desktop/org.gnome.Geary.gschema.xml:134 +#: desktop/org.gnome.Geary.gschema.xml:133 msgid "Whether we migrated the old settings" msgstr "Apakah kita memigrasikan pengaturan lama" -#: desktop/org.gnome.Geary.gschema.xml:135 +#: desktop/org.gnome.Geary.gschema.xml:134 msgid "" "False to check for the old “org.yorba.geary”-schema and copy its values." msgstr "" "False untuk memeriksa \"org.yorba.geary\"-schema lama dan salin nilainya." -#: src/client/accounts/account-dialog-add-edit-pane.vala:54 -#: src/client/components/stock.vala:31 ui/conversation-email-menus.ui:83 -msgid "_Save" -msgstr "_Simpan" +#. Translators: In-app notification label, when +#. the app had a problem pinning an otherwise +#. untrusted TLS certificate +#: src/client/accounts/accounts-editor.vala:210 +msgid "Failed to store certificate" +msgstr "Gagal menyimpan sertifikat" -#: src/client/accounts/account-dialog-add-edit-pane.vala:54 -#: src/client/components/stock.vala:22 -msgid "_Add" -msgstr "T_ambah" +#. Translators: Label for adding an email account +#. account for a generic IMAP service provider. +#: src/client/accounts/accounts-editor-add-pane.vala:108 +msgid "All others" +msgstr "Semua lainnya" -#. reset/clear widgets -#: src/client/accounts/account-dialog-edit-alternate-emails-pane.vala:120 +#. Translators: In-app notification label +#: src/client/accounts/accounts-editor-add-pane.vala:195 +#: src/client/accounts/accounts-editor-servers-pane.vala:316 +msgid "Check your receiving login and password" +msgstr "Periksa login dan kata sandi penerimaan Anda" + +#. Translators: In-app notification label +#: src/client/accounts/accounts-editor-add-pane.vala:210 +#: src/client/accounts/accounts-editor-servers-pane.vala:329 +msgid "Check your receiving server details" +msgstr "Periksa rincian server penerimaan Anda" + +#. Translators: In-app notification label +#. There was an SMTP auth error, but IMAP already +#. succeeded, so the user probably needs to +#. specify custom creds here +#. Translators: In-app notification label +#: src/client/accounts/accounts-editor-add-pane.vala:232 +#: src/client/accounts/accounts-editor-servers-pane.vala:350 +msgid "Check your sending login and password" +msgstr "Periksa login dan kata sandi pengiriman Anda" + +#. Translators: In-app notification label +#: src/client/accounts/accounts-editor-add-pane.vala:246 +#: src/client/accounts/accounts-editor-servers-pane.vala:363 +msgid "Check your sending server details" +msgstr "Periksa rincian server pengiriman Anda" + +#. Translators: In-app notification label +#: src/client/accounts/accounts-editor-add-pane.vala:261 +msgid "Check your email address and password" +msgstr "Periksa alamat dan kata sandi surel Anda" + +#. Translators: In-app notification label +#: src/client/accounts/accounts-editor-add-pane.vala:272 +msgid "Could not connect, check your network" +msgstr "Tidak bisa menyambung, periksalah jaringan Anda" + +#. Translators: In-app notification label for a +#. generic error creating an account +#: src/client/accounts/accounts-editor-add-pane.vala:285 +msgid "An unexpected problem occurred" +msgstr "Kesalahan yang tidak terduga terjadi" + +#. Translators: In-app notification label, the +#. string substitution is a more detailed reason. +#: src/client/accounts/accounts-editor-add-pane.vala:303 #, c-format -msgid "Additional addresses for %s" -msgstr "Alamat tambahan bagi %s" +msgid "Account not created: %s" +msgstr "Akun tidak dibuat: %s" -#. Sets min size. -#: src/client/accounts/account-dialog.vala:28 -msgid "Accounts" -msgstr "Akun" +#. Translators: Label for the person's actual name when adding +#. an account +#: src/client/accounts/accounts-editor-add-pane.vala:558 +msgid "Your name" +msgstr "Nama Anda" -#. Copyright 2016 Software Freedom Conservancy Inc. -#. * -#. * This software is licensed under the GNU Lesser General Public License -#. * (version 2.1 or later). See the COPYING file in this distribution. -#. -#. Page for adding or editing an account. -#. / Placeholder text indicating that the user should type their first name and last name -#: src/client/accounts/add-edit-page.vala:10 -msgid "First Last" -msgstr "NamaDepan NamaBelakang" +#. Translators: Label used for the address part of an +#. email address when editing a user's sender address +#. preferences for an account. +#: src/client/accounts/accounts-editor-add-pane.vala:575 +#: src/client/accounts/accounts-editor-edit-pane.vala:513 +msgid "Email address" +msgstr "Alamat surel" -#: src/client/accounts/add-edit-page.vala:240 -msgid "Welcome to Geary." -msgstr "Selamat datang ke Geary." +#. Translators: Placeholder for the default sender address +#. when adding an account +#. Translators: This is used as a placeholder for the +#. address part of an email address when editing a user's +#. sender address preferences for an account. +#: src/client/accounts/accounts-editor-add-pane.vala:579 +#: src/client/accounts/accounts-editor-edit-pane.vala:479 +msgid "person@example.com" +msgstr "surel@contoh.com" -#: src/client/accounts/add-edit-page.vala:240 -msgid "Enter your account information to get started." -msgstr "Masukkan info akun Anda untuk memulai." +#. Translators: Label for an IMAP/SMTP service login/user name +#. when adding an account +#. Translators: Label for the user's login name for an +#. IMAP, SMTP, etc service +#: src/client/accounts/accounts-editor-add-pane.vala:593 +#: src/client/accounts/accounts-editor-servers-pane.vala:884 +msgid "Login name" +msgstr "Nama log masuk" -#: src/client/accounts/add-edit-page.vala:260 -msgid "2 weeks back" -msgstr "2 minggu ke belakang" +#. Translators: Label for the user's password for an IMAP, +#. SMTP, etc service +#: src/client/accounts/accounts-editor-add-pane.vala:607 +#: src/client/accounts/accounts-editor-servers-pane.vala:1006 +#: ui/password-dialog.glade:108 +msgid "Password" +msgstr "Sandi" -#. IDs are # of days -#: src/client/accounts/add-edit-page.vala:261 -msgid "1 month back" -msgstr "1 bulan ke belakang" +#. Translators: Label for the IMAP server hostname when +#. adding an account. +#. Translators: This label describes the host name or IP +#. address and port used by an account's IMAP service. +#: src/client/accounts/accounts-editor-add-pane.vala:629 +#: src/client/accounts/accounts-editor-servers-pane.vala:728 +msgid "IMAP server" +msgstr "Server IMAP" -#: src/client/accounts/add-edit-page.vala:262 -msgid "3 months back" -msgstr "3 bulan ke belakang" +#. Translators: Placeholder for the IMAP server hostname +#. when adding an account. +#: src/client/accounts/accounts-editor-add-pane.vala:632 +msgid "imap.example.com" +msgstr "imap.example.com" -#: src/client/accounts/add-edit-page.vala:263 -msgid "6 months back" -msgstr "6 bulan ke belakang" +#. Translators: Label for the SMTP server hostname when +#. adding an account. +#. Translators: This label describes the host name or IP +#. address and port used by an account's SMTP service. +#: src/client/accounts/accounts-editor-add-pane.vala:638 +#: src/client/accounts/accounts-editor-servers-pane.vala:734 +msgid "SMTP server" +msgstr "Server SMTP" -#: src/client/accounts/add-edit-page.vala:264 -msgid "1 year back" -msgstr "1 tahun ke belakang" +#. Translators: Placeholder for the SMTP server hostname +#. when adding an account. +#: src/client/accounts/accounts-editor-add-pane.vala:641 +msgid "smtp.example.com" +msgstr "smtp.example.com" -#: src/client/accounts/add-edit-page.vala:265 -msgid "2 years back" -msgstr "2 tahun ke belakang" +#. Translators: Label in the account editor for the user's +#. custom name for an account. +#: src/client/accounts/accounts-editor-edit-pane.vala:277 +#: ui/accounts_editor_remove_pane.ui:123 +msgid "Account name" +msgstr "Nama akun" -#: src/client/accounts/add-edit-page.vala:266 -msgid "4 years back" -msgstr "4 tahun ke belakang" +#. Translators: Tooltip used to undo changing +#. the name of an account. The string +#. substitution is the old name of the +#. account. +#: src/client/accounts/accounts-editor-edit-pane.vala:318 +#, c-format +msgid "Change account name back to “%s”" +msgstr "Ubah nama akun kembali ke \"%s\"" -#. Separator -#: src/client/accounts/add-edit-page.vala:268 +#. Translators: Tooltip for adding a new email sender/from +#. address's address to an account +#: src/client/accounts/accounts-editor-edit-pane.vala:342 +msgid "Add a new sender email address" +msgstr "Tambahkan alamat surel pengirim baru" + +#. Translators: Label used to indicate the user has +#. provided no display name for one of their sender +#. email addresses in their account settings. +#: src/client/accounts/accounts-editor-edit-pane.vala:423 +msgid "Name not set" +msgstr "Nama tidak ditata" + +#. Translators: This is used as a placeholder for the +#. display name for an email address when editing a user's +#. sender address preferences for an account. +#: src/client/accounts/accounts-editor-edit-pane.vala:464 +msgid "Sender Name" +msgstr "Name Pengirim" + +#: src/client/accounts/accounts-editor-edit-pane.vala:491 +msgid "Remove" +msgstr "Hapus" + +#. Translators: Label used for the display name part of an +#. email address when editing a user's sender address +#. preferences for an account. +#: src/client/accounts/accounts-editor-edit-pane.vala:506 +msgid "Sender name" +msgstr "Nama pengirim" + +#. Translators: Label used as the undo tooltip after adding an +#. new sender email address to an account. The string +#. substitution is the email address added. +#: src/client/accounts/accounts-editor-edit-pane.vala:573 +#, c-format +msgid "Remove “%s”" +msgstr "Hapus \"%s\"" + +#. Translators: Label used as the undo tooltip after editing a +#. sender address for an account. The string substitution is +#. the email address edited. +#: src/client/accounts/accounts-editor-edit-pane.vala:613 +#, c-format +msgid "Undo changes to “%s”" +msgstr "Batalkan perubahan ke \"%s\"" + +#. Translators: Label used as the undo tooltip after removing +#. a sender address from an account. The string substitution +#. is the email address edited. +#: src/client/accounts/accounts-editor-edit-pane.vala:700 +#, c-format +msgid "Add “%s” back" +msgstr "Tambahkan \"%s\" kembali" + +#. Translators: Label used as the undo tooltip after removing +#. a sender address from an account. The string substitution +#. is the email address edited. +#: src/client/accounts/accounts-editor-edit-pane.vala:742 +msgid "Undo signature changes" +msgstr "Batalkan perubahan tanda tangan" + +#. Translators: This label describes the account +#. preference for the length of time (weeks, months or +#. years) that past email should be downloaded. +#: src/client/accounts/accounts-editor-edit-pane.vala:790 +msgid "Download mail" +msgstr "Unduh surat" + +#. Translators: Tooltip for undoing a change +#. to the length of time that past email +#. should be downloaded for an account. The +#. string substitution is the duration, +#. e.g. "1 month back". +#: src/client/accounts/accounts-editor-edit-pane.vala:822 +#, c-format +msgid "Change download period back to: %s" +msgstr "Ubah perioda unduh kembali ke: %s" + +#: src/client/accounts/accounts-editor-edit-pane.vala:843 msgid "Everything" msgstr "Semua" -#: src/client/accounts/add-edit-page.vala:288 -msgid "Edit" -msgstr "Sunting" +#: src/client/accounts/accounts-editor-edit-pane.vala:847 +msgid "2 weeks back" +msgstr "2 minggu ke belakang" -#: src/client/accounts/add-edit-page.vala:290 -msgid "Preview" -msgstr "Pratinjau" +#: src/client/accounts/accounts-editor-edit-pane.vala:851 +msgid "1 month back" +msgstr "1 bulan ke belakang" -#: src/client/accounts/add-edit-page.vala:778 -msgid "Remem_ber passwords" -msgstr "I_ngat sandi" +#: src/client/accounts/accounts-editor-edit-pane.vala:855 +msgid "3 months back" +msgstr "3 bulan ke belakang" -#: src/client/accounts/add-edit-page.vala:785 ui/login.glade:233 -msgid "Remem_ber password" -msgstr "I_ngat sandi" +#: src/client/accounts/accounts-editor-edit-pane.vala:859 +msgid "6 months back" +msgstr "6 bulan ke belakang" -#: src/client/accounts/add-edit-page.vala:819 -msgid "Unable to validate:\n" -msgstr "Tak dapat mengesahkan:\n" +#: src/client/accounts/accounts-editor-edit-pane.vala:863 +msgid "1 year back" +msgstr "1 tahun ke belakang" -#: src/client/accounts/add-edit-page.vala:821 -msgid " • Invalid account nickname.\n" -msgstr " • Nama panggilan akun tidak sah.\n" +#: src/client/accounts/accounts-editor-edit-pane.vala:867 +msgid "2 years back" +msgstr "2 tahun ke belakang" -#: src/client/accounts/add-edit-page.vala:824 -msgid " • Email address already added to Geary.\n" -msgstr "" -" • Alamat surel telah ditambahkan ke Geary.\n" -"\n" +#: src/client/accounts/accounts-editor-edit-pane.vala:871 +msgid "4 years back" +msgstr "4 tahun ke belakang" -#: src/client/accounts/add-edit-page.vala:828 -msgid " • IMAP connection error.\n" -msgstr " • Galat koneksi IMAP.\n" +#: src/client/accounts/accounts-editor-edit-pane.vala:877 +#, c-format +msgid "%d day back" +msgid_plural "%d days back" +msgstr[0] "%d hari ke belakang" +msgstr[1] "%d hari ke belakang" -#: src/client/accounts/add-edit-page.vala:831 -msgid " • IMAP username or password incorrect.\n" -msgstr " • Nama pengguna atau sandi IMAP salah.\n" +#: src/client/accounts/accounts-editor-list-pane.vala:248 +#: src/client/application/application-main-window.vala:2037 +msgid "Undo" +msgstr "Tak Jadi" -#: src/client/accounts/add-edit-page.vala:834 -msgid " • SMTP connection error.\n" -msgstr " • Koneksi SMTP galat.\n" +#: src/client/accounts/accounts-editor-list-pane.vala:257 +#: src/client/application/application-main-window.vala:2027 +msgid "Redo" +msgstr "Jadi Lagi" -#: src/client/accounts/add-edit-page.vala:837 -msgid " • SMTP username or password incorrect.\n" -msgstr " • Nama pengguna atau sandi SMTP salah.\n" +#: src/client/accounts/accounts-editor-list-pane.vala:351 +#: src/client/accounts/accounts-editor-list-pane.vala:439 +#: src/client/accounts/accounts-editor-row.vala:279 +msgid "Gmail" +msgstr "Gmail" -#: src/client/accounts/add-edit-page.vala:841 -msgid " • Connection error.\n" -msgstr " • Galat koneksi.\n" +#: 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:283 +msgid "Outlook.com" +msgstr "Outlook.com" -#: src/client/accounts/add-edit-page.vala:845 -msgid " • Username or password incorrect.\n" -msgstr " • Nama pengguna atau sandi salah.\n" +#: 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:287 +msgid "Yahoo" +msgstr "Yahoo" -#: src/client/application/geary-application.vala:22 +#. Translators: Tooltip for accounts that have been +#. loaded but disabled by the user. +#: src/client/accounts/accounts-editor-list-pane.vala:377 +msgid "This account has been disabled" +msgstr "Akun ini telah dinonaktifkan" + +#. 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 +msgid "This account has encountered a problem and is unavailable" +msgstr "Akun ini mengalami masalah dan tidak tersedia" + +#. Translators: Label for adding a generic email account +#: src/client/accounts/accounts-editor-list-pane.vala:436 +msgid "Other email providers" +msgstr "Penyedia surel lain" + +#. 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 +#, c-format +msgid "Account “%s” removed" +msgstr "Akun \"%s\" dihapus" + +#. 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 +#, c-format +msgid "Account “%s” restored" +msgstr "Akun \"%s\" dipulihkan" + +#. Translators: Tooltip for dragging list items +#: src/client/accounts/accounts-editor-row.vala:50 +msgid "Drag to move this item" +msgstr "Seret untuk memindah butir ini" + +#. Translators: Label describes the service provider +#. hosting the email account, e.g. Gmail, Yahoo, or some +#. other generic IMAP service. +#: src/client/accounts/accounts-editor-row.vala:295 +msgid "Service provider" +msgstr "Penyedia layanan" + +#. Translators: This label describes what form of transport +#. security (TLS, StartTLS, etc) used by an account's IMAP or SMTP +#. service. +#: src/client/accounts/accounts-editor-row.vala:468 +msgid "Connection security" +msgstr "Keamanan koneksi" + +#. Translators: Label used when no auth scheme is used +#. by an account's IMAP or SMTP service. +#: src/client/accounts/accounts-editor-row.vala:479 +#: src/client/accounts/accounts-editor-servers-pane.vala:755 +#: src/client/accounts/accounts-editor-servers-pane.vala:970 +#: src/engine/api/geary-special-folder-type.vala:58 +msgid "None" +msgstr "Nihil" + +#: src/client/accounts/accounts-editor-row.vala:486 +msgid "StartTLS" +msgstr "StartTLS" + +#: src/client/accounts/accounts-editor-row.vala:493 +msgid "TLS" +msgstr "TLS" + +#. Translators: Label for source of SMTP authentication +#. credentials (none, use IMAP, custom) when adding a new +#. account +#. Button label for retrying when a login error has occurred +#: src/client/accounts/accounts-editor-row.vala:534 +#: ui/application-main-window.ui:346 +msgid "Login" +msgstr "Log masuk" + +#. Translators: ComboBox value for source of SMTP +#. authentication credentials (none) when adding a new +#. account +#: src/client/accounts/accounts-editor-row.vala:541 +msgid "No login needed" +msgstr "Tidak diperlukan log masuk" + +#. Translators: ComboBox value for source of SMTP +#. authentication credentials (use IMAP) when adding a new +#. account +#: src/client/accounts/accounts-editor-row.vala:549 +msgid "Use same login as receiving" +msgstr "Gunakan login yang sama untuk semua penerimaan" + +#. Translators: ComboBox value for source of SMTP +#. authentication credentials (custom) when adding a new +#. account +#: src/client/accounts/accounts-editor-row.vala:557 +msgid "Use a different login" +msgstr "Pakai login yang berbeda" + +#. Translators: In-app notification label, the +#. string substitution is a more detailed reason. +#: src/client/accounts/accounts-editor-servers-pane.vala:377 +#, c-format +msgid "Account not updated: %s" +msgstr "Akun tidak dimutakhirkan: %s" + +#. Translators: This label describes the program that +#. created the account, e.g. an SSO service like GOA, or +#. locally by Geary. +#: src/client/accounts/accounts-editor-servers-pane.vala:540 +msgid "Account source" +msgstr "Sumber akun" + +#: src/client/accounts/accounts-editor-servers-pane.vala:552 +msgid "GNOME Online Accounts" +msgstr "Akun Daring GNOME" + +#. Translators: This label describes an account +#. preference. +#: src/client/accounts/accounts-editor-servers-pane.vala:611 +msgid "Save draft email on server" +msgstr "Simpan draf surel pada server" + +#. Translators: This label describes an account +#. preference. +#: src/client/accounts/accounts-editor-servers-pane.vala:666 +msgid "Save sent email on server" +msgstr "Simpan surel terkirim pada server" + +#. Add a suffix for OAuth2 auth so people know they +#. shouldn't expect to be prompted for a password +#. Translators: Label used when an account's IMAP or +#. SMTP service uses OAuth2. The string replacement is +#. the service's login name. +#: src/client/accounts/accounts-editor-servers-pane.vala:956 +#, c-format +msgid "%s using OAuth2" +msgstr "%s memakai OAuth2" + +#: src/client/accounts/accounts-editor-servers-pane.vala:966 +msgid "Use receiving server login" +msgstr "Gunakan login server penerimaan" + +#. Translators: File name used in save chooser when saving +#. attachments that do not otherwise have a name. +#: src/client/application/application-attachment-manager.vala:21 +msgid "Untitled" +msgstr "Tak ada judul" + +#. / Translators: Dialog primary label when prompting to +#. / overwrite a file. The string substitution is the file'sx +#. / name. +#: src/client/application/application-attachment-manager.vala:222 +#, c-format +msgid "A file named “%s” already exists. Do you want to replace it?" +msgstr "Berkas bernama \"%s\" sudah ada. Anda ingin menimpanya?" + +#. / Translators: Dialog secondary label when prompting to +#. / overwrite a file. The string substitution is the parent +#. / folder's name. +#: src/client/application/application-attachment-manager.vala:229 +#, c-format +msgid "" +"The file already exists in “%s”. Replacing it will overwrite its contents." +msgstr "Berkas telah ada di \"%s\". Kalau ditimpa isi sebelumnya hilang." + +#: src/client/application/application-attachment-manager.vala:236 +msgid "_Replace" +msgstr "Timp_a" + +#: src/client/application/application-client.vala:33 msgid "Copyright 2016 Software Freedom Conservancy Inc." msgstr "Hak Cipta 2016 Software Freedom Conservancy Inc." -#: src/client/application/geary-application.vala:23 -msgid "Copyright 2016-2018 Geary Development Team." -msgstr "Hak Cipta 2016-2018 Tim Pengembang Geary." +#: src/client/application/application-client.vala:34 +msgid "Copyright 2016-2019 Geary Development Team." +msgstr "Hak Cipta 2016-2019 Tim Pengembang Geary." -#: src/client/application/geary-application.vala:25 +#: src/client/application/application-client.vala:36 msgid "Visit the Geary web site" msgstr "Kunjungi situs web Geary" -#: src/client/application/geary-application.vala:416 +#. / Command line option +#: src/client/application/application-client.vala:94 +msgid "Print debug logging" +msgstr "Cetak log awakutu" + +#. / Command line option +#: src/client/application/application-client.vala:97 +msgid "Start with the main window hidden (deprecated)" +msgstr "Mulai Geary dengan jendela utama tersembunyi (usang)" + +#. / Command line option +#: src/client/application/application-client.vala:100 +msgid "Enable WebKitGTK Inspector in web views" +msgstr "Fungsikan WebKitGTK Inspector dalam tilikan web" + +#. / Command line option +#: src/client/application/application-client.vala:103 +msgid "Log conversation monitoring" +msgstr "Catat pemantauan percakapan" + +#. / Command line option +#: src/client/application/application-client.vala:106 +msgid "Log IMAP network deserialization" +msgstr "Log deserialisasi jaringan IMAP" + +#. / Command line option. "Normalization" can also be called +#. / "synchronization". +#: src/client/application/application-client.vala:110 +msgid "Log folder normalization" +msgstr "Catat normalisasi map" + +#. / Command line option +#: src/client/application/application-client.vala:113 +msgid "Log network activity" +msgstr "Catat aktivitas jaringan" + +#. / Command line option +#: src/client/application/application-client.vala:116 +msgid "Log periodic activity" +msgstr "Catat aktivitas periodik" + +#. / Command line option. The IMAP replay queue is how changes +#. / on the server are replicated on the client. It could +#. / also be called the IMAP events queue. +#: src/client/application/application-client.vala:121 +msgid "Log IMAP replay queue" +msgstr "Catat antrian putar ulang IMAP" + +#. / Command line option. Serialization is how commands and +#. / responses are converted into a stream of bytes for +#. / network transmission +#: src/client/application/application-client.vala:126 +msgid "Log IMAP network serialization" +msgstr "Log serialisasi jaringan IMAP" + +#. / Command line option +#: src/client/application/application-client.vala:129 +msgid "Log database queries (generates lots of messages)" +msgstr "Catat kuiri basis data (menimbulkan banyak pesan)" + +#. / Command line option +#: src/client/application/application-client.vala:132 +msgid "Perform a graceful quit" +msgstr "Keluar secara anggun" + +#: src/client/application/application-client.vala:134 +msgid "Open a new window" +msgstr "Buka suatu jendela baru" + +#. / Command line option +#: src/client/application/application-client.vala:137 +msgid "Revoke all pinned TLS server certificates" +msgstr "Cabut semua sertifikat server TLS yang di-pin" + +#. / Command line option +#: src/client/application/application-client.vala:140 +msgid "Display program version" +msgstr "Tampilkan versi program" + +#. / Application runtime information label +#: src/client/application/application-client.vala:264 +msgid "Geary version" +msgstr "Versi Geary" + +#. / Application runtime information label +#: src/client/application/application-client.vala:266 +msgid "Geary revision" +msgstr "Revisi Geary" + +#. / Application runtime information label +#: src/client/application/application-client.vala:268 +msgid "GTK version" +msgstr "Versi GTK" + +#. / Applciation runtime information label +#: src/client/application/application-client.vala:275 +msgid "GLib version" +msgstr "Versi GLib" + +#. / Application runtime information label +#: src/client/application/application-client.vala:282 +msgid "WebKitGTK version" +msgstr "Versi WebKitGTK" + +#. / Application runtime information label +#: src/client/application/application-client.vala:289 +msgid "Desktop environment" +msgstr "Lingkungan desktop" + +#. Translators: This is the file type displayed for +#. attachments with unknown file types. +#: src/client/application/application-client.vala:291 +#: src/client/components/components-attachment-pane.vala:91 +msgid "Unknown" +msgstr "Tak dikenal" + +#. / Application runtime information label +#: src/client/application/application-client.vala:321 +msgid "Distribution name" +msgstr "Nama distribusi" + +#. / Application runtime information label +#: src/client/application/application-client.vala:326 +msgid "Distribution release" +msgstr "Rilis distribusi" + +#. / Application runtime information label +#: src/client/application/application-client.vala:334 +msgid "Installation prefix" +msgstr "Prefiks instalasi" + +#: src/client/application/application-client.vala:566 #, c-format msgid "About %s" msgstr "Tentang %s" @@ -470,165 +938,134 @@ msgstr "Tentang %s" #. Translators: add your name and email address to receive #. credit in the About dialog For example: Yamada Taro #. -#: src/client/application/geary-application.vala:420 +#: src/client/application/application-client.vala:570 msgid "translator-credits" msgstr "" -"Andika Triwidada , 2012, 2013, 2016, 2017\n" +"Andika Triwidada , 2012, 2013, 2016, 2017, 2019\n" "Dani Pratomo , 2012.\n" "Kukuh Syafaat , 2017, 2018." -#: src/client/application/geary-args.vala:10 -msgid "Start Geary with hidden main window" -msgstr "Mulai Geary dengan jendela utama tersembunyi" +#. / Warning printed to the console when a deprecated +#. / command line option is used. +#: src/client/application/application-client.vala:938 +msgid "The `--hidden` option is deprecated and will be removed in the future." +msgstr "Opsi '--hidden' usang dan akan dihapus di masa mendatang." -#: src/client/application/geary-args.vala:11 -msgid "Output debugging information" -msgstr "Keluaran informasi pengawakutuan" - -#: src/client/application/geary-args.vala:12 -msgid "Log conversation monitoring" -msgstr "Catat pemantauan percakapan" - -#: src/client/application/geary-args.vala:13 -msgid "Log network deserialization" -msgstr "Catat deserialisasi jaringan" - -#: src/client/application/geary-args.vala:14 -msgid "Log network activity" -msgstr "Catat aktivitas jaringan" - -#. / The IMAP replay queue is how changes on the server are replicated on the client. -#. / It could also be called the IMAP events queue. -#: src/client/application/geary-args.vala:17 -msgid "Log IMAP replay queue" -msgstr "Catat antrian putar ulang IMAP" - -#. / Serialization is how commands and responses are converted into a stream of bytes for -#. / network transmission -#: src/client/application/geary-args.vala:20 -msgid "Log network serialization" -msgstr "Catat serialisasi jaringan" - -#: src/client/application/geary-args.vala:21 -msgid "Log periodic activity" -msgstr "Catat aktivitas periodik" - -#: src/client/application/geary-args.vala:22 -msgid "Log database queries (generates lots of messages)" -msgstr "Catat kuiri basis data (menimbulkan banyak pesan)" - -#. / "Normalization" can also be called "synchronization" -#: src/client/application/geary-args.vala:24 -msgid "Log folder normalization" -msgstr "Catat normalisasi map" - -#: src/client/application/geary-args.vala:25 -msgid "Allow inspection of WebView" -msgstr "Izinkan inspeksi WebView" - -#: src/client/application/geary-args.vala:26 -msgid "Revoke all server certificates with TLS warnings" -msgstr "Cabut semua sertifikat server yang memiliki peringatan TLS" - -#: src/client/application/geary-args.vala:27 -msgid "Perform a graceful quit" -msgstr "Keluar secara anggun" - -#: src/client/application/geary-args.vala:28 -msgid "Display program version" -msgstr "Tampilkan versi program" - -#. This gives a command-line hint on how to open new composer windows with mailto: -#: src/client/application/geary-args.vala:53 +#. / Command line warning, string substitution +#. / is the given argument +#: src/client/application/application-client.vala:971 #, c-format -msgid "Use %s to open a new composer window" -msgstr "Pakai %s untuk membuka jendela penyusun baru" +msgid "Unrecognised program argument: “%s”" +msgstr "Argumen program tidak dikenal: \"%s\"" -#: src/client/application/geary-args.vala:56 -msgid "Please report comments, suggestions and bugs to:" -msgstr "Harap kirimkan komentar, saran, dan kutu ke:" - -#. i18n: Command line arguments are invalid -#: src/client/application/geary-args.vala:63 +#. / Notification title. +#: src/client/application/application-controller.vala:457 #, c-format -msgid "Failed to parse command line options: %s\n" -msgstr "Gagal mengurai opsi baris perintah: %s\n" +msgid "A problem occurred sending email for %s" +msgstr "Terjadi masalah saat mengirim surel untuk %s" -#: src/client/application/geary-args.vala:74 +#. / Notification body +#: src/client/application/application-controller.vala:461 +msgid "Email will not be sent until re-connected" +msgstr "Surel tidak akan dikirim sampai menyambung ulang" + +#. / Translators: Label for in-app notification +#: src/client/application/application-controller.vala:567 +msgid "Conversation marked" +msgid_plural "Conversations marked" +msgstr[0] "Percakapan ditandai" +msgstr[1] "Percakapan ditandai" + +#. / Translators: Label for in-app notification +#: src/client/application/application-controller.vala:573 +msgid "Conversation un-marked" +msgid_plural "Conversations un-marked" +msgstr[0] "Tanda percakapan dihapus" +msgstr[1] "Tanda percakapan dihapus" + +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the destination folder. +#: src/client/application/application-controller.vala:599 +#: src/client/application/application-controller.vala:683 #, c-format -msgid "Unrecognized command line option “%s”\n" -msgstr "Opsi baris perintah tidak dikenal \"%s\"\n" +msgid "Conversation moved to %s" +msgid_plural "Conversations moved to %s" +msgstr[0] "Percakapan dipindah ke %s" +msgstr[1] "Percakapan dipindah ke %s" -#. Translators: File name used in save chooser when saving -#. attachments that do not otherwise have a name. -#: src/client/application/geary-controller.vala:68 -msgid "Untitled" -msgstr "Tak ada judul" +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the source folder. +#. / Translators: Label for in-app notification. String +#. / substitution is the name of the destination folder. +#: src/client/application/application-controller.vala:607 +#: src/client/application/application-controller.vala:629 +#, c-format +msgid "Conversation restored to %s" +msgid_plural "Conversations restored to %s" +msgstr[0] "Percakapan dipulihkan ke %s" +msgstr[1] "Percakapan dipulihkan ke %s" -#: src/client/application/geary-controller.vala:721 -msgid "Unable to store server trust exception" -msgstr "Tak bisa menyimpan pengecualian kepercayaan server" +#. / Translators: Label for in-app notification. +#: src/client/application/application-controller.vala:650 +msgid "Conversation archived" +msgid_plural "Conversations archived" +msgstr[0] "Percakapan diarsipkan" +msgstr[1] "Percakapan diarsipkan" -#: src/client/application/geary-controller.vala:972 -msgid "Your settings are insecure" -msgstr "Pengaturan Anda tak aman" +#. / Translators: Label for in-app notification. String +#. / substitution is the name of the destination folder. +#: src/client/application/application-controller.vala:706 +#, c-format +msgid "Message restored to %s" +msgid_plural "Messages restored to %s" +msgstr[0] "Pesan dipulihkan ke %s" +msgstr[1] "Pesan dipulihkan ke %s" -#: src/client/application/geary-controller.vala:973 -msgid "" -"Your IMAP and/or SMTP settings do not specify SSL or TLS. This means your " -"username and password could be read by another person on the network. Are " -"you sure you want to do this?" -msgstr "" -"Pengaturan IMAP dan/atau SMTP Anda tidak menyatakan SSL atau TLS. Artinya " -"nama pengguna dan sandi Anda bisa dibaca orang lain di jaringan ini. Anda " -"yakin ingin melakukan ini?" +#. / Translators: Label for in-app notification. +#: src/client/application/application-controller.vala:727 +msgid "Message archived" +msgid_plural "Messages archived" +msgstr[0] "Pesan diarsipkan" +msgstr[1] "Pesan diarsipkan" -#: src/client/application/geary-controller.vala:974 -msgid "Co_ntinue" -msgstr "La_njutkan" +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the destination folder. +#: src/client/application/application-controller.vala:762 +#, c-format +msgid "Message moved to %s" +msgid_plural "Messages moved to %s" +msgstr[0] "Pesan dipindah ke %s" +msgstr[1] "Pesan dipindah ke %s" -#. / Displayed in the space-limited status bar when a message fails to be sent due to error. -#: src/client/application/geary-controller.vala:1078 -#: src/client/components/status-bar.vala:29 -msgid "Error sending email" -msgstr "Galat saat mengirim surel" +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the destination folder. +#: src/client/application/application-controller.vala:790 +#, c-format +msgid "Conversation labelled as %s" +msgid_plural "Conversations labelled as %s" +msgstr[0] "Percakapan dilabeli sebagai %s" +msgstr[1] "Percakapan dilabeli sebagai %s" -#: src/client/application/geary-controller.vala:1079 -msgid "" -"Geary encountered an error sending an email. If the problem persists, " -"please manually delete the email from your Outbox folder." -msgstr "" -"Gary menemui galat ketika mengirim sebuah surel. Bila masalah tetap muncul, " -"harap hapus surel secara manual dari folder Kotak Keluar Anda." +#. / Translators: Label for in-app +#. / notification. String substitution is the name +#. / of the destination folder. +#: src/client/application/application-controller.vala:798 +#, c-format +msgid "Conversation un-labelled as %s" +msgid_plural "Conversations un-labelled as %s" +msgstr[0] "Label %s dihapus dari percakapan" +msgstr[1] "Label %s dihapus dari percakapan" -#. Displayed in the space-limited status bar when a message fails to be uploaded -#. to Sent Mail after being sent. -#: src/client/application/geary-controller.vala:1083 -#: src/client/components/status-bar.vala:33 -msgid "Error saving sent mail" -msgstr "Galat saat menyimpan surel terkirim" - -#: src/client/application/geary-controller.vala:1084 -msgid "" -"Geary encountered an error saving a sent message to Sent Mail. The message " -"will stay in your Outbox folder until you delete it." -msgstr "" -"Gary menemui galat ketika menyimpan sebuah surel terkirim ke Sent Mail. " -"Pesan akan tetap berada di folder Kotak Keluar Anda sampai Anda menghapusnya." - -#: src/client/application/geary-controller.vala:1151 -msgid "Labels" -msgstr "Label" - -#. give the user two options: reset the Account local store, or exit Geary. A third -#. could be done to leave the Account in an unopened state, but we don't currently -#. have provisions for that. -#: src/client/application/geary-controller.vala:1163 +#: src/client/application/application-controller.vala:1221 #, c-format msgid "Unable to open the database for %s" msgstr "Tak bisa membuka basis data bagi %s" -#: src/client/application/geary-controller.vala:1164 +#: src/client/application/application-controller.vala:1222 #, c-format msgid "" "There was an error opening the local mail database for this account. This is " @@ -652,20 +1089,20 @@ msgstr "" "Membangun ulang basis data akan menghancurkan semua surel lokal dan " "lampirannya. Surat pada server Anda tak akan terpengaruh." -#: src/client/application/geary-controller.vala:1166 +#: src/client/application/application-controller.vala:1224 msgid "_Rebuild" msgstr "_Bangun Ulang" -#: src/client/application/geary-controller.vala:1166 +#: src/client/application/application-controller.vala:1224 msgid "E_xit" msgstr "_Keluar" -#: src/client/application/geary-controller.vala:1175 +#: src/client/application/application-controller.vala:1234 #, c-format msgid "Unable to rebuild database for “%s”" msgstr "Tak bisa membangun ulang basis data bagi \"%s\"" -#: src/client/application/geary-controller.vala:1176 +#: src/client/application/application-controller.vala:1235 #, c-format msgid "" "Error during rebuild:\n" @@ -676,68 +1113,110 @@ msgstr "" "\n" "%s" -#. some other problem opening the account ... as with other flow path, can't run -#. Geary today with an account in unopened state, so have to exit -#: src/client/application/geary-controller.vala:1198 -#: src/client/application/geary-controller.vala:1208 -#: src/client/application/geary-controller.vala:1219 +#. / 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:1558 #, c-format -msgid "Unable to open local mailbox for %s" -msgstr "Tak bisa membuka kotak surat bagi %s" +msgid "Email sent to %s" +msgstr "Surel dikirim ke %s" -#: src/client/application/geary-controller.vala:1199 +#. / 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 #, c-format -msgid "" -"There was an error opening the local mail database for this account. This is " -"possibly due to a file permissions problem.\n" -"\n" -"Please check that you have read/write permissions for all files in this " -"directory:\n" -"\n" -"%s" -msgstr "" -"Ada galat saat membuka basis data surat lokal bagi akun ini. Ini mungkin " -"karena masalah hak akses berkas.\n" -"\n" -"Harap periksa apakah Anda punya hak baca/tulis bagi semua berkas dalam " -"direktori ini:\n" -"\n" -"%s" +msgid "Email to %s queued for delivery" +msgstr "Surel ke %s diantrikan untuk pengiriman" -#: src/client/application/geary-controller.vala:1209 -msgid "" -"The version number of the local mail database is formatted for a newer " -"version of Geary. Unfortunately, the database cannot be “rolled back” to " -"work with this version of Geary.\n" -"\n" -"Please install the latest version of Geary and try again." -msgstr "" -"Nomor versi dari basis data surat lokal diformat bagi versi Geary yang lebih " -"baru. Sayang sekali, basis data tak bisa di-\"roll back\" agar bekerja " -"dengan versi Geary ini.\n" -"\n" -"Harap pasang versi Geary terbaru dan coba lagi." +#. / 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 +#, c-format +msgid "Email to %s saved" +msgstr "Surel ke %s disimpan" -#: src/client/application/geary-controller.vala:1220 -msgid "" -"There was an error opening the local account. This is probably due to " -"connectivity issues.\n" -"\n" -"Please check your network connection and restart Geary." -msgstr "" -"Ada galat saat membuka akun lokal. Ini mungkin karena masalah konektivitas.\n" -"\n" -"Harap periksa koneksi jaringan Anda dan start ulang Geary." +#. / Translators: A label for an in-app notification. +#: src/client/application/application-controller.vala:2716 +#: src/client/application/application-controller.vala:2774 +msgid "Composer could not be restored" +msgstr "Penyusun tidak dapat dipulihkan" -#: src/client/application/geary-controller.vala:2038 -msgid "Undo move (Ctrl+Z)" -msgstr "Tak jadi pindah (Ctrl+Z)" +#. / 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 +#, c-format +msgid "Email to %s discarded" +msgstr "Surel ke %s dibuang" -#: src/client/application/geary-controller.vala:2048 +#. / Translators: Main window title, first string +#. / substitution being the currently selected folder name, +#. / the second being the selected account name. +#: src/client/application/application-main-window.vala:552 +#, c-format +msgid "%s — %s" +msgstr "%s — %s" + +#: src/client/application/application-main-window.vala:961 +msgid "Labels" +msgstr "Label" + +#. / Translators: Primary text for a confirmation dialog +#: src/client/application/application-main-window.vala:1297 +msgid "Do you want to permanently delete this conversation?" +msgid_plural "Do you want to permanently delete these conversations?" +msgstr[0] "Anda hendak membuang percakapan ini secara permanen?" +msgstr[1] "Anda hendak membuang percakapan-percakapan ini secara permanen?" + +#: src/client/application/application-main-window.vala:1302 +#: src/client/application/application-main-window.vala:1317 +msgid "Delete" +msgstr "Hapus" + +#. / Translators: Primary text for a confirmation dialog +#: src/client/application/application-main-window.vala:1312 +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] "" + +#: src/client/application/application-main-window.vala:1325 +#, c-format +msgid "Empty all email from your %s folder?" +msgstr "Kosongkan semua surel dari folder %s Anda?" + +#: src/client/application/application-main-window.vala:1328 +msgid "This removes the email from Geary and your email server." +msgstr "Ini menghapus surel dari Geary dan server surel Anda." + +#: src/client/application/application-main-window.vala:1329 +msgid "This cannot be undone." +msgstr "Ini tidak bisa dibatalkan." + +#: src/client/application/application-main-window.vala:1330 +#, c-format +msgid "Empty %s" +msgstr "Kosongkan %s" + +#: src/client/application/application-main-window.vala:1660 +#, c-format +msgid "%s (%d)" +msgstr "%s (%d)" + +#. Translators: The first argument will be a +#. description of the document type, the second will +#. be a human-friendly size string. For example: +#. Document (100.9MB) +#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" +#: src/client/components/components-attachment-pane.vala:107 +#: src/client/composer/composer-widget.vala:1815 +#, c-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#: src/client/components/components-attachment-pane.vala:379 msgid "Are you sure you want to open these attachments?" msgstr "Anda yakin ingin membuka lampiran-lampiran ini?" -#: src/client/application/geary-controller.vala:2049 +#: src/client/components/components-attachment-pane.vala:380 msgid "" "Attachments may cause damage to your system if opened. Only open files from " "trusted sources." @@ -745,389 +1224,282 @@ msgstr "" "Lampiran berpotensi bahaya jika dibuka. Hanya buka berkas dari sumber " "terpercaya." -#: src/client/application/geary-controller.vala:2050 +#: src/client/components/components-attachment-pane.vala:381 msgid "Don’t _ask me again" msgstr "Jangan tanya s_aya lagi" -#. Translators: Dialog primary label when prompting to -#. overwrite a file. The string substitution is the file'sx -#. name. -#: src/client/application/geary-controller.vala:2179 -#, c-format -msgid "A file named “%s” already exists. Do you want to replace it?" -msgstr "Berkas bernama \"%s\" sudah ada. Anda ingin menimpanya?" +#: src/client/components/components-inspector.vala:72 +msgid "Inspector" +msgstr "Pemeriksa" -#. Translators: Dialog secondary label when prompting to -#. overwrite a file. The string substitution is the parent -#. folder's name. -#: src/client/application/geary-controller.vala:2186 -#, c-format +#. / Translators: Title for Inspector logs pane +#. / Translators: Title for problem report dialog logs pane +#: src/client/components/components-inspector.vala:87 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:102 +msgid "Logs" +msgstr "Log" + +#. / Translators: Title for Inspector system system information pane +#. / Translators: Title for problem report system information +#. / pane +#: src/client/components/components-inspector.vala:91 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:105 +msgid "System" +msgstr "Sistem" + +#. Button label for saving problem report information +#: src/client/components/components-inspector.vala:208 +#: src/client/components/components-inspector.vala:211 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:221 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:224 +#: ui/problem-details-dialog.ui:42 +msgid "Save As" +msgstr "Simpan sebagai" + +#: src/client/components/components-inspector.vala:212 +#: src/client/dialogs/dialogs-problem-details-dialog.vala:225 +#: ui/accounts_editor_servers_pane.ui:17 +msgid "Cancel" +msgstr "Batal" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:43 +msgid "_Automatically select next message" +msgstr "Otom_atis pilih pesan selanjutnya" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:53 +msgid "_Display conversation preview" +msgstr "_Tampilkan pratinjau percakapan" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:63 +msgid "Use _three pane view" +msgstr "Pakai tilikan _tiga panel" + +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:73 +msgid "Use _single key email shortcuts" +msgstr "Gunakan pintasan _surel tombol tunggal" + +#: src/client/components/components-preferences-window.vala:75 msgid "" -"The file already exists in “%s”. Replacing it will overwrite its contents." -msgstr "Berkas telah ada di \"%s\". Kalau ditimpa isi sebelumnya hilang." - -#: src/client/application/geary-controller.vala:2190 -msgid "_Replace" -msgstr "Timp_a" - -#: src/client/application/geary-controller.vala:2460 -msgid "Close the draft message?" -msgid_plural "Close all draft messages?" -msgstr[0] "Tutup semua draf pesan?" - -#: src/client/application/geary-controller.vala:2586 -#, c-format -msgid "Empty all email from your %s folder?" -msgstr "Kosongkan semua surel dari folder %s Anda?" - -#: src/client/application/geary-controller.vala:2587 -msgid "This removes the email from Geary and your email server." -msgstr "Ini menghapus surel dari Geary dan server surel Anda." - -#: src/client/application/geary-controller.vala:2588 -msgid "This cannot be undone." -msgstr "Ini tidak bisa dibatalkan." - -#: src/client/application/geary-controller.vala:2589 -#, c-format -msgid "Empty %s" -msgstr "Kosongkan %s" - -#: src/client/application/geary-controller.vala:2606 -#, c-format -msgid "Error emptying %s" -msgstr "Galat saat mengosongkan %s" - -#: src/client/application/geary-controller.vala:2638 -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?" - -#: src/client/application/geary-controller.vala:2640 -msgid "Delete" -msgstr "Hapus" - -#: src/client/application/geary-controller.vala:2654 -msgid "Undo trash (Ctrl+Z)" -msgstr "Tak jadi buang ke tong sampah (Ctrl+Z)" - -#: src/client/application/geary-controller.vala:2704 -msgid "Undo archive (Ctrl+Z)" -msgstr "Tak jadi arsipkan (Ctrl+Z)" - -#: src/client/application/geary-controller.vala:2749 -msgid "Undo (Ctrl+Z)" -msgstr "Tak jadi (Ctrl+Z)" - -#. Translators: The label for an in-app notification. The -#. string substitution is a list of recipients of the email. -#: src/client/application/geary-controller.vala:2826 -#, c-format -msgid "Successfully sent mail to %s." -msgstr "Berhasil mengirim surel ke %s." - -#: src/client/application/geary-controller.vala:2907 -msgid "Failed to open default text editor." -msgstr "Gagal membuka penyunting teks utama." - -#. Tooltips -#: src/client/components/main-toolbar.vala:69 -msgid "Delete conversation (Shift+Delete)" -msgstr "Hapus percakapan (Shift+Delete)" - -#: src/client/components/main-toolbar.vala:70 -msgid "Delete conversations (Shift+Delete)" -msgstr "Hapus percakapan (Shift+Delete)" - -#: src/client/components/main-toolbar.vala:71 -msgid "Move conversation to Trash (Delete, Backspace)" -msgstr "Pindahkan percakapan ke Tong Sampah (Delete, Backspace)" - -#: src/client/components/main-toolbar.vala:72 -msgid "Move conversations to Trash (Delete, Backspace)" -msgstr "Pindahkan percakapan ke Tong Sampah (Delete, Backspace)" - -#: src/client/components/main-toolbar.vala:73 -msgid "Archive conversation (A)" -msgstr "Arsipkan percakapan (A)" - -#: src/client/components/main-toolbar.vala:74 -msgid "Archive conversations (A)" -msgstr "Arsipkan percakapan (A)" - -#: src/client/components/main-toolbar.vala:75 -msgid "Mark conversation" -msgstr "Tandai percakapan" - -#: src/client/components/main-toolbar.vala:76 -msgid "Mark conversations" -msgstr "Tandai percakapan" - -#: src/client/components/main-toolbar.vala:77 -msgid "Add label to conversation" -msgstr "Tambahkan label ke percakapan" - -#: src/client/components/main-toolbar.vala:78 -msgid "Add label to conversations" -msgstr "Tambahkan label ke percakapan" - -#: src/client/components/main-toolbar.vala:79 -msgid "Move conversation" -msgstr "Pindahkan percakapan" - -#: src/client/components/main-toolbar.vala:80 -msgid "Move conversations" -msgstr "Pindahkan percakapan" - -#: src/client/components/main-window.vala:440 -#, c-format -msgid "%s (%d)" -msgstr "%s (%d)" - -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:54 -#, c-format -msgid "Problem connecting to incoming server for %s" -msgstr "Masalah saat menyambung ke server masuk untuk %s" - -#. Translators: String substitution is the server name -#: src/client/components/main-window-info-bar.vala:56 -#: src/client/components/main-window-info-bar.vala:64 -#, c-format -msgid "" -"Could not connect to %s, check your Internet access and the server name and " -"try again" +"Enable keyboard shortcuts for email actions that do not require pressing " +"" msgstr "" -"Tidak dapat terhubung ke %s, periksa akses Internet dan nama server dan coba " -"lagi" +"Memfungsikan pintasan papan tik untuk aksi-aksi surel yang tidak memerlukan " +"menekan " -#: src/client/components/main-window-info-bar.vala:57 -#: src/client/components/main-window-info-bar.vala:66 -msgid "Retry connecting now" -msgstr "Coba lagi sambungkan sekarang" +#. / Translators: Preferences label +#: src/client/components/components-preferences-window.vala:86 +msgid "_Watch for new mail when closed" +msgstr "A_wasi surat baru ketika ditutup" -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:62 -#, c-format -msgid "Problem connecting to outgoing server for %s" -msgstr "Masalah saat menyambung ke server keluar untuk %s" +#. / Translators: Preferences tooltip +#: src/client/components/components-preferences-window.vala:90 +msgid "Geary will keep running after all windows are closed" +msgstr "Geary akan terus berjalan setelah semua jendela ditutup" -#: src/client/components/main-window-info-bar.vala:65 -msgid "Try reconnecting now" -msgstr "Coba hubungkan kembali sekarang" - -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:71 -#, c-format -msgid "Problem with connection to incoming server for %s" -msgstr "Masalah dengan koneksi ke server masuk untuk %s" - -#. Translators: String substitution is the server name -#: src/client/components/main-window-info-bar.vala:73 -#: src/client/components/main-window-info-bar.vala:81 -#, c-format -msgid "Network error talking to %s, check your Internet access and try again" -msgstr "" -"Terjadi kesalahan jaringan saat berbicara dengan %s, periksa akses Internet " -"Anda dan coba lagi" - -#: src/client/components/main-window-info-bar.vala:74 -#: src/client/components/main-window-info-bar.vala:82 -#: src/client/components/main-window-info-bar.vala:90 -#: src/client/components/main-window-info-bar.vala:98 -#: src/client/components/main-window-info-bar.vala:119 -msgid "Try reconnecting" -msgstr "Coba sambungkan kembali" - -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:79 -#, c-format -msgid "Problem with connection to outgoing server for %s" -msgstr "Masalah koneksi ke server keluar untuk %s" - -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:87 -#, c-format -msgid "Problem communicating with incoming server for %s" -msgstr "Masalah berkomunikasi dengan server masuk untuk %s" - -#. Translators: String substitution is the server name -#: src/client/components/main-window-info-bar.vala:89 -#, c-format -msgid "" -"Geary did not understand a message from %s or vice versa, please file a bug " -"report" -msgstr "" -"Geary tidak mengerti pesan dari %s atau sebaliknya, mohon laporkan kutu" - -#: src/client/components/main-window-info-bar.vala:94 -msgid "Problem communicating with outgoing mail server" -msgstr "Masalah berkomunikasi dengan server surat keluar" - -#. Translators: First string substitution is the server -#. name, second is the account name -#: src/client/components/main-window-info-bar.vala:97 -#, c-format -msgid "" -"Could not communicate with %s for %s, check the server name and try again in " -"a moment" -msgstr "" -"Tidak dapat berkomunikasi dengan %s untuk %s, periksa nama server dan coba " -"lagi dalam sekejap" - -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:103 -#, c-format -msgid "Incoming mail server password required for %s" -msgstr "Kata sandi server surat masuk diperlukan untuk %s" - -#: src/client/components/main-window-info-bar.vala:104 -msgid "Messages cannot be received without the correct password." -msgstr "Pesan tidak bisa diterima tanpa kata sandi yang benar." - -#: src/client/components/main-window-info-bar.vala:105 -msgid "Retry receiving email, you will be prompted for a password" -msgstr "Coba lagi menerima surel, Anda akan diminta memasukkan kata sandi" - -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:110 -#, c-format -msgid "Outgoing mail server password required for %s" -msgstr "Kata sandi server surat keluar diperlukan untuk %s" - -#: src/client/components/main-window-info-bar.vala:111 -msgid "Messages cannot be sent without the correct password." -msgstr "Pesan tidak dapat dikirim tanpa kata sandi yang benar." - -#: src/client/components/main-window-info-bar.vala:112 -msgid "Retry sending queued messages, you will be prompted for a password" -msgstr "" -"Coba lagi mengirim pesan antrian, Anda akan diminta memasukkan kata sandi" - -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:117 -#, c-format -msgid "A problem occurred checking mail for %s" -msgstr "Terjadi masalah saat memeriksa surel untuk %s" - -#: src/client/components/main-window-info-bar.vala:118 -#: src/client/components/main-window-info-bar.vala:125 -msgid "Something went wrong, please file a bug report if the problem persists" -msgstr "Ada yang tidak beres, kirimkan laporan kutu jika masalah berlanjut" - -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:124 -#, c-format -msgid "A problem occurred sending mail for %s" -msgstr "Terjadi masalah saat mengirim surel untuk %s" - -#: src/client/components/main-window-info-bar.vala:126 -msgid "Retry sending queued messages" -msgstr "Coba lagi mengirim pesan antrian" - -#: src/client/components/main-window-info-bar.vala:137 -msgid "A database problem has occurred" -msgstr "Masalah basis data telah terjadi" - -#. Translators: String substitution is the account name -#: src/client/components/main-window-info-bar.vala:139 -#, c-format -msgid "Messages for %s must be downloaded again." -msgstr "Pesan untuk %s harus diunduh lagi." - -#: src/client/components/main-window-info-bar.vala:152 -msgid "Geary has encountered a problem" -msgstr "Geary mengalami masalah" - -#: src/client/components/main-window-info-bar.vala:153 -msgid "" -"Please check the technical details and report the problem if it persists." -msgstr "Silakan periksa rincian teknis dan laporkan masalahnya jika tetap ada." - -#: src/client/components/main-window-info-bar.vala:161 -msgid "_Details" -msgstr "_Detail" - -#: src/client/components/main-window-info-bar.vala:162 -msgid "View technical details about the error" -msgstr "Lihat rincian teknis tentang kesalahan tersebut" - -#: src/client/components/main-window-info-bar.vala:166 -msgid "_Retry" -msgstr "_Ulangi" - -#: src/client/components/main-window-info-bar.vala:253 -msgid "Details" -msgstr "Detail" - -#: src/client/components/main-window-info-bar.vala:266 -#: src/client/components/stock.vala:23 -msgid "_Close" -msgstr "_Tutup" - -#: src/client/components/main-window-info-bar.vala:270 -msgid "Copy to Clipboard" -msgstr "Salin ke Papan Klip" - -#: src/client/components/main-window-info-bar.vala:273 -msgid "" -"Copy technical details to clipboard for pasting into an email or bug report" -msgstr "" -"Salin rincian teknis ke papan klip untuk menempelkan surel atau laporan kutu" - -#: src/client/components/search-bar.vala:8 -#: src/client/folder-list/folder-list-search-branch.vala:38 +#. / Translators: Search entry placeholder text +#: src/client/components/components-search-bar.vala:12 +#: src/client/folder-list/folder-list-search-branch.vala:53 #: src/engine/api/geary-special-folder-type.vala:51 msgid "Search" msgstr "Cari" -#. Search entry. -#: src/client/components/search-bar.vala:23 -msgid "Search all mail in account for keywords (Ctrl+S)" -msgstr "Cari kata kunci pada semua surat dalam akun (Ctrl+S)" +#. / Translators: Search entry tooltip +#: src/client/components/components-search-bar.vala:32 +msgid "Search all mail in account for keywords" +msgstr "Cari kata kunci di semua surat dalam akun" -#: src/client/components/search-bar.vala:100 -#, c-format -msgid "Indexing %s account" -msgstr "Mengindeks akun %s" - -#: src/client/components/search-bar.vala:111 -#: src/client/folder-list/folder-list-search-branch.vala:39 +#. / Translators: Search entry placeholder, string +#. / replacement is the name of an account +#: src/client/components/components-search-bar.vala:81 +#: src/client/folder-list/folder-list-search-branch.vala:54 #, c-format msgid "Search %s account" msgstr "Cari akun %s" +#. Translators: Tooltip used when an entry requires a valid +#. email address to be entered, but one is not provided. +#: src/client/components/components-validator.vala:390 +msgid "An email address is required" +msgstr "Alamat surel diperlukan" + +#. Translators: Tooltip used when an entry requires a valid +#. email address to be entered, but the address is invalid. +#: src/client/components/components-validator.vala:394 +msgid "Not a valid email address" +msgstr "Bukan alamat surel yang valid" + +#. Translators: Tooltip used when an entry requires a valid, +#. resolvable server name to be entered, but one is not +#. provided. +#: src/client/components/components-validator.vala:440 +msgid "A server name is required" +msgstr "Suatu nama server diperlukan" + +#. Translators: Tooltip used when an entry requires a valid +#. server name to be entered, but it was unable to be +#. looked-up in the DNS. +#: src/client/components/components-validator.vala:445 +msgid "Could not look up server name" +msgstr "Tidak bisa mencari nama server" + +#: src/client/components/main-toolbar.vala:142 +msgid "Mark conversation" +msgid_plural "Mark conversations" +msgstr[0] "Tandai percakapan" +msgstr[1] "" + +#: 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] "" + +#: src/client/components/main-toolbar.vala:152 +msgid "Move conversation" +msgid_plural "Move conversations" +msgstr[0] "Pindahkan percakapan" +msgstr[1] "" + +#: src/client/components/main-toolbar.vala:157 +msgid "Archive conversation" +msgid_plural "Archive conversations" +msgstr[0] "Arsipkan percakapan" +msgstr[1] "" + +#: 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] "" + +#: src/client/components/main-toolbar.vala:178 +msgid "Delete conversation" +msgid_plural "Delete conversations" +msgstr[0] "Hapus percakapan" +msgstr[1] "" + +#. Translators: Info bar title for a generic account +#. problem. +#: src/client/components/main-window-info-bar.vala:44 +msgid "Account problem" +msgstr "Masalah akun" + +#. Translators: Info bar sub-title for a generic account +#. problem. String substitution is the account name. +#: src/client/components/main-window-info-bar.vala:48 +#, c-format +msgid "Geary has encountered a problem with %s." +msgstr "Geary mengalami masalah dengan %s." + +#. Translators: Info bar sub-title for a generic +#. account problem. String substitution is the +#. account name. +#: src/client/components/main-window-info-bar.vala:61 +#, c-format +msgid "Geary encountered a problem checking mail for %s." +msgstr "Geary mengalami masalah memeriksa surel bagi %s." + +#. Translators: Tooltip label for Retry button +#: src/client/components/main-window-info-bar.vala:65 +msgid "Try reconnecting" +msgstr "Coba sambungkan kembali" + +#. Translators: Info bar title for an outgoing +#. account problem. String substitution is the +#. account name +#: src/client/components/main-window-info-bar.vala:73 +#, c-format +msgid "Geary encountered a problem sending email for %s." +msgstr "Geary mengalami masalah mengirim surel untuk %s." + +#. Translators: Tooltip label for Retry button +#: src/client/components/main-window-info-bar.vala:77 +msgid "Retry sending queued messages" +msgstr "Coba lagi mengirim pesan antrian" + +#. Translators: Info bar title for a generic application +#. problem. +#: src/client/components/main-window-info-bar.vala:84 +msgid "Geary has encountered a problem" +msgstr "Geary mengalami masalah" + +#. Translators: Info bar sub-title for a generic +#. application problem. +#: src/client/components/main-window-info-bar.vala:88 +msgid "Please report the details if it persists." +msgstr "Mohon laporkan rincian bila terus berlangsung." + +#. Translators: Button label for viewing technical details +#. for a problem report. +#: src/client/components/main-window-info-bar.vala:99 +msgid "_Details" +msgstr "_Detail" + +#. Translators: Tooltip for viewing technical details for +#. a problem report. +#: src/client/components/main-window-info-bar.vala:102 +msgid "View technical details about the error" +msgstr "Lihat rincian teknis tentang kesalahan tersebut" + +#. Translators: Button label for retrying a server +#. connection +#: src/client/components/main-window-info-bar.vala:108 +msgid "_Retry" +msgstr "_Ulangi" + #. / Displayed in the space-limited status bar while a message is in the process of being sent. #: src/client/components/status-bar.vala:26 msgid "Sending…" msgstr "Mengirim…" -#: src/client/components/stock.vala:18 ui/account_cannot_remove.glade:74 +#. / Displayed in the space-limited status bar when a message fails to be sent due to error. +#: src/client/components/status-bar.vala:29 +msgid "Error sending email" +msgstr "Galat saat mengirim surel" + +#. Displayed in the space-limited status bar when a message fails to be uploaded +#. to Sent Mail after being sent. +#: src/client/components/status-bar.vala:33 +msgid "Error saving sent mail" +msgstr "Galat saat menyimpan surel terkirim" + +#: src/client/components/stock.vala:18 msgid "_OK" msgstr "_OK" -#: src/client/components/stock.vala:19 ui/edit_alternate_emails.glade:160 -#: ui/password-dialog.glade:196 ui/remove_confirm.glade:155 +#: src/client/components/stock.vala:19 ui/password-dialog.glade:196 msgid "_Cancel" msgstr "Ba_tal" -#: src/client/components/stock.vala:21 ui/gtk/menus.ui:34 +#: src/client/components/stock.vala:21 msgid "_About" msgstr "Tent_ang" +#: src/client/components/stock.vala:22 +msgid "_Add" +msgstr "T_ambah" + +#: src/client/components/stock.vala:23 +msgid "_Close" +msgstr "_Tutup" + #: src/client/components/stock.vala:24 msgid "_Discard" msgstr "_Buang" -#: src/client/components/stock.vala:25 ui/gtk/menus.ui:29 +#: src/client/components/stock.vala:25 ui/main-toolbar-menus.ui:52 msgid "_Help" msgstr "_Bantuan" -#: src/client/components/stock.vala:26 ui/conversation-email-menus.ui:77 +#: src/client/components/stock.vala:26 ui/components-attachment-pane-menus.ui:7 msgid "_Open" msgstr "_Buka" -#: src/client/components/stock.vala:27 ui/gtk/menus.ui:17 +#: src/client/components/stock.vala:27 ui/main-toolbar-menus.ui:42 msgid "_Preferences" msgstr "_Preferensi" @@ -1136,14 +1508,19 @@ msgstr "_Preferensi" msgid "_Print…" msgstr "_Cetak…" -#: src/client/components/stock.vala:29 ui/gtk/menus.ui:38 +#: src/client/components/stock.vala:29 msgid "_Quit" msgstr "_Keluar" -#: src/client/components/stock.vala:30 ui/remove_confirm.glade:170 +#: src/client/components/stock.vala:30 msgid "_Remove" msgstr "Singki_rkan" +#: src/client/components/stock.vala:31 +#: ui/components-attachment-pane-menus.ui:11 +msgid "_Save" +msgstr "_Simpan" + #: src/client/components/stock.vala:32 msgid "_Keep" msgstr "_Pertahankan" @@ -1160,27 +1537,33 @@ msgstr "URL tautan tidak valid" msgid "Invalid email address" msgstr "Alamat surel tidak valid" -#: src/client/composer/composer-widget.vala:158 +#. / Translators: Title for an empty composer window +#: src/client/composer/composer-widget.vala:28 +msgid "New Message" +msgstr "Pesan Baru" + +#: src/client/composer/composer-widget.vala:210 msgid "Saved" msgstr "Disimpan" -#: src/client/composer/composer-widget.vala:159 +#: src/client/composer/composer-widget.vala:211 msgid "Saving" msgstr "Menyimpan" -#: src/client/composer/composer-widget.vala:160 +#: src/client/composer/composer-widget.vala:212 msgid "Error saving" msgstr "Galat saat menyimpan" -#: src/client/composer/composer-widget.vala:161 +#: src/client/composer/composer-widget.vala:213 msgid "Press Backspace to delete quote" msgstr "Tekan Backspace untuk menghapus kutip" #. Translators: This is list of keywords, separated by pipe ("|") #. characters, that suggest an attachment; since this is full-word -#. checking, include all variants of each word. No spaces are -#. allowed. -#: src/client/composer/composer-widget.vala:170 +#. 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 msgid "" "attach|attaching|attaches|attachment|attachments|attached|enclose|enclosed|" "enclosing|encloses|enclosure|enclosures" @@ -1192,256 +1575,266 @@ 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:1102 +#: src/client/composer/composer-widget.vala:814 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:1130 +#: src/client/composer/composer-widget.vala:840 msgid "Do you want to discard this draft message?" msgstr "Anda mau membuang draf pesan ini?" -#: src/client/composer/composer-widget.vala:1247 +#: src/client/composer/composer-widget.vala:1484 msgid "Send message with an empty subject and body?" msgstr "Kirim pesan dengan subjek dan isi kosong?" -#: src/client/composer/composer-widget.vala:1249 +#: src/client/composer/composer-widget.vala:1486 msgid "Send message with an empty subject?" msgstr "Kirim pesan dengan subjek kosong?" -#: src/client/composer/composer-widget.vala:1251 +#: src/client/composer/composer-widget.vala:1488 msgid "Send message with an empty body?" msgstr "Kirim pesan tanpa isi?" -#: src/client/composer/composer-widget.vala:1255 +#: src/client/composer/composer-widget.vala:1497 msgid "Send message without an attachment?" msgstr "Kirim pesan tanpa lampiran?" -#: src/client/composer/composer-widget.vala:1560 +#: src/client/composer/composer-widget.vala:1807 #, c-format msgid "“%s” already attached for delivery." msgstr "\"%s\" sudah dilampirkan untuk pengiriman." -#. / In the composer, the filename followed by its filesize, i.e. "notes.txt (1.12KB)" -#. Translators: The first argument will be a -#. description of the document type, the second will -#. be a human-friendly size string. For example: -#. Document (100.9MB) -#: src/client/composer/composer-widget.vala:1568 -#: src/client/conversation-viewer/conversation-email.vala:136 -#, c-format -msgid "%s (%s)" -msgstr "%s (%s)" - -#: src/client/composer/composer-widget.vala:1605 -#, c-format -msgid "“%s” could not be found." -msgstr "\"%s\" tidak ditemukan." - -#: src/client/composer/composer-widget.vala:1611 -#, c-format -msgid "“%s” is a folder." -msgstr "\"%s\" adalah sebuah folder." - -#: src/client/composer/composer-widget.vala:1617 +#: src/client/composer/composer-widget.vala:1837 +#: src/client/composer/composer-widget.vala:1887 #, c-format msgid "“%s” is an empty file." msgstr "\"%s\" adalah berkas kosong." -#: src/client/composer/composer-widget.vala:1630 +#: src/client/composer/composer-widget.vala:1875 +#, c-format +msgid "“%s” could not be found." +msgstr "\"%s\" tidak ditemukan." + +#: src/client/composer/composer-widget.vala:1881 +#, c-format +msgid "“%s” is a folder." +msgstr "\"%s\" adalah sebuah folder." + +#: src/client/composer/composer-widget.vala:1900 #, c-format msgid "“%s” could not be opened for reading." msgstr "\"%s\" tak bisa dibuka untuk dibaca." -#: src/client/composer/composer-widget.vala:1638 +#: src/client/composer/composer-widget.vala:1908 msgid "Cannot add attachment" msgstr "Tak bisa menambah lampiran" -#: src/client/composer/composer-widget.vala:1687 -msgid "To: " -msgstr "Kepada: " +#. Translators: Human-readable version of the RFC 822 To header +#: src/client/composer/composer-widget.vala:1965 +#: src/client/conversation-viewer/conversation-email.vala:559 +#: src/client/util/util-email.vala:235 ui/conversation-message.ui:312 +msgid "To:" +msgstr "Ke:" -#: src/client/composer/composer-widget.vala:1690 -msgid "Cc: " -msgstr "Cc: " +#. Translators: Human-readable version of the RFC 822 CC header +#: src/client/composer/composer-widget.vala:1971 +#: src/client/conversation-viewer/conversation-email.vala:564 +#: src/client/util/util-email.vala:240 ui/conversation-message.ui:357 +msgid "Cc:" +msgstr "Cc:" -#: src/client/composer/composer-widget.vala:1693 -msgid "Bcc: " -msgstr "Bcc: " +#. Translators: Human-readable version of the RFC 822 BCC header +#: src/client/composer/composer-widget.vala:1977 +#: src/client/conversation-viewer/conversation-email.vala:569 +#: ui/conversation-message.ui:402 +msgid "Bcc:" +msgstr "Bcc:" -#: src/client/composer/composer-widget.vala:1696 +#. Translators: Human-readable version of the RFC 822 Reply-To header +#: src/client/composer/composer-widget.vala:1983 msgid "Reply-To: " msgstr "Balas-Ke: " -#: src/client/composer/composer-widget.vala:1834 +#: src/client/composer/composer-widget.vala:2172 msgid "Select Color" msgstr "Pilih Warna" -#. Displayed in the From dropdown to indicate an "alternate email address" -#. for an account. The first printf argument will be the alternate email -#. address, and the second will be the account's primary email address. -#: src/client/composer/composer-widget.vala:2024 +#. Displayed in the From dropdown to indicate an +#. "alternate email address" for an account. The first +#. printf argument will be the alternate email address, +#. and the second will be the account's primary email +#. address. +#: src/client/composer/composer-widget.vala:2364 #, 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:2082 +#: src/client/composer/composer-widget.vala:2420 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:2307 +#: src/client/composer/composer-widget.vala:2723 msgid "Images" msgstr "Citra" -#: src/client/composer/composer-window.vala:14 -msgid "New Message" -msgstr "Pesan Baru" - -#: src/client/composer/spell-check-popover.vala:117 +#: src/client/composer/spell-check-popover.vala:108 msgid "Remove this language from the preferred list" msgstr "Hapus bahasa ini dari daftar yang disukai" -#: src/client/composer/spell-check-popover.vala:121 +#: src/client/composer/spell-check-popover.vala:112 msgid "Add this language to the preferred list" msgstr "Tambahkan bahasa ini ke daftar yang disukai" -#: src/client/composer/spell-check-popover.vala:217 +#: src/client/composer/spell-check-popover.vala:199 msgid "Search for more languages" msgstr "Cari lebih banyak bahasa lagi" -#: src/client/conversation-list/conversation-list-view.vala:283 -msgid "Delete conversation" -msgstr "Hapus percakapan" +#. / Translators: Context menu item +#: src/client/conversation-list/conversation-list-view.vala:335 +msgid "Move conversation to _Trash" +msgid_plural "Move conversations to _Trash" +msgstr[0] "Pindahkan percakapan ke _Tong Sampah" +msgstr[1] "" -#: src/client/conversation-list/conversation-list-view.vala:286 -#: ui/main-toolbar-menus.ui:16 +#. / 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] "" + +#: src/client/conversation-list/conversation-list-view.vala:360 +#: ui/main-toolbar-menus.ui:5 msgid "Mark as _Read" msgstr "Tandai Sudah Di_baca" -#: src/client/conversation-list/conversation-list-view.vala:289 -#: ui/main-toolbar-menus.ui:20 +#: src/client/conversation-list/conversation-list-view.vala:368 +#: ui/main-toolbar-menus.ui:9 msgid "Mark as _Unread" msgstr "Tandai _Belum Dibaca" -#: src/client/conversation-list/conversation-list-view.vala:292 -#: ui/main-toolbar-menus.ui:28 +#: src/client/conversation-list/conversation-list-view.vala:376 +#: ui/main-toolbar-menus.ui:17 msgid "U_nstar" msgstr "Hapus bi_ntang" -#: src/client/conversation-list/conversation-list-view.vala:294 -#: ui/main-toolbar-menus.ui:24 +#: src/client/conversation-list/conversation-list-view.vala:383 +#: ui/main-toolbar-menus.ui:13 msgid "_Star" msgstr "_Bintangi" #. Translators: Menu item to reply to a specific message. -#: src/client/conversation-list/conversation-list-view.vala:297 +#: src/client/conversation-list/conversation-list-view.vala:392 #: ui/conversation-email-menus.ui:9 msgid "_Reply" msgstr "B_alas" -#: src/client/conversation-list/conversation-list-view.vala:298 +#: src/client/conversation-list/conversation-list-view.vala:398 msgid "R_eply All" msgstr "Balas S_emua" #. Translators: Menu item to forward a specific message. -#: src/client/conversation-list/conversation-list-view.vala:299 +#: src/client/conversation-list/conversation-list-view.vala:404 #: ui/conversation-email-menus.ui:21 msgid "_Forward" msgstr "_Teruskan" -#: src/client/conversation-list/formatted-conversation-data.vala:11 +#: src/client/conversation-list/formatted-conversation-data.vala:18 msgid "Me" msgstr "Aku" -#. Translators: This is the file type displayed for -#. attachments with unknown file types. -#: src/client/conversation-viewer/conversation-email.vala:122 -msgid "Unknown" -msgstr "Tak dikenal" - -#: src/client/conversation-viewer/conversation-email.vala:811 +#. Translators: Human-readable version of the RFC 822 From header +#: src/client/conversation-viewer/conversation-email.vala:554 +#: src/client/util/util-email.vala:226 msgid "From:" msgstr "Dari:" -#: src/client/conversation-viewer/conversation-email.vala:815 -#: ui/conversation-message.ui:313 -msgid "To:" -msgstr "Ke:" - -#: src/client/conversation-viewer/conversation-email.vala:819 -#: ui/conversation-message.ui:358 -msgid "Cc:" -msgstr "Cc:" - -#: src/client/conversation-viewer/conversation-email.vala:823 -#: ui/conversation-message.ui:403 -msgid "Bcc:" -msgstr "Bcc:" - -#: src/client/conversation-viewer/conversation-email.vala:827 +#. Translators: Human-readable version of the RFC 822 Date header +#: src/client/conversation-viewer/conversation-email.vala:574 +#: src/client/util/util-email.vala:231 msgid "Date:" msgstr "Tanggal:" -#: src/client/conversation-viewer/conversation-email.vala:831 +#. Translators: Human-readable version of the RFC 822 Subject header +#: src/client/conversation-viewer/conversation-email.vala:584 +#: src/client/util/util-email.vala:229 msgid "Subject:" msgstr "Subjek:" -#: src/client/conversation-viewer/conversation-message.vala:60 +#: src/client/conversation-viewer/conversation-message.vala:128 msgid "This email address may have been forged" msgstr "Alamat surel ini mungkin telah dipalsukan" -#. Preview headers +#. Compact headers. These are partially done here and partially +#. in load_contacts. #. Translators: This is displayed in place of the from address #. when the message has no from address. -#: src/client/conversation-viewer/conversation-message.vala:330 +#: src/client/conversation-viewer/conversation-message.vala:465 msgid "No sender" msgstr "Tidak ada pengirim" #. Translators: This separates multiple 'from' -#. addresses in the header preview for a message. -#: src/client/conversation-viewer/conversation-message.vala:589 +#. addresses in the compact header for a message. +#: src/client/conversation-viewer/conversation-message.vala:959 msgid ", " msgstr ", " #. Translators: This string is used as the HTML IMG ALT #. attribute value when displaying an inline image in an email #. that did not specify a file name. E.g. ImageCannot remove account " -msgstr "Tak dapat menghapus akun " - -#: ui/account_cannot_remove.glade:56 -msgid "" -"A composer window associated with this account is currently open. Send or " -"discard the message and try again." -msgstr "" -"Jendela penyusun pesan dari akun ini sedang terbuka. Kirim atau buang pesan " -"itu dan coba lagi." - -#: ui/account_list.glade:69 -msgid "Add account" +#: ui/accounts_editor_add_pane.ui:8 ui/accounts_editor_list_pane.ui:126 +msgid "Add an account" msgstr "Tambah akun" -#: ui/account_list.glade:82 -msgid "Edit account" -msgstr "Sunting akun" +#: ui/accounts_editor_add_pane.ui:53 +msgid "Create" +msgstr "Buat" -#: ui/account_list.glade:95 +#: ui/accounts_editor_add_pane.ui:130 ui/accounts_editor_servers_pane.ui:125 +msgid "Receiving" +msgstr "Menerima" + +#: ui/accounts_editor_add_pane.ui:178 ui/accounts_editor_servers_pane.ui:165 +msgid "Sending" +msgstr "Mengirim" + +#: ui/accounts_editor_edit_pane.ui:8 +msgid "Edit Account" +msgstr "Sunting Akun" + +#: ui/accounts_editor_edit_pane.ui:9 ui/accounts_editor_servers_pane.ui:9 +msgid "Account Name" +msgstr "Nama Akun" + +#: ui/accounts_editor_edit_pane.ui:124 +msgid "Email addresses" +msgstr "Alamat surel" + +#: ui/accounts_editor_edit_pane.ui:164 +msgid "Signature" +msgstr "Tanda Tangan" + +#: ui/accounts_editor_edit_pane.ui:201 +msgid "Settings" +msgstr "Pengaturan" + +#. This is a button in the account settings to show server settings. +#: ui/accounts_editor_edit_pane.ui:243 ui/accounts_editor_servers_pane.ui:8 +msgid "Server Settings" +msgstr "Pengaturan Server" + +#. This is the remove account button in the account settings. +#: ui/accounts_editor_edit_pane.ui:258 ui/accounts_editor_remove_pane.ui:23 +msgid "Remove Account" +msgstr "Hapus Akun" + +#: ui/accounts_editor_edit_pane.ui:262 ui/accounts_editor_remove_pane.ui:27 +msgid "Remove this account from Geary" +msgstr "Hapus akun ini dari Geary" + +#: ui/accounts_editor_list_pane.ui:8 +msgid "Accounts" +msgstr "Akun" + +#: ui/accounts_editor_list_pane.ui:62 +msgid "To get started, select an email provider below." +msgstr "Untuk memulai, pilih sebuah penyedia surel di bawah." + +#: ui/accounts_editor_list_pane.ui:75 +msgid "Welcome to Geary" +msgstr "Selamat datang ke Geary" + +#. This title is shown to users when confirming if they want to remove an account. The string substitution is replaced with the account's name. +#: ui/accounts_editor_remove_pane.ui:73 +#, c-format +msgid "Confirm removing: %s" +msgstr "Konfirmasi penghapusan: %s" + +#: ui/accounts_editor_remove_pane.ui:91 +msgid "" +"Removing an account will remove it from Geary and delete locally cached " +"email data from your computer, but not from your service provider." +msgstr "" +"Menghapus suatu akun akan menghapusnya dari Geary dan menghapus data surel " +"yang disinggahkan secara lokal dari komputer Anda, tapi tidak dari penyedia " +"layanan Anda." + +#: ui/accounts_editor_remove_pane.ui:122 msgid "Remove account" msgstr "Hapus akun" -#: ui/account_spinner.glade:41 -msgid "Please wait while Geary validates your account." -msgstr "Silakan tunggu sementara Geary memvalidasi akun Anda." +#: ui/accounts_editor_servers_pane.ui:47 +msgid "Apply" +msgstr "Terapkan" + +#. Infobar title when one or more accounts are offline +#: ui/application-main-window.ui:185 +msgid "Working offline" +msgstr "Bekerja luring" + +#. Label and tooltip for offline infobar +#: ui/application-main-window.ui:199 +msgid "" +"Your computer does not appear to be connected to the Internet.\n" +"You will not be able to send or receive email until it is re-connected." +msgstr "" +"Komputer Anda tampaknya tidak tersambung ke Internet.\n" +"Anda tidak akan bisa mengirim atau menerima surel sampai itu tersambung lagi." + +#. Label and tooltip for offline infobar +#: ui/application-main-window.ui:202 +msgid "You will not be able to send or receive email until re-connected." +msgstr "" +"Anda tidak akan bisa mengirim atau menerima surel sampai tersambung lagi." + +#. Button label for retrying TLS cert validation +#: ui/application-main-window.ui:249 +msgid "Check" +msgstr "Periksa" + +#. Button tooltip for retrying TLS cert validation +#: ui/application-main-window.ui:253 +msgid "Check the security details for the connection" +msgstr "Periksalah rincian keamanan untuk koneksi" + +#. Infobar title when one or more accounts have a TLS cert validation error +#: ui/application-main-window.ui:282 +msgid "Security problem" +msgstr "Masalah keamanan" + +#. Label and tooltip for TLS cert validation error infobar +#: ui/application-main-window.ui:296 +msgid "" +"An account has reported an untrusted server.\n" +"Please check the server configuration and try again." +msgstr "" +"Suatu akun telah melaporkan sebuah server yang tak terpercaya.\n" +"Harap periksa konfigurasi server dan coba lagi." + +#. Label and tooltip for TLS cert validation error infobar +#: ui/application-main-window.ui:299 +msgid "An account has reported an untrusted server." +msgstr "Suatu akun telah melaporkan sebuah server yang tak terpercaya." + +#. Button tooltip for retrying when a login error has occurred +#: ui/application-main-window.ui:350 +msgid "Retry login, you will be prompted for your password" +msgstr "Cobalah lagi log masuk, Anda akan diminta memasukkan kata sandi" + +#. Infobar title when one or more accounts have a login error +#: ui/application-main-window.ui:379 +msgid "Login problem" +msgstr "Masalah log masuk" + +#. Label and tooltip for authentication problem infobar +#: ui/application-main-window.ui:393 +msgid "" +"An account has reported an incorrect login or password.\n" +"Please check your login name and try again." +msgstr "" +"Sebuah akun telah melaporkan log masuk atau kata sandi yang salah.\n" +"Harap periksa nama log masuk Anda dan coba lagi." + +#. Label and tooltip for authentication problem infobar +#: ui/application-main-window.ui:396 +msgid "An account has reported an incorrect login or password." +msgstr "Sebuah akun telah melaporkan log masuk atau kata sandi yang salah." #: ui/certificate_warning_dialog.glade:7 msgid "Untrusted Connection" @@ -2125,31 +2620,27 @@ msgstr "_Percayai Server Ini" msgid "_Don’t Trust This Server" msgstr "_Jangan Percayai Server Ini" -#: ui/composer-headerbar.ui:17 ui/composer-headerbar.ui:174 -msgid "Detach (Ctrl+D)" -msgstr "Lepas (Ctrl+D)" +#: ui/composer-headerbar.ui:19 ui/composer-headerbar.ui:176 +msgid "Detach the composer from the window" +msgstr "Copot penyusun dari jendela" -#: ui/composer-headerbar.ui:57 ui/composer-headerbar.ui:83 -msgid "Attach File (Ctrl+T)" -msgstr "Lampirkan Berkas (Ctrl+T)" +#: ui/composer-headerbar.ui:59 ui/composer-headerbar.ui:84 +msgid "Attach a file" +msgstr "Lampirkan berkas" -#: ui/composer-headerbar.ui:107 -msgid "Include Original Attachments" -msgstr "Sertakan Lampiran Asli" +#: ui/composer-headerbar.ui:108 +msgid "Add original attachments" +msgstr "Tambahkan lampiran asli" -#: ui/composer-headerbar.ui:202 +#: ui/composer-headerbar.ui:204 msgid "_Send" msgstr "_Kirim" -#: ui/composer-headerbar.ui:207 -msgid "Send (Ctrl+Enter)" -msgstr "Kirim (Ctrl+Enter)" - -#: ui/composer-headerbar.ui:230 +#: ui/composer-headerbar.ui:231 msgid "Discard and Close" msgstr "Buang dan Tutup" -#: ui/composer-headerbar.ui:254 +#: ui/composer-headerbar.ui:255 msgid "Save and Close" msgstr "Simpan dan Tutup" @@ -2241,7 +2732,7 @@ msgstr "Tempel _Tanpa Format" msgid "Select _All" msgstr "Pilih Semu_a" -#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:49 +#: ui/composer-menus.ui:127 ui/conversation-message-menus.ui:43 msgid "_Inspect…" msgstr "Per_iksa…" @@ -2279,62 +2770,161 @@ msgstr "Jatuhkan berkas di sini" msgid "To add them as attachments" msgstr "Untuk menambahkan mereka sebagai lampiran" -#: ui/composer-widget.ui:348 -msgid "Undo last edit (Ctrl+Z)" -msgstr "Batalkan penyuntingan terakhir (Ctrl+Z)" +#: ui/composer-widget.ui:353 +msgid "Undo last edit" +msgstr "Batalkan suntingan terakhir" -#: ui/composer-widget.ui:372 -msgid "Redo last edit (Ctrl+Shift+Z)" -msgstr "Ulangi penyuntingan terakhir (Ctrl+Shift+Z)" +#: ui/composer-widget.ui:377 +msgid "Redo last edit" +msgstr "Jadikan lagi penyuntingan terakhir" -#: ui/composer-widget.ui:410 -msgid "Bold (Ctrl+B)" -msgstr "Tebal (Ctrl+B)" +#: ui/composer-widget.ui:415 +msgid "Bold text" +msgstr "Teks tebal" -#: ui/composer-widget.ui:434 -msgid "Italic (Ctrl+I)" -msgstr "Miring (Ctrl+I)" +#: ui/composer-widget.ui:439 +msgid "Italic text" +msgstr "Teks miring" -#: ui/composer-widget.ui:458 -msgid "Underline (Ctrl+U)" -msgstr "Garis bawah (Ctrl+U)" +#: ui/composer-widget.ui:463 +msgid "Underline text" +msgstr "Garisbawahi teks" -#: ui/composer-widget.ui:482 -msgid "Strikethrough (Ctrl+K)" -msgstr "Coret (Ctrl+K)" +#: ui/composer-widget.ui:487 +msgid "Strikethrough text" +msgstr "Coret teks" -#: ui/composer-widget.ui:520 -msgid "Insert unordered list" -msgstr "Masukkan daftar tidak berurutan" +#: ui/composer-widget.ui:525 +msgid "Insert bulleted list" +msgstr "Sisipkan daftar bulet" -#: ui/composer-widget.ui:544 -msgid "Insert ordered list" -msgstr "Masukkan daftar berurutan" +#: ui/composer-widget.ui:549 +msgid "Insert numbered list" +msgstr "Sisipkan daftar bernomor" -#: ui/composer-widget.ui:582 -msgid "Quote text (Ctrl+])" -msgstr "Kutip teks (Ctrl+])" +#: ui/composer-widget.ui:587 +msgid "Indent or quote text" +msgstr "Indentasikan atau kutip teks" -#: ui/composer-widget.ui:606 -msgid "Unquote text (Ctrl+[)" -msgstr "Tidak mengutip teks (Ctrl+[)" +#: ui/composer-widget.ui:611 +msgid "Un-indent or unquote text" +msgstr "Batalkan indentasi atau pengutipan teks" -#: ui/composer-widget.ui:644 -msgid "Insert or update selection link (Ctrl+L)" -msgstr "Sisipkan atau mutakhirkan tautan yang dipilih (Ctrl+L)" +#: ui/composer-widget.ui:649 +msgid "Insert or update text link" +msgstr "Sisipkan atau mutakhirkan tautan teks" -#: ui/composer-widget.ui:668 -msgid "Insert an image (Ctrl+G)" -msgstr "Sisipkan citra (Ctrl+G)" +#: ui/composer-widget.ui:673 +msgid "Insert an image" +msgstr "Sisipkan sebuah citra" -#: ui/composer-widget.ui:702 -msgid "Remove selection formatting (Ctrl+Space)" -msgstr "Hapus format bagian yang dipilih (Ctrl+Space)" +#: ui/composer-widget.ui:707 +msgid "Remove text formatting" +msgstr "Buang performatan teks" -#: ui/composer-widget.ui:726 +#: ui/composer-widget.ui:731 msgid "Select spell checking languages" msgstr "Pilih bahasa pemeriksaan ejaan" +#: ui/components-attachment-pane.ui:29 ui/components-attachment-pane.ui:47 +msgid "Select all attachments" +msgstr "Pilih semua lampiran" + +#: ui/components-attachment-pane.ui:66 +msgid "Save selected attachments" +msgstr "Simpan lampiran yang dipilih" + +#: ui/components-attachment-pane.ui:85 +msgid "Open selected attachments" +msgstr "Buka lampiran yang dipilih" + +#: ui/components-attachment-pane-menus.ui:17 +msgid "Save _All" +msgstr "Simpan Semu_a" + +#: ui/components-inspector-error-view.ui:33 +msgid "" +"If the problem is serious or persists, please save and send these details to " +"the mailing list " +"or attach to a new bug report." +msgstr "" +"Jika masalahnya serius atau berlanjut, salin dan kirim rincian ini ke milis atau lampirkan " +"ke sebuah laporan kutu baru." + +#: ui/components-inspector-error-view.ui:49 +msgid "Details:" +msgstr "Detail:" + +#. Tooltip for inspector button +#: ui/components-inspector.ui:20 +msgid "Toggle appending new log entries" +msgstr "Jungkitkan menambahkan entri log baru" + +#. Tooltip for inspector button +#. Tooltip for problem report button +#: ui/components-inspector.ui:37 ui/problem-details-dialog.ui:19 +msgid "Search for matching log entries" +msgstr "Cari entri log yang cocok" + +#. Tooltip for inspector button +#. Tooltip for problem report button +#: ui/components-inspector.ui:63 ui/problem-details-dialog.ui:46 +msgid "Save logs entries and details" +msgstr "Simpan entri log dan rincian" + +#. Tooltip for inspector button +#. Tooltip for problem report button +#: ui/components-inspector.ui:84 ui/problem-details-dialog.ui:62 +msgid "Copy to clipboard" +msgstr "Salin ke papan klip" + +#: ui/conversation-contact-popover.ui:146 +msgid "New Conversation…" +msgstr "Percakapan Baru…" + +#: ui/conversation-contact-popover.ui:159 +msgid "Copy Email Address" +msgstr "Salin Alamat Surel" + +#: ui/conversation-contact-popover.ui:182 +msgid "Save in Contacts…" +msgstr "Simpan dalam Kontak…" + +#: ui/conversation-contact-popover.ui:195 +msgid "Show Conversations" +msgstr "Tampilkan Percakapan" + +#: ui/conversation-contact-popover.ui:208 +msgid "Open in Contacts" +msgstr "Buka dalam Kontak" + +#: ui/conversation-contact-popover.ui:221 +msgid "Always Load Remote Images" +msgstr "Selalu Muat Gambar Jauh" + +#. Title label on contact popover +#: ui/conversation-contact-popover.ui:264 +msgid "Deceptive email address" +msgstr "Alamat surel yang menyesatkan" + +#. Contact popover label +#: ui/conversation-contact-popover.ui:294 +msgid "This email address is:" +msgstr "Alamat surel ini:" + +#. Contact popover label +#: ui/conversation-contact-popover.ui:319 +msgid "But was forged as:" +msgstr "Tetapi dipalsukan sebagai:" + +#. Contact popover label +#: ui/conversation-contact-popover.ui:344 +msgid "The sender may not be trustworthy" +msgstr "Pengirim mungkin tidak terpercaya" + #: ui/conversation-email.ui:27 msgid "Save all attachments" msgstr "Simpan semua lampiran" @@ -2349,39 +2939,23 @@ msgstr "Tandai pesan ini sebagai dibintangi" msgid "Mark this message as not starred" msgstr "Tandai pesan ini sebagai tidak dibintangi" -#: ui/conversation-email.ui:95 -msgid "Display the message menu" -msgstr "Tampilkan menu pesan" - -#: ui/conversation-email.ui:161 -msgid "Open selected attachments" -msgstr "Buka lampiran yang dipilih" - -#: ui/conversation-email.ui:178 -msgid "Save selected attachments" -msgstr "Simpan lampiran yang dipilih" - -#: ui/conversation-email.ui:195 -msgid "Select all attachments" -msgstr "Pilih semua lampiran" - -#: ui/conversation-email.ui:240 +#: ui/conversation-email.ui:124 msgid "Edit Draft" msgstr "Sunting Draf" -#: ui/conversation-email.ui:267 +#: ui/conversation-email.ui:151 msgid "Draft message" msgstr "Draf pesan" -#: ui/conversation-email.ui:283 +#: ui/conversation-email.ui:167 msgid "This message has not yet been sent." msgstr "Pesan ini belum dikirim." -#: ui/conversation-email.ui:329 +#: ui/conversation-email.ui:213 msgid "Message not saved" msgstr "Pesan tidak disimpan" -#: ui/conversation-email.ui:345 +#: ui/conversation-email.ui:229 msgid "This message was sent, but has not been saved to your account." msgstr "Pesan ini terkirim, tapi belum disimpan ke akun Anda." @@ -2407,24 +2981,40 @@ msgid "Mark Unread From _Here" msgstr "Tandai Belum Dibaca Dari _Sini" #. Translators: Menu item to move a single, specific message -#. to the trash +#. to the trash folder #: ui/conversation-email-menus.ui:50 -msgid "_Trash" -msgstr "_Sampah" +msgid "Move message to _Trash" +msgstr "Pindahkan pesan ke _Tong Sampah" #. Translators: Menu item to delete a single, specific message #: ui/conversation-email-menus.ui:57 -msgid "_Delete…" -msgstr "_Hapus…" +msgid "_Delete message…" +msgstr "_Hapus pesan…" #. Translators: Menu item to view the source for a message #: ui/conversation-email-menus.ui:69 msgid "_View Source" msgstr "Lihat Su_mber" -#: ui/conversation-email-menus.ui:87 -msgid "_Save All" -msgstr "Simpan Semu_a" +#: ui/conversation-message-link-popover.ui:54 +msgid "But actually goes to:" +msgstr "Tapi sebenarnya ke:" + +#: ui/conversation-message-link-popover.ui:84 +msgid "The link appears to go to:" +msgstr "Tautan ini nampaknya menuju ke:" + +#: ui/conversation-message-link-popover.ui:96 +msgid "Deceptive link found" +msgstr "Ditemukan tautan yang menipu" + +#: ui/conversation-message-link-popover.ui:111 +msgid "The email sender may be leading you to the wrong web site." +msgstr "Pengirim surel mungkin mengecoh Anda ke situs web yang salah." + +#: ui/conversation-message-link-popover.ui:124 +msgid "If unsure, contact the sender and ask before continuing." +msgstr "Bila tidak yakin, hubungi pengirim dan tanyakan sebelum melanjutkan." #: ui/conversation-message-menus.ui:7 msgid "_Open Link" @@ -2435,8 +3025,8 @@ msgid "Copy Link _Address" msgstr "Salin _Alamat Tautan" #: ui/conversation-message-menus.ui:17 -msgid "Send New _Message…" -msgstr "Kiri_m Pesan Baru…" +msgid "_New Conversation…" +msgstr "Percakapa_n Baru…" #: ui/conversation-message-menus.ui:21 msgid "Copy Email _Address" @@ -2450,31 +3040,27 @@ msgstr "Simpan C_itra Sebagai…" msgid "_Select All" msgstr "Pilih _Semua" -#: ui/conversation-message-menus.ui:43 -msgid "Search for messages from" -msgstr "Cari pesan dari" - -#: ui/conversation-message.ui:64 +#: ui/conversation-message.ui:63 msgid "From " msgstr "Dari " -#: ui/conversation-message.ui:80 ui/conversation-message.ui:179 +#: ui/conversation-message.ui:79 ui/conversation-message.ui:178 msgid "1/1/1970\t" msgstr "1/1/1970\t" -#: ui/conversation-message.ui:103 +#: ui/conversation-message.ui:102 msgid "Preview body text." msgstr "Pratinjau tubuh teks." -#: ui/conversation-message.ui:203 +#: ui/conversation-message.ui:202 msgid "Sent by:" msgstr "Dikirim oleh:" -#: ui/conversation-message.ui:248 +#: ui/conversation-message.ui:247 msgid "Reply to:" msgstr "Balas ke:" -#: ui/conversation-message.ui:292 +#: ui/conversation-message.ui:291 msgid "Subject" msgstr "Perihal" @@ -2494,54 +3080,18 @@ msgstr "Citra remote tidak ditampilkan" msgid "Only show remote images from senders you trust." msgstr "Hanya tampilkan citra remote dari pengirim yang Anda percayai." -#: ui/conversation-message.ui:692 -msgid "But actually goes to:" -msgstr "Tapi sebenarnya ke:" - -#: ui/conversation-message.ui:723 -msgid "The link appears to go to:" -msgstr "Tautan ini nampaknya menuju ke:" - -#: ui/conversation-message.ui:735 -msgid "Deceptive link found" -msgstr "Ditemukan tautan yang menipu" - -#: ui/conversation-message.ui:750 -msgid "The email sender may be leading you to the wrong web site." -msgstr "Pengirim surel mungkin mengecoh Anda ke situs web yang salah." - -#: ui/conversation-message.ui:763 -msgid "If unsure, contact the sender and ask before continuing." -msgstr "Bila tidak yakin, hubungi pengirim dan tanyakan sebelum melanjutkan." - #: ui/conversation-viewer.ui:60 msgid "Find in conversation" msgstr "Cari dalam percakapan" -#: ui/conversation-viewer.ui:74 +#: ui/conversation-viewer.ui:75 msgid "Find the previous occurrence of the search string." msgstr "Cari kemunculan sebelumnya dari kalimat yang dicari." -#: ui/conversation-viewer.ui:95 +#: ui/conversation-viewer.ui:96 msgid "Find the next occurrence of the search string." msgstr "Cari kemunculan selanjutnya dari kalimat yang dicari." -#: ui/edit_alternate_emails.glade:112 -msgid "Remove email address" -msgstr "Hapus alamat surel" - -#: ui/edit_alternate_emails.glade:136 -msgid "" -"Some email services require additional addresses be configured on the " -"server. Contact your email provider for more information." -msgstr "" -"Beberapa layanan surel memerlukan alamat-alamat tambahan ditata pada server. " -"Kontak penyedia surel Anda untuk informasi lebih jauh." - -#: ui/edit_alternate_emails.glade:175 -msgid "_Update" -msgstr "M_utakhirkan" - #: ui/find_bar.glade:66 msgid "Find:" msgstr "Cari:" @@ -2566,446 +3116,342 @@ msgstr "label" msgid "Conversation Shortcuts" msgstr "Pintasan Percakapan" -#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:254 -msgctxt "shortcut window" -msgid "General" -msgstr "Umum" - -#: ui/gtk/help-overlay.ui:17 -msgctxt "shortcut window" -msgid "Move focus to the next/previous pane" -msgstr "Pindahkan fokus ke panel selanjutnya/sebelumnya" - -#: ui/gtk/help-overlay.ui:24 -msgctxt "shortcut window" -msgid "Move focus to conversation list" -msgstr "Pindahkan fokus ke daftar percakapan" - -#: ui/gtk/help-overlay.ui:31 -msgctxt "shortcut window" -msgid "Detach composer window" -msgstr "Copot jendela penyusun" - -#: ui/gtk/help-overlay.ui:38 -msgctxt "shortcut window" -msgid "Close composer window" -msgstr "Tutup jendela penyusun" - -#: ui/gtk/help-overlay.ui:45 -msgctxt "shortcut window" -msgid "Show keyboard shortcuts" -msgstr "Tampilkan pintasan papan tik" - -#: ui/gtk/help-overlay.ui:52 -msgctxt "shortcut window" -msgid "Show help" -msgstr "Tampilkan bantuan" - -#: ui/gtk/help-overlay.ui:59 -msgctxt "shortcut window" -msgid "Quit the application" -msgstr "Keluar aplikasi" - -#: ui/gtk/help-overlay.ui:68 -msgctxt "shortcut window" -msgid "Search" -msgstr "Cari" - -#: ui/gtk/help-overlay.ui:72 -msgctxt "shortcut window" -msgid "Jump to search box" -msgstr "Lompat ke kotak pencarian" - -#: ui/gtk/help-overlay.ui:79 -msgctxt "shortcut window" -msgid "Find in current conversation" -msgstr "Cari dalam percakapan saat ini" - -#: ui/gtk/help-overlay.ui:86 -msgctxt "shortcut window" -msgid "Find next/previous in current conversation" -msgstr "Cari selanjutnya/sebelumnya dalam percakapan saat ini" - -#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:274 +#: ui/gtk/help-overlay.ui:13 ui/gtk/help-overlay.ui:355 msgctxt "shortcut window" msgid "Actions" msgstr "Aksi" -#: ui/gtk/help-overlay.ui:99 +#: ui/gtk/help-overlay.ui:17 msgctxt "shortcut window" -msgid "Compose a new message" -msgstr "Susun suatu pesan baru" +msgid "New conversation" +msgstr "Percakapan baru" -#: ui/gtk/help-overlay.ui:106 +#: ui/gtk/help-overlay.ui:24 msgctxt "shortcut window" -msgid "Reply to sender " -msgstr "Balas ke pengirim " +msgid "Reply to sender" +msgstr "Balas ke pengirim" -#: ui/gtk/help-overlay.ui:113 +#: ui/gtk/help-overlay.ui:31 ui/gtk/help-overlay.ui:269 msgctxt "shortcut window" msgid "Reply to all" msgstr "Balas ke semua" -#: ui/gtk/help-overlay.ui:120 +#: ui/gtk/help-overlay.ui:38 ui/gtk/help-overlay.ui:276 msgctxt "shortcut window" msgid "Forward" msgstr "Teruskan" -#: ui/gtk/help-overlay.ui:127 +#: ui/gtk/help-overlay.ui:45 ui/gtk/help-overlay.ui:283 msgctxt "shortcut window" -msgid "Archive" -msgstr "Arsip" +msgid "Un-mark/mark read" +msgstr "Tandai/hapus tanda sudah dibaca" -#: ui/gtk/help-overlay.ui:134 +#: ui/gtk/help-overlay.ui:52 ui/gtk/help-overlay.ui:290 msgctxt "shortcut window" -msgid "Move to trash" -msgstr "Pindah ke tong sampah" +msgid "Mark/un-mark starred" +msgstr "Tandai/hapus tanda dibintangi" + +#: ui/gtk/help-overlay.ui:59 ui/gtk/help-overlay.ui:297 +msgctxt "shortcut window" +msgid "Archive conversations" +msgstr "Arsipkan percakapan" + +#: ui/gtk/help-overlay.ui:66 ui/gtk/help-overlay.ui:304 +msgctxt "shortcut window" +msgid "Move conversations" +msgstr "Pindahkan percakapan" + +#: ui/gtk/help-overlay.ui:73 ui/gtk/help-overlay.ui:311 +msgctxt "shortcut window" +msgid "Label conversations" +msgstr "Labeli percakapan" + +#: ui/gtk/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Trash conversations" +msgstr "Buang percakapan ke tong sampah" + +#: ui/gtk/help-overlay.ui:87 ui/gtk/help-overlay.ui:318 +msgctxt "shortcut window" +msgid "Junk conversations" +msgstr "Sampahkan percakapan" + +#: ui/gtk/help-overlay.ui:95 ui/gtk/help-overlay.ui:325 +msgctxt "shortcut window" +msgid "Delete conversations" +msgstr "Hapus percakapan" + +#: ui/gtk/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cari" + +#: ui/gtk/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Search for conversations" +msgstr "Cari perbincangan" + +#: ui/gtk/help-overlay.ui:115 +msgctxt "shortcut window" +msgid "Find in current conversation" +msgstr "Cari dalam percakapan saat ini" #: ui/gtk/help-overlay.ui:141 msgctxt "shortcut window" -msgid "Toggle spam" -msgstr "Jungkitkan spam" +msgid "Undo" +msgstr "Batalkan" -#: ui/gtk/help-overlay.ui:148 +#: ui/gtk/help-overlay.ui:145 msgctxt "shortcut window" -msgid "Move the conversation" -msgstr "Pindahkan percakapan" +msgid "Undo the last action" +msgstr "Membatalkan aksi terakhir" -#: ui/gtk/help-overlay.ui:155 +#: ui/gtk/help-overlay.ui:152 msgctxt "shortcut window" -msgid "Label the conversation" -msgstr "Labeli ke percakapan" +msgid "Redo the last action" +msgstr "Ulangi langkah terakhir" -#: ui/gtk/help-overlay.ui:163 -msgctxt "shortcut window" -msgid "Mark read" -msgstr "Tandai sudah dibaca" - -#: ui/gtk/help-overlay.ui:170 -msgctxt "shortcut window" -msgid "Mark unread" -msgstr "Tandai belum dibaca" - -#: ui/gtk/help-overlay.ui:179 +#: ui/gtk/help-overlay.ui:161 msgctxt "shortcut window" msgid "View" msgstr "Tilik" -#: ui/gtk/help-overlay.ui:183 +#: ui/gtk/help-overlay.ui:165 msgctxt "shortcut window" msgid "Zoom in" msgstr "Perbesar" -#: ui/gtk/help-overlay.ui:190 +#: ui/gtk/help-overlay.ui:172 msgctxt "shortcut window" msgid "Zoom out" msgstr "Perkecil" -#: ui/gtk/help-overlay.ui:197 +#: ui/gtk/help-overlay.ui:179 msgctxt "shortcut window" msgid "Reset zoom" msgstr "Reset zum" +#: ui/gtk/help-overlay.ui:188 ui/gtk/help-overlay.ui:375 +msgctxt "shortcut window" +msgid "General" +msgstr "Umum" + +#: ui/gtk/help-overlay.ui:192 +msgctxt "shortcut window" +msgid "Show help" +msgstr "Tampilkan bantuan" + +#: ui/gtk/help-overlay.ui:199 +msgctxt "shortcut window" +msgid "Show keyboard shortcuts" +msgstr "Tampilkan pintasan papan tik" + #: ui/gtk/help-overlay.ui:206 msgctxt "shortcut window" -msgid "Additional Shortcuts" -msgstr "Pintasan Tambahan" +msgid "Open a new window" +msgstr "Buka jendela baru" -#: ui/gtk/help-overlay.ui:210 +#: ui/gtk/help-overlay.ui:213 msgctxt "shortcut window" -msgid "Star" -msgstr "Bintangi" +msgid "Close the current window" +msgstr "Tutup jendela kini" -#: ui/gtk/help-overlay.ui:217 +#: ui/gtk/help-overlay.ui:220 msgctxt "shortcut window" -msgid "Unstar" -msgstr "Hapus bintang" +msgid "Quit the application" +msgstr "Keluar aplikasi" -#: ui/gtk/help-overlay.ui:224 +#: ui/gtk/help-overlay.ui:229 msgctxt "shortcut window" -msgid "Delete" -msgstr "Hapus" +msgid "Keyboard navigation" +msgstr "Navigasi papan tik" -#: ui/gtk/help-overlay.ui:231 +#: ui/gtk/help-overlay.ui:233 msgctxt "shortcut window" -msgid "Jump to next (older) conversation" -msgstr "Lompat ke lokasi selanjutnya (lebih lama)" +msgid "Go to next/previous pane" +msgstr "Pindah ke panel selanjutnya/sebelumnya" -#: ui/gtk/help-overlay.ui:238 +#: ui/gtk/help-overlay.ui:241 msgctxt "shortcut window" -msgid "Jump to previous (newer) conversation" -msgstr "Lompat ke lokasi sebelumnya (lebih baru)" +msgid "Select next/previous conversation" +msgstr "Pilih percakapan selanjutnya/sebelumnya" -#: ui/gtk/help-overlay.ui:250 -msgid "Composer Shortcuts" -msgstr "Pintasan Penyusun" +#: ui/gtk/help-overlay.ui:248 +msgctxt "shortcut window" +msgid "Focus next/previous message" +msgstr "Fokus ke pesan berikutnya/sebelumnya" #: ui/gtk/help-overlay.ui:258 msgctxt "shortcut window" -msgid "Quote text" -msgstr "Kutip teks" +msgid "Single-key shortcuts" +msgstr "Pintasan tombol tunggal" -#: ui/gtk/help-overlay.ui:265 +#: ui/gtk/help-overlay.ui:262 msgctxt "shortcut window" -msgid "Unquote text" -msgstr "Tidak mengutip teks" +msgid "Reply to sender " +msgstr "Balas ke pengirim " -#: ui/gtk/help-overlay.ui:278 +#: ui/gtk/help-overlay.ui:332 +msgctxt "shortcut window" +msgid "Find in current conversations" +msgstr "Cari dalam percakapan saat ini" + +#: ui/gtk/help-overlay.ui:339 +msgctxt "shortcut window" +msgid "Select next/previous conversations" +msgstr "Pilih percakapan-percakapan selanjutnya/sebelumnya" + +#: ui/gtk/help-overlay.ui:351 +msgid "Composer Shortcuts" +msgstr "Pintasan Penyusun" + +#: ui/gtk/help-overlay.ui:359 msgctxt "shortcut window" msgid "Send" msgstr "Kirim" -#: ui/gtk/help-overlay.ui:285 +#: ui/gtk/help-overlay.ui:366 msgctxt "shortcut window" msgid "Add attachment" msgstr "Tambah lampiran" -#: ui/gtk/help-overlay.ui:294 +#: ui/gtk/help-overlay.ui:379 msgctxt "shortcut window" -msgid "Rich text mode" -msgstr "Mode rich text" +msgid "Close composer window" +msgstr "Tutup jendela penyusun" -#: ui/gtk/help-overlay.ui:298 +#: ui/gtk/help-overlay.ui:386 +msgctxt "shortcut window" +msgid "Detach composer window" +msgstr "Copot jendela penyusun" + +#: ui/gtk/help-overlay.ui:393 +msgctxt "shortcut window" +msgid "Editing" +msgstr "Penyuntingan" + +#: ui/gtk/help-overlay.ui:398 +msgctxt "shortcut window" +msgid "Move selection to the clipboard" +msgstr "Pindahkan pilihan ke papan klip" + +#: ui/gtk/help-overlay.ui:405 +msgctxt "shortcut window" +msgid "Copy selection to clipboard" +msgstr "Salin pilihan ke papan klip" + +#: ui/gtk/help-overlay.ui:412 +msgctxt "shortcut window" +msgid "Paste from the clipboard" +msgstr "Tempel data dari papan klip" + +#: ui/gtk/help-overlay.ui:419 +msgctxt "shortcut window" +msgid "Quote text" +msgstr "Kutip teks" + +#: ui/gtk/help-overlay.ui:426 +msgctxt "shortcut window" +msgid "Unquote text" +msgstr "Tidak mengutip teks" + +#: ui/gtk/help-overlay.ui:435 +msgctxt "shortcut window" +msgid "Rich text editing" +msgstr "Penyuntingan rich text" + +#: ui/gtk/help-overlay.ui:439 +msgctxt "shortcut window" +msgid "Paste without formatting" +msgstr "Tempel tanpa format" + +#: ui/gtk/help-overlay.ui:446 msgctxt "shortcut window" msgid "Bold text" msgstr "Teks tebal" -#: ui/gtk/help-overlay.ui:305 +#: ui/gtk/help-overlay.ui:453 msgctxt "shortcut window" msgid "Italicize text" msgstr "Miringkan teks" -#: ui/gtk/help-overlay.ui:312 +#: ui/gtk/help-overlay.ui:460 msgctxt "shortcut window" msgid "Underline text" msgstr "Garisbawahi teks" -#: ui/gtk/help-overlay.ui:319 +#: ui/gtk/help-overlay.ui:467 msgctxt "shortcut window" msgid "Strike text" msgstr "Coret teks" -#: ui/gtk/help-overlay.ui:326 -msgctxt "shortcut window" -msgid "Insert a link" -msgstr "Sisipkan tautan" - -#: ui/gtk/help-overlay.ui:333 +#: ui/gtk/help-overlay.ui:474 msgctxt "shortcut window" msgid "Remove formatting" msgstr "Buang format" -#: ui/gtk/menus.ui:13 -msgid "A_ccounts" -msgstr "A_kun" +#: ui/gtk/help-overlay.ui:481 +msgctxt "shortcut window" +msgid "Insert an image" +msgstr "Sisipkan sebuah citra" -#: ui/gtk/menus.ui:23 -msgid "_Keyboard Shortcuts" -msgstr "Pintasan Papan Ti_k" +#: ui/gtk/help-overlay.ui:488 +msgctxt "shortcut window" +msgid "Insert a link" +msgstr "Sisipkan tautan" -#: ui/login.glade:88 -msgid "email@example.com" -msgstr "email@example.com" +#: ui/main-toolbar.ui:23 +msgctxt "tooltip" +msgid "Compose Message" +msgstr "Susun Pesan" -#: ui/login.glade:107 ui/password-dialog.glade:108 -msgid "Password" -msgstr "Sandi" - -#: ui/login.glade:123 -msgid "E_mail address" -msgstr "Ala_mat surel" - -#: ui/login.glade:144 ui/login.glade:635 -msgid "_Password" -msgstr "_Sandi" - -#: ui/login.glade:178 -msgid "S_ervice" -msgstr "_Layanan" - -#: ui/login.glade:199 -msgid "N_ame" -msgstr "N_ama" - -#: ui/login.glade:256 -msgid "N_ickname" -msgstr "Nama pangg_ilan" - -#: ui/login.glade:280 -msgid "Work, Home, etc." -msgstr "Kantor, Rumah, dsb." - -#: ui/login.glade:291 -msgid "_Save sent mail" -msgstr "_Simpan surat terkirim" - -#: ui/login.glade:309 -msgid "Addi_tional email addresses…" -msgstr "Alamat surel _tambahan…" - -#: ui/login.glade:353 -msgid "IMAP settings" -msgstr "Pengaturan IMAP" - -#: ui/login.glade:372 -msgid "Se_rver" -msgstr "Se_rver" - -#: ui/login.glade:393 -msgid "imap.example.com" -msgstr "imap.example.com" - -#: ui/login.glade:409 -msgid "P_ort" -msgstr "P_ort" - -#: ui/login.glade:448 -msgid "smtp.example.com" -msgstr "smtp.example.com" - -#: ui/login.glade:480 -msgid "Ser_ver" -msgstr "Ser_ver" - -#: ui/login.glade:501 -msgid "Por_t" -msgstr "Por_t" - -#: ui/login.glade:522 -msgid "SMTP settings" -msgstr "Pengaturan SMTP" - -#: ui/login.glade:541 -msgid "User_name" -msgstr "_Nama pengguna" - -#: ui/login.glade:562 -msgid "Pass_word" -msgstr "San_di" - -#: ui/login.glade:582 -msgid "SMTP username" -msgstr "Nama pengguna SMTP" - -#: ui/login.glade:598 -msgid "SMTP password" -msgstr "Sandi SMTP" - -#: ui/login.glade:614 -msgid "_Username" -msgstr "Nama pengg_una" - -#: ui/login.glade:655 -msgid "IMAP username" -msgstr "Nama pengguna IMAP" - -#: ui/login.glade:671 -msgid "IMAP password" -msgstr "Sandi IMAP" - -#: ui/login.glade:688 -msgid "Encr_yption" -msgstr "Enkrip_si" - -#: ui/login.glade:711 -msgid "Encrypt_ion" -msgstr "Enkrips_i" - -#: ui/login.glade:733 ui/login.glade:751 -msgid "SSL/TLS" -msgstr "SSL/TLS" - -#: ui/login.glade:734 ui/login.glade:752 -msgid "STARTTLS" -msgstr "STARTTLS" - -#: ui/login.glade:764 -msgid "No authentication re_quired" -msgstr "Otenti_kasi tidak dibutuhkan" - -#: ui/login.glade:781 -msgid "Use IMAP cre_dentials" -msgstr "Pakai kre_densial IMAP" - -#: ui/login.glade:888 -msgid "Composer" -msgstr "Penyusun" - -#: ui/login.glade:901 -msgid "Save dra_fts on server" -msgstr "Simpan dra_f pada server" - -#: ui/login.glade:918 -msgid "Si_gn emails (HTML allowed):" -msgstr "Tandatan_gani surel (boleh HTML):" - -#: ui/login.glade:976 -msgid "Storage" -msgstr "Penyimpanan" - -#: ui/login.glade:998 -msgid "_Download mail" -msgstr "Un_duh surat" - -#: ui/main-toolbar.ui:51 +#: ui/main-toolbar.ui:61 msgid "Toggle search bar" msgstr "Jungkitkan bilah pencarian" -#: ui/main-toolbar.ui:72 -msgid "Empty Spam or Trash folders" -msgstr "Kosongkan folder Spam atau Sampah" - -#: ui/main-toolbar.ui:112 +#: ui/main-toolbar.ui:114 msgid "Reply" msgstr "Balas" -#: ui/main-toolbar.ui:135 +#: ui/main-toolbar.ui:137 msgid "Reply All" msgstr "Balas Semua" -#: ui/main-toolbar.ui:158 +#: ui/main-toolbar.ui:160 msgid "Forward" msgstr "Teruskan" -#: ui/main-toolbar.ui:264 +#: ui/main-toolbar.ui:265 msgid "Toggle find bar" msgstr "Jungkitkan bilah pencarian" -#: ui/main-toolbar.ui:306 +#: ui/main-toolbar.ui:286 msgid "_Archive" msgstr "_Arsip" -#: ui/main-toolbar-menus.ui:5 +#: ui/main-toolbar-menus.ui:21 +msgid "Toggle as S_pam" +msgstr "Jungkitkan sebagai Spam" + +#: ui/main-toolbar-menus.ui:28 msgid "Empty _Spam…" msgstr "Kosongkan _Spam…" -#: ui/main-toolbar-menus.ui:9 +#: ui/main-toolbar-menus.ui:32 msgid "Empty _Trash…" msgstr "Kosongkan _Tong Sampah…" -#: ui/main-toolbar-menus.ui:32 -msgid "Mark as S_pam" -msgstr "Tandai sebagai S_pam" +#: ui/main-toolbar-menus.ui:38 +msgid "_Accounts" +msgstr "_Akun" -#: ui/main-toolbar-menus.ui:36 -msgid "Mark as not S_pam" -msgstr "Tandai sebagai bukan S_pam" +#: ui/main-toolbar-menus.ui:46 +msgid "_Keyboard Shortcuts" +msgstr "Pintasan Papan Ti_k" -#: ui/main-window-info-bar.ui:97 -msgid "" -"If the problem is serious or persists, please copy and send these details to " -"the mailing list " -"or file a new " -"bug report." -msgstr "" -"Jika masalahnya serius atau berlanjut, salin dan kirim rincian ini ke milis atau kirim laporan kutu baru." - -#: ui/main-window-info-bar.ui:113 -msgid "Details:" -msgstr "Detail:" +#: ui/main-toolbar-menus.ui:57 +msgid "_About Geary" +msgstr "Tent_ang Geary" #: ui/password-dialog.glade:74 msgid "SMTP Credentials" @@ -3023,128 +3469,6 @@ msgstr "_Ingat sandi" msgid "_Authenticate" msgstr "Otentik_asikan" -#: ui/preferences-dialog.ui:38 -msgid "Reading" -msgstr "Membaca" - -#: ui/preferences-dialog.ui:51 -msgid "_Automatically select next message" -msgstr "Otom_atis pilih pesan selanjutnya" - -#: ui/preferences-dialog.ui:70 -msgid "_Display conversation preview" -msgstr "_Tampilkan pratinjau percakapan" - -#: ui/preferences-dialog.ui:89 -msgid "Use _three pane view" -msgstr "Pakai tilikan _tiga panel" - -#: ui/preferences-dialog.ui:113 -msgid "Notifications" -msgstr "Pemberitahuan" - -#: ui/preferences-dialog.ui:126 -msgid "_Play notification sounds" -msgstr "Bunyikan suara _pemberitahuan" - -#: ui/preferences-dialog.ui:145 -msgid "Show _notifications for new mail" -msgstr "Tu_njukkan pemberitahuan bagi surat baru" - -#: ui/preferences-dialog.ui:164 -msgid "_Watch for new mail when closed" -msgstr "A_wasi surat baru ketika ditutup" - -#: ui/preferences-dialog.ui:168 -msgid "Geary will keep running after all windows are closed" -msgstr "Geary akan terus berjalan setelah semua jendela ditutup" - -#: ui/preferences-dialog.ui:195 -msgid "Preferences" -msgstr "Preferensi" - -#: ui/remove_confirm.glade:43 -msgid "" -"Are you sure you want to remove this " -"account? " -msgstr "" -"Anda yakin ingin menghapus akun ini? " - -#: ui/remove_confirm.glade:58 -msgid "" -"All email associated with this account will be removed from your computer. " -"This will not affect email on the server." -msgstr "" -"Semua surel terkait akun ini akan dihapus dari komputer Anda. Ini tidak " -"mempengaruhi surel pada server." - -#: ui/remove_confirm.glade:80 -msgid "Nickname:" -msgstr "Nama panggilan:" - -#: ui/remove_confirm.glade:94 -msgid "Email address:" -msgstr "Alamat surel:" - #: ui/upgrade_dialog.glade:60 msgid "Geary update in progress…" msgstr "Pemutakhiran Geary sedang berlangsung…" - -#~ msgid "Default attachments directory" -#~ msgstr "Direktori lampiran bawaan" - -#~ msgid "Location used when opening and saving attachments." -#~ msgstr "Lokasi yang digunakan saat membuka dan menyimpan lampiran." - -#~ msgid "Default print output directory" -#~ msgstr "Direktori keluaran cetak bawaan" - -#~ msgid "Location used when printing to a file." -#~ msgstr "Lokasi yang digunakan saat mencetak ke berkas." - -#~ msgid "Geary will run in the background and notify of new mail" -#~ msgstr "Geary akan berjalan di latar dan memberitahukan adanya surel baru" - -#~ msgid "Geary Email" -#~ msgstr "Surel Geary" - -#~ msgid "Mail Client" -#~ msgstr "Klien Surat" - -#~ msgid "Geary Mail" -#~ msgstr "Surat Geary" - -#~ msgid "_Mark as…" -#~ msgstr "_Tandai sebagai…" - -#~ msgid "Add label" -#~ msgstr "Tambah label" - -#~ msgid "_Label" -#~ msgstr "_Label" - -#~ msgid "_Move" -#~ msgstr "_Pindahkan" - -#~ msgid "Compose new message (Ctrl+N, N)" -#~ msgstr "Susun pesan baru (Ctrl+N, N)" - -#~ msgid "Reply (Ctrl+R, R)" -#~ msgstr "Balas (Ctrl+R, R)" - -#~ msgid "Reply all (Ctrl+Shift+R, Shift+R)" -#~ msgstr "Balas semua (Ctrl+Shift+R, Shift+R)" - -#~ msgid "Forward (Ctrl+L, F)" -#~ msgstr "Maju (Ctrl+L, F)" - -#~ msgid "" -#~ "Geary encountered an error while connecting to the server. Please try " -#~ "again in a few moments." -#~ msgstr "" -#~ "Geary menemui galat ketika menyambung ke server. Harap coba lagi setelah " -#~ "beberapa saat." - -#~ msgid "Try Again" -#~ msgstr "Coba Lagi" From f6e4109c6e6952eda5c985a207a534e052ef9854 Mon Sep 17 00:00:00 2001 From: James Westman Date: Fri, 3 Jan 2020 23:45:25 -0600 Subject: [PATCH 31/32] Fix close button in composer In ccb11359, the composer headerbar was set to have a close button by default. This caused the reply composer to have a close button that would close the entire window. This commit reverts that part of ccb11359. --- src/client/composer/composer-window.vala | 2 +- ui/composer-headerbar.ui | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/client/composer/composer-window.vala b/src/client/composer/composer-window.vala index 1608fbd0..4e77d8c4 100644 --- a/src/client/composer/composer-window.vala +++ b/src/client/composer/composer-window.vala @@ -42,9 +42,9 @@ public class Composer.Window : Gtk.ApplicationWindow, Container { this.composer.update_window_title(); if (application.config.desktop_environment == UNITY) { - composer.header.show_close_button = false; composer.embed_header(); } else { + composer.header.show_close_button = true; set_titlebar(this.composer.header); } diff --git a/ui/composer-headerbar.ui b/ui/composer-headerbar.ui index a088e465..930854f0 100644 --- a/ui/composer-headerbar.ui +++ b/ui/composer-headerbar.ui @@ -5,7 +5,6 @@