diff options
61 files changed, 5368 insertions, 3048 deletions
@@ -1,3 +1,91 @@ +NEW in 3.1.1 (09/05/2011) +============ + +This first release in the 3.1 development cycle is the first step that will +lead us to GNOME 3.2 in September. + +Adium theme support has been greatly improved: we can now mark unread +messages, color the nick of participants and display a preview of themes in +the preferences dialog! + +Empathy can now make the difference between normal messages and SMS ones. + +Bugs fixed: + - Fixed #443884, red-line indicating last time I saw the given MUC/IRC channel/etc. (Xavier Claessens) + - Fixed #541438, Preview of chat themes (Xavier Claessens) + - Fixed #541632, Nicks by color (Guillaume Desmottes) + - Fixed #614319, Search bar shouldn't resize the chat window (Vitaly Minko) + - Fixed #622118, Empathy should send actions verbatim if not supported by the network (Guillaume Desmottes) + - Fixed #627726, Should use Messages interface (Guillaume Desmottes) + - Fixed #636463, Display delivery reports (Danielle Madeley) + - Fixed #642087, The order of favorite rooms listed in menu items of Room menu change automatically sometimes (Chandni Verma) + - Fixed #643293, Use GtkSwitch instead of the Enabled check box (Guillaume Desmottes) + - Fixed #644085, ChatroomManager should find chats by channel not identifier (Danielle Madeley) + - Fixed #644086, Inform the user if a channel is for SMS (Danielle Madeley) + - Fixed #645586, Contact not selected when opening conversation log from conversation window (Guillaume Desmottes) + - Fixed #645930, Remove unnecessary code in empathy_auth_factory_constructed() (Stef Walter) + - Fixed #646061, Auth requiered event is not visible on the Shell (Guillaume Desmottes) + - Fixed #646084, FT dialog should have a Close button (Guillaume Desmottes) + - Fixed #646131, need translation context (Guillaume Desmottes) + - Fixed #646227, Possible overflow in persona-view:drag_data_get (Philip Withnall) + - Fixed #646681, Port send-error report to Messages interface (Danielle Madeley) + - Fixed #647056, Removing a contact causes a segfault (Philip Withnall) + - Fixed #647530, SMS support (Danielle Madeley) + - Fixed #647641, Does not display the first account when opening empathy-accounts (Guillaume Desmottes) + - Fixed #647793, Empathy doesn't disconnect when the network is disabled in network-manager (Guillaume Desmottes) + - Fixed #647904, preferences: use GtkBox instead of Gtk[V,H]Box (Cosimo Cecchi) + - Fixed #648188, Stop using time_t to store timestamps (Guillaume Desmottes) + - Fixed #648230, EmpathyLocationManager cleanup (Guillaume Desmottes) + - Fixed #648372, the select widget for importing accounts has wrong height (Guillaume Desmottes) + - Fixed #648737, Small cleanup possible in chat_window_page_switched_cb (Guillaume Desmottes) + - Fixed #648842, Notifications are delayed if contacts send messages too fast (Guillaume Desmottes) + - Fixed #648914, Favourite contacts appear in other contact list groups when offline (Guillaume Desmottes) + - Fixed #649161, Leak in main_window_flash_foreach (Guillaume Desmottes) + - Fixed #649166, New adium themes not supported (Xavier Claessens) + - Fixed #649273, empathy-chat exits even if there is disconnected chat (Guillaume Desmottes) + - Fixed #649367, Empathy is not handling /me the same way adium does (Xavier Claessens) + - Fixed #649379, Some files in libempathy-gtk use gi18n.h instead of gi18n-lib.h (Gabor Kelemen) + - Fixed #649436, HTML fallbacks for adium themes are wrong (Xavier Claessens) + - Fixed #649438, Support Conn.I.Balance (Danielle Madeley) + - Fixed #649492, Translator comment needed (Guillaume Desmottes) + - Fixed #649734, Roster instead of contact list (Guillaume Desmottes) + - Fixed #649735, Need context to translate Balance (Guillaume Desmottes) + - Fixed #647126, criticals in empathy-call + +Translations: + - Updated an Translation (Daniel Martinez) + - Updated ca Translation (Jordi Serratosa) + - Updated cs Translation (Marek Černocký) + - Updated da Translation (Kenneth Nielsen) + - Updated de Translation (Wolfgang Stöggl) + - Updated el Translation (George Stefanakis) + - Updated es Translation (Jorge González, Daniel Mustieles) + - Updated et Translation (Mattias Põldaru) + - Updated eu Translation (Inaki Larranaga Murgoitio) + - Updated fa Translation (Arash Mousavi) + - Updated gl Translation (Fran Diéguez) + - Updated gu Translation (Sweta Kothari) + - Updated he Translation (Yaron Shahrabani) + - Updated ja Translation (OKANO Takayoshi) + - Updated nb Translation (Kjartan Maraas) + - Updated nl Translation (Hannie Dumoleyn) + - Updated pl Translation (Piotr Drąg) + - Updated pt_BR Translation (Rodrigo Padula de Oliveira) + - Updated ru Translation (Leonid Kanter) + - Updated sk Translation (Pavol Klačanský) + - Updated sl Translation (Matej Urbančič) + - Updated sr@latin Translation (Branko Kokanović) + - Updated sr Translation (Branko Kokanović) + - Updated th Translation (Sira Nokyoongtong) + - Updated tr Translation (Muhammet Kara, Baris Cicek) + - Updated ug Translation (Abduxukur Abdurixit) + - Updated vi Translation (Nguyễn Thái Ngọc Duy) + +Documentation translations: + - Updated de Documentation translation (Wolfgang Stöggl, Hendrik Richter, Mario Blättermann) + - Updated es Documentation translation (Jorge González) + - Updated fr Documentation translation (Bruno Brouard) + NEW in 3.0.0 (04/04/2011) ============ diff --git a/configure.ac b/configure.ac index 91bd284eb..9e0500894 100644 --- a/configure.ac +++ b/configure.ac @@ -2,8 +2,8 @@ dnl If not 1, append datestamp to the version number m4_define(empathy_released, 0) m4_define([empathy_major_version], [3]) -m4_define([empathy_minor_version], [0]) -m4_define([empathy_micro_version], [0]) +m4_define([empathy_minor_version], [1]) +m4_define([empathy_micro_version], [1]) m4_define([empathy_nano_version], [0]) dnl Display the nano_version only if it's not '0' @@ -32,7 +32,7 @@ AC_COPYRIGHT([ # Hardp deps FOLKS_REQUIRED=0.4.0 -GLIB_REQUIRED=2.27.2 +GLIB_REQUIRED=2.28.0 GNUTLS_REQUIRED=2.8.5 GTK_REQUIRED=3.0.2 KEYRING_REQUIRED=2.26.0 @@ -40,7 +40,7 @@ GCR_REQUIRED=2.91.4 LIBCANBERRA_GTK_REQUIRED=0.25 LIBNOTIFY_REQUIRED=0.7.0 TELEPATHY_FARSIGHT_REQUIRED=0.0.14 -TELEPATHY_GLIB_REQUIRED=0.14.1 +TELEPATHY_GLIB_REQUIRED=0.14.3 TELEPATHY_LOGGER=0.2.0 # Optional deps diff --git a/data/Template.html b/data/Template.html index 708e85bdb..79224b8de 100644 --- a/data/Template.html +++ b/data/Template.html @@ -3,66 +3,215 @@ <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <base href="%@"> - <script type="text/ecmascript" defer="defer"> - - //Appending new content to the message view - function appendMessage(html) { - shouldScroll = nearBottom(); + <script type="text/javascript" defer="defer"> + // NOTE: + // Any percent signs in this file must be escaped! + // Use two escape signs (%%) to display it, this is passed through a format call! - //Remove any existing insertion point - insert = document.getElementById("insert"); - if(insert) insert.parentNode.removeChild(insert); + function appendHTML(html) { + var node = document.getElementById("Chat"); + var range = document.createRange(); + range.selectNode(node); + var documentFragment = range.createContextualFragment(html); + node.appendChild(documentFragment); + } + + // a coalesced HTML object buffers and outputs DOM objects en masse. + // saves A LOT of CSS recalculation time when loading many messages. + // (ex. a long twitter timeline) + function CoalescedHTML() { + var self = this; + this.fragment = document.createDocumentFragment(); + this.timeoutID = 0; + this.coalesceRounds = 0; + this.isCoalescing = false; + this.isConsecutive = undefined; + this.shouldScroll = undefined; + + var appendElement = function (elem) { + document.getElementById("Chat").appendChild(elem); + }; + + function outputHTML() { + var insert = document.getElementById("insert"); + if(!!insert && self.isConsecutive) { + insert.parentNode.replaceChild(self.fragment, insert); + } else { + if(insert) + insert.parentNode.removeChild(insert); + // insert the documentFragment into the live DOM + appendElement(self.fragment); + } + alignChat(self.shouldScroll); + + // reset state to empty/non-coalescing + self.shouldScroll = undefined; + self.isConsecutive = undefined; + self.isCoalescing = false; + self.coalesceRounds = 0; + } + + // creates and returns a new documentFragment, containing all content nodes + // which can be inserted as a single node. + function createHTMLNode(html) { + var range = document.createRange(); + range.selectNode(document.getElementById("Chat")); + return range.createContextualFragment(html); + } + + // removes first insert node from the internal fragment. + function rmInsertNode() { + var insert = self.fragment.querySelector("#insert"); + if(insert) + insert.parentNode.removeChild(insert); + } + + function setShouldScroll(flag) { + if(flag && undefined === self.shouldScroll) + self.shouldScroll = flag; + } + + // hook in a custom method to append new data + // to the chat. + this.setAppendElementMethod = function (func) { + if(typeof func === 'function') + appendElement = func; + } + + // (re)start the coalescing timer. + // we wait 25ms for a new message to come in. + // If we get one, restart the timer and wait another 10ms. + // If not, run outputHTML() + // We do this a maximum of 400 times, for 10s max that can be spent + // coalescing input, since this will block display. + this.coalesce = function() { + window.clearTimeout(self.timeoutID); + self.timeoutID = window.setTimeout(outputHTML, 25); + self.isCoalescing = true; + self.coalesceRounds += 1; + if(400 < self.coalesceRounds) + self.cancel(); + } + + // if we need to append content into an insertion div, + // we need to clear the buffer and cancel the timeout. + this.cancel = function() { + if(self.isCoalescing) { + window.clearTimeout(self.timeoutID); + outputHTML(); + } + } + + + // coalased analogs to the global functions + + this.append = function(html, shouldScroll) { + // if we started this fragment with a consecuative message, + // cancel and output before we continue + if(self.isConsecutive) { + self.cancel(); + } + self.isConsecutive = false; + rmInsertNode(); + var node = createHTMLNode(html); + self.fragment.appendChild(node); + + node = null; - //Append the new message to the bottom of our chat block - chat = document.getElementById("Chat"); - range = document.createRange(); - range.selectNode(chat); - documentFragment = range.createContextualFragment(html); - chat.appendChild(documentFragment); + setShouldScroll(shouldScroll); + self.coalesce(); + } - alignChat(shouldScroll); + this.appendNext = function(html, shouldScroll) { + if(undefined === self.isConsecutive) + self.isConsecutive = true; + var node = createHTMLNode(html); + var insert = self.fragment.querySelector("#insert"); + if(insert) { + insert.parentNode.replaceChild(node, insert); + } else { + self.fragment.appendChild(node); + } + node = null; + setShouldScroll(shouldScroll); + self.coalesce(); + } + + this.replaceLast = function (html, shouldScroll) { + rmInsertNode(); + var node = createHTMLNode(html); + var lastMessage = self.fragment.lastChild; + lastMessage.parentNode.replaceChild(node, lastMessage); + node = null; + setShouldScroll(shouldScroll); + } } - function appendMessageNoScroll(html) { - //Remove any existing insertion point - insert = document.getElementById("insert"); - if(insert) insert.parentNode.removeChild(insert); + var coalescedHTML; - //Append the new message to the bottom of our chat block - chat = document.getElementById("Chat"); - range = document.createRange(); - range.selectNode(chat); - documentFragment = range.createContextualFragment(html); - chat.appendChild(documentFragment); + //Appending new content to the message view + function appendMessage(html) { + var shouldScroll; + + // Only call nearBottom() if should scroll is undefined. + if(undefined === coalescedHTML.shouldScroll) { + shouldScroll = nearBottom(); + } else { + shouldScroll = coalescedHTML.shouldScroll; + } + appendMessageNoScroll(html, shouldScroll); } - function appendNextMessage(html){ - shouldScroll = nearBottom(); - - //Locate the insertion point - insert = document.getElementById("insert"); - //make new node - range = document.createRange(); - range.selectNode(insert.parentNode); - newNode = range.createContextualFragment(html); - - //swap - insert.parentNode.replaceChild(newNode,insert); - - alignChat(shouldScroll); + function appendMessageNoScroll(html, shouldScroll) { + shouldScroll = shouldScroll || false; + // always try to coalesce new, non-griuped, messages + coalescedHTML.append(html, shouldScroll) } - function appendNextMessageNoScroll(html){ - //Locate the insertion point - insert = document.getElementById("insert"); - //make new node - range = document.createRange(); - range.selectNode(insert.parentNode); - newNode = range.createContextualFragment(html); - - //swap - insert.parentNode.replaceChild(newNode,insert); + function appendNextMessage(html){ + var shouldScroll; + if(undefined === coalescedHTML.shouldScroll) { + shouldScroll = nearBottom(); + } else { + shouldScroll = coalescedHTML.shouldScroll; + } + appendNextMessageNoScroll(html, shouldScroll); } + function appendNextMessageNoScroll(html, shouldScroll){ + shouldScroll = shouldScroll || false; + // only group next messages if we're already coalescing input + coalescedHTML.appendNext(html, shouldScroll); + } + + function replaceLastMessage(html){ + var shouldScroll; + // only replace messages if we're already coalescing + if(coalescedHTML.isCoalescing){ + if(undefined === coalescedHTML.shouldScroll) { + shouldScroll = nearBottom(); + } else { + shouldScroll = coalescedHTML.shouldScroll; + } + coalescedHTML.replaceLast(html, shouldScroll); + } else { + shouldScroll = nearBottom(); + //Retrieve the current insertion point, then remove it + //This requires that there have been an insertion point... is there a better way to retrieve the last element? -evands + var insert = document.getElementById("insert"); + if(insert){ + var parentNode = insert.parentNode; + parentNode.removeChild(insert); + var lastMessage = document.getElementById("Chat").lastChild; + document.getElementById("Chat").removeChild(lastMessage); + } + + //Now append the message itself + appendHTML(html); + + alignChat(shouldScroll); + } + } + //Auto-scroll to bottom. Use nearBottom to determine if a scrollToBottom is desired. function nearBottom() { return ( document.body.scrollTop >= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) ); @@ -73,49 +222,74 @@ //Dynamically exchange the active stylesheet function setStylesheet( id, url ) { - code = "<style id=\"" + id + "\" type=\"text/css\" media=\"screen,print\">"; - if( url.length ) code += "@import url( \"" + url + "\" );"; + var code = "<style id=\"" + id + "\" type=\"text/css\" media=\"screen,print\">"; + if( url.length ) + code += "@import url( \"" + url + "\" );"; code += "</style>"; - range = document.createRange(); - head = document.getElementsByTagName( "head" ).item(0); + var range = document.createRange(); + var head = document.getElementsByTagName( "head" ).item(0); range.selectNode( head ); - documentFragment = range.createContextualFragment( code ); + var documentFragment = range.createContextualFragment( code ); head.removeChild( document.getElementById( id ) ); head.appendChild( documentFragment ); } + + /* Converts emoticon images to textual emoticons; all emoticons in message if alt is held */ + document.onclick = function imageCheck() { + var node = event.target; + if (node.tagName.toLowerCase() != 'img') + return; + + imageSwap(node, false); + } - //Swap an image with its alt-tag text on click, or expand/unexpand an attached image - document.onclick = imageCheck; - function imageCheck() { - node = event.target; - if(node.tagName == 'IMG' && !client.zoomImage(node) && node.alt) { - a = document.createElement('a'); - a.setAttribute('onclick', 'imageSwap(this)'); - a.setAttribute('src', node.getAttribute('src')); - a.className = node.className; - text = document.createTextNode(node.alt); - a.appendChild(text); - node.parentNode.replaceChild(a, node); + /* Converts textual emoticons to images if textToImagesFlag is true, otherwise vice versa */ + function imageSwap(node, textToImagesFlag) { + var shouldScroll = nearBottom(); + + var images = [node]; + if (event.altKey) { + while (node.id != "Chat" && node.parentNode.id != "Chat") + node = node.parentNode; + images = node.querySelectorAll(textToImagesFlag ? "a" : "img"); + } + + for (var i = 0; i < images.length; i++) { + textToImagesFlag ? textToImage(images[i]) : imageToText(images[i]); } + + alignChat(shouldScroll); } - function imageSwap(node) { - shouldScroll = nearBottom(); - + function textToImage(node) { + if (!node.getAttribute("isEmoticon")) + return; //Swap the image/text - img = document.createElement('img'); + var img = document.createElement('img'); img.setAttribute('src', node.getAttribute('src')); img.setAttribute('alt', node.firstChild.nodeValue); img.className = node.className; node.parentNode.replaceChild(img, node); - - alignChat(shouldScroll); + } + + function imageToText(node) + { + if (client.zoomImage(node) || !node.alt) + return; + var a = document.createElement('a'); + a.setAttribute('onclick', 'imageSwap(this, true)'); + a.setAttribute('src', node.getAttribute('src')); + a.setAttribute('isEmoticon', true); + a.className = node.className; + var text = document.createTextNode(node.alt); + a.appendChild(text); + node.parentNode.replaceChild(a, node); } //Align our chat to the bottom of the window. If true is passed, view will also be scrolled down function alignChat(shouldScroll) { var windowHeight = window.innerHeight; - + if (windowHeight > 0) { var contentElement = document.getElementById('Chat'); var contentHeight = contentElement.offsetHeight; @@ -126,31 +300,41 @@ contentElement.style.position = 'static'; } } - + if (shouldScroll) scrollToBottom(); } - - function windowDidResize(){ + + window.onresize = function windowDidResize(){ alignChat(true/*nearBottom()*/); //nearBottom buggy with inactive tabs } - window.onresize = windowDidResize; + function initStyle() { + alignChat(true); + if(!coalescedHTML) + coalescedHTML = new CoalescedHTML(); + } </script> - + + <style type="text/css"> + .actionMessageUserName { display:none; } + .actionMessageBody:before { content:"*"; } + .actionMessageBody:after { content:"*"; } + * { word-wrap:break-word; text-rendering: optimizelegibility; } + img.scaledToFitImage { height: auto; max-width: 100%%; } + </style> + <!-- This style is shared by all variants. !--> - <style id="baseStyle" type="text/css" media="screen,print"> - %@ - *{ word-wrap:break-word; } - img.scaledToFitImage { height:auto; width:100%; } + <style id="baseStyle" type="text/css" media="screen,print"> + %@ </style> - + <!-- Although we call this mainStyle for legacy reasons, it's actually the variant style !--> - <style id="mainStyle" type="text/css" media="screen,print"> + <style id="mainStyle" type="text/css" media="screen,print"> @import url( "%@" ); </style> </head> -<body onload="alignChat(true);" style="==bodyBackground=="> +<body onload="initStyle();" style="==bodyBackground=="> %@ <div id="Chat"> </div> diff --git a/data/org.gnome.Empathy.gschema.xml.in b/data/org.gnome.Empathy.gschema.xml.in index 1c833ffcb..799cc7294 100644 --- a/data/org.gnome.Empathy.gschema.xml.in +++ b/data/org.gnome.Empathy.gschema.xml.in @@ -49,6 +49,11 @@ <_summary>Show protocols</_summary> <_description>Whether to show protocols for contacts in the contact list.</_description> </key> + <key name="show-balance-in-roster" type="b"> + <default>false</default> + <_summary>Show Balance in contact list</_summary> + <_description>Whether to show account balances in the contact list.</_description> + </key> <key name="compact-contact-list" type="b"> <default>false</default> <_summary>Compact contact list</_summary> diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c index 6bbfc9a46..dfa9ecd35 100644 --- a/libempathy-gtk/empathy-account-widget.c +++ b/libempathy-gtk/empathy-account-widget.c @@ -2210,9 +2210,6 @@ do_dispose (GObject *obj) if (priv->settings != NULL) { - TpAccount *account; - account = empathy_account_settings_get_account (priv->settings); - g_object_unref (priv->settings); priv->settings = NULL; } diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index b2d091518..183b49bf9 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -145,6 +145,7 @@ struct _EmpathyChatPriv { * notified again about the already notified pending messages when the * messages in tab will be properly shown */ gboolean retrieving_backlogs; + gboolean sms_channel; }; typedef struct { @@ -170,6 +171,8 @@ enum { PROP_SUBJECT, PROP_REMOTE_CONTACT, PROP_SHOW_CONTACTS, + PROP_SMS_CHANNEL, + PROP_N_MESSAGES_SENDING, }; static guint signals[LAST_SIGNAL] = { 0 }; @@ -195,7 +198,7 @@ chat_get_property (GObject *object, g_value_set_object (value, priv->account); break; case PROP_NAME: - g_value_set_string (value, empathy_chat_get_name (chat)); + g_value_take_string (value, empathy_chat_dup_name (chat)); break; case PROP_ID: g_value_set_string (value, priv->id); @@ -209,6 +212,13 @@ chat_get_property (GObject *object, case PROP_SHOW_CONTACTS: g_value_set_boolean (value, priv->show_contacts); break; + case PROP_SMS_CHANNEL: + g_value_set_boolean (value, priv->sms_channel); + break; + case PROP_N_MESSAGES_SENDING: + g_value_set_uint (value, + empathy_chat_get_n_messages_sending (chat)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; @@ -249,8 +259,14 @@ account_reconnected (EmpathyChat *chat, * https://bugs.freedesktop.org/show_bug.cgi?id=13422 */ switch (priv->handle_type) { case TP_HANDLE_TYPE_CONTACT: - empathy_chat_with_contact_id ( - account, priv->id, TP_USER_ACTION_TIME_NOT_USER_ACTION); + if (priv->sms_channel) + empathy_sms_contact_id ( + account, priv->id, + TP_USER_ACTION_TIME_NOT_USER_ACTION); + else + empathy_chat_with_contact_id ( + account, priv->id, + TP_USER_ACTION_TIME_NOT_USER_ACTION); break; case TP_HANDLE_TYPE_ROOM: empathy_join_muc (account, priv->id, @@ -735,7 +751,7 @@ empathy_chat_join_muc (EmpathyChat *chat, EmpathyChatPriv *priv = GET_PRIV (chat); empathy_join_muc (priv->account, room, - gtk_get_current_event_time ()); + empathy_get_current_action_time ()); } static void @@ -783,7 +799,7 @@ chat_command_msg_internal (EmpathyChat *chat, NULL); req = tp_account_channel_request_new (priv->account, request, - tp_user_action_time_from_x11 (gtk_get_current_event_time ())); + empathy_get_current_action_time ()); /* FIXME: We should probably search in members alias. But this * is enough for IRC */ @@ -1244,31 +1260,43 @@ static void chat_send_error_cb (EmpathyTpChat *tp_chat, const gchar *message_body, TpChannelTextSendError error_code, + const gchar *dbus_error, EmpathyChat *chat) { - const gchar *error; + const gchar *error = NULL; gchar *str; - switch (error_code) { - case TP_CHANNEL_TEXT_SEND_ERROR_OFFLINE: - error = _("offline"); - break; - case TP_CHANNEL_TEXT_SEND_ERROR_INVALID_CONTACT: - error = _("invalid contact"); - break; - case TP_CHANNEL_TEXT_SEND_ERROR_PERMISSION_DENIED: - error = _("permission denied"); - break; - case TP_CHANNEL_TEXT_SEND_ERROR_TOO_LONG: - error = _("too long message"); - break; - case TP_CHANNEL_TEXT_SEND_ERROR_NOT_IMPLEMENTED: - error = _("not implemented"); - break; - case TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN: - default: - error = _("unknown"); - break; + if (!tp_strdiff (dbus_error, TP_ERROR_STR_INSUFFICIENT_BALANCE)) { + /* translators: error used when user doesn't have enough credit on his + * account to send the message. */ + error = _("insufficient balance to send message"); + } else if (!tp_strdiff (dbus_error, TP_ERROR_STR_NOT_CAPABLE)) { + error = _("not capable"); + } + + if (error == NULL) { + /* if we didn't find a dbus-error, try the old error */ + switch (error_code) { + case TP_CHANNEL_TEXT_SEND_ERROR_OFFLINE: + error = _("offline"); + break; + case TP_CHANNEL_TEXT_SEND_ERROR_INVALID_CONTACT: + error = _("invalid contact"); + break; + case TP_CHANNEL_TEXT_SEND_ERROR_PERMISSION_DENIED: + error = _("permission denied"); + break; + case TP_CHANNEL_TEXT_SEND_ERROR_TOO_LONG: + error = _("too long message"); + break; + case TP_CHANNEL_TEXT_SEND_ERROR_NOT_IMPLEMENTED: + error = _("not implemented"); + break; + case TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN: + default: + error = _("unknown"); + break; + } } if (message_body != NULL) { @@ -2936,6 +2964,22 @@ empathy_chat_class_init (EmpathyChatClass *klass) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (object_class, + PROP_SMS_CHANNEL, + g_param_spec_boolean ("sms-channel", + "SMS Channel", + "TRUE if this channel is for sending SMSes", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (object_class, + PROP_N_MESSAGES_SENDING, + g_param_spec_uint ("n-messages-sending", + "Num Messages Sending", + "The number of messages being sent", + 0, G_MAXUINT, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + signals[COMPOSING] = g_signal_new ("composing", G_OBJECT_CLASS_TYPE (object_class), @@ -3461,6 +3505,21 @@ chat_password_needed_changed_cb (EmpathyChat *self) } } +static void +chat_sms_channel_changed_cb (EmpathyChat *self) +{ + EmpathyChatPriv *priv = GET_PRIV (self); + + priv->sms_channel = empathy_tp_chat_is_sms_channel (priv->tp_chat); + g_object_notify (G_OBJECT (self), "sms-channel"); +} + +static void +chat_n_messages_sending_changed_cb (EmpathyChat *self) +{ + g_object_notify (G_OBJECT (self), "n-messages-sending"); +} + void empathy_chat_set_tp_chat (EmpathyChat *chat, EmpathyTpChat *tp_chat) @@ -3510,6 +3569,12 @@ empathy_chat_set_tp_chat (EmpathyChat *chat, g_signal_connect_swapped (tp_chat, "notify::password-needed", G_CALLBACK (chat_password_needed_changed_cb), chat); + g_signal_connect_swapped (tp_chat, "notify::sms-channel", + G_CALLBACK (chat_sms_channel_changed_cb), + chat); + g_signal_connect_swapped (tp_chat, "notify::n-messages-sending", + G_CALLBACK (chat_n_messages_sending_changed_cb), + chat); /* Get initial value of properties */ properties = empathy_tp_chat_get_properties (priv->tp_chat); @@ -3530,6 +3595,7 @@ empathy_chat_set_tp_chat (EmpathyChat *chat, } } + chat_sms_channel_changed_cb (chat); chat_remote_contact_changed_cb (chat); if (chat->input_text_view) { @@ -3572,8 +3638,8 @@ empathy_chat_get_id (EmpathyChat *chat) return priv->id; } -const gchar * -empathy_chat_get_name (EmpathyChat *chat) +gchar * +empathy_chat_dup_name (EmpathyChat *chat) { EmpathyChatPriv *priv = GET_PRIV (chat); const gchar *ret; @@ -3581,6 +3647,7 @@ empathy_chat_get_name (EmpathyChat *chat) g_return_val_if_fail (EMPATHY_IS_CHAT (chat), NULL); ret = priv->name; + if (!ret && priv->remote_contact) { ret = empathy_contact_get_alias (priv->remote_contact); } @@ -3588,7 +3655,15 @@ empathy_chat_get_name (EmpathyChat *chat) if (!ret) ret = priv->id; - return ret ? ret : _("Conversation"); + if (!ret) + ret = _("Conversation"); + + if (priv->sms_channel) + /* Translators: this string is a something like + * "Escher Cat (SMS)" */ + return g_strdup_printf (_("%s (SMS)"), ret); + else + return g_strdup (ret); } const gchar * @@ -3814,3 +3889,35 @@ empathy_chat_is_composing (EmpathyChat *chat) { return chat->priv->compositors != NULL; } + +gboolean +empathy_chat_is_sms_channel (EmpathyChat *self) +{ + EmpathyChatPriv *priv = GET_PRIV (self); + + g_return_val_if_fail (EMPATHY_IS_CHAT (self), 0); + + return priv->sms_channel; +} + +guint +empathy_chat_get_n_messages_sending (EmpathyChat *self) +{ + EmpathyChatPriv *priv; + + g_return_val_if_fail (EMPATHY_IS_CHAT (self), 0); + + priv = GET_PRIV (self); + + if (priv->tp_chat == NULL) { + return 0; + } else { + guint n_messages; + + g_object_get (priv->tp_chat, + "n-messages-sending", &n_messages, + NULL); + + return n_messages; + } +} diff --git a/libempathy-gtk/empathy-chat.h b/libempathy-gtk/empathy-chat.h index 6ec957536..47892d6c9 100644 --- a/libempathy-gtk/empathy-chat.h +++ b/libempathy-gtk/empathy-chat.h @@ -69,7 +69,7 @@ void empathy_chat_set_tp_chat (EmpathyChat *chat, EmpathyTpChat *tp_chat); TpAccount * empathy_chat_get_account (EmpathyChat *chat); const gchar * empathy_chat_get_id (EmpathyChat *chat); -const gchar * empathy_chat_get_name (EmpathyChat *chat); +gchar * empathy_chat_dup_name (EmpathyChat *chat); const gchar * empathy_chat_get_subject (EmpathyChat *chat); EmpathyContact * empathy_chat_get_remote_contact (EmpathyChat *chat); GtkWidget * empathy_chat_get_contact_menu (EmpathyChat *chat); @@ -93,6 +93,10 @@ guint empathy_chat_get_nb_unread_messages (EmpathyChat *chat); void empathy_chat_messages_read (EmpathyChat *self); gboolean empathy_chat_is_composing (EmpathyChat *chat); + +gboolean empathy_chat_is_sms_channel (EmpathyChat *self); +guint empathy_chat_get_n_messages_sending (EmpathyChat *self); + G_END_DECLS #endif /* __EMPATHY_CHAT_H__ */ diff --git a/libempathy-gtk/empathy-contact-blocking-dialog.c b/libempathy-gtk/empathy-contact-blocking-dialog.c index a46820c5d..08757545f 100644 --- a/libempathy-gtk/empathy-contact-blocking-dialog.c +++ b/libempathy-gtk/empathy-contact-blocking-dialog.c @@ -21,8 +21,9 @@ * * Authors: Danielle Madeley <danielle.madeley@collabora.co.uk> */ +#include "config.h" -#include <glib/gi18n.h> +#include <glib/gi18n-lib.h> #include <libempathy/empathy-utils.h> diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c index dace4f909..03839abbe 100644 --- a/libempathy-gtk/empathy-contact-list-view.c +++ b/libempathy-gtk/empathy-contact-list-view.c @@ -903,7 +903,7 @@ contact_list_view_row_activated (GtkTreeView *view, if (contact) { DEBUG ("Starting a chat"); empathy_chat_with_contact (contact, - gtk_get_current_event_time ()); + empathy_get_current_action_time ()); g_object_unref (contact); } } diff --git a/libempathy-gtk/empathy-contact-menu.c b/libempathy-gtk/empathy-contact-menu.c index 15f47b206..ecdbee1ba 100644 --- a/libempathy-gtk/empathy-contact-menu.c +++ b/libempathy-gtk/empathy-contact-menu.c @@ -314,7 +314,7 @@ static void empathy_contact_chat_menu_item_activated (GtkMenuItem *item, EmpathyContact *contact) { - empathy_chat_with_contact (contact, gtk_get_current_event_time ()); + empathy_chat_with_contact (contact, empathy_get_current_action_time ()); } GtkWidget * @@ -343,9 +343,8 @@ static void empathy_contact_audio_call_menu_item_activated (GtkMenuItem *item, EmpathyContact *contact) { - empathy_call_new_with_streams (contact, TRUE, FALSE, - gtk_get_current_event_time ()); + empathy_get_current_action_time ()); } GtkWidget * @@ -376,7 +375,7 @@ empathy_contact_video_call_menu_item_activated (GtkMenuItem *item, EmpathyContact *contact) { empathy_call_new_with_streams (contact, TRUE, TRUE, - gtk_get_current_event_time ()); + empathy_get_current_action_time ()); } GtkWidget * diff --git a/libempathy-gtk/empathy-contact-search-dialog.c b/libempathy-gtk/empathy-contact-search-dialog.c index aeb0767d3..a265fa6b2 100644 --- a/libempathy-gtk/empathy-contact-search-dialog.c +++ b/libempathy-gtk/empathy-contact-search-dialog.c @@ -22,8 +22,9 @@ * Danielle Madeley <danielle.madeley@collabora.co.uk> * Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk> */ +#include "config.h" -#include <glib/gi18n.h> +#include <glib/gi18n-lib.h> #include <telepathy-glib/telepathy-glib.h> diff --git a/libempathy-gtk/empathy-contact-selector-dialog.c b/libempathy-gtk/empathy-contact-selector-dialog.c index d5e533aeb..a4747b488 100644 --- a/libempathy-gtk/empathy-contact-selector-dialog.c +++ b/libempathy-gtk/empathy-contact-selector-dialog.c @@ -66,7 +66,8 @@ struct _EmpathyContactSelectorDialogPriv { enum { PROP_0, PROP_SHOW_ACCOUNT_CHOOSER, - PROP_FILTER_ACCOUNT + PROP_FILTER_ACCOUNT, + PROP_SELECTED_ACCOUNT }; enum { @@ -151,6 +152,8 @@ contact_selector_dialog_account_changed_cb (GtkWidget *widget, g_object_unref (contact); members = g_list_delete_link (members, members); } + + g_object_notify (G_OBJECT (dialog), "selected-account"); } static gboolean @@ -375,6 +378,7 @@ empathy_contact_selector_dialog_get_property (GObject *self, GParamSpec *pspec) { EmpathyContactSelectorDialog *dialog = EMPATHY_CONTACT_SELECTOR_DIALOG (self); + EmpathyContactSelectorDialogPriv *priv = GET_PRIV (dialog); switch (prop_id) { @@ -388,6 +392,11 @@ empathy_contact_selector_dialog_get_property (GObject *self, empathy_contact_selector_dialog_get_filter_account (dialog)); break; + case PROP_SELECTED_ACCOUNT: + g_value_set_object (value, empathy_account_chooser_get_account ( + EMPATHY_ACCOUNT_CHOOSER (priv->account_chooser))); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (self, prop_id, pspec); break; @@ -401,6 +410,7 @@ empathy_contact_selector_dialog_set_property (GObject *self, GParamSpec *pspec) { EmpathyContactSelectorDialog *dialog = EMPATHY_CONTACT_SELECTOR_DIALOG (self); + EmpathyContactSelectorDialogPriv *priv = GET_PRIV (dialog); switch (prop_id) { @@ -414,6 +424,12 @@ empathy_contact_selector_dialog_set_property (GObject *self, g_value_get_object (value)); break; + case PROP_SELECTED_ACCOUNT: + empathy_account_chooser_set_account ( + EMPATHY_ACCOUNT_CHOOSER (priv->account_chooser), + g_value_get_object (value)); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (self, prop_id, pspec); break; @@ -490,6 +506,13 @@ empathy_contact_selector_dialog_class_init ( "account are displayed", TP_TYPE_ACCOUNT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (object_class, PROP_SELECTED_ACCOUNT, + g_param_spec_object ("selected-account", + "Selected Account", + "Current account selected in the account-chooser", + TP_TYPE_ACCOUNT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } const gchar * diff --git a/libempathy-gtk/empathy-contact-selector.c b/libempathy-gtk/empathy-contact-selector.c index c70d2575a..a77ed43e2 100644 --- a/libempathy-gtk/empathy-contact-selector.c +++ b/libempathy-gtk/empathy-contact-selector.c @@ -22,7 +22,7 @@ #include "config.h" -#include <glib/gi18n.h> +#include <glib/gi18n-lib.h> #include <gtk/gtk.h> #include <libempathy/empathy-contact.h> diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c index acf206ad3..c4e3748b4 100644 --- a/libempathy-gtk/empathy-contact-widget.c +++ b/libempathy-gtk/empathy-contact-widget.c @@ -818,8 +818,10 @@ contact_widget_location_update (EmpathyContactWidget *information) { GHashTable *location; GValue *value; +#ifdef HAVE_LIBCHAMPLAIN gdouble lat = 0.0, lon = 0.0; gboolean has_position = TRUE; +#endif GtkWidget *label; guint row = 0; static const gchar* ordered_geolocation_keys[] = { @@ -853,18 +855,6 @@ contact_widget_location_update (EmpathyContactWidget *information) return; } - value = g_hash_table_lookup (location, EMPATHY_LOCATION_LAT); - if (value == NULL) - has_position = FALSE; - else - lat = g_value_get_double (value); - - value = g_hash_table_lookup (location, EMPATHY_LOCATION_LON); - if (value == NULL) - has_position = FALSE; - else - lon = g_value_get_double (value); - value = g_hash_table_lookup (location, EMPATHY_LOCATION_TIMESTAMP); if (value == NULL) { diff --git a/libempathy-gtk/empathy-images.h b/libempathy-gtk/empathy-images.h index 2c40b2ae7..86f1db641 100644 --- a/libempathy-gtk/empathy-images.h +++ b/libempathy-gtk/empathy-images.h @@ -40,6 +40,7 @@ G_BEGIN_DECLS #define EMPATHY_IMAGE_TYPING "user-typing" #define EMPATHY_IMAGE_CONTACT_INFORMATION "gtk-info" #define EMPATHY_IMAGE_GROUP_MESSAGE "system-users" +#define EMPATHY_IMAGE_SMS "stock_cell-phone" #define EMPATHY_IMAGE_VOIP "audio-input-microphone" #define EMPATHY_IMAGE_VIDEO_CALL "camera-web" #define EMPATHY_IMAGE_LOG "document-open-recent" diff --git a/libempathy-gtk/empathy-individual-menu.c b/libempathy-gtk/empathy-individual-menu.c index 3e404c39f..4a0b45cab 100644 --- a/libempathy-gtk/empathy-individual-menu.c +++ b/libempathy-gtk/empathy-individual-menu.c @@ -149,6 +149,14 @@ individual_menu_add_personas (GtkMenuShell *menu, gtk_widget_show (action); } + /* SMS */ + if (features & EMPATHY_INDIVIDUAL_FEATURE_SMS) + { + action = empathy_individual_sms_menu_item_new (NULL, contact); + gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action); + gtk_widget_show (action); + } + if (features & EMPATHY_INDIVIDUAL_FEATURE_CALL) { /* Audio Call */ @@ -238,6 +246,17 @@ constructed (GObject *object) } } + /* SMS */ + if (features & EMPATHY_INDIVIDUAL_FEATURE_SMS) + { + item = empathy_individual_sms_menu_item_new (individual, NULL); + if (item != NULL) + { + gtk_menu_shell_append (shell, item); + gtk_widget_show (item); + } + } + if (features & EMPATHY_INDIVIDUAL_FEATURE_CALL) { /* Audio Call */ @@ -499,7 +518,7 @@ empathy_individual_chat_menu_item_activated (GtkMenuItem *item, { g_return_if_fail (EMPATHY_IS_CONTACT (contact)); - empathy_chat_with_contact (contact, gtk_get_current_event_time ()); + empathy_chat_with_contact (contact, empathy_get_current_action_time ()); } GtkWidget * @@ -537,13 +556,59 @@ empathy_individual_chat_menu_item_new (FolksIndividual *individual, } static void +empathy_individual_sms_menu_item_activated (GtkMenuItem *item, + EmpathyContact *contact) +{ + g_return_if_fail (EMPATHY_IS_CONTACT (contact)); + + empathy_sms_contact_id ( + empathy_contact_get_account (contact), + empathy_contact_get_id (contact), + empathy_get_current_action_time ()); +} + +GtkWidget * +empathy_individual_sms_menu_item_new (FolksIndividual *individual, + EmpathyContact *contact) +{ + GtkWidget *item; + GtkWidget *image; + + g_return_val_if_fail ((FOLKS_IS_INDIVIDUAL (individual) && + empathy_folks_individual_contains_contact (individual)) || + EMPATHY_IS_CONTACT (contact), + NULL); + + item = gtk_image_menu_item_new_with_mnemonic (_("_SMS")); + image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_SMS, + GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); + gtk_widget_show (image); + + if (contact != NULL) + { + menu_item_set_contact (item, contact, + G_CALLBACK (empathy_individual_sms_menu_item_activated), + EMPATHY_ACTION_SMS); + } + else + { + menu_item_set_first_contact (item, individual, + G_CALLBACK (empathy_individual_sms_menu_item_activated), + EMPATHY_ACTION_SMS); + } + + return item; +} + +static void empathy_individual_audio_call_menu_item_activated (GtkMenuItem *item, EmpathyContact *contact) { g_return_if_fail (EMPATHY_IS_CONTACT (contact)); empathy_call_new_with_streams (contact, TRUE, FALSE, - gtk_get_current_event_time ()); + empathy_get_current_action_time ()); } GtkWidget * @@ -585,7 +650,7 @@ empathy_individual_video_call_menu_item_activated (GtkMenuItem *item, g_return_if_fail (EMPATHY_IS_CONTACT (contact)); empathy_call_new_with_streams (contact, TRUE, TRUE, - gtk_get_current_event_time ()); + empathy_get_current_action_time ()); } GtkWidget * diff --git a/libempathy-gtk/empathy-individual-menu.h b/libempathy-gtk/empathy-individual-menu.h index 5b3d220df..c2841ad6d 100644 --- a/libempathy-gtk/empathy-individual-menu.h +++ b/libempathy-gtk/empathy-individual-menu.h @@ -36,7 +36,8 @@ typedef enum { EMPATHY_INDIVIDUAL_FEATURE_INFO = 1 << 4, EMPATHY_INDIVIDUAL_FEATURE_FAVOURITE = 1 << 5, EMPATHY_INDIVIDUAL_FEATURE_LINK = 1 << 6, - EMPATHY_INDIVIDUAL_FEATURE_ALL = (1 << 7) - 1, + EMPATHY_INDIVIDUAL_FEATURE_SMS = 1 << 7, + EMPATHY_INDIVIDUAL_FEATURE_ALL = (1 << 8) - 1, } EmpathyIndividualFeatureFlags; #define EMPATHY_TYPE_INDIVIDUAL_MENU (empathy_individual_menu_get_type ()) @@ -69,6 +70,8 @@ GtkWidget * empathy_individual_menu_new (FolksIndividual *individual, EmpathyIndividualFeatureFlags features); GtkWidget * empathy_individual_chat_menu_item_new (FolksIndividual *individual, EmpathyContact *contact); +GtkWidget * empathy_individual_sms_menu_item_new (FolksIndividual *individual, + EmpathyContact *contact); GtkWidget * empathy_individual_audio_call_menu_item_new ( FolksIndividual *individual, EmpathyContact *contact); diff --git a/libempathy-gtk/empathy-individual-store.c b/libempathy-gtk/empathy-individual-store.c index 735e2db9d..b550245dc 100644 --- a/libempathy-gtk/empathy-individual-store.c +++ b/libempathy-gtk/empathy-individual-store.c @@ -1921,7 +1921,7 @@ individual_store_get_individual_status_icon_with_icon_name ( FolksIndividual *individual, const gchar *status_icon_name) { - GdkPixbuf *pixbuf_status = NULL; + GdkPixbuf *pixbuf_status; EmpathyIndividualStorePriv *priv; const gchar *protocol_name = NULL; gchar *icon_name = NULL; @@ -1953,13 +1953,18 @@ individual_store_get_individual_status_icon_with_icon_name ( { icon_name = g_strdup_printf ("%s", status_icon_name); } + + pixbuf_status = g_hash_table_lookup (priv->status_icons, icon_name); + if (pixbuf_status == NULL) { pixbuf_status = empathy_pixbuf_contact_status_icon_with_icon_name (contact, status_icon_name, show_protocols_here); + if (pixbuf_status != NULL) { + /* pass the reference to the hash table */ g_hash_table_insert (priv->status_icons, g_strdup (icon_name), pixbuf_status); } diff --git a/libempathy-gtk/empathy-individual-view.c b/libempathy-gtk/empathy-individual-view.c index cc9d49e86..fcbc93fa4 100644 --- a/libempathy-gtk/empathy-individual-view.c +++ b/libempathy-gtk/empathy-individual-view.c @@ -1689,7 +1689,9 @@ static gboolean individual_view_is_visible_individual (EmpathyIndividualView *self, FolksIndividual *individual, gboolean is_online, - gboolean is_searching) + gboolean is_searching, + const gchar *group, + gboolean is_fake_group) { EmpathyIndividualViewPriv *priv = GET_PRIV (self); EmpathyLiveSearch *live = EMPATHY_LIVE_SEARCH (priv->search_widget); @@ -1721,8 +1723,14 @@ individual_view_is_visible_individual (EmpathyIndividualView *self, is_favorite = folks_favourite_details_get_is_favourite ( FOLKS_FAVOURITE_DETAILS (individual)); - if (is_searching == FALSE) - return (priv->show_offline || is_online || is_favorite); + if (is_searching == FALSE) { + if (is_favorite && is_fake_group && + !tp_strdiff (group, EMPATHY_INDIVIDUAL_STORE_FAVORITE)) + /* Always display favorite contacts in the favorite group */ + return TRUE; + + return (priv->show_offline || is_online); + } /* check alias name */ str = folks_alias_details_get_alias (FOLKS_ALIAS_DETAILS (individual)); @@ -1757,6 +1765,28 @@ individual_view_is_visible_individual (EmpathyIndividualView *self, return FALSE; } +static gchar * +get_group (GtkTreeModel *model, + GtkTreeIter *iter, + gboolean *is_fake) +{ + GtkTreeIter parent_iter; + gchar *name = NULL; + + *is_fake = FALSE; + + if (!gtk_tree_model_iter_parent (model, &parent_iter, iter)) + return NULL; + + gtk_tree_model_get (model, &parent_iter, + EMPATHY_INDIVIDUAL_STORE_COL_NAME, &name, + EMPATHY_INDIVIDUAL_STORE_COL_IS_FAKE_GROUP, is_fake, + -1); + + return name; +} + + static gboolean individual_view_filter_visible_func (GtkTreeModel *model, GtkTreeIter *iter, @@ -1783,10 +1813,16 @@ individual_view_filter_visible_func (GtkTreeModel *model, if (individual != NULL) { + gchar *group; + gboolean is_fake_group; + + group = get_group (model, iter, &is_fake_group); + visible = individual_view_is_visible_individual (self, individual, - is_online, is_searching); + is_online, is_searching, group, is_fake_group); g_object_unref (individual); + g_free (group); /* FIXME: Work around bgo#626552/bgo#621076 */ if (visible == TRUE) @@ -1809,6 +1845,9 @@ individual_view_filter_visible_func (GtkTreeModel *model, for (valid = gtk_tree_model_iter_children (model, &child_iter, iter); valid; valid = gtk_tree_model_iter_next (model, &child_iter)) { + gchar *group; + gboolean is_fake_group; + gtk_tree_model_get (model, &child_iter, EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL, &individual, EMPATHY_INDIVIDUAL_STORE_COL_IS_ONLINE, &is_online, @@ -1817,9 +1856,13 @@ individual_view_filter_visible_func (GtkTreeModel *model, if (individual == NULL) continue; + group = get_group (model, &child_iter, &is_fake_group); + visible = individual_view_is_visible_individual (self, individual, - is_online, is_searching); + is_online, is_searching, group, is_fake_group); + g_object_unref (individual); + g_free (group); /* show group if it has at least one visible contact in it */ if (visible == TRUE) diff --git a/libempathy-gtk/empathy-location-manager.c b/libempathy-gtk/empathy-location-manager.c index 8184bc043..03b97d03d 100644 --- a/libempathy-gtk/empathy-location-manager.c +++ b/libempathy-gtk/empathy-location-manager.c @@ -24,7 +24,7 @@ #include <string.h> #include <time.h> -#include <glib/gi18n.h> +#include <glib/gi18n-lib.h> #include <telepathy-glib/account-manager.h> #include <telepathy-glib/util.h> diff --git a/libempathy-gtk/empathy-new-call-dialog.c b/libempathy-gtk/empathy-new-call-dialog.c index fbff2770e..86430cd24 100644 --- a/libempathy-gtk/empathy-new-call-dialog.c +++ b/libempathy-gtk/empathy-new-call-dialog.c @@ -134,7 +134,8 @@ empathy_new_call_dialog_response (GtkDialog *dialog, int response_id) * we return from this function. */ video = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->check_video)); - call_contact (account, contact_id, video, gtk_get_current_event_time ()); + call_contact (account, contact_id, video, + empathy_get_current_action_time ()); out: gtk_widget_destroy (GTK_WIDGET (dialog)); diff --git a/libempathy-gtk/empathy-new-message-dialog.c b/libempathy-gtk/empathy-new-message-dialog.c index b9edb93e7..f3186ccf9 100644 --- a/libempathy-gtk/empathy-new-message-dialog.c +++ b/libempathy-gtk/empathy-new-message-dialog.c @@ -62,21 +62,40 @@ G_DEFINE_TYPE(EmpathyNewMessageDialog, empathy_new_message_dialog, * to be started with any contact on any enabled account. */ +enum +{ + EMP_NEW_MESSAGE_TEXT, + EMP_NEW_MESSAGE_SMS, +}; + static void empathy_new_message_dialog_response (GtkDialog *dialog, int response_id) { TpAccount *account; const gchar *contact_id; - if (response_id != GTK_RESPONSE_ACCEPT) goto out; + if (response_id < EMP_NEW_MESSAGE_TEXT) goto out; contact_id = empathy_contact_selector_dialog_get_selected ( EMPATHY_CONTACT_SELECTOR_DIALOG (dialog), NULL, &account); if (EMP_STR_EMPTY (contact_id) || account == NULL) goto out; - empathy_chat_with_contact_id (account, contact_id, - gtk_get_current_event_time ()); + switch (response_id) + { + case EMP_NEW_MESSAGE_TEXT: + empathy_chat_with_contact_id (account, contact_id, + empathy_get_current_action_time ()); + break; + + case EMP_NEW_MESSAGE_SMS: + empathy_sms_contact_id (account, contact_id, + empathy_get_current_action_time ()); + break; + + default: + g_warn_if_reached (); + } out: gtk_widget_destroy (GTK_WIDGET (dialog)); @@ -135,6 +154,63 @@ empathy_new_message_account_filter (EmpathyContactSelectorDialog *dialog, tp_proxy_prepare_async (connection, features, conn_prepared_cb, cb_data); } +static void +empathy_new_message_dialog_update_sms_button_sensitivity (GtkWidget *widget, + GParamSpec *pspec, + GtkWidget *button) +{ + GtkWidget *self = gtk_widget_get_toplevel (widget); + EmpathyContactSelectorDialog *dialog; + TpConnection *conn; + GPtrArray *rccs; + gboolean sensitive = FALSE; + guint i; + + g_return_if_fail (EMPATHY_IS_NEW_MESSAGE_DIALOG (self)); + + dialog = EMPATHY_CONTACT_SELECTOR_DIALOG (self); + + /* if the Text widget isn't sensitive, don't bother checking the caps */ + if (!gtk_widget_get_sensitive (dialog->button_action)) + goto finally; + + empathy_contact_selector_dialog_get_selected (dialog, &conn, NULL); + + if (conn == NULL) + goto finally; + + /* iterate the rccs to find if SMS channels are supported, this should + * be in tp-glib */ + rccs = tp_capabilities_get_channel_classes ( + tp_connection_get_capabilities (conn)); + + for (i = 0; i < rccs->len; i++) + { + GHashTable *fixed; + GStrv allowed; + const char *type; + gboolean sms_channel; + + tp_value_array_unpack (g_ptr_array_index (rccs, i), 2, + &fixed, + &allowed); + + /* SMS channels are type:Text and sms-channel:True */ + type = tp_asv_get_string (fixed, TP_PROP_CHANNEL_CHANNEL_TYPE); + sms_channel = tp_asv_get_boolean (fixed, + TP_PROP_CHANNEL_INTERFACE_SMS_SMS_CHANNEL, NULL); + + sensitive = sms_channel && + !tp_strdiff (type, TP_IFACE_CHANNEL_TYPE_TEXT); + + if (sensitive) + break; + } + +finally: + gtk_widget_set_sensitive (button, sensitive); +} + static GObject * empathy_new_message_dialog_constructor (GType type, guint n_props, @@ -165,8 +241,19 @@ empathy_new_message_dialog_init (EmpathyNewMessageDialog *dialog) { EmpathyContactSelectorDialog *parent = EMPATHY_CONTACT_SELECTOR_DIALOG ( dialog); + GtkWidget *button; GtkWidget *image; + /* add an SMS button */ + button = gtk_button_new_with_mnemonic (_("_SMS")); + image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_SMS, + GTK_ICON_SIZE_BUTTON); + gtk_button_set_image (GTK_BUTTON (button), image); + + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, + EMP_NEW_MESSAGE_SMS); + gtk_widget_show (button); + /* add chat button */ parent->button_action = gtk_button_new_with_mnemonic (_("C_hat")); image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_NEW_MESSAGE, @@ -174,9 +261,18 @@ empathy_new_message_dialog_init (EmpathyNewMessageDialog *dialog) gtk_button_set_image (GTK_BUTTON (parent->button_action), image); gtk_dialog_add_action_widget (GTK_DIALOG (dialog), parent->button_action, - GTK_RESPONSE_ACCEPT); + EMP_NEW_MESSAGE_TEXT); gtk_widget_show (parent->button_action); + /* the parent class will update the sensitivity of button_action, propagate + * it */ + g_signal_connect (parent->button_action, "notify::sensitive", + G_CALLBACK (empathy_new_message_dialog_update_sms_button_sensitivity), + button); + g_signal_connect (dialog, "notify::selected-account", + G_CALLBACK (empathy_new_message_dialog_update_sms_button_sensitivity), + button); + /* Tweak the dialog */ gtk_window_set_title (GTK_WINDOW (dialog), _("New Conversation")); gtk_window_set_role (GTK_WINDOW (dialog), "new_message"); diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index 2ab3383b3..06410c528 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -22,7 +22,7 @@ #include "config.h" #include <string.h> -#include <glib/gi18n.h> +#include <glib/gi18n-lib.h> #include <webkit/webkit.h> #include <telepathy-glib/dbus.h> @@ -59,11 +59,13 @@ typedef struct { gint64 last_timestamp; gboolean last_is_backlog; guint pages_loading; - GList *message_queue; + /* Queue of GValue* containing an EmpathyMessage or string */ + GQueue message_queue; GtkWidget *inspector_window; GSettings *gsettings_chat; gboolean has_focus; gboolean has_unread_message; + gboolean allow_scrolling; } EmpathyThemeAdiumPriv; struct _EmpathyAdiumData { @@ -73,26 +75,27 @@ struct _EmpathyAdiumData { gchar *default_avatar_filename; gchar *default_incoming_avatar_filename; gchar *default_outgoing_avatar_filename; - gchar *template_html; - gchar *in_content_html; - gsize in_content_len; - gchar *in_context_html; - gsize in_context_len; - gchar *in_nextcontent_html; - gsize in_nextcontent_len; - gchar *in_nextcontext_html; - gsize in_nextcontext_len; - gchar *out_content_html; - gsize out_content_len; - gchar *out_context_html; - gsize out_context_len; - gchar *out_nextcontent_html; - gsize out_nextcontent_len; - gchar *out_nextcontext_html; - gsize out_nextcontext_len; - gchar *status_html; - gsize status_len; GHashTable *info; + guint version; + gboolean custom_template; + + /* HTML bits */ + const gchar *template_html; + const gchar *content_html; + const gchar *in_content_html; + const gchar *in_context_html; + const gchar *in_nextcontent_html; + const gchar *in_nextcontext_html; + const gchar *out_content_html; + const gchar *out_context_html; + const gchar *out_nextcontent_html; + const gchar *out_nextcontext_html; + const gchar *status_html; + + /* Above html strings are pointers to strings stored in this array. + * We do this because of fallbacks, some htmls could be pointing the + * same string. */ + GPtrArray *strings_to_free; }; static void theme_adium_iface_init (EmpathyChatViewIface *iface); @@ -191,6 +194,36 @@ theme_adium_open_address_cb (GtkMenuItem *menuitem, g_free (uri); } +/* Replace each %@ in format with string passed in args */ +static gchar * +string_with_format (const gchar *format, + const gchar *first_string, + ...) +{ + va_list args; + const gchar *str; + GString *result; + + va_start (args, first_string); + result = g_string_sized_new (strlen (format)); + for (str = first_string; str != NULL; str = va_arg (args, const gchar *)) { + const gchar *next; + + next = strstr (format, "%@"); + if (next == NULL) { + break; + } + + g_string_append_len (result, format, next - format); + g_string_append (result, str); + format = next + 2; + } + g_string_append (result, format); + va_end (args); + + return g_string_free (result, FALSE); +} + static void theme_adium_match_newline (const gchar *text, gssize len, @@ -283,7 +316,7 @@ theme_adium_parse_body (EmpathyThemeAdium *self, static void escape_and_append_len (GString *string, const gchar *str, gint len) { - while (*str != '\0' && len != 0) { + while (str != NULL && *str != '\0' && len != 0) { switch (*str) { case '\\': /* \ becomes \\ */ @@ -345,10 +378,36 @@ theme_adium_match_with_format (const gchar **str, return TRUE; } +/* List of colors used by %senderColor%. Copied from + * adium/Frameworks/AIUtilities\ Framework/Source/AIColorAdditions.m + */ +static gchar *colors[] = { + "aqua", "aquamarine", "blue", "blueviolet", "brown", "burlywood", "cadetblue", + "chartreuse", "chocolate", "coral", "cornflowerblue", "crimson", "cyan", + "darkblue", "darkcyan", "darkgoldenrod", "darkgreen", "darkgrey", "darkkhaki", + "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", + "darksalmon", "darkseagreen", "darkslateblue", "darkslategrey", + "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgrey", + "dodgerblue", "firebrick", "forestgreen", "fuchsia", "gold", "goldenrod", + "green", "greenyellow", "grey", "hotpink", "indianred", "indigo", "lawngreen", + "lightblue", "lightcoral", + "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", + "lightskyblue", "lightslategrey", "lightsteelblue", "lime", "limegreen", + "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", + "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", + "mediumturquoise", "mediumvioletred", "midnightblue", "navy", "olive", + "olivedrab", "orange", "orangered", "orchid", "palegreen", "paleturquoise", + "palevioletred", "peru", "pink", "plum", "powderblue", "purple", "red", + "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", + "sienna", "silver", "skyblue", "slateblue", "slategrey", "springgreen", + "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", + "yellowgreen", +}; + static void theme_adium_append_html (EmpathyThemeAdium *theme, const gchar *func, - const gchar *html, gsize len, + const gchar *html, const gchar *message, const gchar *avatar_filename, const gchar *name, @@ -363,10 +422,10 @@ theme_adium_append_html (EmpathyThemeAdium *theme, gchar *script; /* Make some search-and-replace in the html code */ - string = g_string_sized_new (len + strlen (message)); + string = g_string_sized_new (strlen (html) + strlen (message)); g_string_append_printf (string, "%s(\"", func); for (cur = html; *cur != '\0'; cur++) { - const gchar *replace = ""; + const gchar *replace = NULL; gchar *dup_replace = NULL; gchar *format = NULL; @@ -380,11 +439,15 @@ theme_adium_append_html (EmpathyThemeAdium *theme, } else if (theme_adium_match (&cur, "%sender%")) { replace = name; } else if (theme_adium_match (&cur, "%senderColor%")) { - /* FIXME: A color derived from the user's name. If a - * colon separated list of HTML colors is at + /* A color derived from the user's name. + * FIXME: If a colon separated list of HTML colors is at * Incoming/SenderColors.txt it will be used instead of * the default colors. */ + if (contact_id != NULL) { + guint hash = g_str_hash (contact_id); + replace = colors[hash % G_N_ELEMENTS (colors)]; + } } else if (theme_adium_match (&cur, "%senderStatusIcon%")) { /* FIXME: The path to the status icon of the sender * (available, away, etc...) @@ -493,13 +556,10 @@ theme_adium_append_event_escaped (EmpathyChatView *view, EmpathyThemeAdium *theme = EMPATHY_THEME_ADIUM (view); EmpathyThemeAdiumPriv *priv = GET_PRIV (theme); - if (priv->data->status_html) { - theme_adium_append_html (theme, "appendMessage", - priv->data->status_html, - priv->data->status_len, - escaped, NULL, NULL, NULL, NULL, - "event", empathy_time_get_current (), FALSE); - } + theme_adium_append_html (theme, "appendMessage", + priv->data->status_html, escaped, NULL, NULL, NULL, + NULL, "event", + empathy_time_get_current (), FALSE); /* There is no last contact */ if (priv->last_contact) { @@ -511,11 +571,17 @@ theme_adium_append_event_escaped (EmpathyChatView *view, static void theme_adium_remove_focus_marks (EmpathyThemeAdium *theme) { + EmpathyThemeAdiumPriv *priv = GET_PRIV (theme); WebKitDOMDocument *dom; WebKitDOMNodeList *nodes; guint i; GError *error = NULL; + if (!priv->has_unread_message) + return; + + priv->has_unread_message = FALSE; + dom = webkit_web_view_get_dom_document (WEBKIT_WEB_VIEW (theme)); if (dom == NULL) { return; @@ -580,17 +646,18 @@ theme_adium_append_message (EmpathyChatView *view, EmpathyAvatar *avatar; const gchar *avatar_filename = NULL; gint64 timestamp; - gchar *html = NULL; - gsize len = 0; + const gchar *html = NULL; const gchar *func; const gchar *service_name; GString *message_classes = NULL; gboolean is_backlog; gboolean consecutive; + gboolean action; if (priv->pages_loading != 0) { - priv->message_queue = g_list_prepend (priv->message_queue, - g_object_ref (msg)); + GValue *value = tp_g_value_slice_new (EMPATHY_TYPE_MESSAGE); + g_value_set_object (value, msg); + g_queue_push_tail (&priv->message_queue, value); return; } @@ -606,17 +673,21 @@ theme_adium_append_message (EmpathyChatView *view, body_escaped = theme_adium_parse_body (theme, body); name = empathy_contact_get_alias (sender); contact_id = empathy_contact_get_id (sender); + action = (empathy_message_get_tptype (msg) == TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION); - /* If this is a /me, append an event */ - if (empathy_message_get_tptype (msg) == TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION) { + /* If this is a /me probably */ + if (action) { gchar *str; - str = g_strdup_printf ("%s %s", name, body_escaped); - theme_adium_append_event_escaped (view, str); - - g_free (str); + if (priv->data->version >= 4 || !priv->data->custom_template) { + str = g_strdup_printf ("<span class='actionMessageUserName'>%s</span>" + "<span class='actionMessageBody'>%s</span>", + name, body_escaped); + } else { + str = g_strdup_printf ("*%s*", body_escaped); + } g_free (body_escaped); - return; + body_escaped = str; } /* Get the avatar filename, or a fallback */ @@ -656,10 +727,6 @@ theme_adium_append_message (EmpathyChatView *view, message_classes = g_string_new ("message"); if (!priv->has_focus && !is_backlog) { if (!priv->has_unread_message) { - /* This is the first message we receive since we lost - * focus; remove previous unread marks. */ - theme_adium_remove_focus_marks (theme); - g_string_append (message_classes, " firstFocus"); priv->has_unread_message = TRUE; } @@ -676,95 +743,56 @@ theme_adium_append_message (EmpathyChatView *view, } else { g_string_append (message_classes, " incoming"); } + if (empathy_message_should_highlight (msg)) { + g_string_append (message_classes, " mention"); + } + if (empathy_message_get_tptype (msg) == TP_CHANNEL_TEXT_MESSAGE_TYPE_AUTO_REPLY) { + g_string_append (message_classes, " autoreply"); + } + if (action) { + g_string_append (message_classes, " action"); + } /* FIXME: other classes: - * autoreply - the message is an automatic response, generally due to an - * away status - * mention - the incoming message (in groupchat) matches your username - * or one of the mention keywords specified in Adium's - * advanced prefs. * status - the message is a status change * event - the message is a notification of something happening * (for example, encryption being turned on) - * %status% - See %status% in theme_adium_append_html() + * %status% - See %status% in theme_adium_append_html () */ /* Define javascript function to use */ if (consecutive) { - func = "appendNextMessage"; + func = priv->allow_scrolling ? "appendNextMessage" : "appendNextMessageNoScroll"; } else { - func = "appendMessage"; + func = priv->allow_scrolling ? "appendMessage" : "appendMessageNoScroll"; } - /* Outgoing */ if (empathy_contact_is_user (sender)) { - if (consecutive) { - if (is_backlog) { - html = priv->data->out_nextcontext_html; - len = priv->data->out_nextcontext_len; - } - - /* Not backlog, or fallback if NextContext.html - * is missing */ - if (html == NULL) { - html = priv->data->out_nextcontent_html; - len = priv->data->out_nextcontent_len; - } - } - - /* Not consecutive, or fallback if NextContext.html and/or - * NextContent.html are missing */ - if (html == NULL) { - if (is_backlog) { - html = priv->data->out_context_html; - len = priv->data->out_context_len; - } - - if (html == NULL) { - html = priv->data->out_content_html; - len = priv->data->out_content_len; - } - } - } - - /* Incoming, or fallback if outgoing files are missing */ - if (html == NULL) { - if (consecutive) { - if (is_backlog) { - html = priv->data->in_nextcontext_html; - len = priv->data->in_nextcontext_len; - } - - /* Note backlog, or fallback if NextContext.html - * is missing */ - if (html == NULL) { - html = priv->data->in_nextcontent_html; - len = priv->data->in_nextcontent_len; - } + /* out */ + if (is_backlog) { + /* context */ + html = consecutive ? priv->data->out_nextcontext_html : priv->data->out_context_html; + } else { + /* content */ + html = consecutive ? priv->data->out_nextcontent_html : priv->data->out_content_html; } - /* Not consecutive, or fallback if NextContext.html and/or - * NextContent.html are missing */ - if (html == NULL) { - if (is_backlog) { - html = priv->data->in_context_html; - len = priv->data->in_context_len; - } - - if (html == NULL) { - html = priv->data->in_content_html; - len = priv->data->in_content_len; - } + /* remove all the unread marks when we are sending a message */ + theme_adium_remove_focus_marks (theme); + } else { + /* in */ + if (is_backlog) { + /* context */ + html = consecutive ? priv->data->in_nextcontext_html : priv->data->in_context_html; + } else { + /* content */ + html = consecutive ? priv->data->in_nextcontent_html : priv->data->in_content_html; } } - if (html != NULL) { - theme_adium_append_html (theme, func, html, len, body_escaped, - avatar_filename, name, contact_id, - service_name, message_classes->str, - timestamp, is_backlog); - } else { - DEBUG ("Couldn't find HTML file for this message"); - } + theme_adium_append_html (theme, func, html, body_escaped, + avatar_filename, name, contact_id, + service_name, message_classes->str, + timestamp, is_backlog); /* Keep the sender of the last displayed message */ if (priv->last_contact) { @@ -782,8 +810,15 @@ static void theme_adium_append_event (EmpathyChatView *view, const gchar *str) { + EmpathyThemeAdiumPriv *priv = GET_PRIV (view); gchar *str_escaped; + if (priv->pages_loading != 0) { + g_queue_push_tail (&priv->message_queue, + tp_g_value_slice_new_string (str)); + return; + } + str_escaped = g_markup_escape_text (str, -1); theme_adium_append_event_escaped (view, str_escaped); g_free (str_escaped); @@ -793,14 +828,18 @@ static void theme_adium_scroll (EmpathyChatView *view, gboolean allow_scrolling) { - /* FIXME: Is it possible? I guess we need a js function, but I don't - * see any... */ + EmpathyThemeAdiumPriv *priv = GET_PRIV (view); + + priv->allow_scrolling = allow_scrolling; + if (allow_scrolling) { + empathy_chat_view_scroll_down (view); + } } static void theme_adium_scroll_down (EmpathyChatView *view) { - webkit_web_view_execute_script (WEBKIT_WEB_VIEW (view), "scrollToBottom()"); + webkit_web_view_execute_script (WEBKIT_WEB_VIEW (view), "alignChat(true);"); } static gboolean @@ -891,11 +930,12 @@ static void theme_adium_focus_toggled (EmpathyChatView *view, gboolean has_focus) { + EmpathyThemeAdium *self = (EmpathyThemeAdium *) view; EmpathyThemeAdiumPriv *priv = GET_PRIV (view); priv->has_focus = has_focus; - if (priv->has_focus) { - priv->has_unread_message = FALSE; + if (!priv->has_focus) { + theme_adium_remove_focus_marks (self); } } @@ -1028,6 +1068,7 @@ theme_adium_load_finished_cb (WebKitWebView *view, { EmpathyThemeAdiumPriv *priv = GET_PRIV (view); EmpathyChatView *chat_view = EMPATHY_CHAT_VIEW (view); + GList *l; DEBUG ("Page loaded"); priv->pages_loading--; @@ -1036,14 +1077,20 @@ theme_adium_load_finished_cb (WebKitWebView *view, return; /* Display queued messages */ - priv->message_queue = g_list_reverse (priv->message_queue); - while (priv->message_queue) { - EmpathyMessage *message = priv->message_queue->data; + for (l = priv->message_queue.head; l != NULL; l = l->next) { + GValue *value = l->data; + + if (G_VALUE_HOLDS_OBJECT (value)) { + theme_adium_append_message (chat_view, + g_value_get_object (value)); + } else { + theme_adium_append_event (chat_view, + g_value_get_string (value)); + } - theme_adium_append_message (chat_view, message); - priv->message_queue = g_list_remove (priv->message_queue, message); - g_object_unref (message); + tp_g_value_slice_free (value); } + g_queue_clear (&priv->message_queue); } static void @@ -1319,6 +1366,8 @@ empathy_theme_adium_init (EmpathyThemeAdium *theme) theme->priv = priv; + g_queue_init (&priv->message_queue); + priv->allow_scrolling = TRUE; priv->smiley_manager = empathy_smiley_manager_dup_singleton (); g_signal_connect (theme, "load-finished", @@ -1359,18 +1408,24 @@ empathy_adium_path_is_valid (const gchar *path) ret = g_file_test (file, G_FILE_TEST_EXISTS); g_free (file); - if (ret == FALSE) - return ret; + if (!ret) + return FALSE; /* We ship a default Template.html as fallback if there is any problem * with the one inside the theme. The only other required file is - * Content.html for incoming messages (outgoing fallback to use - * incoming). */ - file = g_build_filename (path, "Contents", "Resources", "Incoming", - "Content.html", NULL); + * Content.html OR Incoming/Content.html*/ + file = g_build_filename (path, "Contents", "Resources", "Content.html", + NULL); ret = g_file_test (file, G_FILE_TEST_EXISTS); g_free (file); + if (!ret) { + file = g_build_filename (path, "Contents", "Resources", "Incoming", + "Content.html", NULL); + ret = g_file_test (file, G_FILE_TEST_EXISTS); + g_free (file); + } + return ret; } @@ -1400,6 +1455,108 @@ empathy_adium_info_new (const gchar *path) return info; } +static guint +adium_info_get_version (GHashTable *info) +{ + return tp_asv_get_int32 (info, "MessageViewVersion", NULL); +} + +static const gchar * +adium_info_get_no_variant_name (GHashTable *info) +{ + const gchar *name = tp_asv_get_string (info, "DisplayNameForNoVariant"); + return name ? name : _("Normal"); +} + +static const gchar * +adium_info_get_default_or_first_variant (GHashTable *info) +{ + const gchar *name; + GPtrArray *variants; + + name = empathy_adium_info_get_default_variant (info); + if (name != NULL) { + return name; + } + + variants = empathy_adium_info_get_available_variants (info); + g_assert (variants->len > 0); + return g_ptr_array_index (variants, 0); +} + +static gchar * +adium_info_dup_path_for_variant (GHashTable *info, + const gchar *variant) +{ + guint version = adium_info_get_version (info); + const gchar *no_variant = adium_info_get_no_variant_name (info); + + if (version <= 2 && !tp_strdiff (variant, no_variant)) { + return g_strdup ("main.css"); + } + + return g_strdup_printf ("Variants/%s.css", variant); + +} + +const gchar * +empathy_adium_info_get_default_variant (GHashTable *info) +{ + if (adium_info_get_version (info) <= 2) { + return adium_info_get_no_variant_name (info); + } + + return tp_asv_get_string (info, "DefaultVariant"); +} + +GPtrArray * +empathy_adium_info_get_available_variants (GHashTable *info) +{ + GPtrArray *variants; + const gchar *path; + gchar *dirpath; + GDir *dir; + + variants = tp_asv_get_boxed (info, "AvailableVariants", G_TYPE_PTR_ARRAY); + if (variants != NULL) { + return variants; + } + + variants = g_ptr_array_new_with_free_func (g_free); + tp_asv_take_boxed (info, g_strdup ("AvailableVariants"), + G_TYPE_PTR_ARRAY, variants); + + path = tp_asv_get_string (info, "path"); + dirpath = g_build_filename (path, "Contents", "Resources", "Variants", NULL); + dir = g_dir_open (dirpath, 0, NULL); + if (dir != NULL) { + const gchar *name; + + for (name = g_dir_read_name (dir); + name != NULL; + name = g_dir_read_name (dir)) { + gchar *display_name; + + if (!g_str_has_suffix (name, ".css")) { + continue; + } + + display_name = g_strdup (name); + strstr (display_name, ".css")[0] = '\0'; + g_ptr_array_add (variants, display_name); + } + g_dir_close (dir); + } + g_free (dirpath); + + if (adium_info_get_version (info) <= 2) { + g_ptr_array_add (variants, + g_strdup (adium_info_get_no_variant_name (info))); + } + + return variants; +} + GType empathy_adium_data_get_type (void) { @@ -1419,16 +1576,10 @@ EmpathyAdiumData * empathy_adium_data_new_with_info (const gchar *path, GHashTable *info) { EmpathyAdiumData *data; - gchar *file; gchar *template_html = NULL; - gsize template_len; gchar *footer_html = NULL; - gsize footer_len; - GString *string; - gchar **strv = NULL; - gchar *css_path; - guint len = 0; - guint i = 0; + gchar *variant_path; + gchar *tmp; g_return_val_if_fail (empathy_adium_path_is_valid (path), NULL); @@ -1438,121 +1589,121 @@ empathy_adium_data_new_with_info (const gchar *path, GHashTable *info) data->basedir = g_strconcat (path, G_DIR_SEPARATOR_S "Contents" G_DIR_SEPARATOR_S "Resources" G_DIR_SEPARATOR_S, NULL); data->info = g_hash_table_ref (info); + data->version = adium_info_get_version (info); + data->strings_to_free = g_ptr_array_new_with_free_func (g_free); + + DEBUG ("Loading theme at %s", path); + +#define LOAD(path, var) \ + tmp = g_build_filename (data->basedir, path, NULL); \ + g_file_get_contents (tmp, &var, NULL, NULL); \ + g_free (tmp); \ + +#define LOAD_CONST(path, var) \ + { \ + gchar *content; \ + LOAD (path, content); \ + if (content != NULL) { \ + g_ptr_array_add (data->strings_to_free, content); \ + } \ + var = content; \ + } /* Load html files */ - file = g_build_filename (data->basedir, "Incoming", "Content.html", NULL); - g_file_get_contents (file, &data->in_content_html, &data->in_content_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Incoming", "NextContent.html", NULL); - g_file_get_contents (file, &data->in_nextcontent_html, &data->in_nextcontent_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Incoming", "Context.html", NULL); - g_file_get_contents (file, &data->in_context_html, &data->in_context_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Incoming", "NextContext.html", NULL); - g_file_get_contents (file, &data->in_nextcontext_html, &data->in_nextcontext_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Outgoing", "Content.html", NULL); - g_file_get_contents (file, &data->out_content_html, &data->out_content_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Outgoing", "NextContent.html", NULL); - g_file_get_contents (file, &data->out_nextcontent_html, &data->out_nextcontent_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Outgoing", "Context.html", NULL); - g_file_get_contents (file, &data->out_context_html, &data->out_context_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Outgoing", "NextContext.html", NULL); - g_file_get_contents (file, &data->out_nextcontext_html, &data->out_nextcontext_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Status.html", NULL); - g_file_get_contents (file, &data->status_html, &data->status_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Footer.html", NULL); - g_file_get_contents (file, &footer_html, &footer_len, NULL); - g_free (file); - - file = g_build_filename (data->basedir, "Incoming", "buddy_icon.png", NULL); - if (g_file_test (file, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) { - data->default_incoming_avatar_filename = file; - } else { - g_free (file); + LOAD_CONST ("Content.html", data->content_html); + LOAD_CONST ("Incoming/Content.html", data->in_content_html); + LOAD_CONST ("Incoming/NextContent.html", data->in_nextcontent_html); + LOAD_CONST ("Incoming/Context.html", data->in_context_html); + LOAD_CONST ("Incoming/NextContext.html", data->in_nextcontext_html); + LOAD_CONST ("Outgoing/Content.html", data->out_content_html); + LOAD_CONST ("Outgoing/NextContent.html", data->out_nextcontent_html); + LOAD_CONST ("Outgoing/Context.html", data->out_context_html); + LOAD_CONST ("Outgoing/NextContext.html", data->out_nextcontext_html); + LOAD_CONST ("Status.html", data->status_html); + LOAD ("Template.html", template_html); + LOAD ("Footer.html", footer_html); + +#undef LOAD_CONST +#undef LOAD + + /* HTML fallbacks: If we have at least content OR in_content, then + * everything else gets a fallback */ + +#define FALLBACK(html, fallback) \ + if (html == NULL) { \ + html = fallback; \ } - file = g_build_filename (data->basedir, "Outgoing", "buddy_icon.png", NULL); - if (g_file_test (file, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) { - data->default_outgoing_avatar_filename = file; - } else { - g_free (file); + /* in_nextcontent -> in_content -> content */ + FALLBACK (data->in_content_html, data->content_html); + FALLBACK (data->in_nextcontent_html, data->in_content_html); + + /* context -> content */ + FALLBACK (data->in_context_html, data->in_content_html); + FALLBACK (data->in_nextcontext_html, data->in_nextcontent_html); + FALLBACK (data->out_context_html, data->out_content_html); + FALLBACK (data->out_nextcontext_html, data->out_nextcontent_html); + + /* out -> in */ + FALLBACK (data->out_content_html, data->in_content_html); + FALLBACK (data->out_nextcontent_html, data->in_nextcontent_html); + FALLBACK (data->out_context_html, data->in_context_html); + FALLBACK (data->out_nextcontext_html, data->in_nextcontext_html); + + /* status -> in_content */ + FALLBACK (data->status_html, data->in_content_html); + +#undef FALLBACK + + /* template -> empathy's template */ + data->custom_template = (template_html != NULL); + if (template_html == NULL) { + tmp = empathy_file_lookup ("Template.html", "data"); + g_file_get_contents (tmp, &template_html, NULL, NULL); + g_free (tmp); } - css_path = g_build_filename (data->basedir, "main.css", NULL); - - /* There is 2 formats for Template.html: The old one has 4 parameters, - * the new one has 5 parameters. */ - file = g_build_filename (data->basedir, "Template.html", NULL); - if (g_file_get_contents (file, &template_html, &template_len, NULL)) { - strv = g_strsplit (template_html, "%@", -1); - len = g_strv_length (strv); + /* Default avatar */ + tmp = g_build_filename (data->basedir, "Incoming", "buddy_icon.png", NULL); + if (g_file_test (tmp, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) { + data->default_incoming_avatar_filename = tmp; + } else { + g_free (tmp); } - g_free (file); - - if (len != 5 && len != 6) { - /* Either the theme has no template or it don't have the good - * number of parameters. Fallback to use our own template. */ - g_free (template_html); - g_strfreev (strv); - - file = empathy_file_lookup ("Template.html", "data"); - g_file_get_contents (file, &template_html, &template_len, NULL); - g_free (file); - strv = g_strsplit (template_html, "%@", -1); - len = g_strv_length (strv); + tmp = g_build_filename (data->basedir, "Outgoing", "buddy_icon.png", NULL); + if (g_file_test (tmp, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) { + data->default_outgoing_avatar_filename = tmp; + } else { + g_free (tmp); } - /* Replace %@ with the needed information in the template html. */ - string = g_string_sized_new (template_len); - g_string_append (string, strv[i++]); - g_string_append (string, data->basedir); - g_string_append (string, strv[i++]); - if (len == 6) { - const gchar *variant; - - /* We include main.css by default */ - g_string_append_printf (string, "@import url(\"%s\");", css_path); - g_string_append (string, strv[i++]); - variant = tp_asv_get_string (data->info, "DefaultVariant"); - if (variant) { - g_string_append (string, "Variants/"); - g_string_append (string, variant); - g_string_append (string, ".css"); - } + variant_path = adium_info_dup_path_for_variant (info, + adium_info_get_default_or_first_variant (info)); + + /* Old custom templates had only 4 parameters. + * New templates have 5 parameters */ + if (data->version <= 2 && data->custom_template) { + tmp = string_with_format (template_html, + data->basedir, + variant_path, + "", /* The header */ + footer_html ? footer_html : "", + NULL); } else { - /* FIXME: We should set main.css OR the variant css */ - g_string_append (string, css_path); + tmp = string_with_format (template_html, + data->basedir, + data->version <= 2 ? "" : "@import url( \"main.css\" );", + variant_path, + "", /* The header */ + footer_html ? footer_html : "", + NULL); } - g_string_append (string, strv[i++]); - g_string_append (string, ""); /* We don't want header */ - g_string_append (string, strv[i++]); - /* FIXME: We should replace adium %macros% in footer */ - if (footer_html) { - g_string_append (string, footer_html); - } - g_string_append (string, strv[i++]); - data->template_html = g_string_free (string, FALSE); + g_ptr_array_add (data->strings_to_free, tmp); + data->template_html = tmp; - g_free (footer_html); g_free (template_html); - g_free (css_path); - g_strfreev (strv); + g_free (footer_html); + g_free (variant_path); return data; } @@ -1588,20 +1739,12 @@ empathy_adium_data_unref (EmpathyAdiumData *data) if (g_atomic_int_dec_and_test (&data->ref_count)) { g_free (data->path); g_free (data->basedir); - g_free (data->template_html); - g_free (data->in_content_html); - g_free (data->in_nextcontent_html); - g_free (data->in_context_html); - g_free (data->in_nextcontext_html); - g_free (data->out_content_html); - g_free (data->out_nextcontent_html); - g_free (data->out_context_html); - g_free (data->out_nextcontext_html); g_free (data->default_avatar_filename); g_free (data->default_incoming_avatar_filename); g_free (data->default_outgoing_avatar_filename); - g_free (data->status_html); g_hash_table_unref (data->info); + g_ptr_array_unref (data->strings_to_free); + g_slice_free (EmpathyAdiumData, data); } } diff --git a/libempathy-gtk/empathy-theme-adium.h b/libempathy-gtk/empathy-theme-adium.h index a8ed19de4..d0ad0170d 100644 --- a/libempathy-gtk/empathy-theme-adium.h +++ b/libempathy-gtk/empathy-theme-adium.h @@ -52,7 +52,10 @@ GType empathy_theme_adium_get_type (void) G_GNUC_CONST; EmpathyThemeAdium *empathy_theme_adium_new (EmpathyAdiumData *data); gboolean empathy_adium_path_is_valid (const gchar *path); + GHashTable *empathy_adium_info_new (const gchar *path); +const gchar * empathy_adium_info_get_default_variant (GHashTable *info); +GPtrArray * empathy_adium_info_get_available_variants (GHashTable *info); #define EMPATHY_TYPE_ADIUM_DATA (empathy_adium_data_get_type ()) GType empathy_adium_data_get_type (void) G_GNUC_CONST; diff --git a/libempathy-gtk/empathy-theme-manager.c b/libempathy-gtk/empathy-theme-manager.c index 1a4f5ae47..0dcb40a70 100644 --- a/libempathy-gtk/empathy-theme-manager.c +++ b/libempathy-gtk/empathy-theme-manager.c @@ -54,6 +54,7 @@ typedef struct { gchar *adium_path; GtkSettings *settings; GList *boxes_views; + guint emit_changed_idle; } EmpathyThemeManagerPriv; enum { @@ -392,6 +393,51 @@ theme_manager_ensure_theme_exists (const gchar *name) return FALSE; } +typedef enum { + THEME_TYPE_UNSET, + THEME_TYPE_IRC, + THEME_TYPE_BOXED, + THEME_TYPE_ADIUM, +} ThemeType; + +static ThemeType +theme_type (const gchar *name) +{ + if (name == NULL) { + return THEME_TYPE_UNSET; + } else if (!tp_strdiff (name, "classic")) { + return THEME_TYPE_IRC; + } else if (!tp_strdiff (name, "adium")) { + return THEME_TYPE_ADIUM; + } else { + return THEME_TYPE_BOXED; + } +} + +static gboolean +theme_manager_emit_changed_idle_cb (gpointer manager) +{ + EmpathyThemeManagerPriv *priv = GET_PRIV (manager); + + g_signal_emit (manager, signals[THEME_CHANGED], 0, NULL); + priv->emit_changed_idle = 0; + + return FALSE; +} + +static void +theme_manager_emit_changed (EmpathyThemeManager *manager) +{ + EmpathyThemeManagerPriv *priv = GET_PRIV (manager); + + /* We emit the signal in idle callback to be sure we emit it only once + * in the case both the name and adium_path changed */ + if (priv->emit_changed_idle == 0) { + priv->emit_changed_idle = g_idle_add ( + theme_manager_emit_changed_idle_cb, manager); + } +} + static void theme_manager_notify_name_cb (GSettings *gsettings_chat, const gchar *key, @@ -400,25 +446,29 @@ theme_manager_notify_name_cb (GSettings *gsettings_chat, EmpathyThemeManager *manager = EMPATHY_THEME_MANAGER (user_data); EmpathyThemeManagerPriv *priv = GET_PRIV (manager); gchar *name; + ThemeType old_type; + ThemeType new_type; name = g_settings_get_string (gsettings_chat, key); - if (!theme_manager_ensure_theme_exists (name) || - !tp_strdiff (priv->name, name)) { - if (!priv->name) { - priv->name = g_strdup ("classic"); - } + /* Fallback to classic theme if current setting does not exist */ + if (!theme_manager_ensure_theme_exists (name)) { + g_free (name); + name = g_strdup ("classic"); + } + /* If theme did not change, nothing to do */ + if (!tp_strdiff (priv->name, name)) { g_free (name); return; } + old_type = theme_type (priv->name); g_free (priv->name); priv->name = name; + new_type = theme_type (priv->name); - if (!tp_strdiff (priv->name, "simple") || - !tp_strdiff (priv->name, "clean") || - !tp_strdiff (priv->name, "blue")) { + if (new_type == THEME_TYPE_BOXED) { GList *l; /* The theme changes to a boxed one, we can update boxed views */ @@ -428,7 +478,15 @@ theme_manager_notify_name_cb (GSettings *gsettings_chat, } } - g_signal_emit (manager, signals[THEME_CHANGED], 0, NULL); + /* Do not emit theme-changed if theme type didn't change, or if it was + * unset (the manager is under construction). If theme changed from a + * boxed to another boxed, all view are updated in place. If theme + * changed from an adium to another adium, the signal will be emited + * from theme_manager_notify_adium_path_cb () + */ + if (old_type != new_type && old_type != THEME_TYPE_UNSET) { + theme_manager_emit_changed (manager); + } } static void @@ -439,6 +497,7 @@ theme_manager_notify_adium_path_cb (GSettings *gsettings_chat, EmpathyThemeManager *manager = EMPATHY_THEME_MANAGER (user_data); EmpathyThemeManagerPriv *priv = GET_PRIV (manager); gchar *adium_path = NULL; + gboolean was_set; adium_path = g_settings_get_string (gsettings_chat, key); @@ -447,10 +506,16 @@ theme_manager_notify_adium_path_cb (GSettings *gsettings_chat, return; } + was_set = (priv->adium_path != NULL); + g_free (priv->adium_path); priv->adium_path = adium_path; - g_signal_emit (manager, signals[THEME_CHANGED], 0, NULL); + /* Do not emit the signal if path was not set yet (the manager is under + * construction) */ + if (was_set) { + theme_manager_emit_changed (manager); + } } static void @@ -470,6 +535,10 @@ theme_manager_finalize (GObject *object) } g_list_free (priv->boxes_views); + if (priv->emit_changed_idle != 0) { + g_source_remove (priv->emit_changed_idle); + } + G_OBJECT_CLASS (empathy_theme_manager_parent_class)->finalize (object); } diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index 89c6c09ae..cc829a894 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -1994,3 +1994,9 @@ empathy_context_menu_new (GtkWidget *attach_to) return menu; } + +gint64 +empathy_get_current_action_time (void) +{ + return (tp_user_action_time_from_x11 (gtk_get_current_event_time ())); +} diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h index 6dd64ac51..d33b8c987 100644 --- a/libempathy-gtk/empathy-ui-utils.h +++ b/libempathy-gtk/empathy-ui-utils.h @@ -150,6 +150,8 @@ void empathy_make_color_whiter (GdkRGBA *color); GtkWidget * empathy_context_menu_new (GtkWidget *attach_to); +gint64 empathy_get_current_action_time (void); + G_END_DECLS #endif /* __EMPATHY_UI_UTILS_H__ */ diff --git a/libempathy/empathy-chatroom-manager.c b/libempathy/empathy-chatroom-manager.c index 9ad75ee03..7872bbb19 100644 --- a/libempathy/empathy-chatroom-manager.c +++ b/libempathy/empathy-chatroom-manager.c @@ -192,7 +192,16 @@ add_chatroom (EmpathyChatroomManager *self, priv->chatrooms = g_list_prepend (priv->chatrooms, g_object_ref (chatroom)); - g_signal_connect (chatroom, "notify", + /* Watch only those properties which are exported in the save file */ + g_signal_connect (chatroom, "notify::name", + G_CALLBACK (chatroom_changed_cb), self); + g_signal_connect (chatroom, "notify::room", + G_CALLBACK (chatroom_changed_cb), self); + g_signal_connect (chatroom, "notify::account", + G_CALLBACK (chatroom_changed_cb), self); + g_signal_connect (chatroom, "notify::auto-connect", + G_CALLBACK (chatroom_changed_cb), self); + g_signal_connect (chatroom, "notify::always_urgent", G_CALLBACK (chatroom_changed_cb), self); } diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c index 680094a54..f3e200e27 100644 --- a/libempathy/empathy-contact.c +++ b/libempathy/empathy-contact.c @@ -653,8 +653,8 @@ empathy_contact_from_tpl_contact (TpAccount *account, is_user = (TPL_ENTITY_SELF == tpl_entity_get_entity_type (tpl_entity)); retval = g_object_new (EMPATHY_TYPE_CONTACT, - "id", tpl_entity_get_alias (tpl_entity), - "alias", tpl_entity_get_identifier (tpl_entity), + "id", tpl_entity_get_identifier (tpl_entity), + "alias", tpl_entity_get_alias (tpl_entity), "account", account, "is-user", is_user, NULL); @@ -1098,6 +1098,18 @@ empathy_contact_get_status (EmpathyContact *contact) } gboolean +empathy_contact_can_sms (EmpathyContact *contact) +{ + EmpathyContactPriv *priv; + + g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), FALSE); + + priv = GET_PRIV (contact); + + return priv->capabilities & EMPATHY_CAPABILITIES_SMS; +} + +gboolean empathy_contact_can_voip (EmpathyContact *contact) { EmpathyContactPriv *priv; @@ -1189,6 +1201,9 @@ empathy_contact_can_do_action (EmpathyContact *self, case EMPATHY_ACTION_CHAT: sensitivity = TRUE; break; + case EMPATHY_ACTION_SMS: + sensitivity = empathy_contact_can_sms (self); + break; case EMPATHY_ACTION_AUDIO_CALL: sensitivity = empathy_contact_can_voip_audio (self); break; @@ -1729,6 +1744,12 @@ tp_caps_to_capabilities (TpCapabilities *caps) TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO, NULL)) capabilities |= EMPATHY_CAPABILITIES_VIDEO; } + else if (!tp_strdiff (chan_type, TP_IFACE_CHANNEL_TYPE_TEXT)) + { + if (tp_asv_get_boolean (fixed_prop, + TP_PROP_CHANNEL_INTERFACE_SMS_SMS_CHANNEL, NULL)) + capabilities |= EMPATHY_CAPABILITIES_SMS; + } } return capabilities; diff --git a/libempathy/empathy-contact.h b/libempathy/empathy-contact.h index f9217c108..16b50e500 100644 --- a/libempathy/empathy-contact.h +++ b/libempathy/empathy-contact.h @@ -67,6 +67,7 @@ typedef enum { EMPATHY_CAPABILITIES_VIDEO = 1 << 1, EMPATHY_CAPABILITIES_FT = 1 << 2, EMPATHY_CAPABILITIES_RFB_STREAM_TUBE = 1 << 3, + EMPATHY_CAPABILITIES_SMS = 1 << 4, EMPATHY_CAPABILITIES_UNKNOWN = 1 << 7 } EmpathyCapabilities; @@ -94,6 +95,7 @@ void empathy_contact_set_is_user (EmpathyContact *contact, gboolean is_user); gboolean empathy_contact_is_online (EmpathyContact *contact); const gchar * empathy_contact_get_status (EmpathyContact *contact); +gboolean empathy_contact_can_sms (EmpathyContact *contact); gboolean empathy_contact_can_voip (EmpathyContact *contact); gboolean empathy_contact_can_voip_audio (EmpathyContact *contact); gboolean empathy_contact_can_voip_video (EmpathyContact *contact); @@ -102,6 +104,7 @@ gboolean empathy_contact_can_use_rfb_stream_tube (EmpathyContact *contact); typedef enum { EMPATHY_ACTION_CHAT, + EMPATHY_ACTION_SMS, EMPATHY_ACTION_AUDIO_CALL, EMPATHY_ACTION_VIDEO_CALL, EMPATHY_ACTION_VIEW_LOGS, diff --git a/libempathy/empathy-request-util.c b/libempathy/empathy-request-util.c index ea885dacc..136ddd2aa 100644 --- a/libempathy/empathy-request-util.c +++ b/libempathy/empathy-request-util.c @@ -58,9 +58,11 @@ ensure_text_channel_cb (GObject *source, } } -void -empathy_chat_with_contact_id (TpAccount *account, - const gchar *contact_id, +static void +create_text_channel (TpAccount *account, + TpHandleType target_handle_type, + const gchar *target_id, + gboolean sms_channel, gint64 timestamp) { GHashTable *request; @@ -69,10 +71,14 @@ empathy_chat_with_contact_id (TpAccount *account, request = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, - TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, contact_id, + TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, target_handle_type, + TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, target_id, NULL); + if (sms_channel) + tp_asv_set_boolean (request, + TP_PROP_CHANNEL_INTERFACE_SMS_SMS_CHANNEL, TRUE); + req = tp_account_channel_request_new (account, request, timestamp); tp_account_channel_request_ensure_channel_async (req, EMPATHY_CHAT_BUS_NAME, @@ -83,25 +89,28 @@ empathy_chat_with_contact_id (TpAccount *account, } void +empathy_chat_with_contact_id (TpAccount *account, + const gchar *contact_id, + gint64 timestamp) +{ + create_text_channel (account, TP_HANDLE_TYPE_CONTACT, + contact_id, FALSE, timestamp); +} + +void empathy_join_muc (TpAccount *account, const gchar *room_name, gint64 timestamp) { - GHashTable *request; - TpAccountChannelRequest *req; - - request = tp_asv_new ( - TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, - TP_IFACE_CHANNEL_TYPE_TEXT, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_ROOM, - TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, room_name, - NULL); - - req = tp_account_channel_request_new (account, request, timestamp); - - tp_account_channel_request_ensure_channel_async (req, EMPATHY_CHAT_BUS_NAME, - NULL, ensure_text_channel_cb, NULL); + create_text_channel (account, TP_HANDLE_TYPE_ROOM, + room_name, FALSE, timestamp); +} - g_hash_table_unref (request); - g_object_unref (req); +void +empathy_sms_contact_id (TpAccount *account, + const gchar *contact_id, + gint64 timestamp) +{ + create_text_channel (account, TP_HANDLE_TYPE_CONTACT, + contact_id, TRUE, timestamp); } diff --git a/libempathy/empathy-request-util.h b/libempathy/empathy-request-util.h index afb8013cb..49b98a433 100644 --- a/libempathy/empathy-request-util.h +++ b/libempathy/empathy-request-util.h @@ -52,6 +52,11 @@ void empathy_join_muc (TpAccount *account, const gchar *roomname, gint64 timestamp); +/* Request a sms channel */ +void empathy_sms_contact_id (TpAccount *account, + const gchar *contact_id, + gint64 timestamp); + G_END_DECLS #endif /* __EMPATHY_DISPATCHER_H__ */ diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index 87540f21a..8e6672eee 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -59,6 +59,10 @@ typedef struct { gboolean got_password_flags; gboolean ready; gboolean can_upgrade_to_muc; + gboolean got_sms_channel; + gboolean sms_channel; + + GHashTable *messages_being_sent; } EmpathyTpChatPriv; static void tp_chat_iface_init (EmpathyContactListIface *iface); @@ -70,6 +74,8 @@ enum { PROP_REMOTE_CONTACT, PROP_PASSWORD_NEEDED, PROP_READY, + PROP_SMS_CHANNEL, + PROP_N_MESSAGES_SENDING, }; enum { @@ -90,6 +96,40 @@ G_DEFINE_TYPE_WITH_CODE (EmpathyTpChat, empathy_tp_chat, G_TYPE_OBJECT, static void acknowledge_messages (EmpathyTpChat *chat, GArray *ids); static void +tp_chat_set_delivery_status (EmpathyTpChat *self, + const gchar *token, + EmpathyDeliveryStatus delivery_status) +{ + EmpathyTpChatPriv *priv = GET_PRIV (self); + TpDeliveryReportingSupportFlags flags = + tp_text_channel_get_delivery_reporting_support ( + TP_TEXT_CHANNEL (priv->channel)); + + /* channel must support receiving failures and successes */ + if (!tp_str_empty (token) && + flags & TP_DELIVERY_REPORTING_SUPPORT_FLAG_RECEIVE_FAILURES && + flags & TP_DELIVERY_REPORTING_SUPPORT_FLAG_RECEIVE_SUCCESSES) { + + DEBUG ("Delivery status (%s) = %u", token, delivery_status); + + switch (delivery_status) { + case EMPATHY_DELIVERY_STATUS_NONE: + g_hash_table_remove (priv->messages_being_sent, + token); + break; + + default: + g_hash_table_insert (priv->messages_being_sent, + g_strdup (token), + GUINT_TO_POINTER (delivery_status)); + break; + } + + g_object_notify (G_OBJECT (self), "n-messages-sending"); + } +} + +static void tp_chat_invalidated_cb (TpProxy *proxy, guint domain, gint code, @@ -319,19 +359,38 @@ handle_delivery_report (EmpathyTpChat *self, gboolean valid; GPtrArray *echo; const gchar *message_body = NULL; + const gchar *delivery_dbus_error; + const gchar *delivery_token = NULL; header = tp_message_peek (message, 0); if (header == NULL) goto out; + delivery_token = tp_asv_get_string (header, "delivery-token"); delivery_status = tp_asv_get_uint32 (header, "delivery-status", &valid); - if (!valid || delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED) + + if (!valid) { + goto out; + } else if (delivery_status == TP_DELIVERY_STATUS_ACCEPTED) { + DEBUG ("Accepted %s", delivery_token); + tp_chat_set_delivery_status (self, delivery_token, + EMPATHY_DELIVERY_STATUS_ACCEPTED); goto out; + } else if (delivery_status == TP_DELIVERY_STATUS_DELIVERED) { + DEBUG ("Delivered %s", delivery_token); + tp_chat_set_delivery_status (self, delivery_token, + EMPATHY_DELIVERY_STATUS_NONE); + goto out; + } else if (delivery_status != TP_DELIVERY_STATUS_PERMANENTLY_FAILED) { + goto out; + } delivery_error = tp_asv_get_uint32 (header, "delivery-error", &valid); if (!valid) delivery_error = TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN; + delivery_dbus_error = tp_asv_get_string (header, "delivery-dbus-error"); + /* TODO: ideally we should use tp-glib API giving us the echoed message as a * TpMessage. (fdo #35884) */ echo = tp_asv_get_boxed (header, "delivery-echo", @@ -344,7 +403,10 @@ handle_delivery_report (EmpathyTpChat *self, message_body = tp_asv_get_string (echo_body, "content"); } - g_signal_emit (self, signals[SEND_ERROR], 0, message_body, delivery_error); + tp_chat_set_delivery_status (self, delivery_token, + EMPATHY_DELIVERY_STATUS_NONE); + g_signal_emit (self, signals[SEND_ERROR], 0, message_body, + delivery_error, delivery_dbus_error); out: tp_text_channel_ack_message_async (TP_TEXT_CHANNEL (priv->channel), @@ -436,9 +498,10 @@ message_send_cb (GObject *source, { EmpathyTpChat *chat = user_data; TpTextChannel *channel = (TpTextChannel *) source; + gchar *token = NULL; GError *error = NULL; - if (!tp_text_channel_send_message_finish (channel, result, NULL, &error)) { + if (!tp_text_channel_send_message_finish (channel, result, &token, &error)) { DEBUG ("Error: %s", error->message); /* FIXME: we should use the body of the message as first argument of the @@ -446,10 +509,14 @@ message_send_cb (GObject *source, * we'll have rebased EmpathyTpChat on top of TpTextChannel we'll be able * to use the user_data pointer to pass the message and fix this. */ g_signal_emit (chat, signals[SEND_ERROR], 0, - NULL, error_to_text_send_error (error)); + NULL, error_to_text_send_error (error), NULL); g_error_free (error); } + + tp_chat_set_delivery_status (chat, token, + EMPATHY_DELIVERY_STATUS_SENDING); + g_free (token); } typedef struct { @@ -809,6 +876,7 @@ tp_chat_finalize (GObject *object) g_queue_free (priv->messages_queue); g_queue_free (priv->pending_messages_queue); + g_hash_table_destroy (priv->messages_being_sent); G_OBJECT_CLASS (empathy_tp_chat_parent_class)->finalize (object); } @@ -827,6 +895,9 @@ check_almost_ready (EmpathyTpChat *chat) if (!priv->got_password_flags) return; + if (!priv->got_sms_channel) + return; + /* We need either the members (room) or the remote contact (private chat). * If the chat is protected by a password we can't get these information so * consider the chat as ready so it can be presented to the user. */ @@ -1218,6 +1289,41 @@ got_password_flags_cb (TpChannel *proxy, check_almost_ready (EMPATHY_TP_CHAT (self)); } +static void +sms_channel_changed_cb (TpChannel *channel, + gboolean sms_channel, + gpointer user_data, + GObject *chat) +{ + EmpathyTpChatPriv *priv = GET_PRIV (chat); + + priv->sms_channel = sms_channel; + + g_object_notify (G_OBJECT (chat), "sms-channel"); +} + +static void +get_sms_channel_cb (TpProxy *channel, + const GValue *value, + const GError *in_error, + gpointer user_data, + GObject *chat) +{ + EmpathyTpChatPriv *priv = GET_PRIV (chat); + + if (in_error != NULL) { + DEBUG ("Failed to get SMSChannel: %s", in_error->message); + return; + } + + g_return_if_fail (G_VALUE_HOLDS_BOOLEAN (value)); + + priv->sms_channel = g_value_get_boolean (value); + priv->got_sms_channel = TRUE; + + check_almost_ready (EMPATHY_TP_CHAT (chat)); +} + static GObject * tp_chat_constructor (GType type, guint n_props, @@ -1327,6 +1433,22 @@ tp_chat_constructor (GType type, priv->got_password_flags = TRUE; } + /* Check if the chat is for SMS */ + if (tp_proxy_has_interface_by_id (priv->channel, + TP_IFACE_QUARK_CHANNEL_INTERFACE_SMS)) { + tp_cli_channel_interface_sms_connect_to_sms_channel_changed ( + priv->channel, + sms_channel_changed_cb, chat, NULL, G_OBJECT (chat), + NULL); + + tp_cli_dbus_properties_call_get (priv->channel, -1, + TP_IFACE_CHANNEL_INTERFACE_SMS, "SMSChannel", + get_sms_channel_cb, chat, NULL, G_OBJECT (chat)); + } else { + /* if there's no SMS support, then we're not waiting for it */ + priv->got_sms_channel = TRUE; + } + return chat; } @@ -1355,6 +1477,13 @@ tp_chat_get_property (GObject *object, case PROP_PASSWORD_NEEDED: g_value_set_boolean (value, empathy_tp_chat_password_needed (self)); break; + case PROP_SMS_CHANNEL: + g_value_set_boolean (value, priv->sms_channel); + break; + case PROP_N_MESSAGES_SENDING: + g_value_set_uint (value, + g_hash_table_size (priv->messages_being_sent)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; @@ -1436,6 +1565,22 @@ empathy_tp_chat_class_init (EmpathyTpChatClass *klass) FALSE, G_PARAM_READABLE)); + g_object_class_install_property (object_class, + PROP_SMS_CHANNEL, + g_param_spec_boolean ("sms-channel", + "SMS Channel", + "TRUE if channel is for sending SMSes", + FALSE, + G_PARAM_READABLE)); + + g_object_class_install_property (object_class, + PROP_N_MESSAGES_SENDING, + g_param_spec_uint ("n-messages-sending", + "Num Messages Sending", + "The number of messages being sent", + 0, G_MAXUINT, 0, + G_PARAM_READABLE)); + /* Signals */ signals[MESSAGE_RECEIVED] = g_signal_new ("message-received", @@ -1453,9 +1598,9 @@ empathy_tp_chat_class_init (EmpathyTpChatClass *klass) G_SIGNAL_RUN_LAST, 0, NULL, NULL, - _empathy_marshal_VOID__STRING_UINT, + _empathy_marshal_VOID__STRING_UINT_STRING, G_TYPE_NONE, - 2, G_TYPE_STRING, G_TYPE_UINT); + 3, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING); signals[CHAT_STATE_CHANGED] = g_signal_new ("chat-state-changed", @@ -1499,6 +1644,8 @@ empathy_tp_chat_init (EmpathyTpChat *chat) chat->priv = priv; priv->messages_queue = g_queue_new (); priv->pending_messages_queue = g_queue_new (); + priv->messages_being_sent = g_hash_table_new_full ( + g_str_hash, g_str_equal, g_free, NULL); } static void @@ -1607,7 +1754,8 @@ empathy_tp_chat_send (EmpathyTpChat *chat, DEBUG ("Sending message: %s", message_body); tp_text_channel_send_message_async (TP_TEXT_CHANNEL (priv->channel), - message, 0, message_send_cb, chat); + message, TP_MESSAGE_SENDING_FLAG_REPORT_DELIVERY, + message_send_cb, chat); g_free (message_body); } @@ -1912,3 +2060,15 @@ empathy_tp_chat_get_self_contact (EmpathyTpChat *self) return priv->user; } + +gboolean +empathy_tp_chat_is_sms_channel (EmpathyTpChat *self) +{ + EmpathyTpChatPriv *priv; + + g_return_val_if_fail (EMPATHY_IS_TP_CHAT (self), FALSE); + + priv = GET_PRIV (self); + + return priv->sms_channel; +} diff --git a/libempathy/empathy-tp-chat.h b/libempathy/empathy-tp-chat.h index 7c998a3fa..83c7fe7d1 100644 --- a/libempathy/empathy-tp-chat.h +++ b/libempathy/empathy-tp-chat.h @@ -59,6 +59,12 @@ typedef struct { GValue *value; } EmpathyTpChatProperty; +typedef enum { + EMPATHY_DELIVERY_STATUS_NONE, + EMPATHY_DELIVERY_STATUS_SENDING, + EMPATHY_DELIVERY_STATUS_ACCEPTED +} EmpathyDeliveryStatus; + GType empathy_tp_chat_get_type (void) G_GNUC_CONST; EmpathyTpChat *empathy_tp_chat_new (TpAccount *account, TpChannel *channel); @@ -112,6 +118,8 @@ TpChannelChatState EmpathyContact * empathy_tp_chat_get_self_contact (EmpathyTpChat *self); +gboolean empathy_tp_chat_is_sms_channel (EmpathyTpChat *chat); + G_END_DECLS #endif /* __EMPATHY_TP_CHAT_H__ */ diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c index f8220ac31..8173f781d 100644 --- a/libempathy/empathy-utils.c +++ b/libempathy/empathy-utils.c @@ -29,6 +29,7 @@ #include "config.h" #include <string.h> +#include <math.h> #include <time.h> #include <sys/types.h> @@ -957,3 +958,77 @@ empathy_get_x509_certificate_hostname (gnutls_x509_crt_t cert) return NULL; } + +gchar * +empathy_format_currency (gint amount, + guint scale, + const gchar *currency) +{ +#define MINUS "\342\210\222" +#define EURO "\342\202\254" +#define YEN "\302\245" +#define POUND "\302\243" + + /* localised representations of currency */ + /* FIXME: check these, especially negatives and decimals */ + static const struct { + const char *currency; + const char *positive; + const char *negative; + const char *decimal; + } currencies[] = { + /* sym positive negative decimal */ + { "EUR", EURO "%s", MINUS EURO "%s", "." }, + { "USD", "$%s", MINUS "$%s", "." }, + { "JPY", YEN "%s" MINUS YEN "%s", "." }, + { "GBP", POUND "%s", MINUS POUND "%s", "." }, + { "PLN", "%s zl", MINUS "%s zl", "." }, + { "BRL", "R$%s", MINUS "R$%s", "." }, + { "SEK", "%s kr", MINUS "%s kr", "." }, + { "DKK", "kr %s", "kr " MINUS "%s", "." }, + { "HKD", "$%s", MINUS "$%s", "." }, + { "CHF", "%s Fr.", MINUS "%s Fr.", "." }, + { "NOK", "kr %s", "kr" MINUS "%s", "," }, + { "CAD", "$%s", MINUS "$%s", "." }, + { "TWD", "$%s", MINUS "$%s", "." }, + { "AUD", "$%s", MINUS "$%s", "." }, + }; + + const char *positive = "%s"; + const char *negative = MINUS "%s"; + const char *decimal = "."; + char *fmt_amount, *money; + guint i; + + /* get the localised currency format */ + for (i = 0; i < G_N_ELEMENTS (currencies); i++) { + if (!tp_strdiff (currency, currencies[i].currency)) { + positive = currencies[i].positive; + negative = currencies[i].negative; + decimal = currencies[i].decimal; + break; + } + } + + /* format the amount using the scale */ + if (scale == 0) { + /* no decimal point required */ + fmt_amount = g_strdup_printf ("%d", amount); + } else { + /* don't use floating point arithmatic, it's noisy; + * we take the absolute values, because we want the minus + * sign to appear before the $ */ + int divisor = pow (10, scale); + int dollars = abs (amount / divisor); + int cents = abs (amount % divisor); + + fmt_amount = g_strdup_printf ("%d%s%0*d", + dollars, decimal, scale, cents); + } + + money = g_strdup_printf (amount < 0 ? negative : positive, fmt_amount); + g_free (fmt_amount); + + return money; +} + diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h index de879021e..ac44535b8 100644 --- a/libempathy/empathy-utils.h +++ b/libempathy/empathy-utils.h @@ -117,6 +117,8 @@ gboolean empathy_folks_persona_is_interesting (FolksPersona *persona); gchar * empathy_get_x509_certificate_hostname (gnutls_x509_crt_t cert); +gchar *empathy_format_currency (gint amount, guint scale, const gchar *currency); + /* Copied from wocky/wocky-utils.h */ #define empathy_implement_finish_void(source, tag) \ diff --git a/po/POTFILES.in b/po/POTFILES.in index 12bec0898..7a78f2558 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -116,3 +116,4 @@ src/empathy-debugger.c src/empathy-chat.c src/empathy-notifications-approver.c src/empathy-call-observer.c +libempathy-gtk/empathy-search-bar.c @@ -1,23 +1,23 @@ # translation of empathy.master.po to Español # Copyright (C) 2003 Free Software Foundation # This file is distributed under the same license as the Gossip package. -# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010. # Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011. +# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: empathy.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=empathy&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-04-26 12:21+0000\n" -"PO-Revision-Date: 2011-04-27 12:36+0200\n" -"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" +"product=empathy&keywords=I18N+L10N&component=General\n" +"POT-Creation-Date: 2011-05-09 10:59+0000\n" +"PO-Revision-Date: 2011-05-09 14:23+0200\n" +"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n" "Language-Team: Español <gnome-es-list@gnome.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" #: ../data/empathy.desktop.in.in.h:1 msgid "Chat on Google Talk, Facebook, MSN and many other chat services" @@ -72,7 +72,7 @@ msgstr "Criterio de ordenación de la lista de contactos" #: ../data/org.gnome.Empathy.gschema.xml.in.h:8 msgid "Default directory to select an avatar image from" -msgstr "Directorio predeterminado para seleccionar un avatar" +msgstr "Carpeta predeterminada para seleccionar un avatar" #: ../data/org.gnome.Empathy.gschema.xml.in.h:9 msgid "Disable popup notifications when away" @@ -213,122 +213,126 @@ msgid "Pop up notifications when a contact logs out" msgstr "Mostrar notificaciones emergentes cuando un contacto se desconecta" #: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +msgid "Show Balance in contact list" +msgstr "Mostrar crédito en la lista de contactos" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Show avatars" msgstr "Mostrar avatares" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Show contact list in rooms" msgstr "Mostrar lista de contactos en salas" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Show hint about closing the main window" msgstr "Mostrar consejo sobre cómo cerrar la ventana principal" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Show offline contacts" msgstr "Mostrar contactos no conectados" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Show protocols" msgstr "Mostrar protocolos" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Spell checking languages" msgstr "Idiomas para revisión ortográfica" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "The default folder to save file transfers in." msgstr "La carpeta predeterminada donde guardar los archivos transferidos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "The last directory that an avatar image was chosen from." -msgstr "Último directorio del que fue elegido un avatar." +msgstr "Última carpeta de la que se eligió un avatar." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "The position for the chat window side pane" msgstr "La posición para el panel lateral de la ventana de charla" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "The stored position (in pixels) of the chat window side pane." msgstr "" "La posición almacenada (en píxeles) del panel lateral de la ventana de " "charla." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "The theme that is used to display the conversation in chat windows." msgstr "" "El tema que se usará para mostrar la conversación en las ventanas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Use graphical smileys" msgstr "Usar emoticonos gráficos" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Use notification sounds" msgstr "Usar sonidos de notificación" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "Use theme for chat rooms" msgstr "Usar tema para salas de chat" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "" "Indica si Empathy puede publicar la ubicación del usuario a sus contactos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "Whether Empathy can use the GPS to guess the location." msgstr "Indica si Empathy puede usar el GPS para deducir la ubicación." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "" "Indica si Empathy puede usar la red telefónica móvil para deducir la " "ubicación." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "Whether Empathy can use the network to guess the location." msgstr "Indica si Empathy puede usar la red para deducir la ubicación." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "Whether Empathy has migrated butterfly logs." msgstr "Indica si Empathy ha migrado los registros de butterfly." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "" "Indica si Empathy debe iniciar sesión en sus cuentas automáticamente al " "inicio." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "" "Whether Empathy should go into away mode automatically if the user is idle." msgstr "" "Indica si Empathy debe entrar en modo de ausencia automáticamente si el " "usuario está inactivo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "" "Whether Empathy should reduce the location's accuracy for privacy reasons." msgstr "" "Indica si Empathy debería reducir la precisión de la ubicación por motivos " "de privacidad." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "" "Whether Empathy should use the avatar of the contact as the chat window icon." msgstr "" "Indica si Empathy debería usar el avatar del contacto como el icono de la " "ventana de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "" "Whether WebKit developer tools, such as the Web Inspector, should be enabled." msgstr "" "Indica si las herramientas de desarrollo de WebKit, tales como el Inspector " "web, den activarse." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "" "Whether connectivity managers should be used to automatically disconnect/" "reconnect." @@ -336,78 +340,78 @@ msgstr "" "Indica si se debe usan usar gestores de conectividad para desconectarse/" "reconectarse automáticamente." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "" "Whether to check words typed against the languages you want to check with." msgstr "" "Indica si se deben revisar las palabras tecleadas con respecto a los idiomas " "con los que quiere comprobarlo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether to convert smileys into graphical images in conversations." msgstr "" "Indica si se deben convertir los emoticonos en imágenes gráficas en las " "conversaciones." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "Whether to play a sound to notify of contacts logging into the network." msgstr "" "Indica si se debe reproducir un sonido para notificar los inicios de sesión " "de los contactos en la red." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "" "Whether to play a sound to notify of contacts logging out of the network." msgstr "" "Indica si se debe reproducir un sonido para notificar las finalizaciones de " "sesión de los contactos en la red." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 msgid "Whether to play a sound to notify of events." msgstr "Indica si se debe reproducir un sonido para notificar eventos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 msgid "Whether to play a sound to notify of incoming messages." msgstr "" "Indica si se debe reproducir un sonido para notificar mensajes entrantes." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 msgid "Whether to play a sound to notify of new conversations." msgstr "" "Indica si se debe reproducir un sonido para notificar conversaciones nuevas." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 msgid "Whether to play a sound to notify of outgoing messages." msgstr "" "Indica si se debe reproducir un sonido para notificar mensajes salientes." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 msgid "Whether to play a sound when logging into a network." msgstr "Indica si se debe reproducir un sonido al iniciar sesión en una red." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 msgid "Whether to play a sound when logging out of a network." msgstr "Indica si se debe reproducir un sonido al finalizar sesión en una red." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 msgid "Whether to play sound notifications when away or busy." msgstr "" "Indica si se deben reproducir sonidos de notificaciones cuando se esté " "ausente u ocupado." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 msgid "Whether to show a popup notification when a contact goes offline." msgstr "" "Indica si se deben mostrar las notificaciones emergentes cuando un contacto " "se desconecta." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 msgid "Whether to show a popup notification when a contact goes online." msgstr "" "Indica si se deben mostrar las notificaciones emergentes cuando un contacto " "se conecta." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 msgid "" "Whether to show a popup notification when receiving a new message even if " "the chat is already opened, but not focused." @@ -415,46 +419,50 @@ msgstr "" "Indica si de deben mostrar notificaciones emergentes al recibir un mensaje " "nuevo incluso si la ventana de chat ya está abierta pero no tiene el foco." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 msgid "Whether to show a popup notification when receiving a new message." msgstr "" "Indica si se deben mostrar notificaciones emergentes al recibir un mensaje " "nuevo." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +msgid "Whether to show account balances in the contact list." +msgstr "Indica si se debe mostrar el crédito en la lista de contactos." + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 msgid "" "Whether to show avatars for contacts in the contact list and chat windows." msgstr "" "Indica si se deben mostrar los avatares para los contactos en la lista de " "contactos y ventanas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 msgid "Whether to show contacts that are offline in the contact list." msgstr "" "Indica si se debe mostrar los contactos que están desconectados en la lista " "de contactos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 msgid "Whether to show popup notifications when away or busy." msgstr "" "Indica si se deben mostrar las notificaciones emergentes cuando se esté " "ausente u ocupado." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 msgid "Whether to show protocols for contacts in the contact list." msgstr "" "Indica si se deben mostrar los protocolos para los contactos en la lista de " "contactos." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 msgid "Whether to show the contact list in chat rooms." msgstr "Indica si se debe mostrar la lista de contactos en salas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 msgid "Whether to show the contact list in compact mode." msgstr "Indica si se debe mostrar la lista de contactos en modo compacto." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 msgid "" "Whether to show the message dialog about closing the main window with the " "'x' button in the title bar." @@ -462,11 +470,11 @@ msgstr "" "Indica si se debe mostrar un mensaje de diálogo sobre cómo cerrar la ventana " "principal con el botón «x» en la barra de título." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 msgid "Whether to use the theme for chat rooms." msgstr "Indica si se debe usar el tema para salas de chat." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 msgid "" "Which criterion to use when sorting the contact list. Default is to sort by " "the contact's name with the value \"name\". A value of \"state\" will sort " @@ -482,7 +490,7 @@ msgstr "Gestionar las cuentas de mensajería y Voz IP" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2340 +#: ../src/empathy-accounts-dialog.c:2320 msgid "Messaging and VoIP Accounts" msgstr "Cuentas de mensajería y Voz IP" @@ -530,144 +538,143 @@ msgstr "Error la intentar transferir el archivo" msgid "The other participant is unable to transfer the file" msgstr "El otro participante no puede transferir el archivo" -#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:383 +#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:384 msgid "Unknown reason" msgstr "Razón desconocida" -#: ../libempathy/empathy-utils.c:304 +#: ../libempathy/empathy-utils.c:305 msgid "Available" msgstr "Disponible" -#: ../libempathy/empathy-utils.c:306 +#: ../libempathy/empathy-utils.c:307 msgid "Busy" msgstr "Ocupado" -#: ../libempathy/empathy-utils.c:309 +#: ../libempathy/empathy-utils.c:310 msgid "Away" msgstr "Ausente" -#: ../libempathy/empathy-utils.c:311 +#: ../libempathy/empathy-utils.c:312 msgid "Invisible" msgstr "Invisible" -#: ../libempathy/empathy-utils.c:313 +#: ../libempathy/empathy-utils.c:314 msgid "Offline" msgstr "Desconectado" #. translators: presence type is unknown -#: ../libempathy/empathy-utils.c:316 -#| msgid "Unknown" +#: ../libempathy/empathy-utils.c:317 msgctxt "presence" msgid "Unknown" msgstr "Desconocido" -#: ../libempathy/empathy-utils.c:355 +#: ../libempathy/empathy-utils.c:356 msgid "No reason specified" msgstr "No se especificó ninguna razón" -#: ../libempathy/empathy-utils.c:357 ../libempathy/empathy-utils.c:413 +#: ../libempathy/empathy-utils.c:358 ../libempathy/empathy-utils.c:414 msgid "Status is set to offline" msgstr "El estado se ha establecido a desconectado" -#: ../libempathy/empathy-utils.c:359 ../libempathy/empathy-utils.c:393 +#: ../libempathy/empathy-utils.c:360 ../libempathy/empathy-utils.c:394 msgid "Network error" msgstr "Error de red" -#: ../libempathy/empathy-utils.c:361 ../libempathy/empathy-utils.c:395 +#: ../libempathy/empathy-utils.c:362 ../libempathy/empathy-utils.c:396 msgid "Authentication failed" msgstr "Falló la autenticación" -#: ../libempathy/empathy-utils.c:363 ../libempathy/empathy-utils.c:397 +#: ../libempathy/empathy-utils.c:364 ../libempathy/empathy-utils.c:398 msgid "Encryption error" msgstr "Error de cifrado" -#: ../libempathy/empathy-utils.c:365 +#: ../libempathy/empathy-utils.c:366 msgid "Name in use" msgstr "Nombre en uso" -#: ../libempathy/empathy-utils.c:367 ../libempathy/empathy-utils.c:399 +#: ../libempathy/empathy-utils.c:368 ../libempathy/empathy-utils.c:400 msgid "Certificate not provided" msgstr "No se proporcionó el certificado" -#: ../libempathy/empathy-utils.c:369 ../libempathy/empathy-utils.c:401 +#: ../libempathy/empathy-utils.c:370 ../libempathy/empathy-utils.c:402 msgid "Certificate untrusted" msgstr "Certificado sin confianza" -#: ../libempathy/empathy-utils.c:371 ../libempathy/empathy-utils.c:403 +#: ../libempathy/empathy-utils.c:372 ../libempathy/empathy-utils.c:404 msgid "Certificate expired" msgstr "El certificado ha expirado" -#: ../libempathy/empathy-utils.c:373 ../libempathy/empathy-utils.c:405 +#: ../libempathy/empathy-utils.c:374 ../libempathy/empathy-utils.c:406 msgid "Certificate not activated" msgstr "El certificado no está activado" -#: ../libempathy/empathy-utils.c:375 ../libempathy/empathy-utils.c:407 +#: ../libempathy/empathy-utils.c:376 ../libempathy/empathy-utils.c:408 msgid "Certificate hostname mismatch" msgstr "El nombre del equipo del certificado no coincide" -#: ../libempathy/empathy-utils.c:377 ../libempathy/empathy-utils.c:409 +#: ../libempathy/empathy-utils.c:378 ../libempathy/empathy-utils.c:410 msgid "Certificate fingerprint mismatch" msgstr "La huella del certificado no coincide" -#: ../libempathy/empathy-utils.c:379 ../libempathy/empathy-utils.c:411 +#: ../libempathy/empathy-utils.c:380 ../libempathy/empathy-utils.c:412 msgid "Certificate self-signed" msgstr "Certificado firmado consigo mismo" -#: ../libempathy/empathy-utils.c:381 +#: ../libempathy/empathy-utils.c:382 msgid "Certificate error" msgstr "Error del certificado" -#: ../libempathy/empathy-utils.c:415 +#: ../libempathy/empathy-utils.c:416 msgid "Encryption is not available" msgstr "El cifrado no está disponible" -#: ../libempathy/empathy-utils.c:417 +#: ../libempathy/empathy-utils.c:418 msgid "Certificate is invalid" msgstr "El certificado no es válido" -#: ../libempathy/empathy-utils.c:419 +#: ../libempathy/empathy-utils.c:420 msgid "Connection has been refused" msgstr "Se rechazó la conexión" -#: ../libempathy/empathy-utils.c:421 +#: ../libempathy/empathy-utils.c:422 msgid "Connection can't be established" msgstr "No se pudo establecer la conexión" -#: ../libempathy/empathy-utils.c:423 +#: ../libempathy/empathy-utils.c:424 msgid "Connection has been lost" msgstr "Se perdió la conexión" -#: ../libempathy/empathy-utils.c:425 +#: ../libempathy/empathy-utils.c:426 msgid "This resource is already connected to the server" msgstr "El recurso ya está conectado al servidor" -#: ../libempathy/empathy-utils.c:427 +#: ../libempathy/empathy-utils.c:428 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" "Se ha reemplazado la conexión por una conexión nueva usando el mismo recurso" -#: ../libempathy/empathy-utils.c:430 +#: ../libempathy/empathy-utils.c:431 msgid "The account already exists on the server" msgstr "La cuenta ya existe en el servidor" -#: ../libempathy/empathy-utils.c:432 +#: ../libempathy/empathy-utils.c:433 msgid "Server is currently too busy to handle the connection" msgstr "" "Actualmente el servidor está demasiado ocupado para gestionar la conexión" -#: ../libempathy/empathy-utils.c:434 +#: ../libempathy/empathy-utils.c:435 msgid "Certificate has been revoked" msgstr "Se revocó el certificado" -#: ../libempathy/empathy-utils.c:436 +#: ../libempathy/empathy-utils.c:437 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "El certificado usa un algoritmo de cifrado inseguro o es criptográficamente " "débil" -#: ../libempathy/empathy-utils.c:439 +#: ../libempathy/empathy-utils.c:440 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" @@ -676,20 +683,20 @@ msgstr "" "servidor de certificados exceden los límites impuestos por la biblioteca " "cripotográfica" -#: ../libempathy/empathy-utils.c:602 +#: ../libempathy/empathy-utils.c:603 #: ../libempathy-gtk/empathy-contact-list-store.h:73 msgid "People Nearby" msgstr "Gente cerca" -#: ../libempathy/empathy-utils.c:607 +#: ../libempathy/empathy-utils.c:608 msgid "Yahoo! Japan" msgstr "Yahoo Japón" -#: ../libempathy/empathy-utils.c:636 +#: ../libempathy/empathy-utils.c:637 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:637 +#: ../libempathy/empathy-utils.c:638 msgid "Facebook Chat" msgstr "Chat de Facebook" @@ -812,19 +819,19 @@ msgstr "Ca_ncelar" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2413 +#: ../libempathy-gtk/empathy-account-widget.c:2410 #, c-format msgid "%1$s on %2$s" msgstr "%1$s en %2$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2439 +#: ../libempathy-gtk/empathy-account-widget.c:2436 #, c-format msgid "%s Account" msgstr "Cuenta %s" -#: ../libempathy-gtk/empathy-account-widget.c:2443 +#: ../libempathy-gtk/empathy-account-widget.c:2440 msgid "New account" msgstr "Cuenta nueva" @@ -1252,35 +1259,35 @@ msgstr "Todos los archivos" msgid "Click to enlarge" msgstr "Pulse para agrandar" -#: ../libempathy-gtk/empathy-chat.c:652 +#: ../libempathy-gtk/empathy-chat.c:668 msgid "Failed to open private chat" msgstr "Falló al abrir el chat privado" -#: ../libempathy-gtk/empathy-chat.c:717 +#: ../libempathy-gtk/empathy-chat.c:733 msgid "Topic not supported on this conversation" msgstr "El tema no está soportado en esta conversación" -#: ../libempathy-gtk/empathy-chat.c:723 +#: ../libempathy-gtk/empathy-chat.c:739 msgid "You are not allowed to change the topic" msgstr "No le está permitido cambiar el tema" -#: ../libempathy-gtk/empathy-chat.c:932 +#: ../libempathy-gtk/empathy-chat.c:948 msgid "/clear: clear all messages from the current conversation" msgstr "/clear: limpiar todos los mensajes de la conversación actual" -#: ../libempathy-gtk/empathy-chat.c:935 +#: ../libempathy-gtk/empathy-chat.c:951 msgid "/topic <topic>: set the topic of the current conversation" msgstr "/topic <tema>: establecer el tema para la conversación actual" -#: ../libempathy-gtk/empathy-chat.c:938 +#: ../libempathy-gtk/empathy-chat.c:954 msgid "/join <chat room ID>: join a new chat room" msgstr "/join <id de sala de chat>: unirse a una sala de chat nueva" -#: ../libempathy-gtk/empathy-chat.c:941 +#: ../libempathy-gtk/empathy-chat.c:957 msgid "/j <chat room ID>: join a new chat room" msgstr "/j <id de sala de chat>: unirse a una sala de chat nueva" -#: ../libempathy-gtk/empathy-chat.c:946 +#: ../libempathy-gtk/empathy-chat.c:962 msgid "" "/part [<chat room ID>] [<reason>]: leave the chat room, by default the " "current one" @@ -1288,23 +1295,23 @@ msgstr "" "/part [<ID de la sala de chat>] [<razón>]: abandonar la sala de chat, la " "actual de manera predeterminada" -#: ../libempathy-gtk/empathy-chat.c:951 +#: ../libempathy-gtk/empathy-chat.c:967 msgid "/query <contact ID> [<message>]: open a private chat" msgstr "/query <id del contacto> [<mensaje>]: abrir un chat privado" -#: ../libempathy-gtk/empathy-chat.c:954 +#: ../libempathy-gtk/empathy-chat.c:970 msgid "/msg <contact ID> <message>: open a private chat" msgstr "/msg <id del contacto> <mensaje>: abrir un chat privado" -#: ../libempathy-gtk/empathy-chat.c:957 +#: ../libempathy-gtk/empathy-chat.c:973 msgid "/nick <nickname>: change your nickname on the current server" msgstr "/nick <apodo>: cambiar su apodo en el servidor actual" -#: ../libempathy-gtk/empathy-chat.c:960 +#: ../libempathy-gtk/empathy-chat.c:976 msgid "/me <message>: send an ACTION message to the current conversation" msgstr "/me <mensaje>: enviar un mensaje de ACCIÓN a la conversación actual" -#: ../libempathy-gtk/empathy-chat.c:963 +#: ../libempathy-gtk/empathy-chat.c:979 msgid "" "/say <message>: send <message> to the current conversation. This is used to " "send a message starting with a '/'. For example: \"/say /join is used to " @@ -1314,7 +1321,7 @@ msgstr "" "para enviar un mensaje comenzando por una «/». Por ejemplo: «/say /join se usa " "para unirse a una sala de chat nueva»" -#: ../libempathy-gtk/empathy-chat.c:968 +#: ../libempathy-gtk/empathy-chat.c:984 msgid "" "/help [<command>]: show all supported commands. If <command> is defined, " "show its usage." @@ -1322,104 +1329,113 @@ msgstr "" "/help [<comando>]: mostrar todos los comandos soportados. Si <comando> está " "definido, muestra su uso." -#: ../libempathy-gtk/empathy-chat.c:978 +#: ../libempathy-gtk/empathy-chat.c:994 #, c-format msgid "Usage: %s" msgstr "Uso: %s" -#: ../libempathy-gtk/empathy-chat.c:1017 +#: ../libempathy-gtk/empathy-chat.c:1033 msgid "Unknown command" msgstr "Comando desconocido" -#: ../libempathy-gtk/empathy-chat.c:1143 +#: ../libempathy-gtk/empathy-chat.c:1159 msgid "Unknown command; see /help for the available commands" msgstr "Comando desconocido; consulte /help para ver los comandos disponibles" -#: ../libempathy-gtk/empathy-chat.c:1281 +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. +#: ../libempathy-gtk/empathy-chat.c:1299 +msgid "insufficient balance to send message" +msgstr "no tiene balance suficiente para enviar el mensaje" + +#: ../libempathy-gtk/empathy-chat.c:1301 +msgid "not capable" +msgstr "no es posible" + +#: ../libempathy-gtk/empathy-chat.c:1308 msgid "offline" msgstr "desconectado" -#: ../libempathy-gtk/empathy-chat.c:1284 +#: ../libempathy-gtk/empathy-chat.c:1311 msgid "invalid contact" msgstr "contacto no válido" -#: ../libempathy-gtk/empathy-chat.c:1287 +#: ../libempathy-gtk/empathy-chat.c:1314 msgid "permission denied" msgstr "permiso denegado" -#: ../libempathy-gtk/empathy-chat.c:1290 +#: ../libempathy-gtk/empathy-chat.c:1317 msgid "too long message" msgstr "mensaje demasiado largo" -#: ../libempathy-gtk/empathy-chat.c:1293 +#: ../libempathy-gtk/empathy-chat.c:1320 msgid "not implemented" msgstr "no implementado" -#: ../libempathy-gtk/empathy-chat.c:1297 +#: ../libempathy-gtk/empathy-chat.c:1324 msgid "unknown" msgstr "desconocido" -#: ../libempathy-gtk/empathy-chat.c:1302 +#: ../libempathy-gtk/empathy-chat.c:1330 #, c-format msgid "Error sending message '%s': %s" msgstr "Error al enviar el mensaje «%s»: %s" -#: ../libempathy-gtk/empathy-chat.c:1306 +#: ../libempathy-gtk/empathy-chat.c:1334 #, c-format -#| msgid "Error sending message '%s': %s" msgid "Error sending message: %s" msgstr "Error al enviar el mensaje: %s" -#: ../libempathy-gtk/empathy-chat.c:1367 ../src/empathy-chat-window.c:717 +#: ../libempathy-gtk/empathy-chat.c:1395 ../src/empathy-chat-window.c:760 msgid "Topic:" msgstr "Tema:" -#: ../libempathy-gtk/empathy-chat.c:1379 +#: ../libempathy-gtk/empathy-chat.c:1407 #, c-format msgid "Topic set to: %s" msgstr "El tema se ha establecido a: %s" -#: ../libempathy-gtk/empathy-chat.c:1381 +#: ../libempathy-gtk/empathy-chat.c:1409 msgid "No topic defined" msgstr "No se ha definido el tema" -#: ../libempathy-gtk/empathy-chat.c:1880 +#: ../libempathy-gtk/empathy-chat.c:1916 msgid "(No Suggestions)" msgstr "(Sin sugerencias)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:1948 +#: ../libempathy-gtk/empathy-chat.c:1984 #, c-format msgid "Add '%s' to Dictionary" msgstr "Añadir «%s» al diccionario" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:1985 +#: ../libempathy-gtk/empathy-chat.c:2021 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "Añadir «%s» al diccionario de «%s»" -#: ../libempathy-gtk/empathy-chat.c:2042 +#: ../libempathy-gtk/empathy-chat.c:2078 msgid "Insert Smiley" msgstr "Insertar emoticono" #. send button -#: ../libempathy-gtk/empathy-chat.c:2060 +#: ../libempathy-gtk/empathy-chat.c:2096 #: ../libempathy-gtk/empathy-ui-utils.c:1808 msgid "_Send" msgstr "E_nviar" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2095 +#: ../libempathy-gtk/empathy-chat.c:2131 msgid "_Spelling Suggestions" msgstr "_Sugerencias ortográficas" -#: ../libempathy-gtk/empathy-chat.c:2184 +#: ../libempathy-gtk/empathy-chat.c:2220 msgid "Failed to retrieve recent logs" msgstr "Falló al recibir los registros recientes" -#: ../libempathy-gtk/empathy-chat.c:2295 +#: ../libempathy-gtk/empathy-chat.c:2331 #, c-format msgid "%s has disconnected" msgstr "%s se ha desconectado" @@ -1427,12 +1443,12 @@ msgstr "%s se ha desconectado" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2302 +#: ../libempathy-gtk/empathy-chat.c:2338 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%2$s expulsó a %1$s" -#: ../libempathy-gtk/empathy-chat.c:2305 +#: ../libempathy-gtk/empathy-chat.c:2341 #, c-format msgid "%s was kicked" msgstr "%s fue expulsado" @@ -1440,17 +1456,17 @@ msgstr "%s fue expulsado" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2313 +#: ../libempathy-gtk/empathy-chat.c:2349 #, c-format msgid "%1$s was banned by %2$s" msgstr "%2$s vetó a %1$s" -#: ../libempathy-gtk/empathy-chat.c:2316 +#: ../libempathy-gtk/empathy-chat.c:2352 #, c-format msgid "%s was banned" msgstr "%s fue vetado" -#: ../libempathy-gtk/empathy-chat.c:2320 +#: ../libempathy-gtk/empathy-chat.c:2356 #, c-format msgid "%s has left the room" msgstr "%s ha dejado la sala" @@ -1460,93 +1476,100 @@ msgstr "%s ha dejado la sala" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2329 +#: ../libempathy-gtk/empathy-chat.c:2365 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2354 +#: ../libempathy-gtk/empathy-chat.c:2390 #, c-format msgid "%s has joined the room" msgstr "%s ha entrado en la sala" -#: ../libempathy-gtk/empathy-chat.c:2379 +#: ../libempathy-gtk/empathy-chat.c:2415 #, c-format msgid "%s is now known as %s" msgstr "Ahora %s se llama %s" -#: ../libempathy-gtk/empathy-chat.c:2518 +#: ../libempathy-gtk/empathy-chat.c:2554 #: ../src/empathy-streamed-media-window.c:1957 -#: ../src/empathy-event-manager.c:1126 +#: ../src/empathy-event-manager.c:1116 msgid "Disconnected" msgstr "Desconectado" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3148 +#: ../libempathy-gtk/empathy-chat.c:3202 msgid "Would you like to store this password?" msgstr "¿Quiere guardar esta contraseña?" -#: ../libempathy-gtk/empathy-chat.c:3154 +#: ../libempathy-gtk/empathy-chat.c:3208 msgid "Remember" msgstr "Recordar" -#: ../libempathy-gtk/empathy-chat.c:3164 +#: ../libempathy-gtk/empathy-chat.c:3218 msgid "Not now" msgstr "Ahora no" -#: ../libempathy-gtk/empathy-chat.c:3208 +#: ../libempathy-gtk/empathy-chat.c:3262 msgid "Retry" msgstr "Volver a intentarlo" -#: ../libempathy-gtk/empathy-chat.c:3212 +#: ../libempathy-gtk/empathy-chat.c:3266 msgid "Wrong password; please try again:" msgstr "Contraseña incorrecta; inténtelo de nuevo:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3329 +#: ../libempathy-gtk/empathy-chat.c:3383 msgid "This room is protected by a password:" msgstr "Esta sala está protegida por contraseña:" -#: ../libempathy-gtk/empathy-chat.c:3356 +#: ../libempathy-gtk/empathy-chat.c:3410 msgid "Join" msgstr "Unirse" -#: ../libempathy-gtk/empathy-chat.c:3526 ../src/empathy-event-manager.c:1147 +#: ../libempathy-gtk/empathy-chat.c:3602 ../src/empathy-event-manager.c:1137 msgid "Connected" msgstr "Conectado" -#: ../libempathy-gtk/empathy-chat.c:3579 +#: ../libempathy-gtk/empathy-chat.c:3657 #: ../libempathy-gtk/empathy-log-window.c:650 msgid "Conversation" msgstr "Conversación" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:422 +#. Translators: this string is a something like +#. * "Escher Cat (SMS)" +#: ../libempathy-gtk/empathy-chat.c:3662 +#, c-format +msgid "%s (SMS)" +msgstr "%s (SMS)" + +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:423 msgid "Unknown or invalid identifier" msgstr "Identificador desconocido o no válido" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:425 msgid "Contact blocking temporarily unavailable" msgstr "Bloqueo de contactos no disponible temporalmente" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:427 msgid "Contact blocking unavailable" msgstr "Bloqueo de contactos no disponible" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:429 msgid "Permission Denied" msgstr "Permiso denegado" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:433 msgid "Could not block contact" msgstr "No se pudo bloquear el contacto" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:701 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:702 msgid "Edit Blocked Contacts" msgstr "Editar contactos bloqueados" #. Account and Identifier #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:520 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:521 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2 #: ../libempathy-gtk/empathy-individual-widget.c:1479 #: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 @@ -1557,13 +1580,13 @@ msgstr "Cuenta:" #. Copy Link Address menu item #: ../libempathy-gtk/empathy-chat-text-view.c:320 -#: ../libempathy-gtk/empathy-theme-adium.c:794 +#: ../libempathy-gtk/empathy-theme-adium.c:996 msgid "_Copy Link Address" msgstr "_Copiar la dirección del enlace" #. Open Link menu item #: ../libempathy-gtk/empathy-chat-text-view.c:327 -#: ../libempathy-gtk/empathy-theme-adium.c:801 +#: ../libempathy-gtk/empathy-theme-adium.c:1003 msgid "_Open Link" msgstr "_Abrir enlace" @@ -1633,38 +1656,38 @@ msgid "Favorite People" msgstr "Gente favorita" #: ../libempathy-gtk/empathy-contact-list-view.c:1987 -#: ../libempathy-gtk/empathy-individual-view.c:2343 +#: ../libempathy-gtk/empathy-individual-view.c:2386 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "¿Realmente quiere quitar el grupo «%s»?" #: ../libempathy-gtk/empathy-contact-list-view.c:1989 -#: ../libempathy-gtk/empathy-individual-view.c:2346 +#: ../libempathy-gtk/empathy-individual-view.c:2389 msgid "Removing group" msgstr "Quitando grupo" #. Remove #: ../libempathy-gtk/empathy-contact-list-view.c:2038 #: ../libempathy-gtk/empathy-contact-list-view.c:2115 -#: ../libempathy-gtk/empathy-individual-view.c:2401 -#: ../libempathy-gtk/empathy-individual-view.c:2594 +#: ../libempathy-gtk/empathy-individual-view.c:2444 +#: ../libempathy-gtk/empathy-individual-view.c:2637 #: ../src/empathy-accounts-dialog.ui.h:7 msgid "_Remove" msgstr "_Quitar" #: ../libempathy-gtk/empathy-contact-list-view.c:2068 -#: ../libempathy-gtk/empathy-individual-view.c:2465 +#: ../libempathy-gtk/empathy-individual-view.c:2508 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "¿Realmente quiere quitar el contacto «%s»?" #: ../libempathy-gtk/empathy-contact-list-view.c:2070 -#: ../libempathy-gtk/empathy-individual-view.c:2486 +#: ../libempathy-gtk/empathy-individual-view.c:2529 msgid "Removing contact" msgstr "Quitando el contacto" #: ../libempathy-gtk/empathy-contact-menu.c:219 -#: ../src/empathy-main-window.ui.h:13 +#: ../src/empathy-main-window.ui.h:14 msgid "_Add Contact…" msgstr "_Añadir contacto…" @@ -1673,48 +1696,48 @@ msgid "_Block Contact" msgstr "_Bloquear contacto" #: ../libempathy-gtk/empathy-contact-menu.c:328 -#: ../libempathy-gtk/empathy-individual-menu.c:517 -#: ../src/empathy-main-window.ui.h:15 +#: ../libempathy-gtk/empathy-individual-menu.c:536 +#: ../src/empathy-main-window.ui.h:16 msgid "_Chat" msgstr "_Chat" #: ../libempathy-gtk/empathy-contact-menu.c:359 -#: ../libempathy-gtk/empathy-individual-menu.c:560 +#: ../libempathy-gtk/empathy-individual-menu.c:625 msgctxt "menu item" msgid "_Audio Call" msgstr "Llamada de vo_z" #: ../libempathy-gtk/empathy-contact-menu.c:390 -#: ../libempathy-gtk/empathy-individual-menu.c:602 +#: ../libempathy-gtk/empathy-individual-menu.c:667 msgctxt "menu item" msgid "_Video Call" msgstr "Llamada de _vídeo" #: ../libempathy-gtk/empathy-contact-menu.c:436 -#: ../libempathy-gtk/empathy-individual-menu.c:645 -#: ../src/empathy-main-window.ui.h:26 +#: ../libempathy-gtk/empathy-individual-menu.c:710 +#: ../src/empathy-main-window.ui.h:27 msgid "_Previous Conversations" msgstr "Conversaciones an_teriores" #: ../libempathy-gtk/empathy-contact-menu.c:458 -#: ../libempathy-gtk/empathy-individual-menu.c:686 +#: ../libempathy-gtk/empathy-individual-menu.c:751 msgid "Send File" msgstr "Enviar archivo" #: ../libempathy-gtk/empathy-contact-menu.c:481 -#: ../libempathy-gtk/empathy-individual-menu.c:728 +#: ../libempathy-gtk/empathy-individual-menu.c:793 msgid "Share My Desktop" msgstr "Compartir mi escritorio" #: ../libempathy-gtk/empathy-contact-menu.c:521 -#: ../libempathy-gtk/empathy-contact-widget.c:1761 -#: ../libempathy-gtk/empathy-individual-menu.c:763 +#: ../libempathy-gtk/empathy-contact-widget.c:1751 +#: ../libempathy-gtk/empathy-individual-menu.c:828 #: ../libempathy-gtk/empathy-individual-widget.c:1370 msgid "Favorite" msgstr "Favorita" #: ../libempathy-gtk/empathy-contact-menu.c:550 -#: ../libempathy-gtk/empathy-individual-menu.c:791 +#: ../libempathy-gtk/empathy-individual-menu.c:856 msgid "Infor_mation" msgstr "Infor_mación" @@ -1724,30 +1747,30 @@ msgid "_Edit" msgstr "_Editar" #: ../libempathy-gtk/empathy-contact-menu.c:650 -#: ../libempathy-gtk/empathy-individual-menu.c:972 -#: ../src/empathy-chat-window.c:935 +#: ../libempathy-gtk/empathy-individual-menu.c:1037 +#: ../src/empathy-chat-window.c:986 msgid "Inviting you to this room" msgstr "Invitándolo a esta sala" #: ../libempathy-gtk/empathy-contact-menu.c:681 -#: ../libempathy-gtk/empathy-individual-menu.c:1019 +#: ../libempathy-gtk/empathy-individual-menu.c:1084 msgid "_Invite to Chat Room" msgstr "_Invitar a sala de chat" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:513 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:514 msgid "Search contacts" msgstr "Buscar contactos" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:543 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:544 msgid "Search: " msgstr "Buscar:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:601 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:602 msgid "_Add Contact" msgstr "_Añadir contacto" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:619 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:620 msgid "No contacts found" msgstr "No se encontraron contactos" @@ -1900,8 +1923,8 @@ msgstr "Latitud:" msgid "Altitude:" msgstr "Altitud:" -#: ../libempathy-gtk/empathy-contact-widget.c:871 -#: ../libempathy-gtk/empathy-contact-widget.c:886 +#: ../libempathy-gtk/empathy-contact-widget.c:861 +#: ../libempathy-gtk/empathy-contact-widget.c:876 #: ../libempathy-gtk/empathy-individual-widget.c:616 #: ../libempathy-gtk/empathy-individual-widget.c:631 #: ../src/empathy-preferences.ui.h:12 @@ -1909,23 +1932,23 @@ msgid "Location" msgstr "Ubicación geográfica" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:888 +#: ../libempathy-gtk/empathy-contact-widget.c:878 #: ../libempathy-gtk/empathy-individual-widget.c:633 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:940 +#: ../libempathy-gtk/empathy-contact-widget.c:930 #: ../libempathy-gtk/empathy-individual-widget.c:682 msgid "%B %e, %Y at %R UTC" msgstr "%e de %B de %Y a las %R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1022 +#: ../libempathy-gtk/empathy-contact-widget.c:1012 #: ../libempathy-gtk/empathy-individual-widget.c:917 msgid "Save Avatar" msgstr "Guardar avatar" -#: ../libempathy-gtk/empathy-contact-widget.c:1078 +#: ../libempathy-gtk/empathy-contact-widget.c:1068 #: ../libempathy-gtk/empathy-individual-widget.c:975 msgid "Unable to save avatar" msgstr "No se pudo guardar el avatar" @@ -1995,7 +2018,7 @@ msgid "Select" msgstr "Seleccionar" #: ../libempathy-gtk/empathy-groups-widget.c:408 -#: ../src/empathy-main-window.c:1436 +#: ../src/empathy-main-window.c:1770 msgid "Group" msgstr "Grupo" @@ -2038,23 +2061,29 @@ msgstr "" msgid "%s (%s)" msgstr "%s (%s)" -#: ../libempathy-gtk/empathy-individual-menu.c:839 +#. add an SMS button +#: ../libempathy-gtk/empathy-individual-menu.c:582 +#: ../libempathy-gtk/empathy-new-message-dialog.c:248 +msgid "_SMS" +msgstr "_SMS" + +#: ../libempathy-gtk/empathy-individual-menu.c:904 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "_Editar" #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:865 +#: ../libempathy-gtk/empathy-individual-menu.c:930 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "_Enlazar contactos…" -#: ../libempathy-gtk/empathy-individual-view.c:2308 +#: ../libempathy-gtk/empathy-individual-view.c:2351 msgid "Delete and _Block" msgstr "Eliminar y _bloquear" -#: ../libempathy-gtk/empathy-individual-view.c:2474 +#: ../libempathy-gtk/empathy-individual-view.c:2517 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2186,12 +2215,12 @@ msgid "Contact ID:" msgstr "ID del contacto:" #. add chat button -#: ../libempathy-gtk/empathy-new-message-dialog.c:171 +#: ../libempathy-gtk/empathy-new-message-dialog.c:258 msgid "C_hat" msgstr "C_hat" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-message-dialog.c:181 +#: ../libempathy-gtk/empathy-new-message-dialog.c:277 msgid "New Conversation" msgstr "Conversación nueva" @@ -2333,19 +2362,23 @@ msgstr "Guardar mensaje de estado _nuevo" msgid "Saved Status Messages" msgstr "Mensajes de estado guardados" -#: ../libempathy-gtk/empathy-theme-manager.c:67 +#: ../libempathy-gtk/empathy-theme-adium.c:1462 +msgid "Normal" +msgstr "Normal" + +#: ../libempathy-gtk/empathy-theme-manager.c:68 msgid "Classic" msgstr "Clásico" -#: ../libempathy-gtk/empathy-theme-manager.c:68 +#: ../libempathy-gtk/empathy-theme-manager.c:69 msgid "Simple" msgstr "Simple" -#: ../libempathy-gtk/empathy-theme-manager.c:69 +#: ../libempathy-gtk/empathy-theme-manager.c:70 msgid "Clean" msgstr "Limpio" -#: ../libempathy-gtk/empathy-theme-manager.c:70 +#: ../libempathy-gtk/empathy-theme-manager.c:71 msgid "Blue" msgstr "Azul" @@ -2800,8 +2833,8 @@ msgid "Select the accounts you want to import:" msgstr "Seleccione las cuentas que quiere importar:" #: ../src/empathy-account-assistant.c:813 -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-new-chatroom-dialog.c:555 +#: ../src/empathy-new-chatroom-dialog.c:556 msgid "Yes" msgstr "Sí" @@ -2920,7 +2953,7 @@ msgstr "¿Quiere quitar %s de su equipo?" msgid "This will not remove your account on the server." msgstr "Esto no quitará su cuenta del servidor." -#: ../src/empathy-accounts-dialog.c:1434 +#: ../src/empathy-accounts-dialog.c:1432 msgid "" "You are about to select another account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2929,15 +2962,15 @@ msgstr "" "¿Seguro que quiere continuar?" #. Menu items: to enabled/disable the account -#: ../src/empathy-accounts-dialog.c:1652 +#: ../src/empathy-accounts-dialog.c:1643 msgid "_Enable" msgstr "_Activar" -#: ../src/empathy-accounts-dialog.c:1653 +#: ../src/empathy-accounts-dialog.c:1644 msgid "_Disable" msgstr "_Desactivar" -#: ../src/empathy-accounts-dialog.c:2174 +#: ../src/empathy-accounts-dialog.c:2154 msgid "" "You are about to close the window, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2973,11 +3006,11 @@ msgstr "_Añadir…" msgid "_Import…" msgstr "_Importar…" -#: ../src/empathy-auth-client.c:250 +#: ../src/empathy-auth-client.c:249 msgid " - Empathy authentication client" msgstr ": Cliente de autenticación de Empathy" -#: ../src/empathy-auth-client.c:266 +#: ../src/empathy-auth-client.c:265 msgid "Empathy authentication client" msgstr "Cliente de autenticación de Empathy" @@ -3063,25 +3096,21 @@ msgid "The IP address of the multicast group" msgstr "La dirección IP del grupo multicast" #: ../src/empathy-streamed-media-window.c:1906 -#| msgid "Unknown" msgctxt "encoding video codec" msgid "Unknown" msgstr "Desconocido" #: ../src/empathy-streamed-media-window.c:1909 -#| msgid "Unknown" msgctxt "encoding audio codec" msgid "Unknown" msgstr "Desconocido" #: ../src/empathy-streamed-media-window.c:1912 -#| msgid "Unknown" msgctxt "decoding video codec" msgid "Unknown" msgstr "Desconocido" #: ../src/empathy-streamed-media-window.c:1915 -#| msgid "Unknown" msgctxt "decoding audio codec" msgid "Unknown" msgstr "Desconocido" @@ -3264,39 +3293,50 @@ msgstr "Vista preliminar del vídeo" msgid "_Call" msgstr "_Llamar" -#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:29 +#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:30 msgid "_View" msgstr "_Ver" -#: ../src/empathy-chat-window.c:474 ../src/empathy-chat-window.c:494 +#: ../src/empathy-chat-window.c:480 ../src/empathy-chat-window.c:500 #, c-format msgid "%s (%d unread)" msgid_plural "%s (%d unread)" msgstr[0] "%s (%d sin leer)" msgstr[1] "%s (%d sin leer)" -#: ../src/empathy-chat-window.c:486 +#: ../src/empathy-chat-window.c:492 #, c-format msgid "%s (and %u other)" msgid_plural "%s (and %u others)" msgstr[0] "%s (y otra)" msgstr[1] "%s (y otras %u)" -#: ../src/empathy-chat-window.c:502 +#: ../src/empathy-chat-window.c:508 #, c-format msgid "%s (%d unread from others)" msgid_plural "%s (%d unread from others)" msgstr[0] "%s (%d sin leer de otros)" msgstr[1] "%s (%d sin leer de otros)" -#: ../src/empathy-chat-window.c:511 +#: ../src/empathy-chat-window.c:517 #, c-format msgid "%s (%d unread from all)" msgid_plural "%s (%d unread from all)" msgstr[0] "%s (%d sin leer de todos)" msgstr[1] "%s (%d sin leer de todos)" -#: ../src/empathy-chat-window.c:721 +#: ../src/empathy-chat-window.c:732 +msgid "SMS:" +msgstr "SMS:" + +#: ../src/empathy-chat-window.c:742 +#, c-format +msgid "Sending %d message" +msgid_plural "Sending %d messages" +msgstr[0] "Enviando %d mensaje" +msgstr[1] "Enviando %d mensajes" + +#: ../src/empathy-chat-window.c:764 msgid "Typing a message." msgstr "Tecleando un mensaje." @@ -3332,7 +3372,7 @@ msgstr "Mover pestaña a la _derecha" msgid "Notify for All Messages" msgstr "Notificar para todos los mensajes" -#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:17 +#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:18 msgid "_Contents" msgstr "Índ_ice" @@ -3344,7 +3384,7 @@ msgstr "_Conversación" msgid "_Detach Tab" msgstr "_Desacoplar pestaña" -#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:19 +#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:20 msgid "_Edit" msgstr "_Editar" @@ -3352,7 +3392,7 @@ msgstr "_Editar" msgid "_Favorite Chat Room" msgstr "Sala de chat _favorita" -#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:21 +#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:22 msgid "_Help" msgstr "Ay_uda" @@ -3392,90 +3432,90 @@ msgstr "Autoconectar" msgid "Manage Favorite Rooms" msgstr "Gestionar salas favoritas" -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:504 msgid "Incoming video call" msgstr "Llamada de vídeo entrante" -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:504 msgid "Incoming call" msgstr "Llamada entrante" -#: ../src/empathy-event-manager.c:511 +#: ../src/empathy-event-manager.c:508 #, c-format msgid "%s is video calling you. Do you want to answer?" msgstr "%s le está llamando con vídeo. ¿Quiere responder?" -#: ../src/empathy-event-manager.c:512 +#: ../src/empathy-event-manager.c:509 #, c-format msgid "%s is calling you. Do you want to answer?" msgstr "%s le está llamando. ¿Quiere responder?" -#: ../src/empathy-event-manager.c:515 ../src/empathy-event-manager.c:667 +#: ../src/empathy-event-manager.c:512 ../src/empathy-event-manager.c:661 #, c-format msgid "Incoming call from %s" msgstr "Llamada entrante de %s" -#: ../src/empathy-event-manager.c:540 +#: ../src/empathy-event-manager.c:537 msgid "_Reject" msgstr "_Rechazar" -#: ../src/empathy-event-manager.c:546 +#: ../src/empathy-event-manager.c:543 msgid "_Answer" msgstr "Re_spuesta" -#: ../src/empathy-event-manager.c:667 +#: ../src/empathy-event-manager.c:661 #, c-format msgid "Incoming video call from %s" msgstr "Llamada de vídeo entrante de %s" -#: ../src/empathy-event-manager.c:744 +#: ../src/empathy-event-manager.c:734 msgid "Room invitation" msgstr "Invitación a una sala" -#: ../src/empathy-event-manager.c:746 +#: ../src/empathy-event-manager.c:736 #, c-format msgid "Invitation to join %s" msgstr "Invitación para unirse a %s" -#: ../src/empathy-event-manager.c:753 +#: ../src/empathy-event-manager.c:743 #, c-format msgid "%s is inviting you to join %s" msgstr "%s le está invitando a unirse a %s" -#: ../src/empathy-event-manager.c:761 +#: ../src/empathy-event-manager.c:751 msgid "_Decline" msgstr "_Rechazar" -#: ../src/empathy-event-manager.c:766 +#: ../src/empathy-event-manager.c:756 #: ../src/empathy-new-chatroom-dialog.ui.h:7 msgid "_Join" msgstr "_Unirse" -#: ../src/empathy-event-manager.c:793 +#: ../src/empathy-event-manager.c:783 #, c-format msgid "%s invited you to join %s" msgstr "%s le ha invitado a unirse a %s" -#: ../src/empathy-event-manager.c:799 +#: ../src/empathy-event-manager.c:789 #, c-format msgid "You have been invited to join %s" msgstr "Le han invitado a unirse a %s" -#: ../src/empathy-event-manager.c:850 +#: ../src/empathy-event-manager.c:840 #, c-format msgid "Incoming file transfer from %s" msgstr "Transferencia de archivo entrante de %s" -#: ../src/empathy-event-manager.c:1020 ../src/empathy-main-window.c:370 +#: ../src/empathy-event-manager.c:1010 ../src/empathy-main-window.c:377 msgid "Password required" msgstr "Se requiere una contraseña" -#: ../src/empathy-event-manager.c:1076 +#: ../src/empathy-event-manager.c:1066 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s quiere permiso para ver cuándo está en línea" -#: ../src/empathy-event-manager.c:1080 +#: ../src/empathy-event-manager.c:1070 #, c-format msgid "" "\n" @@ -3561,7 +3601,7 @@ msgstr "«%s» enviado a %s" msgid "File transfer completed" msgstr "Transferencia de archivo completada" -#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:783 +#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:780 msgid "Waiting for the other participant's response" msgstr "Esperando la respuesta del otro participante" @@ -3575,15 +3615,15 @@ msgstr "Comprobando la integridad de «%s»" msgid "Hashing \"%s\"" msgstr "Obteniendo el «hash» de «%s»" -#: ../src/empathy-ft-manager.c:1029 +#: ../src/empathy-ft-manager.c:1026 msgid "%" msgstr "%" -#: ../src/empathy-ft-manager.c:1041 +#: ../src/empathy-ft-manager.c:1038 msgid "File" msgstr "Archivo" -#: ../src/empathy-ft-manager.c:1063 +#: ../src/empathy-ft-manager.c:1060 msgid "Remaining" msgstr "Restantes" @@ -3622,39 +3662,55 @@ msgstr "Protocolo" msgid "Source" msgstr "Origen" -#: ../src/empathy-main-window.c:387 +#: ../src/empathy-main-window.c:394 msgid "Provide Password" msgstr "Escriba su contraseña" -#: ../src/empathy-main-window.c:393 +#: ../src/empathy-main-window.c:400 msgid "Disconnect" msgstr "Desconectar" -#: ../src/empathy-main-window.c:533 +#: ../src/empathy-main-window.c:540 msgid "No match found" msgstr "No se encontró ninguna coincidencia" -#: ../src/empathy-main-window.c:688 +#: ../src/empathy-main-window.c:695 msgid "Reconnect" msgstr "Reconectar" -#: ../src/empathy-main-window.c:694 +#: ../src/empathy-main-window.c:701 msgid "Edit Account" msgstr "Editar cuenta" -#: ../src/empathy-main-window.c:700 +#: ../src/empathy-main-window.c:707 msgid "Close" msgstr "Cerrar" -#: ../src/empathy-main-window.c:1418 +#. Translators: this string will be something like: +#. * Top up My Account ($1.23)..." +#: ../src/empathy-main-window.c:849 +#, c-format +msgid "Top up %s (%s)..." +msgstr "Recargar %s (%s)…" + +#: ../src/empathy-main-window.c:924 +msgid "Top up account credit" +msgstr "Recargar el saldo de la cuenta" + +#. top up button +#: ../src/empathy-main-window.c:999 +msgid "Top Up..." +msgstr "Recargar…" + +#: ../src/empathy-main-window.c:1752 msgid "Contact" msgstr "Contacto" -#: ../src/empathy-main-window.c:1765 +#: ../src/empathy-main-window.c:2101 msgid "Contact List" msgstr "Lista de contactos" -#: ../src/empathy-main-window.c:1881 +#: ../src/empathy-main-window.c:2219 msgid "Show and edit accounts" msgstr "Mostrar y editar cuentas" @@ -3663,86 +3719,90 @@ msgid "Contacts on a _Map" msgstr "Contactos en el _mapa" #: ../src/empathy-main-window.ui.h:2 +msgid "Credit Balance" +msgstr "Crédito" + +#: ../src/empathy-main-window.ui.h:3 msgid "Find in Contact _List" msgstr "_Buscar en la lista de contactos" -#: ../src/empathy-main-window.ui.h:3 +#: ../src/empathy-main-window.ui.h:4 msgid "Join _Favorites" msgstr "Unirse a _favoritas" -#: ../src/empathy-main-window.ui.h:4 +#: ../src/empathy-main-window.ui.h:5 msgid "Manage Favorites" msgstr "Gestionar favoritos" -#: ../src/empathy-main-window.ui.h:5 +#: ../src/empathy-main-window.ui.h:6 msgid "N_ormal Size" msgstr "Tamaño n_ormal" -#: ../src/empathy-main-window.ui.h:6 ../src/empathy-status-icon.ui.h:1 +#: ../src/empathy-main-window.ui.h:7 ../src/empathy-status-icon.ui.h:1 msgid "New _Call…" msgstr "_Llamada nueva…" -#: ../src/empathy-main-window.ui.h:7 +#: ../src/empathy-main-window.ui.h:8 msgid "Normal Size With _Avatars" msgstr "Tamaño normal con _avatares" -#: ../src/empathy-main-window.ui.h:8 +#: ../src/empathy-main-window.ui.h:9 msgid "P_references" msgstr "Prefere_ncias" -#: ../src/empathy-main-window.ui.h:9 +#: ../src/empathy-main-window.ui.h:10 msgid "Show P_rotocols" msgstr "Mostrar p_rotocolos" -#: ../src/empathy-main-window.ui.h:10 +#: ../src/empathy-main-window.ui.h:11 msgid "Sort by _Name" msgstr "Ordenar por _nombre" -#: ../src/empathy-main-window.ui.h:11 +#: ../src/empathy-main-window.ui.h:12 msgid "Sort by _Status" msgstr "Ordenar por es_tado" -#: ../src/empathy-main-window.ui.h:12 +#: ../src/empathy-main-window.ui.h:13 msgid "_Accounts" msgstr "_Cuentas" -#: ../src/empathy-main-window.ui.h:14 +#: ../src/empathy-main-window.ui.h:15 msgid "_Blocked Contacts" msgstr "Contactos _bloqueados" -#: ../src/empathy-main-window.ui.h:16 +#: ../src/empathy-main-window.ui.h:17 msgid "_Compact Size" msgstr "Tamaño _compacto" -#: ../src/empathy-main-window.ui.h:18 +#: ../src/empathy-main-window.ui.h:19 msgid "_Debug" msgstr "_Depurar" -#: ../src/empathy-main-window.ui.h:20 +#: ../src/empathy-main-window.ui.h:21 msgid "_File Transfers" msgstr "_Transferencias de archivos" -#: ../src/empathy-main-window.ui.h:22 +#: ../src/empathy-main-window.ui.h:23 msgid "_Join…" msgstr "_Unirse…" -#: ../src/empathy-main-window.ui.h:23 ../src/empathy-status-icon.ui.h:3 +#: ../src/empathy-main-window.ui.h:24 ../src/empathy-status-icon.ui.h:3 msgid "_New Conversation…" msgstr "Conversación _nueva…" -#: ../src/empathy-main-window.ui.h:24 +#: ../src/empathy-main-window.ui.h:25 msgid "_Offline Contacts" msgstr "Contactos _desconectados" -#: ../src/empathy-main-window.ui.h:25 +#: ../src/empathy-main-window.ui.h:26 msgid "_Personal Information" msgstr "Información p_ersonal" -#: ../src/empathy-main-window.ui.h:27 +#: ../src/empathy-main-window.ui.h:28 msgid "_Room" msgstr "_Sala" -#: ../src/empathy-main-window.ui.h:28 +#: ../src/empathy-main-window.ui.h:29 msgid "_Search for Contacts…" msgstr "_Buscar contactos…" @@ -3756,7 +3816,7 @@ msgstr "Miembros" #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name, #. yes/no, yes/no and a number. -#: ../src/empathy-new-chatroom-dialog.c:560 +#: ../src/empathy-new-chatroom-dialog.c:553 #, c-format msgid "" "%s\n" @@ -3769,16 +3829,16 @@ msgstr "" "Se necesita contraseña: %s\n" "Miembros: %s" -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-new-chatroom-dialog.c:555 +#: ../src/empathy-new-chatroom-dialog.c:556 msgid "No" msgstr "No" -#: ../src/empathy-new-chatroom-dialog.c:591 +#: ../src/empathy-new-chatroom-dialog.c:584 msgid "Could not start room listing" msgstr "No se pudo iniciar la lista de la sala" -#: ../src/empathy-new-chatroom-dialog.c:601 +#: ../src/empathy-new-chatroom-dialog.c:594 msgid "Could not stop room listing" msgstr "No se pudo parar la lista de la sala" @@ -3813,39 +3873,79 @@ msgstr "Lista de salas" msgid "_Room:" msgstr "_Sala:" -#: ../src/empathy-preferences.c:139 +#: ../src/empathy-preferences.c:147 msgid "Message received" msgstr "Mensaje recibido" -#: ../src/empathy-preferences.c:140 +#: ../src/empathy-preferences.c:148 msgid "Message sent" msgstr "Mensaje enviado" -#: ../src/empathy-preferences.c:141 +#: ../src/empathy-preferences.c:149 msgid "New conversation" msgstr "Conversación nueva" -#: ../src/empathy-preferences.c:142 +#: ../src/empathy-preferences.c:150 msgid "Contact goes online" msgstr "El contacto se conecta" -#: ../src/empathy-preferences.c:143 +#: ../src/empathy-preferences.c:151 msgid "Contact goes offline" msgstr "El contacto se desconecta" -#: ../src/empathy-preferences.c:144 +#: ../src/empathy-preferences.c:152 msgid "Account connected" msgstr "Cuenta conectada" -#: ../src/empathy-preferences.c:145 +#: ../src/empathy-preferences.c:153 msgid "Account disconnected" msgstr "Cuenta desconectada" -#: ../src/empathy-preferences.c:446 +#: ../src/empathy-preferences.c:450 msgid "Language" msgstr "Idioma" -#: ../src/empathy-preferences.c:875 +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:700 +msgid "Juliet" +msgstr "Julieta" + +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:707 +msgid "Romeo" +msgstr "Romeo" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:713 +msgid "O Romeo, Romeo, wherefore art thou Romeo?" +msgstr "¡Oh, Romeo, Romeo!, ¿dónde estás que no te veo?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:716 +msgid "Deny thy father and refuse thy name;" +msgstr "Niega a tu padre y rehúsa tu nombre;" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:719 +msgid "Or if thou wilt not, be but sworn my love" +msgstr "O, si no quieres, júrame tan sólo que me amas" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:722 +msgid "And I'll no longer be a Capulet." +msgstr "Y dejaré yo de ser una Capuleto" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:725 +msgid "Shall I hear more, or shall I speak at this?" +msgstr "¿Debo oír más o contestar a lo dicho?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:728 +msgid "Juliet has disconnected" +msgstr "Julieta se ha desconectado" + +#: ../src/empathy-preferences.c:962 msgid "Preferences" msgstr "Preferencias" @@ -3948,43 +4048,47 @@ msgstr "" "diccionario instalado." #: ../src/empathy-preferences.ui.h:24 +msgid "Theme Variant:" +msgstr "Variante del tema:" + +#: ../src/empathy-preferences.ui.h:25 msgid "Themes" msgstr "Temas" -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:26 msgid "_Automatically connect on startup" msgstr "C_onectarse automáticamente al inicio" -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:27 msgid "_Cellphone" msgstr "Teléfono _móvil" -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:28 msgid "_Enable bubble notifications" msgstr "_Activar notificaciones de burbuja" -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:29 msgid "_Enable sound notifications" msgstr "_Activar notificaciones de sonido" -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:30 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:31 msgid "_Network (IP, Wi-Fi)" msgstr "_Red (IP, Wi-Fi)" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:32 msgid "_Open new chats in separate windows" msgstr "_Abrir charlas nuevas en ventanas separadas" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:33 msgid "_Publish location to my contacts" msgstr "_Publicar mi ubicación a mis contactos" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:35 msgid "_Reduce location accuracy" msgstr "_Reducir la precisión de la ubicación" @@ -4135,7 +4239,7 @@ msgstr "Rechazar" msgid "Accept" msgstr "Aceptar" -#: ../src/empathy-notifications-approver.c:223 +#: ../src/empathy-notifications-approver.c:226 msgid "Provide" msgstr "Proporcionar" @@ -4149,6 +4253,10 @@ msgstr "Llamada perdida de %s" msgid "%s just tried to call you, but you were in another call." msgstr "%s intentó llamarle, pero estaba en otra llamada." +#: ../libempathy-gtk/empathy-search-bar.c:282 +msgid "_Match case" +msgstr "_Coincidir con capitalización" + #~ msgid "_Enabled" #~ msgstr "_Activada" @@ -4281,9 +4389,6 @@ msgstr "%s intentó llamarle, pero estaba en otra llamada." #~ msgid "_Import…" #~ msgstr "_Importar…" -#~ msgid "Salut account is created" -#~ msgstr "Se creó la cuenta Salut" - #~ msgid "Whether the Salut account has been created on the first Empathy run." #~ msgstr "" #~ "Indica si la cuenta Salut se ha creado cuando ejecutó por primera vez " @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: empathy-master-po-gl-57278_.merged\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-04-30 23:08+0200\n" -"PO-Revision-Date: 2011-04-30 23:08+0200\n" +"POT-Creation-Date: 2011-05-09 12:52+0200\n" +"PO-Revision-Date: 2011-05-09 12:57+0200\n" "Last-Translator: Fran Diéguez <frandieguez@gnome.org>\n" "Language-Team: Galician <gnome-l10n-gl@gnome.org>\n" "Language: gl\n" @@ -253,113 +253,118 @@ msgstr "Facer emerxer unha notificación cando un contacto sae" # rever #: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +msgid "Show Balance in contact list" +msgstr "Mostrar o balance na lista de contactos" + +# rever +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Show avatars" msgstr "Mostrar os avatares" # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Show contact list in rooms" msgstr "Mostrar a lista de contactos nas salas" # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Show hint about closing the main window" msgstr "Mostrar unha indicación sobre pechar a xanela principal" # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Show offline contacts" msgstr "Mostrar os contactos desconectados" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Show protocols" msgstr "Mostrar os protocolos" # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Spell checking languages" msgstr "Idiomas para a corrección ortográfica" # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "The default folder to save file transfers in." msgstr "" "O cartafol predeterminado en que gardar as transferencias de ficheiros." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "The last directory that an avatar image was chosen from." msgstr "O último cartafol desde onde foi escollida unha imaxe de avatar." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "The position for the chat window side pane" msgstr "A posición do panel lateral da xanela de conversa" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "The stored position (in pixels) of the chat window side pane." msgstr "" "A posición almacenada (en píxeles) do panel lateral da xanela de conversa." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "The theme that is used to display the conversation in chat windows." msgstr "O tema usado para mostrar as conversa nas xanelas de conversa." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Use graphical smileys" msgstr "Usar emoticonas gráficas" # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Use notification sounds" msgstr "Usar sons de notificación" # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "Use theme for chat rooms" msgstr "Usar un tema para as salas de conversa" # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "" "Indica se o Empathy pode ou non publicar a localización do usuario aos seus " "contactos." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "Whether Empathy can use the GPS to guess the location." msgstr "" "Indica se o Empathy pode usar ou non o GPS para adiviñar a localización." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "" "Indica se o Empathy pode ou non usar a rede de telefonía móbil para adiviñar " "a localización." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "Whether Empathy can use the network to guess the location." msgstr "" "Indica se o Empathy pode ou non usar a rede para adiviñar a localización." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "Whether Empathy has migrated butterfly logs." msgstr "Indica se Empathy migrou os seus rexistros de butterfly." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "" "Indica se o Empathy debería iniciar a sesión nas súas contas automaticamente " "ao inicio ou non." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "" "Whether Empathy should go into away mode automatically if the user is idle." msgstr "" @@ -367,7 +372,7 @@ msgstr "" "inactivo." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "" "Whether Empathy should reduce the location's accuracy for privacy reasons." msgstr "" @@ -375,14 +380,14 @@ msgstr "" "motivos de privacidade." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "" "Whether Empathy should use the avatar of the contact as the chat window icon." msgstr "" "Indica se o Empathy debería usar o avatar dos contactos como a icona da " "xanela da conversa ou non." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "" "Whether WebKit developer tools, such as the Web Inspector, should be enabled." msgstr "" @@ -390,7 +395,7 @@ msgstr "" "deberían ser activadas." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "" "Whether connectivity managers should be used to automatically disconnect/" "reconnect." @@ -399,7 +404,7 @@ msgstr "" "desconectarse automaticamente ou non." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "" "Whether to check words typed against the languages you want to check with." msgstr "" @@ -407,80 +412,80 @@ msgstr "" "as quere verificar." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether to convert smileys into graphical images in conversations." msgstr "" "Indica se converter ou non as emoticonas en imaxes gráficas nas conversas." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "Whether to play a sound to notify of contacts logging into the network." msgstr "" "Indica se reproducir ou non un son para notificar que os contactos inician " "unha sesión na rede." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "" "Whether to play a sound to notify of contacts logging out of the network." msgstr "" "Indica se reproducir ou non un son para notificar que os contactos terminan " "unha sesión na rede." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 msgid "Whether to play a sound to notify of events." msgstr "Indica se reproducir ou non un son para notificar os eventos." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 msgid "Whether to play a sound to notify of incoming messages." msgstr "" "Indica se reproducir ou non un son para notificar as mensaxes entrantes." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 msgid "Whether to play a sound to notify of new conversations." msgstr "Indica se reproducir ou non un son para notificar as conversas novas." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 msgid "Whether to play a sound to notify of outgoing messages." msgstr "Indica se reproducir ou non un son para notificar as mensaxes saíntes." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 msgid "Whether to play a sound when logging into a network." msgstr "" "Indica se reproducir ou non un son cando se inicia unha sesión na rede." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 msgid "Whether to play a sound when logging out of a network." msgstr "Indica se reproducir ou non un son cando se sae da sesión na rede." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 msgid "Whether to play sound notifications when away or busy." msgstr "" "Indica se reproducir ou non un son para notificar cando se está ocupado ou " "ausente." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 msgid "Whether to show a popup notification when a contact goes offline." msgstr "" "Indica se mostrar ou non unha notificación emerxente cando un contacto está " "desconectado." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 msgid "Whether to show a popup notification when a contact goes online." msgstr "" "Indica se mostrar ou non unha notificación emerxente cando un contacto está " "conectado." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 msgid "" "Whether to show a popup notification when receiving a new message even if " "the chat is already opened, but not focused." @@ -489,14 +494,19 @@ msgstr "" "mensaxe nova, aínda cando a conversa xa estea aberta mais non estea enfocada." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 msgid "Whether to show a popup notification when receiving a new message." msgstr "" "Indica se mostrar ou non unha notificación emerxente cando se reciba unha " "mensaxe nova." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +msgid "Whether to show account balances in the contact list." +msgstr "Indica se mostrar ou non os balances na lista de contactos." + +# rever +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 msgid "" "Whether to show avatars for contacts in the contact list and chat windows." msgstr "" @@ -504,38 +514,38 @@ msgstr "" "das xanelas de conversa." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 msgid "Whether to show contacts that are offline in the contact list." msgstr "" "Indica se mostrar ou non os contactos que están desconectados na lista de " "contactos." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 msgid "Whether to show popup notifications when away or busy." msgstr "" "Indica se mostrar ou non as notificacións emerxentes cando se está ausente " "ou ocupado." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 msgid "Whether to show protocols for contacts in the contact list." msgstr "" "Indica se mostrar ou non os protocolos para os contacto na lista de " "contactos." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 msgid "Whether to show the contact list in chat rooms." msgstr "Indica se mostrar ou non a lista de contactos nas salas de conversa." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 msgid "Whether to show the contact list in compact mode." msgstr "Indica se mostrar ou non a lista de contactos no modo compacto." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 msgid "" "Whether to show the message dialog about closing the main window with the " "'x' button in the title bar." @@ -544,12 +554,12 @@ msgstr "" "principal co botón 'x' da barra de título." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 msgid "Whether to use the theme for chat rooms." msgstr "Indica se usar ou non o tema para as salas de conversa." # rever -#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 msgid "" "Which criterion to use when sorting the contact list. Default is to sort by " "the contact's name with the value \"name\". A value of \"state\" will sort " @@ -565,7 +575,7 @@ msgstr "Xestionar as contas de mensaxaría e VoIP" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2340 +#: ../src/empathy-accounts-dialog.c:2320 msgid "Messaging and VoIP Accounts" msgstr "Contas de mensaxaría e VoIP" @@ -620,158 +630,158 @@ msgstr "Produciuse un erro ao tentar transferir o ficheiro" msgid "The other participant is unable to transfer the file" msgstr "O outro participante non pode transferir o ficheiro" -#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:383 +#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:384 msgid "Unknown reason" msgstr "Motivo descoñecido" -#: ../libempathy/empathy-utils.c:304 +#: ../libempathy/empathy-utils.c:305 msgid "Available" msgstr "Dispoñíbel" -#: ../libempathy/empathy-utils.c:306 +#: ../libempathy/empathy-utils.c:307 msgid "Busy" msgstr "Ocupado" -#: ../libempathy/empathy-utils.c:309 +#: ../libempathy/empathy-utils.c:310 msgid "Away" msgstr "Ausente" -#: ../libempathy/empathy-utils.c:311 +#: ../libempathy/empathy-utils.c:312 msgid "Invisible" msgstr "Invisíbel" -#: ../libempathy/empathy-utils.c:313 +#: ../libempathy/empathy-utils.c:314 msgid "Offline" msgstr "Desconectado" #. translators: presence type is unknown -#: ../libempathy/empathy-utils.c:316 +#: ../libempathy/empathy-utils.c:317 msgctxt "presence" msgid "Unknown" msgstr "Descoñecido" # rever -#: ../libempathy/empathy-utils.c:355 +#: ../libempathy/empathy-utils.c:356 msgid "No reason specified" msgstr "Non se especificou un motivo" -#: ../libempathy/empathy-utils.c:357 ../libempathy/empathy-utils.c:413 +#: ../libempathy/empathy-utils.c:358 ../libempathy/empathy-utils.c:414 msgid "Status is set to offline" msgstr "O estado está definido a desconectado" # rever -#: ../libempathy/empathy-utils.c:359 ../libempathy/empathy-utils.c:393 +#: ../libempathy/empathy-utils.c:360 ../libempathy/empathy-utils.c:394 msgid "Network error" msgstr "Erro de rede" -#: ../libempathy/empathy-utils.c:361 ../libempathy/empathy-utils.c:395 +#: ../libempathy/empathy-utils.c:362 ../libempathy/empathy-utils.c:396 msgid "Authentication failed" msgstr "Fallou a autenticación" # rever -#: ../libempathy/empathy-utils.c:363 ../libempathy/empathy-utils.c:397 +#: ../libempathy/empathy-utils.c:364 ../libempathy/empathy-utils.c:398 msgid "Encryption error" msgstr "Erro de cifrado" # rever -#: ../libempathy/empathy-utils.c:365 +#: ../libempathy/empathy-utils.c:366 msgid "Name in use" msgstr "Nome en uso" # rever -#: ../libempathy/empathy-utils.c:367 ../libempathy/empathy-utils.c:399 +#: ../libempathy/empathy-utils.c:368 ../libempathy/empathy-utils.c:400 msgid "Certificate not provided" msgstr "Non se proporcionou o certificado" -#: ../libempathy/empathy-utils.c:369 ../libempathy/empathy-utils.c:401 +#: ../libempathy/empathy-utils.c:370 ../libempathy/empathy-utils.c:402 msgid "Certificate untrusted" msgstr "Certificado non fiábel" # rever -#: ../libempathy/empathy-utils.c:371 ../libempathy/empathy-utils.c:403 +#: ../libempathy/empathy-utils.c:372 ../libempathy/empathy-utils.c:404 msgid "Certificate expired" msgstr "O certificado caducou" # rever -#: ../libempathy/empathy-utils.c:373 ../libempathy/empathy-utils.c:405 +#: ../libempathy/empathy-utils.c:374 ../libempathy/empathy-utils.c:406 msgid "Certificate not activated" msgstr "O certificado non está activado" # rever -#: ../libempathy/empathy-utils.c:375 ../libempathy/empathy-utils.c:407 +#: ../libempathy/empathy-utils.c:376 ../libempathy/empathy-utils.c:408 msgid "Certificate hostname mismatch" msgstr "O nome do host do certificado non coincide" # rever -#: ../libempathy/empathy-utils.c:377 ../libempathy/empathy-utils.c:409 +#: ../libempathy/empathy-utils.c:378 ../libempathy/empathy-utils.c:410 msgid "Certificate fingerprint mismatch" msgstr "A impresión dixital do certificado non coincide" # rever -#: ../libempathy/empathy-utils.c:379 ../libempathy/empathy-utils.c:411 +#: ../libempathy/empathy-utils.c:380 ../libempathy/empathy-utils.c:412 msgid "Certificate self-signed" msgstr "Certificado autoasinado" # rever -#: ../libempathy/empathy-utils.c:381 +#: ../libempathy/empathy-utils.c:382 msgid "Certificate error" msgstr "Erro de certificado" -#: ../libempathy/empathy-utils.c:415 +#: ../libempathy/empathy-utils.c:416 msgid "Encryption is not available" msgstr "O cifrado non está dispoñíbel" # rever -#: ../libempathy/empathy-utils.c:417 +#: ../libempathy/empathy-utils.c:418 msgid "Certificate is invalid" msgstr "O certificado non é válido" # rever -#: ../libempathy/empathy-utils.c:419 +#: ../libempathy/empathy-utils.c:420 msgid "Connection has been refused" msgstr "Rexeitouse a conexión" # rever -#: ../libempathy/empathy-utils.c:421 +#: ../libempathy/empathy-utils.c:422 msgid "Connection can't be established" msgstr "Non é posíbel estabelecer a conexión" # rever -#: ../libempathy/empathy-utils.c:423 +#: ../libempathy/empathy-utils.c:424 msgid "Connection has been lost" msgstr "Perdeuse a conexión" -#: ../libempathy/empathy-utils.c:425 +#: ../libempathy/empathy-utils.c:426 msgid "This resource is already connected to the server" msgstr "Este recurso xa está conectado ao servidor" -#: ../libempathy/empathy-utils.c:427 +#: ../libempathy/empathy-utils.c:428 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" "A conexión foi substituída por unha nova conexión empregando o mesmo recurso" -#: ../libempathy/empathy-utils.c:430 +#: ../libempathy/empathy-utils.c:431 msgid "The account already exists on the server" msgstr "Esta conta xa existe no servidor" -#: ../libempathy/empathy-utils.c:432 +#: ../libempathy/empathy-utils.c:433 msgid "Server is currently too busy to handle the connection" msgstr "Nestes intres o servidor está moi ocupado para xesionar a conexión" # rever -#: ../libempathy/empathy-utils.c:434 +#: ../libempathy/empathy-utils.c:435 msgid "Certificate has been revoked" msgstr "O certificado foi revocado" -#: ../libempathy/empathy-utils.c:436 +#: ../libempathy/empathy-utils.c:437 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "O certificado usa un algoritmo de cifrado inseguro ou cripotograficamente " "débil" -#: ../libempathy/empathy-utils.c:439 +#: ../libempathy/empathy-utils.c:440 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" @@ -781,21 +791,21 @@ msgstr "" "criptografía." # rever -#: ../libempathy/empathy-utils.c:602 +#: ../libempathy/empathy-utils.c:603 #: ../libempathy-gtk/empathy-contact-list-store.h:73 msgid "People Nearby" msgstr "Persoas próximas" # rever -#: ../libempathy/empathy-utils.c:607 +#: ../libempathy/empathy-utils.c:608 msgid "Yahoo! Japan" msgstr "Yahoo! Japan" -#: ../libempathy/empathy-utils.c:636 +#: ../libempathy/empathy-utils.c:637 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:637 +#: ../libempathy/empathy-utils.c:638 msgid "Facebook Chat" msgstr "Chat de Facebook" @@ -920,20 +930,20 @@ msgstr "Ca_ncelar" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2413 +#: ../libempathy-gtk/empathy-account-widget.c:2410 #, c-format msgid "%1$s on %2$s" msgstr "%1$s sobre %2$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2439 +#: ../libempathy-gtk/empathy-account-widget.c:2436 #, c-format msgid "%s Account" msgstr "Conta %s" # rever -#: ../libempathy-gtk/empathy-account-widget.c:2443 +#: ../libempathy-gtk/empathy-account-widget.c:2440 msgid "New account" msgstr "Conta nova" @@ -1378,35 +1388,35 @@ msgstr "Todos os ficheiros" msgid "Click to enlarge" msgstr "Prema para ampliar" -#: ../libempathy-gtk/empathy-chat.c:652 +#: ../libempathy-gtk/empathy-chat.c:668 msgid "Failed to open private chat" msgstr "Produciuse un fallo ao abrir un chat privado" -#: ../libempathy-gtk/empathy-chat.c:717 +#: ../libempathy-gtk/empathy-chat.c:733 msgid "Topic not supported on this conversation" msgstr "Ese asunto non se admite nesta conversación" -#: ../libempathy-gtk/empathy-chat.c:723 +#: ../libempathy-gtk/empathy-chat.c:739 msgid "You are not allowed to change the topic" msgstr "Non se lle permite cambiar o asunto" -#: ../libempathy-gtk/empathy-chat.c:932 +#: ../libempathy-gtk/empathy-chat.c:948 msgid "/clear: clear all messages from the current conversation" msgstr "/clear, limpa todas as mensaxes da conversa actual" -#: ../libempathy-gtk/empathy-chat.c:935 +#: ../libempathy-gtk/empathy-chat.c:951 msgid "/topic <topic>: set the topic of the current conversation" msgstr "/topic <topic>, estabelece o asunto da conversa actual" -#: ../libempathy-gtk/empathy-chat.c:938 +#: ../libempathy-gtk/empathy-chat.c:954 msgid "/join <chat room ID>: join a new chat room" msgstr "/join <chatroom id>, unirse a unha nova sala de conversa" -#: ../libempathy-gtk/empathy-chat.c:941 +#: ../libempathy-gtk/empathy-chat.c:957 msgid "/j <chat room ID>: join a new chat room" msgstr "/j <chatroom id>, unirse a unha nova sala de conversa" -#: ../libempathy-gtk/empathy-chat.c:946 +#: ../libempathy-gtk/empathy-chat.c:962 msgid "" "/part [<chat room ID>] [<reason>]: leave the chat room, by default the " "current one" @@ -1414,23 +1424,23 @@ msgstr "" "/part [<chat room ID>] [<reason>]: abandonar a sala de char, por omisión a " "actual" -#: ../libempathy-gtk/empathy-chat.c:951 +#: ../libempathy-gtk/empathy-chat.c:967 msgid "/query <contact ID> [<message>]: open a private chat" msgstr "/query <contact id> [<message>], abre unha conversa privada" -#: ../libempathy-gtk/empathy-chat.c:954 +#: ../libempathy-gtk/empathy-chat.c:970 msgid "/msg <contact ID> <message>: open a private chat" msgstr "/msg <contact id> <message>, abre unha conversa privada" -#: ../libempathy-gtk/empathy-chat.c:957 +#: ../libempathy-gtk/empathy-chat.c:973 msgid "/nick <nickname>: change your nickname on the current server" msgstr "/nick <nickname>, cambia o seu nome de usuario no servidor actual" -#: ../libempathy-gtk/empathy-chat.c:960 +#: ../libempathy-gtk/empathy-chat.c:976 msgid "/me <message>: send an ACTION message to the current conversation" msgstr "/me <message>, envía unha mensaxe ACTION á conversa actual" -#: ../libempathy-gtk/empathy-chat.c:963 +#: ../libempathy-gtk/empathy-chat.c:979 msgid "" "/say <message>: send <message> to the current conversation. This is used to " "send a message starting with a '/'. For example: \"/say /join is used to " @@ -1440,7 +1450,7 @@ msgstr "" "unha mensaxe que comeza cunha '/'. Por exemplo: \"/say /join úsase para " "unirse a unha nova sala de conversa\"" -#: ../libempathy-gtk/empathy-chat.c:968 +#: ../libempathy-gtk/empathy-chat.c:984 msgid "" "/help [<command>]: show all supported commands. If <command> is defined, " "show its usage." @@ -1448,109 +1458,119 @@ msgstr "" "/help [<command>], mostra todas as ordes admitidas. Se <command> está " "definida, mostra o seu uso." -#: ../libempathy-gtk/empathy-chat.c:978 +#: ../libempathy-gtk/empathy-chat.c:994 #, c-format msgid "Usage: %s" msgstr "Uso: %s" -#: ../libempathy-gtk/empathy-chat.c:1017 +#: ../libempathy-gtk/empathy-chat.c:1033 msgid "Unknown command" msgstr "Orde descoñecida" -#: ../libempathy-gtk/empathy-chat.c:1143 +#: ../libempathy-gtk/empathy-chat.c:1159 msgid "Unknown command; see /help for the available commands" msgstr "Orde descoñecida, vexa /help para obter as ordes dispoñíbeis" -#: ../libempathy-gtk/empathy-chat.c:1281 +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. +#: ../libempathy-gtk/empathy-chat.c:1299 +msgid "insufficient balance to send message" +msgstr "non ten balance suficiente para enviar a mensaxe" + +#: ../libempathy-gtk/empathy-chat.c:1301 +msgid "not capable" +msgstr "non é posíbel" + +#: ../libempathy-gtk/empathy-chat.c:1308 msgid "offline" msgstr "desconectado" -#: ../libempathy-gtk/empathy-chat.c:1284 +#: ../libempathy-gtk/empathy-chat.c:1311 msgid "invalid contact" msgstr "contacto incorrecto" -#: ../libempathy-gtk/empathy-chat.c:1287 +#: ../libempathy-gtk/empathy-chat.c:1314 msgid "permission denied" msgstr "permiso denegado" # rever -#: ../libempathy-gtk/empathy-chat.c:1290 +#: ../libempathy-gtk/empathy-chat.c:1317 msgid "too long message" msgstr "a mensaxe é demasiado longa" -#: ../libempathy-gtk/empathy-chat.c:1293 +#: ../libempathy-gtk/empathy-chat.c:1320 msgid "not implemented" msgstr "non implementado" -#: ../libempathy-gtk/empathy-chat.c:1297 +#: ../libempathy-gtk/empathy-chat.c:1324 msgid "unknown" msgstr "descoñecido" # rever -#: ../libempathy-gtk/empathy-chat.c:1302 +#: ../libempathy-gtk/empathy-chat.c:1330 #, c-format msgid "Error sending message '%s': %s" msgstr "Produciuse un erro ao enviar a mensaxe '%s': %s" # rever -#: ../libempathy-gtk/empathy-chat.c:1306 +#: ../libempathy-gtk/empathy-chat.c:1334 #, c-format msgid "Error sending message: %s" msgstr "Produciuse un erro ao enviar a mensaxe: %s" -#: ../libempathy-gtk/empathy-chat.c:1367 ../src/empathy-chat-window.c:717 +#: ../libempathy-gtk/empathy-chat.c:1395 ../src/empathy-chat-window.c:760 msgid "Topic:" msgstr "Asunto:" # rever -#: ../libempathy-gtk/empathy-chat.c:1379 +#: ../libempathy-gtk/empathy-chat.c:1407 #, c-format msgid "Topic set to: %s" msgstr "Cambiouse o asunto a: %s" # rever -#: ../libempathy-gtk/empathy-chat.c:1381 +#: ../libempathy-gtk/empathy-chat.c:1409 msgid "No topic defined" msgstr "Non se definiu un asunto" -#: ../libempathy-gtk/empathy-chat.c:1888 +#: ../libempathy-gtk/empathy-chat.c:1916 msgid "(No Suggestions)" msgstr "(Sen suxestións)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:1956 +#: ../libempathy-gtk/empathy-chat.c:1984 #, c-format msgid "Add '%s' to Dictionary" msgstr "Engadir «%s» ao dicionario" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:1993 +#: ../libempathy-gtk/empathy-chat.c:2021 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "Engadir «%s» ao dicionario de %s" -#: ../libempathy-gtk/empathy-chat.c:2050 +#: ../libempathy-gtk/empathy-chat.c:2078 msgid "Insert Smiley" msgstr "Inserir unha emoticona" #. send button -#: ../libempathy-gtk/empathy-chat.c:2068 +#: ../libempathy-gtk/empathy-chat.c:2096 #: ../libempathy-gtk/empathy-ui-utils.c:1808 msgid "_Send" msgstr "_Enviar" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2103 +#: ../libempathy-gtk/empathy-chat.c:2131 msgid "_Spelling Suggestions" msgstr "Suxestións de _ortografía" -#: ../libempathy-gtk/empathy-chat.c:2192 +#: ../libempathy-gtk/empathy-chat.c:2220 msgid "Failed to retrieve recent logs" msgstr "Produciuse un fallo ao obter os rexistros recentes" # rever -#: ../libempathy-gtk/empathy-chat.c:2303 +#: ../libempathy-gtk/empathy-chat.c:2331 #, c-format msgid "%s has disconnected" msgstr "%s desconectou" @@ -1558,12 +1578,12 @@ msgstr "%s desconectou" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2310 +#: ../libempathy-gtk/empathy-chat.c:2338 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%1$s foi expulsado por %2$s" -#: ../libempathy-gtk/empathy-chat.c:2313 +#: ../libempathy-gtk/empathy-chat.c:2341 #, c-format msgid "%s was kicked" msgstr "%s foi expulsado" @@ -1571,17 +1591,17 @@ msgstr "%s foi expulsado" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2321 +#: ../libempathy-gtk/empathy-chat.c:2349 #, c-format msgid "%1$s was banned by %2$s" msgstr "%1$s foi vetado por %2$s" -#: ../libempathy-gtk/empathy-chat.c:2324 +#: ../libempathy-gtk/empathy-chat.c:2352 #, c-format msgid "%s was banned" msgstr "%s foi excluído" -#: ../libempathy-gtk/empathy-chat.c:2328 +#: ../libempathy-gtk/empathy-chat.c:2356 #, c-format msgid "%s has left the room" msgstr "%s deixou a sala" @@ -1591,95 +1611,102 @@ msgstr "%s deixou a sala" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2337 +#: ../libempathy-gtk/empathy-chat.c:2365 #, c-format msgid " (%s)" msgstr " (%s)" # rever -#: ../libempathy-gtk/empathy-chat.c:2362 +#: ../libempathy-gtk/empathy-chat.c:2390 #, c-format msgid "%s has joined the room" msgstr "%s uniuse á sala" -#: ../libempathy-gtk/empathy-chat.c:2387 +#: ../libempathy-gtk/empathy-chat.c:2415 #, c-format msgid "%s is now known as %s" msgstr "%s agora é coñecido como %s" -#: ../libempathy-gtk/empathy-chat.c:2526 +#: ../libempathy-gtk/empathy-chat.c:2554 #: ../src/empathy-streamed-media-window.c:1957 -#: ../src/empathy-event-manager.c:1126 +#: ../src/empathy-event-manager.c:1116 msgid "Disconnected" msgstr "Desconectado" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3158 +#: ../libempathy-gtk/empathy-chat.c:3202 msgid "Would you like to store this password?" msgstr "Desexa gardar este contrasinal?" -#: ../libempathy-gtk/empathy-chat.c:3164 +#: ../libempathy-gtk/empathy-chat.c:3208 msgid "Remember" msgstr "Lembrar" -#: ../libempathy-gtk/empathy-chat.c:3174 +#: ../libempathy-gtk/empathy-chat.c:3218 msgid "Not now" msgstr "Agora non" -#: ../libempathy-gtk/empathy-chat.c:3218 +#: ../libempathy-gtk/empathy-chat.c:3262 msgid "Retry" msgstr "Reintentar" -#: ../libempathy-gtk/empathy-chat.c:3222 +#: ../libempathy-gtk/empathy-chat.c:3266 msgid "Wrong password; please try again:" msgstr "O contrasinal é incorrecto, ténteo de novo:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3339 +#: ../libempathy-gtk/empathy-chat.c:3383 msgid "This room is protected by a password:" msgstr "Esta sala está protexida por un contrasinal:" -#: ../libempathy-gtk/empathy-chat.c:3366 +#: ../libempathy-gtk/empathy-chat.c:3410 msgid "Join" msgstr "Unirse" -#: ../libempathy-gtk/empathy-chat.c:3536 ../src/empathy-event-manager.c:1147 +#: ../libempathy-gtk/empathy-chat.c:3602 ../src/empathy-event-manager.c:1137 msgid "Connected" msgstr "Conectado" -#: ../libempathy-gtk/empathy-chat.c:3589 +#: ../libempathy-gtk/empathy-chat.c:3657 #: ../libempathy-gtk/empathy-log-window.c:650 msgid "Conversation" msgstr "Conversa" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:422 +#. Translators: this string is a something like +#. * "Escher Cat (SMS)" +#: ../libempathy-gtk/empathy-chat.c:3662 +#, c-format +msgid "%s (SMS)" +msgstr "%s (SMS)" + +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:423 msgid "Unknown or invalid identifier" msgstr "Identificador descoñecido ou non válido" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:425 msgid "Contact blocking temporarily unavailable" msgstr "Bloqueo de contactos non dispoñíbel temporalmente" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:427 msgid "Contact blocking unavailable" msgstr "Bloqueo de contactos non dispoñíbel" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:429 msgid "Permission Denied" msgstr "Permiso denegado" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:433 msgid "Could not block contact" msgstr "Non foi posíbel bloquear o contacto" # rever -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:701 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:702 msgid "Edit Blocked Contacts" msgstr "Editar os contactos bloqueados" #. Account and Identifier #: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:520 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:521 #: ../libempathy-gtk/empathy-contact-widget.ui.h:2 #: ../libempathy-gtk/empathy-individual-widget.c:1479 #: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 @@ -1690,13 +1717,13 @@ msgstr "Conta:" #. Copy Link Address menu item #: ../libempathy-gtk/empathy-chat-text-view.c:320 -#: ../libempathy-gtk/empathy-theme-adium.c:962 +#: ../libempathy-gtk/empathy-theme-adium.c:996 msgid "_Copy Link Address" msgstr "_Copiar o enderezo da ligazón" #. Open Link menu item #: ../libempathy-gtk/empathy-chat-text-view.c:327 -#: ../libempathy-gtk/empathy-theme-adium.c:969 +#: ../libempathy-gtk/empathy-theme-adium.c:1003 msgid "_Open Link" msgstr "_Abrir a ligazón" @@ -1770,41 +1797,41 @@ msgstr "Persoas favoritas" # rever #: ../libempathy-gtk/empathy-contact-list-view.c:1987 -#: ../libempathy-gtk/empathy-individual-view.c:2343 +#: ../libempathy-gtk/empathy-individual-view.c:2386 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "Está seguro de que quere eliminar o grupo '%s'?" # rever #: ../libempathy-gtk/empathy-contact-list-view.c:1989 -#: ../libempathy-gtk/empathy-individual-view.c:2346 +#: ../libempathy-gtk/empathy-individual-view.c:2389 msgid "Removing group" msgstr "Eliminando o grupo" #. Remove #: ../libempathy-gtk/empathy-contact-list-view.c:2038 #: ../libempathy-gtk/empathy-contact-list-view.c:2115 -#: ../libempathy-gtk/empathy-individual-view.c:2401 -#: ../libempathy-gtk/empathy-individual-view.c:2594 +#: ../libempathy-gtk/empathy-individual-view.c:2444 +#: ../libempathy-gtk/empathy-individual-view.c:2637 #: ../src/empathy-accounts-dialog.ui.h:7 msgid "_Remove" msgstr "_Eliminar" # rever #: ../libempathy-gtk/empathy-contact-list-view.c:2068 -#: ../libempathy-gtk/empathy-individual-view.c:2465 +#: ../libempathy-gtk/empathy-individual-view.c:2508 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "Está seguro de quere eliminar o contacto '%s'?" #: ../libempathy-gtk/empathy-contact-list-view.c:2070 -#: ../libempathy-gtk/empathy-individual-view.c:2486 +#: ../libempathy-gtk/empathy-individual-view.c:2529 msgid "Removing contact" msgstr "Eliminando o contacto" # rever #: ../libempathy-gtk/empathy-contact-menu.c:219 -#: ../src/empathy-main-window.ui.h:13 +#: ../src/empathy-main-window.ui.h:14 msgid "_Add Contact…" msgstr "Eng_adir un contacto…" @@ -1814,50 +1841,50 @@ msgid "_Block Contact" msgstr "_Bloquear contacto" #: ../libempathy-gtk/empathy-contact-menu.c:328 -#: ../libempathy-gtk/empathy-individual-menu.c:517 -#: ../src/empathy-main-window.ui.h:15 +#: ../libempathy-gtk/empathy-individual-menu.c:536 +#: ../src/empathy-main-window.ui.h:16 msgid "_Chat" msgstr "_Conversa" #: ../libempathy-gtk/empathy-contact-menu.c:359 -#: ../libempathy-gtk/empathy-individual-menu.c:560 +#: ../libempathy-gtk/empathy-individual-menu.c:625 msgctxt "menu item" msgid "_Audio Call" msgstr "_Audiochamada" #: ../libempathy-gtk/empathy-contact-menu.c:390 -#: ../libempathy-gtk/empathy-individual-menu.c:602 +#: ../libempathy-gtk/empathy-individual-menu.c:667 msgctxt "menu item" msgid "_Video Call" msgstr "_Videochamada" # rever #: ../libempathy-gtk/empathy-contact-menu.c:436 -#: ../libempathy-gtk/empathy-individual-menu.c:645 -#: ../src/empathy-main-window.ui.h:26 +#: ../libempathy-gtk/empathy-individual-menu.c:710 +#: ../src/empathy-main-window.ui.h:27 msgid "_Previous Conversations" msgstr "Conversas _previas" #: ../libempathy-gtk/empathy-contact-menu.c:458 -#: ../libempathy-gtk/empathy-individual-menu.c:686 +#: ../libempathy-gtk/empathy-individual-menu.c:751 msgid "Send File" msgstr "Enviar ficheiro" #: ../libempathy-gtk/empathy-contact-menu.c:481 -#: ../libempathy-gtk/empathy-individual-menu.c:728 +#: ../libempathy-gtk/empathy-individual-menu.c:793 msgid "Share My Desktop" msgstr "Compartir o meu escritorio" # rever #: ../libempathy-gtk/empathy-contact-menu.c:521 -#: ../libempathy-gtk/empathy-contact-widget.c:1761 -#: ../libempathy-gtk/empathy-individual-menu.c:763 +#: ../libempathy-gtk/empathy-contact-widget.c:1751 +#: ../libempathy-gtk/empathy-individual-menu.c:828 #: ../libempathy-gtk/empathy-individual-widget.c:1370 msgid "Favorite" msgstr "Favorito" #: ../libempathy-gtk/empathy-contact-menu.c:550 -#: ../libempathy-gtk/empathy-individual-menu.c:791 +#: ../libempathy-gtk/empathy-individual-menu.c:856 msgid "Infor_mation" msgstr "Infor_mación" @@ -1868,34 +1895,34 @@ msgstr "_Editar" # rever #: ../libempathy-gtk/empathy-contact-menu.c:650 -#: ../libempathy-gtk/empathy-individual-menu.c:972 -#: ../src/empathy-chat-window.c:935 +#: ../libempathy-gtk/empathy-individual-menu.c:1037 +#: ../src/empathy-chat-window.c:986 msgid "Inviting you to this room" msgstr "Invítao a vostede a esta sala" # rever #: ../libempathy-gtk/empathy-contact-menu.c:681 -#: ../libempathy-gtk/empathy-individual-menu.c:1019 +#: ../libempathy-gtk/empathy-individual-menu.c:1084 msgid "_Invite to Chat Room" msgstr "Conv_idar a sala de conversa" # rever #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:513 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:514 msgid "Search contacts" msgstr "Buscar contactos" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:543 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:544 msgid "Search: " msgstr "Buscar:" # rever -#: ../libempathy-gtk/empathy-contact-search-dialog.c:601 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:602 msgid "_Add Contact" msgstr "_Engadir contacto" # rever -#: ../libempathy-gtk/empathy-contact-search-dialog.c:619 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:620 msgid "No contacts found" msgstr "Non se atoparon contactos" @@ -2050,8 +2077,8 @@ msgstr "Latitude:" msgid "Altitude:" msgstr "Altitude:" -#: ../libempathy-gtk/empathy-contact-widget.c:871 -#: ../libempathy-gtk/empathy-contact-widget.c:886 +#: ../libempathy-gtk/empathy-contact-widget.c:861 +#: ../libempathy-gtk/empathy-contact-widget.c:876 #: ../libempathy-gtk/empathy-individual-widget.c:616 #: ../libempathy-gtk/empathy-individual-widget.c:631 #: ../src/empathy-preferences.ui.h:12 @@ -2059,25 +2086,25 @@ msgid "Location" msgstr "Localización" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:888 +#: ../libempathy-gtk/empathy-contact-widget.c:878 #: ../libempathy-gtk/empathy-individual-widget.c:633 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:940 +#: ../libempathy-gtk/empathy-contact-widget.c:930 #: ../libempathy-gtk/empathy-individual-widget.c:682 msgid "%B %e, %Y at %R UTC" msgstr "%B %e, %Y de %R UTC" # rever -#: ../libempathy-gtk/empathy-contact-widget.c:1022 +#: ../libempathy-gtk/empathy-contact-widget.c:1012 #: ../libempathy-gtk/empathy-individual-widget.c:917 msgid "Save Avatar" msgstr "Gardar o avatar" # rever -#: ../libempathy-gtk/empathy-contact-widget.c:1078 +#: ../libempathy-gtk/empathy-contact-widget.c:1068 #: ../libempathy-gtk/empathy-individual-widget.c:975 msgid "Unable to save avatar" msgstr "Non foi posíbel gardar o avatar" @@ -2150,7 +2177,7 @@ msgid "Select" msgstr "Seleccionar" #: ../libempathy-gtk/empathy-groups-widget.c:408 -#: ../src/empathy-main-window.c:1436 +#: ../src/empathy-main-window.c:1770 msgid "Group" msgstr "Grupo" @@ -2193,7 +2220,13 @@ msgstr "Ligaranse entre si os contactos seleccionados na lista da esquerda" msgid "%s (%s)" msgstr "%s (%s)" -#: ../libempathy-gtk/empathy-individual-menu.c:839 +#. add an SMS button +#: ../libempathy-gtk/empathy-individual-menu.c:582 +#: ../libempathy-gtk/empathy-new-message-dialog.c:248 +msgid "_SMS" +msgstr "_SMS" + +#: ../libempathy-gtk/empathy-individual-menu.c:904 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "_Editar" @@ -2201,16 +2234,16 @@ msgstr "_Editar" # rever #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:865 +#: ../libempathy-gtk/empathy-individual-menu.c:930 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "_Ligar contactos…" -#: ../libempathy-gtk/empathy-individual-view.c:2308 +#: ../libempathy-gtk/empathy-individual-view.c:2351 msgid "Delete and _Block" msgstr "Eliminar e _bloquear" -#: ../libempathy-gtk/empathy-individual-view.c:2474 +#: ../libempathy-gtk/empathy-individual-view.c:2517 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2345,12 +2378,12 @@ msgid "Contact ID:" msgstr "ID do contacto:" #. add chat button -#: ../libempathy-gtk/empathy-new-message-dialog.c:171 +#: ../libempathy-gtk/empathy-new-message-dialog.c:258 msgid "C_hat" msgstr "Con_versa" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-message-dialog.c:181 +#: ../libempathy-gtk/empathy-new-message-dialog.c:277 msgid "New Conversation" msgstr "Conversa nova" @@ -2503,19 +2536,23 @@ msgstr "Gardar a mensaxe de estado _novo" msgid "Saved Status Messages" msgstr "Mensaxes de estado gardados" -#: ../libempathy-gtk/empathy-theme-manager.c:67 +#: ../libempathy-gtk/empathy-theme-adium.c:1462 +msgid "Normal" +msgstr "Normal" + +#: ../libempathy-gtk/empathy-theme-manager.c:68 msgid "Classic" msgstr "Clásico" -#: ../libempathy-gtk/empathy-theme-manager.c:68 +#: ../libempathy-gtk/empathy-theme-manager.c:69 msgid "Simple" msgstr "Simple" -#: ../libempathy-gtk/empathy-theme-manager.c:69 +#: ../libempathy-gtk/empathy-theme-manager.c:70 msgid "Clean" msgstr "Limpo" -#: ../libempathy-gtk/empathy-theme-manager.c:70 +#: ../libempathy-gtk/empathy-theme-manager.c:71 msgid "Blue" msgstr "Azul" @@ -2992,8 +3029,8 @@ msgid "Select the accounts you want to import:" msgstr "Seleccione as contas que quere importar:" #: ../src/empathy-account-assistant.c:813 -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-new-chatroom-dialog.c:555 +#: ../src/empathy-new-chatroom-dialog.c:556 msgid "Yes" msgstr "Si" @@ -3116,7 +3153,7 @@ msgid "This will not remove your account on the server." msgstr "Isto non eliminará a súa conta no servidor." # rever -#: ../src/empathy-accounts-dialog.c:1434 +#: ../src/empathy-accounts-dialog.c:1432 msgid "" "You are about to select another account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -3125,16 +3162,16 @@ msgstr "" "Está seguro de que quere proceder?" #. Menu items: to enabled/disable the account -#: ../src/empathy-accounts-dialog.c:1652 +#: ../src/empathy-accounts-dialog.c:1643 msgid "_Enable" msgstr "_Activar" -#: ../src/empathy-accounts-dialog.c:1653 +#: ../src/empathy-accounts-dialog.c:1644 msgid "_Disable" msgstr "_Desactivar" # rever -#: ../src/empathy-accounts-dialog.c:2174 +#: ../src/empathy-accounts-dialog.c:2154 msgid "" "You are about to close the window, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -3174,11 +3211,11 @@ msgid "_Import…" msgstr "_Importar…" # rever -#: ../src/empathy-auth-client.c:250 +#: ../src/empathy-auth-client.c:249 msgid " - Empathy authentication client" msgstr "- Cliente de autenticación Empathy" -#: ../src/empathy-auth-client.c:266 +#: ../src/empathy-auth-client.c:265 msgid "Empathy authentication client" msgstr "Cliente de autenticación Empathy" @@ -3468,40 +3505,52 @@ msgstr "Previsualizar o vídeo" msgid "_Call" msgstr "_Chamar" -#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:29 +#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:30 msgid "_View" msgstr "_Ver" -#: ../src/empathy-chat-window.c:474 ../src/empathy-chat-window.c:494 +#: ../src/empathy-chat-window.c:480 ../src/empathy-chat-window.c:500 #, c-format msgid "%s (%d unread)" msgid_plural "%s (%d unread)" msgstr[0] "%s (%d non lido)" msgstr[1] "%s (%d non lidos)" -#: ../src/empathy-chat-window.c:486 +#: ../src/empathy-chat-window.c:492 #, c-format msgid "%s (and %u other)" msgid_plural "%s (and %u others)" msgstr[0] "%s (e outro %u)" msgstr[1] "%s (e outros %u)" -#: ../src/empathy-chat-window.c:502 +#: ../src/empathy-chat-window.c:508 #, c-format msgid "%s (%d unread from others)" msgid_plural "%s (%d unread from others)" msgstr[0] "%s (%d non lido de outros)" msgstr[1] "%s (%d non lidos de outros)" -#: ../src/empathy-chat-window.c:511 +#: ../src/empathy-chat-window.c:517 #, c-format msgid "%s (%d unread from all)" msgid_plural "%s (%d unread from all)" msgstr[0] "%s (%d non lido de todos)" msgstr[1] "%s (%d non lidos de todos)" +#: ../src/empathy-chat-window.c:732 +msgid "SMS:" +msgstr "SMS:" + +# rever +#: ../src/empathy-chat-window.c:742 +#, c-format +msgid "Sending %d message" +msgid_plural "Sending %d messages" +msgstr[0] "Enviando %d mensaxe." +msgstr[1] "Enviando %d mensaxes." + # rever -#: ../src/empathy-chat-window.c:721 +#: ../src/empathy-chat-window.c:764 msgid "Typing a message." msgstr "Escribindo unha mensaxe." @@ -3538,7 +3587,7 @@ msgstr "Mover a lapela á _dereita" msgid "Notify for All Messages" msgstr "Notificar todas as mensaxes" -#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:17 +#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:18 msgid "_Contents" msgstr "_Contidos" @@ -3550,7 +3599,7 @@ msgstr "_Conversa" msgid "_Detach Tab" msgstr "Des_prender lapela" -#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:19 +#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:20 msgid "_Edit" msgstr "_Editar" @@ -3559,7 +3608,7 @@ msgstr "_Editar" msgid "_Favorite Chat Room" msgstr "Sala de conversa _favorita" -#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:21 +#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:22 msgid "_Help" msgstr "A_xuda" @@ -3604,100 +3653,100 @@ msgid "Manage Favorite Rooms" msgstr "Xestionar as salas preferidas" # rever -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:504 msgid "Incoming video call" msgstr "Chamada de vídeo entrante" # rever -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:504 msgid "Incoming call" msgstr "Chamada entrante" # rever -#: ../src/empathy-event-manager.c:511 +#: ../src/empathy-event-manager.c:508 #, c-format msgid "%s is video calling you. Do you want to answer?" msgstr "%s solicítalle unha videochamada. Desexa responderlle?" # rever -#: ../src/empathy-event-manager.c:512 +#: ../src/empathy-event-manager.c:509 #, c-format msgid "%s is calling you. Do you want to answer?" msgstr "%s estao chamando. Quérelle responder?" -#: ../src/empathy-event-manager.c:515 ../src/empathy-event-manager.c:667 +#: ../src/empathy-event-manager.c:512 ../src/empathy-event-manager.c:661 #, c-format msgid "Incoming call from %s" msgstr "Chamada entrante de %s" -#: ../src/empathy-event-manager.c:540 +#: ../src/empathy-event-manager.c:537 msgid "_Reject" msgstr "_Rexeitar" # rever -#: ../src/empathy-event-manager.c:546 +#: ../src/empathy-event-manager.c:543 msgid "_Answer" msgstr "_Responder" -#: ../src/empathy-event-manager.c:667 +#: ../src/empathy-event-manager.c:661 #, c-format msgid "Incoming video call from %s" msgstr "Videochamada entrante de %s" # rever -#: ../src/empathy-event-manager.c:744 +#: ../src/empathy-event-manager.c:734 msgid "Room invitation" msgstr "Convite para unha sala" # rever -#: ../src/empathy-event-manager.c:746 +#: ../src/empathy-event-manager.c:736 #, c-format msgid "Invitation to join %s" msgstr "Invitación a unirse a %s" # rever -#: ../src/empathy-event-manager.c:753 +#: ../src/empathy-event-manager.c:743 #, c-format msgid "%s is inviting you to join %s" msgstr "%s estao convidando a unirse a %s" -#: ../src/empathy-event-manager.c:761 +#: ../src/empathy-event-manager.c:751 msgid "_Decline" msgstr "_Declinar" -#: ../src/empathy-event-manager.c:766 +#: ../src/empathy-event-manager.c:756 #: ../src/empathy-new-chatroom-dialog.ui.h:7 msgid "_Join" msgstr "_Unirse" # rever -#: ../src/empathy-event-manager.c:793 +#: ../src/empathy-event-manager.c:783 #, c-format msgid "%s invited you to join %s" msgstr "%s convidouno a unirse a %s" # rever -#: ../src/empathy-event-manager.c:799 +#: ../src/empathy-event-manager.c:789 #, c-format msgid "You have been invited to join %s" msgstr "Vostede foi convidado a unirse a %s" # rever -#: ../src/empathy-event-manager.c:850 +#: ../src/empathy-event-manager.c:840 #, c-format msgid "Incoming file transfer from %s" msgstr "Transferencia de ficheiro entrante de %s" -#: ../src/empathy-event-manager.c:1020 ../src/empathy-main-window.c:370 +#: ../src/empathy-event-manager.c:1010 ../src/empathy-main-window.c:377 msgid "Password required" msgstr "Requírese o contrasinal" -#: ../src/empathy-event-manager.c:1076 +#: ../src/empathy-event-manager.c:1066 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s solicita permiso para ver cando vostede está dispoñíbel" -#: ../src/empathy-event-manager.c:1080 +#: ../src/empathy-event-manager.c:1070 #, c-format msgid "" "\n" @@ -3793,7 +3842,7 @@ msgid "File transfer completed" msgstr "Transferencia de ficheiros rematada" # rever -#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:783 +#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:780 msgid "Waiting for the other participant's response" msgstr "Agardando pola resposta do outro participante" @@ -3807,15 +3856,15 @@ msgstr "Verificando a integridade de «%s»" msgid "Hashing \"%s\"" msgstr "Aplicando o hash «%s»" -#: ../src/empathy-ft-manager.c:1029 +#: ../src/empathy-ft-manager.c:1026 msgid "%" msgstr "%" -#: ../src/empathy-ft-manager.c:1041 +#: ../src/empathy-ft-manager.c:1038 msgid "File" msgstr "Ficheiro" -#: ../src/empathy-ft-manager.c:1063 +#: ../src/empathy-ft-manager.c:1060 msgid "Remaining" msgstr "Restantes" @@ -3857,41 +3906,57 @@ msgstr "Protocolo" msgid "Source" msgstr "Orixe" -#: ../src/empathy-main-window.c:387 +#: ../src/empathy-main-window.c:394 msgid "Provide Password" msgstr "Escriba o seu contrasinal" -#: ../src/empathy-main-window.c:393 +#: ../src/empathy-main-window.c:400 msgid "Disconnect" msgstr "Desconectar" # rever -#: ../src/empathy-main-window.c:533 +#: ../src/empathy-main-window.c:540 msgid "No match found" msgstr "Non se atopou ningunha coincidencia." -#: ../src/empathy-main-window.c:688 +#: ../src/empathy-main-window.c:695 msgid "Reconnect" msgstr "Reconectar" -#: ../src/empathy-main-window.c:694 +#: ../src/empathy-main-window.c:701 msgid "Edit Account" msgstr "Editar a conta" -#: ../src/empathy-main-window.c:700 +#: ../src/empathy-main-window.c:707 msgid "Close" msgstr "Pechar" -#: ../src/empathy-main-window.c:1418 +#. Translators: this string will be something like: +#. * Top up My Account ($1.23)..." +#: ../src/empathy-main-window.c:849 +#, c-format +msgid "Top up %s (%s)..." +msgstr "Recargar %s (%s)…" + +#: ../src/empathy-main-window.c:924 +msgid "Top up account credit" +msgstr "Recargar o saldo da conta" + +#. top up button +#: ../src/empathy-main-window.c:999 +msgid "Top Up..." +msgstr "Recargar…" + +#: ../src/empathy-main-window.c:1752 msgid "Contact" msgstr "Contacto" -#: ../src/empathy-main-window.c:1765 +#: ../src/empathy-main-window.c:2101 msgid "Contact List" msgstr "Lista de contactos" # rever -#: ../src/empathy-main-window.c:1881 +#: ../src/empathy-main-window.c:2219 msgid "Show and edit accounts" msgstr "Mostrar e editar contas" @@ -3900,92 +3965,96 @@ msgid "Contacts on a _Map" msgstr "Contactos no mapa" #: ../src/empathy-main-window.ui.h:2 +msgid "Credit Balance" +msgstr "Crédito" + +#: ../src/empathy-main-window.ui.h:3 msgid "Find in Contact _List" msgstr "_Buscar na lista de contactos" # rever -#: ../src/empathy-main-window.ui.h:3 +#: ../src/empathy-main-window.ui.h:4 msgid "Join _Favorites" msgstr "Unirse a pre_feridos" -#: ../src/empathy-main-window.ui.h:4 +#: ../src/empathy-main-window.ui.h:5 msgid "Manage Favorites" msgstr "Xestionar as preferidas" -#: ../src/empathy-main-window.ui.h:5 +#: ../src/empathy-main-window.ui.h:6 msgid "N_ormal Size" msgstr "Tamañ_o normal" -#: ../src/empathy-main-window.ui.h:6 ../src/empathy-status-icon.ui.h:1 +#: ../src/empathy-main-window.ui.h:7 ../src/empathy-status-icon.ui.h:1 msgid "New _Call…" msgstr "Nova _chamada…" -#: ../src/empathy-main-window.ui.h:7 +#: ../src/empathy-main-window.ui.h:8 msgid "Normal Size With _Avatars" msgstr "Tamaño normal con _avatares" -#: ../src/empathy-main-window.ui.h:8 +#: ../src/empathy-main-window.ui.h:9 msgid "P_references" msgstr "P_referencias" -#: ../src/empathy-main-window.ui.h:9 +#: ../src/empathy-main-window.ui.h:10 msgid "Show P_rotocols" msgstr "Mostrar os p_rotocolos" # rever -#: ../src/empathy-main-window.ui.h:10 +#: ../src/empathy-main-window.ui.h:11 msgid "Sort by _Name" msgstr "Ordenar por _nome" # rever -#: ../src/empathy-main-window.ui.h:11 +#: ../src/empathy-main-window.ui.h:12 msgid "Sort by _Status" msgstr "Ordenar por es_tado" -#: ../src/empathy-main-window.ui.h:12 +#: ../src/empathy-main-window.ui.h:13 msgid "_Accounts" msgstr "_Contas" # rever -#: ../src/empathy-main-window.ui.h:14 +#: ../src/empathy-main-window.ui.h:15 msgid "_Blocked Contacts" msgstr "Contactos _bloqueados" -#: ../src/empathy-main-window.ui.h:16 +#: ../src/empathy-main-window.ui.h:17 msgid "_Compact Size" msgstr "Ta_maño compacto" -#: ../src/empathy-main-window.ui.h:18 +#: ../src/empathy-main-window.ui.h:19 msgid "_Debug" msgstr "_Depuración" -#: ../src/empathy-main-window.ui.h:20 +#: ../src/empathy-main-window.ui.h:21 msgid "_File Transfers" msgstr "Trans_ferencias de ficheiros" -#: ../src/empathy-main-window.ui.h:22 +#: ../src/empathy-main-window.ui.h:23 msgid "_Join…" msgstr "_Unirse…" -#: ../src/empathy-main-window.ui.h:23 ../src/empathy-status-icon.ui.h:3 +#: ../src/empathy-main-window.ui.h:24 ../src/empathy-status-icon.ui.h:3 msgid "_New Conversation…" msgstr "_Nova conversa…" # rever -#: ../src/empathy-main-window.ui.h:24 +#: ../src/empathy-main-window.ui.h:25 msgid "_Offline Contacts" msgstr "Mostrar os contactos _desconectados" -#: ../src/empathy-main-window.ui.h:25 +#: ../src/empathy-main-window.ui.h:26 msgid "_Personal Information" msgstr "Información _persoal" -#: ../src/empathy-main-window.ui.h:27 +#: ../src/empathy-main-window.ui.h:28 msgid "_Room" msgstr "Sa_la" # rever -#: ../src/empathy-main-window.ui.h:28 +#: ../src/empathy-main-window.ui.h:29 msgid "_Search for Contacts…" msgstr "_Buscar contactos…" @@ -4000,7 +4069,7 @@ msgstr "Membros" #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name, #. yes/no, yes/no and a number. -#: ../src/empathy-new-chatroom-dialog.c:560 +#: ../src/empathy-new-chatroom-dialog.c:553 #, c-format msgid "" "%s\n" @@ -4013,16 +4082,16 @@ msgstr "" "Contrasinal requirido: %s\n" "Membros: %s" -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-new-chatroom-dialog.c:555 +#: ../src/empathy-new-chatroom-dialog.c:556 msgid "No" msgstr "Non" -#: ../src/empathy-new-chatroom-dialog.c:591 +#: ../src/empathy-new-chatroom-dialog.c:584 msgid "Could not start room listing" msgstr "Non foi posíbel arrincar a lista da sala" -#: ../src/empathy-new-chatroom-dialog.c:601 +#: ../src/empathy-new-chatroom-dialog.c:594 msgid "Could not stop room listing" msgstr "Non foi posíbel deter a lista da sala" @@ -4060,43 +4129,84 @@ msgstr "Lista de _salas" msgid "_Room:" msgstr "Sa_la:" -#: ../src/empathy-preferences.c:139 +#: ../src/empathy-preferences.c:147 msgid "Message received" msgstr "Mensaxe recibida" -#: ../src/empathy-preferences.c:140 +#: ../src/empathy-preferences.c:148 msgid "Message sent" msgstr "Mensaxe enviada" -#: ../src/empathy-preferences.c:141 +#: ../src/empathy-preferences.c:149 msgid "New conversation" msgstr "Conversa nova" # rever -#: ../src/empathy-preferences.c:142 +#: ../src/empathy-preferences.c:150 msgid "Contact goes online" msgstr "O contacto conéctase" # rever -#: ../src/empathy-preferences.c:143 +#: ../src/empathy-preferences.c:151 msgid "Contact goes offline" msgstr "O contacto desconéctase" # rever -#: ../src/empathy-preferences.c:144 +#: ../src/empathy-preferences.c:152 msgid "Account connected" msgstr "Conta conectada" # rever -#: ../src/empathy-preferences.c:145 +#: ../src/empathy-preferences.c:153 msgid "Account disconnected" msgstr "Conta desconectada" -#: ../src/empathy-preferences.c:446 +#: ../src/empathy-preferences.c:450 msgid "Language" msgstr "Idioma" -#: ../src/empathy-preferences.c:875 +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:700 +msgid "Juliet" +msgstr "Xulieta" + +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:707 +msgid "Romeo" +msgstr "Romeo" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:713 +msgid "O Romeo, Romeo, wherefore art thou Romeo?" +msgstr "Oh, Romeo, Romeo!, ¿onde estás que non te vexo?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:716 +msgid "Deny thy father and refuse thy name;" +msgstr "Nega ao teu pai e rexeita o teu nome;" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:719 +msgid "Or if thou wilt not, be but sworn my love" +msgstr "Ou, se non queres, xúrame tan só que me amas" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:722 +msgid "And I'll no longer be a Capulet." +msgstr "Y deixarei eu de ser unha Capuleto." + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:725 +msgid "Shall I hear more, or shall I speak at this?" +msgstr "Debo escoitar máis ou contestar ao dito?" + +# rever +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:728 +msgid "Juliet has disconnected" +msgstr "Xulieta desconectouse" + +#: ../src/empathy-preferences.c:962 msgid "Preferences" msgstr "Preferencias" @@ -4210,48 +4320,52 @@ msgstr "" "dicionario instalado." #: ../src/empathy-preferences.ui.h:24 +msgid "Theme Variant:" +msgstr "Variante do tema:" + +#: ../src/empathy-preferences.ui.h:25 msgid "Themes" msgstr "Temas" # rever -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:26 msgid "_Automatically connect on startup" msgstr "_Conectar automaticamente ao iniciar" # rever -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:27 msgid "_Cellphone" msgstr "_Teléfono móbil" # rever -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:28 msgid "_Enable bubble notifications" msgstr "_Activar as burbullas de notificación" # rever -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:29 msgid "_Enable sound notifications" msgstr "_Activar as notificacións de son" -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:30 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:31 msgid "_Network (IP, Wi-Fi)" msgstr "_Rede (IP, Wifi)" # rever -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:32 msgid "_Open new chats in separate windows" msgstr "A_brir as conversas novas en xanelas separadas" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:33 msgid "_Publish location to my contacts" msgstr "_Publicar a miña localización aos meus contactos" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:35 msgid "_Reduce location accuracy" msgstr "_Reducir a precisión de localización" @@ -4406,7 +4520,7 @@ msgstr "Declinar" msgid "Accept" msgstr "Aceptar" -#: ../src/empathy-notifications-approver.c:223 +#: ../src/empathy-notifications-approver.c:226 msgid "Provide" msgstr "Fornecer" @@ -4420,6 +4534,10 @@ msgstr "Chamada perdida de %s" msgid "%s just tried to call you, but you were in another call." msgstr "%s tentou chamarlle, pero vostede estaba noutra chamada." +#: ../libempathy-gtk/empathy-search-bar.c:282 +msgid "_Match case" +msgstr "_Coincidir con capitalización" + #~ msgid "_Enabled" #~ msgstr "_Activado" @@ -6,10 +6,11 @@ msgid "" msgstr "" "Project-Id-Version: empathy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-04-18 10:45+0300\n" -"PO-Revision-Date: 2011-04-18 10:46+0200\n" +"POT-Creation-Date: 2011-05-13 08:30+0300\n" +"PO-Revision-Date: 2011-05-13 08:35+0200\n" "Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -207,111 +208,115 @@ msgid "Pop up notifications when a contact logs out" msgstr "Pop up notifications when a contact logs out" #: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +msgid "Show Balance in contact list" +msgstr "Show Balance in contact list" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Show avatars" msgstr "Show avatars" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Show contact list in rooms" msgstr "Show contact list in rooms" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Show hint about closing the main window" msgstr "Show hint about closing the main window" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Show offline contacts" msgstr "Show offline contacts" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Show protocols" msgstr "Show protocols" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Spell checking languages" msgstr "Spell checking languages" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "The default folder to save file transfers in." msgstr "The default folder to save file transfers in." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "The last directory that an avatar image was chosen from." msgstr "The last directory that an avatar image was chosen from." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "The position for the chat window side pane" msgstr "The position for the chat window side pane" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "The stored position (in pixels) of the chat window side pane." msgstr "The stored position (in pixels) of the chat window side pane." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "The theme that is used to display the conversation in chat windows." msgstr "The theme that is used to display the conversation in chat windows." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Use graphical smileys" msgstr "Use graphical smileys" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Use notification sounds" msgstr "Use notification sounds" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "Use theme for chat rooms" msgstr "Use theme for chat rooms" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "Whether Empathy can publish the user's location to their contacts." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "Whether Empathy can use the GPS to guess the location." msgstr "Whether Empathy can use the GPS to guess the location." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "Whether Empathy can use the cellular network to guess the location." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "Whether Empathy can use the network to guess the location." msgstr "Whether Empathy can use the network to guess the location." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "Whether Empathy has migrated butterfly logs." msgstr "Whether Empathy has migrated butterfly logs." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "" "Whether Empathy should automatically log into your accounts on startup." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "" "Whether Empathy should go into away mode automatically if the user is idle." msgstr "" "Whether Empathy should go into away mode automatically if the user is idle." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "" "Whether Empathy should reduce the location's accuracy for privacy reasons." msgstr "" "Whether Empathy should reduce the location's accuracy for privacy reasons." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "" "Whether Empathy should use the avatar of the contact as the chat window icon." msgstr "" "Whether Empathy should use the avatar of the contact as the chat window icon." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "" "Whether WebKit developer tools, such as the Web Inspector, should be enabled." msgstr "" "Whether WebKit developer tools, such as the Web Inspector, should be enabled." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "" "Whether connectivity managers should be used to automatically disconnect/" "reconnect." @@ -319,64 +324,64 @@ msgstr "" "Whether connectivity managers should be used to automatically disconnect/" "reconnect." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "" "Whether to check words typed against the languages you want to check with." msgstr "" "Whether to check words typed against the languages you want to check with." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether to convert smileys into graphical images in conversations." msgstr "Whether to convert smileys into graphical images in conversations." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "Whether to play a sound to notify of contacts logging into the network." msgstr "" "Whether to play a sound to notify of contacts logging into the network." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "" "Whether to play a sound to notify of contacts logging out of the network." msgstr "" "Whether to play a sound to notify of contacts logging out of the network." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 msgid "Whether to play a sound to notify of events." msgstr "Whether to play a sound to notify of events." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 msgid "Whether to play a sound to notify of incoming messages." msgstr "Whether to play a sound to notify of incoming messages." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 msgid "Whether to play a sound to notify of new conversations." msgstr "Whether to play a sound to notify of new conversations." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 msgid "Whether to play a sound to notify of outgoing messages." msgstr "Whether to play a sound to notify of outgoing messages." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 msgid "Whether to play a sound when logging into a network." msgstr "Whether to play a sound when logging into a network." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 msgid "Whether to play a sound when logging out of a network." msgstr "Whether to play a sound when logging out of a network." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 msgid "Whether to play sound notifications when away or busy." msgstr "Whether to play sound notifications when away or busy." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 msgid "Whether to show a popup notification when a contact goes offline." msgstr "Whether to show a popup notification when a contact goes offline." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 msgid "Whether to show a popup notification when a contact goes online." msgstr "Whether to show a popup notification when a contact goes online." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 msgid "" "Whether to show a popup notification when receiving a new message even if " "the chat is already opened, but not focused." @@ -384,37 +389,41 @@ msgstr "" "Whether to show a popup notification when receiving a new message even if " "the chat is already opened, but not focused." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 msgid "Whether to show a popup notification when receiving a new message." msgstr "Whether to show a popup notification when receiving a new message." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +msgid "Whether to show account balances in the contact list." +msgstr "Whether to show account balances in the contact list." + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 msgid "" "Whether to show avatars for contacts in the contact list and chat windows." msgstr "" "Whether to show avatars for contacts in the contact list and chat windows." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 msgid "Whether to show contacts that are offline in the contact list." msgstr "Whether to show contacts that are offline in the contact list." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 msgid "Whether to show popup notifications when away or busy." msgstr "Whether to show popup notifications when away or busy." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 msgid "Whether to show protocols for contacts in the contact list." msgstr "Whether to show protocols for contacts in the contact list." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 msgid "Whether to show the contact list in chat rooms." msgstr "Whether to show the contact list in chat rooms." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 msgid "Whether to show the contact list in compact mode." msgstr "Whether to show the contact list in compact mode." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 msgid "" "Whether to show the message dialog about closing the main window with the " "'x' button in the title bar." @@ -422,11 +431,11 @@ msgstr "" "Whether to show the message dialog about closing the main window with the " "'x' button in the title bar." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 msgid "Whether to use the theme for chat rooms." msgstr "Whether to use the theme for chat rooms." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 msgid "" "Which criterion to use when sorting the contact list. Default is to sort by " "the contact's name with the value \"name\". A value of \"state\" will sort " @@ -442,7 +451,7 @@ msgstr "ניהול חשבונות התכתבות ו־VoIP" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2269 +#: ../src/empathy-accounts-dialog.c:2320 msgid "Messaging and VoIP Accounts" msgstr "חשבונות התכתבות ו־VoIP" @@ -490,148 +499,140 @@ msgstr "התרחשה שגיאה בזמן ניסיון העברת הקובץ" msgid "The other participant is unable to transfer the file" msgstr "המשתתף האחר לא יכול להעביר את הקובץ" -#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:383 +#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:384 msgid "Unknown reason" msgstr "סיבה לא ידועה" -#: ../libempathy/empathy-utils.c:304 +#: ../libempathy/empathy-utils.c:305 msgid "Available" msgstr "זמין" -#: ../libempathy/empathy-utils.c:306 +#: ../libempathy/empathy-utils.c:307 msgid "Busy" msgstr "עסוק" -#: ../libempathy/empathy-utils.c:309 +#: ../libempathy/empathy-utils.c:310 msgid "Away" msgstr "מרוחק" -#: ../libempathy/empathy-utils.c:311 +#: ../libempathy/empathy-utils.c:312 msgid "Invisible" msgstr "בלתי נראה" -#: ../libempathy/empathy-utils.c:313 +#: ../libempathy/empathy-utils.c:314 msgid "Offline" msgstr "לא מחובר" #. translators: presence type is unknown -#. translators: encoding video codec is unknown -#. translators: encoding audio codec is unknown -#. translators: decoding video codec is unknown -#. translators: decoding audio codec is unknown -#: ../libempathy/empathy-utils.c:316 -#: ../src/empathy-streamed-media-window.c:1905 -#: ../src/empathy-streamed-media-window.c:1907 -#: ../src/empathy-streamed-media-window.c:1909 -#: ../src/empathy-streamed-media-window.c:1911 -#: ../src/empathy-call-window.ui.h:18 +#: ../libempathy/empathy-utils.c:317 +msgctxt "presence" msgid "Unknown" msgstr "לא ידוע" -#: ../libempathy/empathy-utils.c:355 +#: ../libempathy/empathy-utils.c:356 msgid "No reason specified" msgstr "לא צויינה סיבה" -#: ../libempathy/empathy-utils.c:357 ../libempathy/empathy-utils.c:413 +#: ../libempathy/empathy-utils.c:358 ../libempathy/empathy-utils.c:414 msgid "Status is set to offline" msgstr "המצב מוגדר כמנותק" -#: ../libempathy/empathy-utils.c:359 ../libempathy/empathy-utils.c:393 +#: ../libempathy/empathy-utils.c:360 ../libempathy/empathy-utils.c:394 msgid "Network error" msgstr "שגיאת רשת" -#: ../libempathy/empathy-utils.c:361 ../libempathy/empathy-utils.c:395 +#: ../libempathy/empathy-utils.c:362 ../libempathy/empathy-utils.c:396 msgid "Authentication failed" msgstr "האימות נכשל" -#: ../libempathy/empathy-utils.c:363 ../libempathy/empathy-utils.c:397 +#: ../libempathy/empathy-utils.c:364 ../libempathy/empathy-utils.c:398 msgid "Encryption error" msgstr "שגיאת הצפנה" -#: ../libempathy/empathy-utils.c:365 +#: ../libempathy/empathy-utils.c:366 msgid "Name in use" msgstr "השם בשימוש" -#: ../libempathy/empathy-utils.c:367 ../libempathy/empathy-utils.c:399 +#: ../libempathy/empathy-utils.c:368 ../libempathy/empathy-utils.c:400 msgid "Certificate not provided" msgstr "לא סופקה תעודה" -#: ../libempathy/empathy-utils.c:369 ../libempathy/empathy-utils.c:401 +#: ../libempathy/empathy-utils.c:370 ../libempathy/empathy-utils.c:402 msgid "Certificate untrusted" msgstr "התעודה אינה מאובטחת" -#: ../libempathy/empathy-utils.c:371 ../libempathy/empathy-utils.c:403 +#: ../libempathy/empathy-utils.c:372 ../libempathy/empathy-utils.c:404 msgid "Certificate expired" msgstr "התעודה לא תקפה" -#: ../libempathy/empathy-utils.c:373 ../libempathy/empathy-utils.c:405 +#: ../libempathy/empathy-utils.c:374 ../libempathy/empathy-utils.c:406 msgid "Certificate not activated" msgstr "התעודה אינה פעילה" -#: ../libempathy/empathy-utils.c:375 ../libempathy/empathy-utils.c:407 +#: ../libempathy/empathy-utils.c:376 ../libempathy/empathy-utils.c:408 msgid "Certificate hostname mismatch" msgstr "שם המארח בתעודה לא תואם" -#: ../libempathy/empathy-utils.c:377 ../libempathy/empathy-utils.c:409 +#: ../libempathy/empathy-utils.c:378 ../libempathy/empathy-utils.c:410 msgid "Certificate fingerprint mismatch" msgstr "טביעת האצבע של התעודה אינה תואמת" -#: ../libempathy/empathy-utils.c:379 ../libempathy/empathy-utils.c:411 +#: ../libempathy/empathy-utils.c:380 ../libempathy/empathy-utils.c:412 msgid "Certificate self-signed" msgstr "תעודה בחתימה עצמית" -#: ../libempathy/empathy-utils.c:381 +#: ../libempathy/empathy-utils.c:382 msgid "Certificate error" msgstr "שגיאת תעודה" -#: ../libempathy/empathy-utils.c:415 +#: ../libempathy/empathy-utils.c:416 msgid "Encryption is not available" msgstr "אין הצפנה זמינה" -#: ../libempathy/empathy-utils.c:417 +#: ../libempathy/empathy-utils.c:418 msgid "Certificate is invalid" msgstr "התעודה שגויה" -#: ../libempathy/empathy-utils.c:419 +#: ../libempathy/empathy-utils.c:420 msgid "Connection has been refused" msgstr "החיבור נתקל בסירוב" -#: ../libempathy/empathy-utils.c:421 +#: ../libempathy/empathy-utils.c:422 msgid "Connection can't be established" msgstr "לא ניתן לקיים את החיבור" -#: ../libempathy/empathy-utils.c:423 +#: ../libempathy/empathy-utils.c:424 msgid "Connection has been lost" msgstr "החיבור נקטע" -#: ../libempathy/empathy-utils.c:425 +#: ../libempathy/empathy-utils.c:426 msgid "This resource is already connected to the server" msgstr "המשאב כבר מחובר לשרת" -#: ../libempathy/empathy-utils.c:427 +#: ../libempathy/empathy-utils.c:428 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב" -#: ../libempathy/empathy-utils.c:430 +#: ../libempathy/empathy-utils.c:431 msgid "The account already exists on the server" msgstr "החשבון כבר קיים בשרת" -#: ../libempathy/empathy-utils.c:432 +#: ../libempathy/empathy-utils.c:433 msgid "Server is currently too busy to handle the connection" msgstr "השרת עסוק מכדי לטפל בחיבור" -#: ../libempathy/empathy-utils.c:434 +#: ../libempathy/empathy-utils.c:435 msgid "Certificate has been revoked" msgstr "התעודה נשללה" -#: ../libempathy/empathy-utils.c:436 +#: ../libempathy/empathy-utils.c:437 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "התעודה משתמשת באלגוריתם הצפנה בלתי מאובטח או שהוא חלש מבחינה קריפטוגרפית" -#: ../libempathy/empathy-utils.c:439 +#: ../libempathy/empathy-utils.c:440 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" @@ -639,66 +640,66 @@ msgstr "" "אורך אישור האבטחה של השרת או עומק מחרוזת אישור האבטחה של השרת חורגים " "מהמגבלות שהוצבו על ידי ספריית ההצפנה" -#: ../libempathy/empathy-utils.c:602 +#: ../libempathy/empathy-utils.c:603 #: ../libempathy-gtk/empathy-contact-list-store.h:73 msgid "People Nearby" msgstr "אנשים בקרבתי" -#: ../libempathy/empathy-utils.c:607 +#: ../libempathy/empathy-utils.c:608 msgid "Yahoo! Japan" msgstr "Yahoo! יפן" -#: ../libempathy/empathy-utils.c:636 +#: ../libempathy/empathy-utils.c:637 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:637 +#: ../libempathy/empathy-utils.c:638 msgid "Facebook Chat" msgstr "צ׳אט Facebook" -#: ../libempathy/empathy-time.c:137 +#: ../libempathy/empathy-time.c:100 #, c-format msgid "%d second ago" msgid_plural "%d seconds ago" msgstr[0] "לפני שנייה" msgstr[1] "לפני %d שניות" -#: ../libempathy/empathy-time.c:142 +#: ../libempathy/empathy-time.c:105 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "לפני דקה" msgstr[1] "לפני %d דקות" -#: ../libempathy/empathy-time.c:147 +#: ../libempathy/empathy-time.c:110 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "לפני שעה" msgstr[1] "לפני %d שעות" -#: ../libempathy/empathy-time.c:152 +#: ../libempathy/empathy-time.c:115 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "לפני יום" msgstr[1] "לפני %d ימים" -#: ../libempathy/empathy-time.c:157 +#: ../libempathy/empathy-time.c:120 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "לפני שבוע" msgstr[1] "לפני %d שבועות" -#: ../libempathy/empathy-time.c:162 +#: ../libempathy/empathy-time.c:125 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "לפני חודש" msgstr[1] "לפני %d חודשים" -#: ../libempathy/empathy-time.c:167 +#: ../libempathy/empathy-time.c:130 msgid "in the future" msgstr "בעתיד" @@ -706,85 +707,67 @@ msgstr "בעתיד" msgid "All" msgstr "הכול" -#: ../libempathy-gtk/empathy-account-widget.c:682 +#: ../libempathy-gtk/empathy-account-widget.c:678 #: ../libempathy-gtk/empathy-log-window.c:643 #: ../src/empathy-import-widget.c:321 msgid "Account" msgstr "חשבון" -#: ../libempathy-gtk/empathy-account-widget.c:683 +#: ../libempathy-gtk/empathy-account-widget.c:679 msgid "Password" msgstr "ססמה" -#: ../libempathy-gtk/empathy-account-widget.c:684 +#: ../libempathy-gtk/empathy-account-widget.c:680 #: ../libempathy-gtk/empathy-irc-network-dialog.c:507 msgid "Server" msgstr "שרת" -#: ../libempathy-gtk/empathy-account-widget.c:685 +#: ../libempathy-gtk/empathy-account-widget.c:681 #: ../libempathy-gtk/empathy-irc-network-dialog.c:522 msgid "Port" msgstr "פתחה" -#: ../libempathy-gtk/empathy-account-widget.c:757 -#: ../libempathy-gtk/empathy-account-widget.c:814 +#: ../libempathy-gtk/empathy-account-widget.c:753 +#: ../libempathy-gtk/empathy-account-widget.c:810 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1166 +#: ../libempathy-gtk/empathy-account-widget.c:1151 #, c-format msgid "The account %s is edited via My Web Accounts." msgstr "החשבון %s נערך דרך החשבונות המקוונים שלי." -#: ../libempathy-gtk/empathy-account-widget.c:1172 +#: ../libempathy-gtk/empathy-account-widget.c:1157 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "לא ניתן לערוך את החשבון %s ב־Empathy." -#: ../libempathy-gtk/empathy-account-widget.c:1192 +#: ../libempathy-gtk/empathy-account-widget.c:1177 msgid "Launch My Web Accounts" msgstr "טעינת החשבונות המקוונים שלי" -#: ../libempathy-gtk/empathy-account-widget.c:1530 +#: ../libempathy-gtk/empathy-account-widget.c:1515 msgid "Username:" msgstr "ש_ם משתמש:" -#: ../libempathy-gtk/empathy-account-widget.c:1897 +#: ../libempathy-gtk/empathy-account-widget.c:1833 msgid "A_pply" msgstr "ה_חלה" -#: ../libempathy-gtk/empathy-account-widget.c:1927 +#: ../libempathy-gtk/empathy-account-widget.c:1863 msgid "L_og in" msgstr "_כניסה" -#. Account and Identifier -#: ../libempathy-gtk/empathy-account-widget.c:1993 -#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:520 -#: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1481 -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 -#: ../src/empathy-chatrooms-window.ui.h:1 -#: ../src/empathy-new-chatroom-dialog.ui.h:1 -msgid "Account:" -msgstr "חשבון:" - -#. translators: this is the label of a checkbox used to enable/disable IM -#. * accounts -#: ../libempathy-gtk/empathy-account-widget.c:2006 -msgid "_Enabled" -msgstr "מו_פעל" - -#: ../libempathy-gtk/empathy-account-widget.c:2071 +#: ../libempathy-gtk/empathy-account-widget.c:1937 msgid "This account already exists on the server" msgstr "חשבון זה כבר קיים על השרת" -#: ../libempathy-gtk/empathy-account-widget.c:2074 +#: ../libempathy-gtk/empathy-account-widget.c:1940 msgid "Create a new account on the server" msgstr "יצירת חשבון חדש על השרת" -#: ../libempathy-gtk/empathy-account-widget.c:2266 +#: ../libempathy-gtk/empathy-account-widget.c:2132 msgid "Ca_ncel" msgstr "_ביטול" @@ -793,19 +776,19 @@ msgstr "_ביטול" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2563 +#: ../libempathy-gtk/empathy-account-widget.c:2410 #, c-format msgid "%1$s on %2$s" msgstr "%1$s על גבי %2$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2589 +#: ../libempathy-gtk/empathy-account-widget.c:2436 #, c-format msgid "%s Account" msgstr "חשבון %s" -#: ../libempathy-gtk/empathy-account-widget.c:2593 +#: ../libempathy-gtk/empathy-account-widget.c:2440 msgid "New account" msgstr "חשבון חדש" @@ -1233,57 +1216,57 @@ msgstr "כל הקבצים" msgid "Click to enlarge" msgstr "יש ללחוץ כדי להגדיל" -#: ../libempathy-gtk/empathy-chat.c:652 +#: ../libempathy-gtk/empathy-chat.c:668 msgid "Failed to open private chat" msgstr "ארע כשל בפתיחת שיחה פרטית" -#: ../libempathy-gtk/empathy-chat.c:717 +#: ../libempathy-gtk/empathy-chat.c:733 msgid "Topic not supported on this conversation" msgstr "אין תמיכה בשימוש בנושא בדיון זה" -#: ../libempathy-gtk/empathy-chat.c:723 +#: ../libempathy-gtk/empathy-chat.c:739 msgid "You are not allowed to change the topic" msgstr "אין לך הרשאה לשנות את הנושא" -#: ../libempathy-gtk/empathy-chat.c:930 +#: ../libempathy-gtk/empathy-chat.c:948 msgid "/clear: clear all messages from the current conversation" msgstr "/clear: פינוי כל ההודעות מהדיון הנוכחי" -#: ../libempathy-gtk/empathy-chat.c:933 +#: ../libempathy-gtk/empathy-chat.c:951 msgid "/topic <topic>: set the topic of the current conversation" msgstr "/topic <נושא>: הגדרת נושא השיחה הנוכחית" -#: ../libempathy-gtk/empathy-chat.c:936 +#: ../libempathy-gtk/empathy-chat.c:954 msgid "/join <chat room ID>: join a new chat room" msgstr "/join <זיהוי החדר>: הצטרפות לחדר שיחה חדש" -#: ../libempathy-gtk/empathy-chat.c:939 +#: ../libempathy-gtk/empathy-chat.c:957 msgid "/j <chat room ID>: join a new chat room" msgstr "/j <זיהוי החדר>: הצטרפות לחדר שיחה חדש" -#: ../libempathy-gtk/empathy-chat.c:944 +#: ../libempathy-gtk/empathy-chat.c:962 msgid "" "/part [<chat room ID>] [<reason>]: leave the chat room, by default the " "current one" msgstr "/part [<זיהוי החדר>] [<סיבה>]: עזיבת ערוץ השיחה, הנוכחי הוא בררת המחדל" -#: ../libempathy-gtk/empathy-chat.c:949 +#: ../libempathy-gtk/empathy-chat.c:967 msgid "/query <contact ID> [<message>]: open a private chat" msgstr "/query <זיהוי איש הקשר> [<הודעה>]: פתיחת צ'אט אישי" -#: ../libempathy-gtk/empathy-chat.c:952 +#: ../libempathy-gtk/empathy-chat.c:970 msgid "/msg <contact ID> <message>: open a private chat" msgstr "/msg <זיהוי איש הקשר> <הודעה>: פתיחת צ'אט פרטי" -#: ../libempathy-gtk/empathy-chat.c:955 +#: ../libempathy-gtk/empathy-chat.c:973 msgid "/nick <nickname>: change your nickname on the current server" msgstr "/nick <כינוי>: שינוי הכינוי שלך בשרת הנוכחי" -#: ../libempathy-gtk/empathy-chat.c:958 +#: ../libempathy-gtk/empathy-chat.c:976 msgid "/me <message>: send an ACTION message to the current conversation" msgstr "/me <הודעה>: שליחת הודעת ACTION לדיון הנוכחי" -#: ../libempathy-gtk/empathy-chat.c:961 +#: ../libempathy-gtk/empathy-chat.c:979 msgid "" "/say <message>: send <message> to the current conversation. This is used to " "send a message starting with a '/'. For example: \"/say /join is used to " @@ -1292,7 +1275,7 @@ msgstr "" "/say <הודעה>: שליחת <הודעה> לדיון הנוכחי. פקודה זו משמשת לשליחת הודעות " "המתחילות ב־'/'. לדוגמה: \"/say /join משמשת לצורך התחברות לחדר שיחה חדש\"" -#: ../libempathy-gtk/empathy-chat.c:966 +#: ../libempathy-gtk/empathy-chat.c:984 msgid "" "/help [<command>]: show all supported commands. If <command> is defined, " "show its usage." @@ -1300,98 +1283,113 @@ msgstr "" "/help [<פקודה>]: הצגת כל הפקודות הנתמכות. אם יש הגדרה ל־<פקודה> יוצג אופן " "הפעלתה." -#: ../libempathy-gtk/empathy-chat.c:976 +#: ../libempathy-gtk/empathy-chat.c:994 #, c-format msgid "Usage: %s" msgstr "שימוש: %s" -#: ../libempathy-gtk/empathy-chat.c:1015 +#: ../libempathy-gtk/empathy-chat.c:1033 msgid "Unknown command" msgstr "פקודה לא ידועה" -#: ../libempathy-gtk/empathy-chat.c:1141 +#: ../libempathy-gtk/empathy-chat.c:1159 msgid "Unknown command; see /help for the available commands" msgstr "פקודה בלתי מוכרת; יש לעיין ב־/help לצפייה בפקודות הזמינות" -#: ../libempathy-gtk/empathy-chat.c:1278 +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. +#: ../libempathy-gtk/empathy-chat.c:1299 +msgid "insufficient balance to send message" +msgstr "המאזן אינו מאפשר לשלוח הודעה" + +#: ../libempathy-gtk/empathy-chat.c:1301 +msgid "not capable" +msgstr "ללא יכולת" + +#: ../libempathy-gtk/empathy-chat.c:1308 msgid "offline" msgstr "לא מחובר" -#: ../libempathy-gtk/empathy-chat.c:1281 +#: ../libempathy-gtk/empathy-chat.c:1311 msgid "invalid contact" msgstr "איש קשר לא תקין" -#: ../libempathy-gtk/empathy-chat.c:1284 +#: ../libempathy-gtk/empathy-chat.c:1314 msgid "permission denied" msgstr "איש קשר לא תקין" -#: ../libempathy-gtk/empathy-chat.c:1287 +#: ../libempathy-gtk/empathy-chat.c:1317 msgid "too long message" msgstr "הודעה ארוכה מדי" -#: ../libempathy-gtk/empathy-chat.c:1290 +#: ../libempathy-gtk/empathy-chat.c:1320 msgid "not implemented" msgstr "לא ממומש" -#: ../libempathy-gtk/empathy-chat.c:1294 +#: ../libempathy-gtk/empathy-chat.c:1324 msgid "unknown" msgstr "לא ידוע" -#: ../libempathy-gtk/empathy-chat.c:1298 +#: ../libempathy-gtk/empathy-chat.c:1330 #, c-format msgid "Error sending message '%s': %s" msgstr "שגיאה בשליחת ההודעה '%s': %s" -#: ../libempathy-gtk/empathy-chat.c:1359 ../src/empathy-chat-window.c:717 +#: ../libempathy-gtk/empathy-chat.c:1334 +#, c-format +msgid "Error sending message: %s" +msgstr "שגיאה בשליחת ההודעה: %s" + +#: ../libempathy-gtk/empathy-chat.c:1395 ../src/empathy-chat-window.c:760 msgid "Topic:" msgstr "נושא:" -#: ../libempathy-gtk/empathy-chat.c:1371 +#: ../libempathy-gtk/empathy-chat.c:1407 #, c-format msgid "Topic set to: %s" msgstr "הנושא הוגדר ל־: %s" -#: ../libempathy-gtk/empathy-chat.c:1373 +#: ../libempathy-gtk/empathy-chat.c:1409 msgid "No topic defined" msgstr "לא נקבע נושא" -#: ../libempathy-gtk/empathy-chat.c:1872 +#: ../libempathy-gtk/empathy-chat.c:1916 msgid "(No Suggestions)" msgstr "(אין הצעות)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:1940 +#: ../libempathy-gtk/empathy-chat.c:1984 #, c-format msgid "Add '%s' to Dictionary" msgstr "הוספת '%s' למילון" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:1977 +#: ../libempathy-gtk/empathy-chat.c:2021 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "הוספת '%s' למילון %s" -#: ../libempathy-gtk/empathy-chat.c:2034 +#: ../libempathy-gtk/empathy-chat.c:2078 msgid "Insert Smiley" msgstr "הכנס סמיילי" #. send button -#: ../libempathy-gtk/empathy-chat.c:2052 +#: ../libempathy-gtk/empathy-chat.c:2096 #: ../libempathy-gtk/empathy-ui-utils.c:1808 msgid "_Send" msgstr "_שלח" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2087 +#: ../libempathy-gtk/empathy-chat.c:2131 msgid "_Spelling Suggestions" msgstr "הצעות _איות" -#: ../libempathy-gtk/empathy-chat.c:2176 +#: ../libempathy-gtk/empathy-chat.c:2220 msgid "Failed to retrieve recent logs" msgstr "ארע כשל בקבלת הדוחות האחרונים" -#: ../libempathy-gtk/empathy-chat.c:2287 +#: ../libempathy-gtk/empathy-chat.c:2331 #, c-format msgid "%s has disconnected" msgstr "%s התנתק" @@ -1399,12 +1397,12 @@ msgstr "%s התנתק" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2294 +#: ../libempathy-gtk/empathy-chat.c:2338 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%1$s סולק על ידי %2$s" -#: ../libempathy-gtk/empathy-chat.c:2297 +#: ../libempathy-gtk/empathy-chat.c:2341 #, c-format msgid "%s was kicked" msgstr "%s סולק" @@ -1412,17 +1410,17 @@ msgstr "%s סולק" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2305 +#: ../libempathy-gtk/empathy-chat.c:2349 #, c-format msgid "%1$s was banned by %2$s" msgstr "%1$s נחסם על ידי %2$s" -#: ../libempathy-gtk/empathy-chat.c:2308 +#: ../libempathy-gtk/empathy-chat.c:2352 #, c-format msgid "%s was banned" msgstr "%s נחסם" -#: ../libempathy-gtk/empathy-chat.c:2312 +#: ../libempathy-gtk/empathy-chat.c:2356 #, c-format msgid "%s has left the room" msgstr "%s עזב את החדר" @@ -1432,105 +1430,123 @@ msgstr "%s עזב את החדר" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2321 +#: ../libempathy-gtk/empathy-chat.c:2365 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2346 +#: ../libempathy-gtk/empathy-chat.c:2390 #, c-format msgid "%s has joined the room" msgstr "%s הצטרף לחדר" -#: ../libempathy-gtk/empathy-chat.c:2371 +#: ../libempathy-gtk/empathy-chat.c:2415 #, c-format msgid "%s is now known as %s" msgstr "%s נודע כעת בכינוי %s" -#: ../libempathy-gtk/empathy-chat.c:2510 -#: ../src/empathy-streamed-media-window.c:1953 -#: ../src/empathy-event-manager.c:1126 +#: ../libempathy-gtk/empathy-chat.c:2554 +#: ../src/empathy-streamed-media-window.c:1957 +#: ../src/empathy-event-manager.c:1117 msgid "Disconnected" msgstr "מנותק" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3140 +#: ../libempathy-gtk/empathy-chat.c:3202 msgid "Would you like to store this password?" msgstr "האם ברצונך לאחסן ססמה זו?" -#: ../libempathy-gtk/empathy-chat.c:3146 +#: ../libempathy-gtk/empathy-chat.c:3208 msgid "Remember" msgstr "שמירה" -#: ../libempathy-gtk/empathy-chat.c:3156 +#: ../libempathy-gtk/empathy-chat.c:3218 msgid "Not now" msgstr "לא כעת" -#: ../libempathy-gtk/empathy-chat.c:3200 +#: ../libempathy-gtk/empathy-chat.c:3262 msgid "Retry" msgstr "ניסיון חוזר" -#: ../libempathy-gtk/empathy-chat.c:3204 +#: ../libempathy-gtk/empathy-chat.c:3266 msgid "Wrong password; please try again:" msgstr "ססמה שגויה; נא לנסות שוב:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3321 +#: ../libempathy-gtk/empathy-chat.c:3383 msgid "This room is protected by a password:" msgstr "חדר זה מוגן בססמה:" -#: ../libempathy-gtk/empathy-chat.c:3348 +#: ../libempathy-gtk/empathy-chat.c:3410 msgid "Join" msgstr "הצטרפות" -#: ../libempathy-gtk/empathy-chat.c:3518 ../src/empathy-event-manager.c:1147 +#: ../libempathy-gtk/empathy-chat.c:3602 ../src/empathy-event-manager.c:1138 msgid "Connected" msgstr "מחובר" -#: ../libempathy-gtk/empathy-chat.c:3571 +#: ../libempathy-gtk/empathy-chat.c:3657 #: ../libempathy-gtk/empathy-log-window.c:650 msgid "Conversation" msgstr "שיחה" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:422 +#. Translators: this string is a something like +#. * "Escher Cat (SMS)" +#: ../libempathy-gtk/empathy-chat.c:3662 +#, c-format +msgid "%s (SMS)" +msgstr "%s (SMS)" + +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:423 msgid "Unknown or invalid identifier" msgstr "המזהה אינו ידוע או שגוי" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:425 msgid "Contact blocking temporarily unavailable" msgstr "חסימת אנשי קשר אינה זמינה כרגע" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:427 msgid "Contact blocking unavailable" msgstr "חסימת אנשי קשר אינה זמינה" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:429 msgid "Permission Denied" msgstr "ההרשאה נדחתה" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:433 msgid "Could not block contact" msgstr "לא ניתן לחסום את איש הקשר" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:701 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:702 msgid "Edit Blocked Contacts" msgstr "עריכת אנשי הקשר החסומים" +#. Account and Identifier +#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:521 +#: ../libempathy-gtk/empathy-contact-widget.ui.h:2 +#: ../libempathy-gtk/empathy-individual-widget.c:1479 +#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 +#: ../src/empathy-chatrooms-window.ui.h:1 +#: ../src/empathy-new-chatroom-dialog.ui.h:1 +msgid "Account:" +msgstr "חשבון:" + #. Copy Link Address menu item #: ../libempathy-gtk/empathy-chat-text-view.c:320 -#: ../libempathy-gtk/empathy-theme-adium.c:794 +#: ../libempathy-gtk/empathy-theme-adium.c:1002 msgid "_Copy Link Address" msgstr "העתקת _מיקום הקישור" #. Open Link menu item #: ../libempathy-gtk/empathy-chat-text-view.c:327 -#: ../libempathy-gtk/empathy-theme-adium.c:801 +#: ../libempathy-gtk/empathy-theme-adium.c:1009 msgid "_Open Link" msgstr "_פתיחת קישור" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:420 +#: ../libempathy-gtk/empathy-chat-text-view.c:415 msgid "%A %B %d %Y" msgstr "%A %d ב%B %Y" @@ -1593,38 +1609,38 @@ msgid "Favorite People" msgstr "אנשים מועדפים" #: ../libempathy-gtk/empathy-contact-list-view.c:1987 -#: ../libempathy-gtk/empathy-individual-view.c:2343 +#: ../libempathy-gtk/empathy-individual-view.c:2386 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "האם להסיר את הקבוצה '%s'?" #: ../libempathy-gtk/empathy-contact-list-view.c:1989 -#: ../libempathy-gtk/empathy-individual-view.c:2346 +#: ../libempathy-gtk/empathy-individual-view.c:2389 msgid "Removing group" msgstr "הקבוצה מוסרת" #. Remove #: ../libempathy-gtk/empathy-contact-list-view.c:2038 #: ../libempathy-gtk/empathy-contact-list-view.c:2115 -#: ../libempathy-gtk/empathy-individual-view.c:2401 -#: ../libempathy-gtk/empathy-individual-view.c:2595 +#: ../libempathy-gtk/empathy-individual-view.c:2444 +#: ../libempathy-gtk/empathy-individual-view.c:2637 #: ../src/empathy-accounts-dialog.ui.h:7 msgid "_Remove" msgstr "ה_סרה" #: ../libempathy-gtk/empathy-contact-list-view.c:2068 -#: ../libempathy-gtk/empathy-individual-view.c:2465 +#: ../libempathy-gtk/empathy-individual-view.c:2508 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "להסיר את איש הקשר '%s'?" #: ../libempathy-gtk/empathy-contact-list-view.c:2070 -#: ../libempathy-gtk/empathy-individual-view.c:2486 +#: ../libempathy-gtk/empathy-individual-view.c:2529 msgid "Removing contact" msgstr "איש קשר מוסר" #: ../libempathy-gtk/empathy-contact-menu.c:219 -#: ../src/empathy-main-window.ui.h:13 +#: ../src/empathy-main-window.ui.h:14 msgid "_Add Contact…" msgstr "הוספת _איש קשר…" @@ -1633,81 +1649,81 @@ msgid "_Block Contact" msgstr "ח_סימת איש קשר" #: ../libempathy-gtk/empathy-contact-menu.c:328 -#: ../libempathy-gtk/empathy-individual-menu.c:517 -#: ../src/empathy-main-window.ui.h:15 +#: ../libempathy-gtk/empathy-individual-menu.c:536 +#: ../src/empathy-main-window.ui.h:16 msgid "_Chat" msgstr "_שיחה" -#: ../libempathy-gtk/empathy-contact-menu.c:359 -#: ../libempathy-gtk/empathy-individual-menu.c:560 +#: ../libempathy-gtk/empathy-contact-menu.c:358 +#: ../libempathy-gtk/empathy-individual-menu.c:625 msgctxt "menu item" msgid "_Audio Call" msgstr "שיחה _קולית" -#: ../libempathy-gtk/empathy-contact-menu.c:390 -#: ../libempathy-gtk/empathy-individual-menu.c:602 +#: ../libempathy-gtk/empathy-contact-menu.c:389 +#: ../libempathy-gtk/empathy-individual-menu.c:667 msgctxt "menu item" msgid "_Video Call" msgstr "שיחת _וידאו" -#: ../libempathy-gtk/empathy-contact-menu.c:436 -#: ../libempathy-gtk/empathy-individual-menu.c:645 -#: ../src/empathy-main-window.ui.h:26 +#: ../libempathy-gtk/empathy-contact-menu.c:435 +#: ../libempathy-gtk/empathy-individual-menu.c:710 +#: ../src/empathy-main-window.ui.h:27 msgid "_Previous Conversations" msgstr "שיחות _קודמות" -#: ../libempathy-gtk/empathy-contact-menu.c:458 -#: ../libempathy-gtk/empathy-individual-menu.c:686 +#: ../libempathy-gtk/empathy-contact-menu.c:457 +#: ../libempathy-gtk/empathy-individual-menu.c:751 msgid "Send File" msgstr "שליחת קובץ" -#: ../libempathy-gtk/empathy-contact-menu.c:481 -#: ../libempathy-gtk/empathy-individual-menu.c:728 +#: ../libempathy-gtk/empathy-contact-menu.c:480 +#: ../libempathy-gtk/empathy-individual-menu.c:793 msgid "Share My Desktop" msgstr "שיתוף שולחן העבודה שלי" -#: ../libempathy-gtk/empathy-contact-menu.c:521 -#: ../libempathy-gtk/empathy-contact-widget.c:1763 -#: ../libempathy-gtk/empathy-individual-menu.c:763 -#: ../libempathy-gtk/empathy-individual-widget.c:1372 +#: ../libempathy-gtk/empathy-contact-menu.c:520 +#: ../libempathy-gtk/empathy-contact-widget.c:1751 +#: ../libempathy-gtk/empathy-individual-menu.c:828 +#: ../libempathy-gtk/empathy-individual-widget.c:1370 msgid "Favorite" msgstr "מועדף" -#: ../libempathy-gtk/empathy-contact-menu.c:550 -#: ../libempathy-gtk/empathy-individual-menu.c:791 +#: ../libempathy-gtk/empathy-contact-menu.c:549 +#: ../libempathy-gtk/empathy-individual-menu.c:856 msgid "Infor_mation" msgstr "_מידע" -#: ../libempathy-gtk/empathy-contact-menu.c:596 +#: ../libempathy-gtk/empathy-contact-menu.c:595 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "ע_ריכה" -#: ../libempathy-gtk/empathy-contact-menu.c:650 -#: ../libempathy-gtk/empathy-individual-menu.c:972 -#: ../src/empathy-chat-window.c:935 +#: ../libempathy-gtk/empathy-contact-menu.c:649 +#: ../libempathy-gtk/empathy-individual-menu.c:1037 +#: ../src/empathy-chat-window.c:986 msgid "Inviting you to this room" msgstr "מזמין/ה אותך לחדר זה" -#: ../libempathy-gtk/empathy-contact-menu.c:681 -#: ../libempathy-gtk/empathy-individual-menu.c:1019 +#: ../libempathy-gtk/empathy-contact-menu.c:680 +#: ../libempathy-gtk/empathy-individual-menu.c:1084 msgid "_Invite to Chat Room" msgstr "ה_זמנה לחדר שיחה" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:513 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:514 msgid "Search contacts" msgstr "חיפוש בין אנשי הקשר" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:543 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:544 msgid "Search: " msgstr "חיפוש:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:601 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:602 msgid "_Add Contact" msgstr "הוספת _איש קשר" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:619 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:620 msgid "No contacts found" msgstr "לא נמצאו אנשי קשר" @@ -1860,33 +1876,33 @@ msgstr "קו רוחב:" msgid "Altitude:" msgstr "גובה:" -#: ../libempathy-gtk/empathy-contact-widget.c:871 -#: ../libempathy-gtk/empathy-contact-widget.c:888 +#: ../libempathy-gtk/empathy-contact-widget.c:861 +#: ../libempathy-gtk/empathy-contact-widget.c:876 #: ../libempathy-gtk/empathy-individual-widget.c:616 -#: ../libempathy-gtk/empathy-individual-widget.c:633 +#: ../libempathy-gtk/empathy-individual-widget.c:631 #: ../src/empathy-preferences.ui.h:12 msgid "Location" msgstr "מיקום" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:890 -#: ../libempathy-gtk/empathy-individual-widget.c:635 +#: ../libempathy-gtk/empathy-contact-widget.c:878 +#: ../libempathy-gtk/empathy-individual-widget.c:633 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:942 -#: ../libempathy-gtk/empathy-individual-widget.c:684 +#: ../libempathy-gtk/empathy-contact-widget.c:930 +#: ../libempathy-gtk/empathy-individual-widget.c:682 msgid "%B %e, %Y at %R UTC" msgstr "%B %e, %Y ב־%R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1024 -#: ../libempathy-gtk/empathy-individual-widget.c:919 +#: ../libempathy-gtk/empathy-contact-widget.c:1012 +#: ../libempathy-gtk/empathy-individual-widget.c:917 msgid "Save Avatar" msgstr "שמירת תמונה אישית" -#: ../libempathy-gtk/empathy-contact-widget.c:1080 -#: ../libempathy-gtk/empathy-individual-widget.c:977 +#: ../libempathy-gtk/empathy-contact-widget.c:1068 +#: ../libempathy-gtk/empathy-individual-widget.c:975 msgid "Unable to save avatar" msgstr "לא ניתן לשמור תמונה אישית" @@ -1896,7 +1912,7 @@ msgstr "<b>מיקום</b> ב(תאריך)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1307 +#: ../libempathy-gtk/empathy-individual-widget.c:1305 msgid "Alias:" msgstr "כינוי:" @@ -1916,7 +1932,7 @@ msgstr "פרטי איש קשר" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1511 +#: ../libempathy-gtk/empathy-individual-widget.c:1509 msgid "Identifier:" msgstr "מזהה:" @@ -1955,7 +1971,7 @@ msgid "Select" msgstr "בחירה" #: ../libempathy-gtk/empathy-groups-widget.c:408 -#: ../src/empathy-main-window.c:1436 +#: ../src/empathy-main-window.c:1770 msgid "Group" msgstr "קבוצה" @@ -1996,23 +2012,29 @@ msgstr "אנשי הקשר שנבחרו ברשימה שמימין יקושרו ז msgid "%s (%s)" msgstr "%s (%s)" -#: ../libempathy-gtk/empathy-individual-menu.c:839 +#. add an SMS button +#: ../libempathy-gtk/empathy-individual-menu.c:582 +#: ../libempathy-gtk/empathy-new-message-dialog.c:248 +msgid "_SMS" +msgstr "_SMS" + +#: ../libempathy-gtk/empathy-individual-menu.c:904 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "ע_ריכה" #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:865 +#: ../libempathy-gtk/empathy-individual-menu.c:930 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "_קישור אנשי קשר…" -#: ../libempathy-gtk/empathy-individual-view.c:2308 +#: ../libempathy-gtk/empathy-individual-view.c:2351 msgid "Delete and _Block" msgstr "מחיקה ו_חסימה" -#: ../libempathy-gtk/empathy-individual-view.c:2474 +#: ../libempathy-gtk/empathy-individual-view.c:2517 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2021,7 +2043,7 @@ msgstr "" "האם אכן ברצונך להסיר את איש הקשר המקושר '%s'? נא לשים לב שפעולה זו תסיר את " "כל אנשי הקשר המתאגדים לאיש קשר מקושר זה." -#: ../libempathy-gtk/empathy-individual-widget.c:1652 +#: ../libempathy-gtk/empathy-individual-widget.c:1650 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2142,27 +2164,27 @@ msgid "Contact ID:" msgstr "מזהה איש הקשר:" #. add chat button -#: ../libempathy-gtk/empathy-new-message-dialog.c:171 +#: ../libempathy-gtk/empathy-new-message-dialog.c:258 msgid "C_hat" msgstr "שי_חה" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-message-dialog.c:181 +#: ../libempathy-gtk/empathy-new-message-dialog.c:277 msgid "New Conversation" msgstr "שיחה חדשה" #. add video toggle -#: ../libempathy-gtk/empathy-new-call-dialog.c:253 +#: ../libempathy-gtk/empathy-new-call-dialog.c:254 msgid "Send _Video" msgstr "שליחת _וידאו" #. add chat button -#: ../libempathy-gtk/empathy-new-call-dialog.c:261 +#: ../libempathy-gtk/empathy-new-call-dialog.c:262 msgid "C_all" msgstr "ה_תקשרות" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-call-dialog.c:271 +#: ../libempathy-gtk/empathy-new-call-dialog.c:272 msgid "New Call" msgstr "שיחה חדשה" @@ -2289,19 +2311,23 @@ msgstr "שמירת הודעת המ_צב החדשה" msgid "Saved Status Messages" msgstr "הודעות המצב שנשמרו" -#: ../libempathy-gtk/empathy-theme-manager.c:67 +#: ../libempathy-gtk/empathy-theme-adium.c:1468 +msgid "Normal" +msgstr "רגיל" + +#: ../libempathy-gtk/empathy-theme-manager.c:68 msgid "Classic" msgstr "קלאסי" -#: ../libempathy-gtk/empathy-theme-manager.c:68 +#: ../libempathy-gtk/empathy-theme-manager.c:69 msgid "Simple" msgstr "פשוט" -#: ../libempathy-gtk/empathy-theme-manager.c:69 +#: ../libempathy-gtk/empathy-theme-manager.c:70 msgid "Clean" msgstr "נקי" -#: ../libempathy-gtk/empathy-theme-manager.c:70 +#: ../libempathy-gtk/empathy-theme-manager.c:71 msgid "Blue" msgstr "כחול" @@ -2754,8 +2780,8 @@ msgid "Select the accounts you want to import:" msgstr "נא לבחור את החשבון שברצונך לייבא:" #: ../src/empathy-account-assistant.c:813 -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-new-chatroom-dialog.c:555 +#: ../src/empathy-new-chatroom-dialog.c:556 msgid "Yes" msgstr "כן" @@ -2827,34 +2853,34 @@ msgstr "ישנם שינויים שלא נשמרו בחשבון ה־%s שלך." msgid "Your new account has not been saved yet." msgstr "החשבון החדש שלך לא נשמר עדיין." -#: ../src/empathy-accounts-dialog.c:286 +#: ../src/empathy-accounts-dialog.c:345 #: ../src/empathy-streamed-media-window.c:809 msgid "Connecting…" msgstr "בהתחברות…" -#: ../src/empathy-accounts-dialog.c:327 +#: ../src/empathy-accounts-dialog.c:386 #, c-format msgid "Offline — %s" msgstr "לא מחובר — %s" -#: ../src/empathy-accounts-dialog.c:339 +#: ../src/empathy-accounts-dialog.c:398 #, c-format msgid "Disconnected — %s" msgstr "מנותק — %s" -#: ../src/empathy-accounts-dialog.c:350 +#: ../src/empathy-accounts-dialog.c:409 msgid "Offline — No Network Connection" msgstr "מנותק — אין חיבור לרשת" -#: ../src/empathy-accounts-dialog.c:357 +#: ../src/empathy-accounts-dialog.c:416 msgid "Unknown Status" msgstr "מצב לא ידוע" -#: ../src/empathy-accounts-dialog.c:369 +#: ../src/empathy-accounts-dialog.c:428 msgid "Offline — Account Disabled" msgstr "מנותק — החשבון מנוטרל" -#: ../src/empathy-accounts-dialog.c:772 +#: ../src/empathy-accounts-dialog.c:831 msgid "" "You are about to create a new account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2862,16 +2888,16 @@ msgstr "" "עומד להיווצר חשבון חדש, מה שיבטל\n" "את השינויים שלך. האם ברצונך להמשיך?" -#: ../src/empathy-accounts-dialog.c:1133 +#: ../src/empathy-accounts-dialog.c:1192 #, c-format msgid "Do you want to remove %s from your computer?" msgstr "האם ברצונך להסיר את החשבון '%s' ממחשבך?" -#: ../src/empathy-accounts-dialog.c:1137 +#: ../src/empathy-accounts-dialog.c:1196 msgid "This will not remove your account on the server." msgstr "פעולה זו לא תסיר את חשבונך מהשרת." -#: ../src/empathy-accounts-dialog.c:1375 +#: ../src/empathy-accounts-dialog.c:1432 msgid "" "You are about to select another account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2880,15 +2906,15 @@ msgstr "" "את השינויים שלך. האת אתה בטוח שברצונך להמשיך?" #. Menu items: to enabled/disable the account -#: ../src/empathy-accounts-dialog.c:1593 +#: ../src/empathy-accounts-dialog.c:1643 msgid "_Enable" msgstr "ה_פעלה" -#: ../src/empathy-accounts-dialog.c:1594 +#: ../src/empathy-accounts-dialog.c:1644 msgid "_Disable" msgstr "נ_טרול" -#: ../src/empathy-accounts-dialog.c:2113 +#: ../src/empathy-accounts-dialog.c:2154 msgid "" "You are about to close the window, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2923,11 +2949,11 @@ msgstr "הו_ספה…" msgid "_Import…" msgstr "י_בוא…" -#: ../src/empathy-auth-client.c:250 +#: ../src/empathy-auth-client.c:249 msgid " - Empathy authentication client" msgstr "- לקוח האימות של Empathy" -#: ../src/empathy-auth-client.c:266 +#: ../src/empathy-auth-client.c:265 msgid "Empathy authentication client" msgstr "לקוח האימות של Empathy" @@ -3012,31 +3038,51 @@ msgstr "כתובת ה־IP של שרת הממסר" msgid "The IP address of the multicast group" msgstr "כתובת ה־IP של קבוצת התשדורת" +#: ../src/empathy-streamed-media-window.c:1906 +msgctxt "encoding video codec" +msgid "Unknown" +msgstr "לא ידוע" + +#: ../src/empathy-streamed-media-window.c:1909 +msgctxt "encoding audio codec" +msgid "Unknown" +msgstr "לא ידוע" + +#: ../src/empathy-streamed-media-window.c:1912 +msgctxt "decoding video codec" +msgid "Unknown" +msgstr "לא ידוע" + +#: ../src/empathy-streamed-media-window.c:1915 +msgctxt "decoding audio codec" +msgid "Unknown" +msgstr "לא ידוע" + #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2270 +#: ../src/empathy-streamed-media-window.c:2274 #, c-format msgid "Connected — %d:%02dm" msgstr "מחובר — %d:%02d דק׳" -#: ../src/empathy-streamed-media-window.c:2331 +#: ../src/empathy-streamed-media-window.c:2335 msgid "Technical Details" msgstr "פרטים טכניים" -#: ../src/empathy-streamed-media-window.c:2369 +#: ../src/empathy-streamed-media-window.c:2373 #, c-format msgid "" "%s's software does not understand any of the audio formats supported by your " "computer" msgstr "התכנה של %s אינה מבינה את מבני השמע הנתמכים על ידי המחשב שלך" -#: ../src/empathy-streamed-media-window.c:2374 +#: ../src/empathy-streamed-media-window.c:2378 #, c-format msgid "" "%s's software does not understand any of the video formats supported by your " "computer" msgstr "התכנה של %s אינה מבינה את מבני הווידאו הנתמכים על ידי המחשב שלך" -#: ../src/empathy-streamed-media-window.c:2380 +#: ../src/empathy-streamed-media-window.c:2384 #, c-format msgid "" "Can't establish a connection to %s. One of you might be on a network that " @@ -3045,21 +3091,21 @@ msgstr "" "לא ניתן להפעיל את החיבור אל %s. כנראה אחד ממשתתפי השיחה מחובר לרשת שאינה " "מאפשרת חיבורים ישירים." -#: ../src/empathy-streamed-media-window.c:2386 +#: ../src/empathy-streamed-media-window.c:2390 msgid "There was a failure on the network" msgstr "אירעה שגיאה ברשת" -#: ../src/empathy-streamed-media-window.c:2390 +#: ../src/empathy-streamed-media-window.c:2394 msgid "" "The audio formats necessary for this call are not installed on your computer" msgstr "מבני השמע הדרושים לקיום שיחה זו אינם מותקנים במחשבך" -#: ../src/empathy-streamed-media-window.c:2393 +#: ../src/empathy-streamed-media-window.c:2397 msgid "" "The video formats necessary for this call are not installed on your computer" msgstr "מבני הווידאו הדרושים לקיום שיחה זו אינם מותקנים במחשבך" -#: ../src/empathy-streamed-media-window.c:2403 +#: ../src/empathy-streamed-media-window.c:2407 #, c-format msgid "" "Something unexpected happened in a Telepathy component. Please <a href=\"%s" @@ -3069,19 +3115,19 @@ msgstr "" "משהו בלתי צפוי ארע ברכיב של Telepathy. נא <a href=\"%s\">לדווח על באג זה</a> " "ולהוסיף דוחות שנאספו מחלון 'ניפוי השגיאות' שבתפריט העזרה." -#: ../src/empathy-streamed-media-window.c:2411 +#: ../src/empathy-streamed-media-window.c:2415 msgid "There was a failure in the call engine" msgstr "אירעה שגיאה במנוע הקריאה" -#: ../src/empathy-streamed-media-window.c:2414 +#: ../src/empathy-streamed-media-window.c:2418 msgid "The end of the stream was reached" msgstr "התזרים הגיע לסיומו" -#: ../src/empathy-streamed-media-window.c:2454 +#: ../src/empathy-streamed-media-window.c:2458 msgid "Can't establish audio stream" msgstr "לא ניתן לקיים תזרים שמע" -#: ../src/empathy-streamed-media-window.c:2464 +#: ../src/empathy-streamed-media-window.c:2468 msgid "Can't establish video stream" msgstr "לא ניתן לקיים תזרים וידאו" @@ -3153,6 +3199,10 @@ msgstr "שלח צליל" msgid "Toggle audio transmission" msgstr "החלפה בין העברה ואי העברה של שמע" +#: ../src/empathy-call-window.ui.h:18 +msgid "Unknown" +msgstr "לא ידוע" + #: ../src/empathy-call-window.ui.h:19 msgid "V_ideo" msgstr "_וידאו" @@ -3177,39 +3227,50 @@ msgstr "תצוגה מקדימה לווידאו" msgid "_Call" msgstr "_שיחה" -#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:29 +#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:30 msgid "_View" msgstr "_תצוגה" -#: ../src/empathy-chat-window.c:474 ../src/empathy-chat-window.c:494 +#: ../src/empathy-chat-window.c:480 ../src/empathy-chat-window.c:500 #, c-format msgid "%s (%d unread)" msgid_plural "%s (%d unread)" msgstr[0] "%s (אחת שלא נקראה)" msgstr[1] "%s (%d שלא נקראו)" -#: ../src/empathy-chat-window.c:486 +#: ../src/empathy-chat-window.c:492 #, c-format msgid "%s (and %u other)" msgid_plural "%s (and %u others)" msgstr[0] "%s (ואחד נוסף)" msgstr[1] "%s (ו־%u נוספים)" -#: ../src/empathy-chat-window.c:502 +#: ../src/empathy-chat-window.c:508 #, c-format msgid "%s (%d unread from others)" msgid_plural "%s (%d unread from others)" msgstr[0] "%s (אחת שלא נקראה מאחרים)" msgstr[1] "%s (%d שלא נקראו מאחרים)" -#: ../src/empathy-chat-window.c:511 +#: ../src/empathy-chat-window.c:517 #, c-format msgid "%s (%d unread from all)" msgid_plural "%s (%d unread from all)" msgstr[0] "%s (אחת שלא נקראה מכולם)" msgstr[1] "%s (%d שלא נקראו מכולם)" -#: ../src/empathy-chat-window.c:721 +#: ../src/empathy-chat-window.c:732 +msgid "SMS:" +msgstr "SMS:" + +#: ../src/empathy-chat-window.c:742 +#, c-format +msgid "Sending %d message" +msgid_plural "Sending %d messages" +msgstr[0] "נשלחת הודעה אחת" +msgstr[1] "נשלחות %d הודעות" + +#: ../src/empathy-chat-window.c:764 msgid "Typing a message." msgstr "הודעה מוקלדת." @@ -3245,7 +3306,7 @@ msgstr "הזזת הלשונית _ימינה" msgid "Notify for All Messages" msgstr "התרעה עבור כל ההודעות" -#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:17 +#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:18 msgid "_Contents" msgstr "_תכנים" @@ -3257,7 +3318,7 @@ msgstr "_שיחה" msgid "_Detach Tab" msgstr "_ניתוק הלשונית" -#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:19 +#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:20 msgid "_Edit" msgstr "ע_ריכה" @@ -3265,7 +3326,7 @@ msgstr "ע_ריכה" msgid "_Favorite Chat Room" msgstr "_הוספת חדר השיחה למועדפים" -#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:21 +#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:22 msgid "_Help" msgstr "ע_זרה" @@ -3305,90 +3366,90 @@ msgstr "חיבור אוטומטי" msgid "Manage Favorite Rooms" msgstr "ניהול חדרי שיחה מועדפים" -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:505 msgid "Incoming video call" msgstr "שיחה קולית נכנסת" -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:505 msgid "Incoming call" msgstr "שיחה נכנסת" -#: ../src/empathy-event-manager.c:511 +#: ../src/empathy-event-manager.c:509 #, c-format msgid "%s is video calling you. Do you want to answer?" msgstr "%s מתקשר אליך עם וידאו, האם ברצונך לענות?" -#: ../src/empathy-event-manager.c:512 +#: ../src/empathy-event-manager.c:510 #, c-format msgid "%s is calling you. Do you want to answer?" msgstr "%s מתקשר אליך, האם ברצונך לענות?" -#: ../src/empathy-event-manager.c:515 ../src/empathy-event-manager.c:667 +#: ../src/empathy-event-manager.c:513 ../src/empathy-event-manager.c:662 #, c-format msgid "Incoming call from %s" msgstr "שיחה נכנסת מ־%s" -#: ../src/empathy-event-manager.c:540 +#: ../src/empathy-event-manager.c:538 msgid "_Reject" msgstr "_דחייה" -#: ../src/empathy-event-manager.c:546 +#: ../src/empathy-event-manager.c:544 msgid "_Answer" msgstr "_מענה" -#: ../src/empathy-event-manager.c:667 +#: ../src/empathy-event-manager.c:662 #, c-format msgid "Incoming video call from %s" msgstr "שיחת וידאו נכנסת מ־%s" -#: ../src/empathy-event-manager.c:744 +#: ../src/empathy-event-manager.c:735 msgid "Room invitation" msgstr "הזמנה לחדר" -#: ../src/empathy-event-manager.c:746 +#: ../src/empathy-event-manager.c:737 #, c-format msgid "Invitation to join %s" msgstr "הזמנה להצטרף ל־%s" -#: ../src/empathy-event-manager.c:753 +#: ../src/empathy-event-manager.c:744 #, c-format msgid "%s is inviting you to join %s" msgstr "%s מזמין/ה אותך להצטרף אל %s" -#: ../src/empathy-event-manager.c:761 +#: ../src/empathy-event-manager.c:752 msgid "_Decline" msgstr "_סירוב" -#: ../src/empathy-event-manager.c:766 +#: ../src/empathy-event-manager.c:757 #: ../src/empathy-new-chatroom-dialog.ui.h:7 msgid "_Join" msgstr "ה_צטרפות" -#: ../src/empathy-event-manager.c:793 +#: ../src/empathy-event-manager.c:784 #, c-format msgid "%s invited you to join %s" msgstr "%s הזמין/ה אותך להצטרף אל %s" -#: ../src/empathy-event-manager.c:799 +#: ../src/empathy-event-manager.c:790 #, c-format msgid "You have been invited to join %s" msgstr "הוזמנת להצטרף אל %s" -#: ../src/empathy-event-manager.c:850 +#: ../src/empathy-event-manager.c:841 #, c-format msgid "Incoming file transfer from %s" msgstr "העברת קבצים נכנסת מ־%s" -#: ../src/empathy-event-manager.c:1020 ../src/empathy-main-window.c:370 +#: ../src/empathy-event-manager.c:1011 ../src/empathy-main-window.c:377 msgid "Password required" msgstr "נדרשת ססמה" -#: ../src/empathy-event-manager.c:1076 +#: ../src/empathy-event-manager.c:1067 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s רוצה הרשאות לצפייה מתי המשתמש שלך מחובר" -#: ../src/empathy-event-manager.c:1080 +#: ../src/empathy-event-manager.c:1071 #, c-format msgid "" "\n" @@ -3474,7 +3535,7 @@ msgstr "הקובץ \"%s\" נשלח אל %s" msgid "File transfer completed" msgstr "העברת קובץ הושלמה" -#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:783 +#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:780 msgid "Waiting for the other participant's response" msgstr "בהמתנה לתגובה של משתתפים נוספים" @@ -3488,15 +3549,15 @@ msgstr "נבדקת השלמות של \"%s\"" msgid "Hashing \"%s\"" msgstr "מתבצע גיבוב ל־\"%s\"" -#: ../src/empathy-ft-manager.c:1029 +#: ../src/empathy-ft-manager.c:1026 msgid "%" msgstr "%" -#: ../src/empathy-ft-manager.c:1041 +#: ../src/empathy-ft-manager.c:1038 msgid "File" msgstr "קובץ" -#: ../src/empathy-ft-manager.c:1063 +#: ../src/empathy-ft-manager.c:1060 msgid "Remaining" msgstr "נותר" @@ -3532,39 +3593,55 @@ msgstr "פרוטוקול" msgid "Source" msgstr "מקור" -#: ../src/empathy-main-window.c:387 +#: ../src/empathy-main-window.c:394 msgid "Provide Password" msgstr "הזנת ססמה" -#: ../src/empathy-main-window.c:393 +#: ../src/empathy-main-window.c:400 msgid "Disconnect" msgstr "ניתוק" -#: ../src/empathy-main-window.c:533 +#: ../src/empathy-main-window.c:540 msgid "No match found" msgstr "לא נמצאה התאמה" -#: ../src/empathy-main-window.c:688 +#: ../src/empathy-main-window.c:695 msgid "Reconnect" msgstr "התחברות מחדש" -#: ../src/empathy-main-window.c:694 +#: ../src/empathy-main-window.c:701 msgid "Edit Account" msgstr "עריכת חשבון" -#: ../src/empathy-main-window.c:700 +#: ../src/empathy-main-window.c:707 msgid "Close" msgstr "סגירה" -#: ../src/empathy-main-window.c:1418 +#. Translators: this string will be something like: +#. * Top up My Account ($1.23)..." +#: ../src/empathy-main-window.c:849 +#, c-format +msgid "Top up %s (%s)..." +msgstr "Top up %s (%s)..." + +#: ../src/empathy-main-window.c:924 +msgid "Top up account credit" +msgstr "אשראי חשבון ה־Top up" + +#. top up button +#: ../src/empathy-main-window.c:999 +msgid "Top Up..." +msgstr "Top Up..." + +#: ../src/empathy-main-window.c:1752 msgid "Contact" msgstr "איש קשר" -#: ../src/empathy-main-window.c:1765 +#: ../src/empathy-main-window.c:2101 msgid "Contact List" msgstr "רשימת אנשי קשר" -#: ../src/empathy-main-window.c:1881 +#: ../src/empathy-main-window.c:2219 msgid "Show and edit accounts" msgstr "הצגה ועריכה של חשבונות" @@ -3573,86 +3650,90 @@ msgid "Contacts on a _Map" msgstr "אנשי קשר על ה_מפה" #: ../src/empathy-main-window.ui.h:2 +msgid "Credit Balance" +msgstr "מאזן האשראי" + +#: ../src/empathy-main-window.ui.h:3 msgid "Find in Contact _List" msgstr "_חיפוש ברשימת אנשי הקשר" -#: ../src/empathy-main-window.ui.h:3 +#: ../src/empathy-main-window.ui.h:4 msgid "Join _Favorites" msgstr "_צירוף למועדפים" -#: ../src/empathy-main-window.ui.h:4 +#: ../src/empathy-main-window.ui.h:5 msgid "Manage Favorites" msgstr "ניהול מועדפים" -#: ../src/empathy-main-window.ui.h:5 +#: ../src/empathy-main-window.ui.h:6 msgid "N_ormal Size" msgstr "גודל _רגיל" -#: ../src/empathy-main-window.ui.h:6 ../src/empathy-status-icon.ui.h:1 +#: ../src/empathy-main-window.ui.h:7 ../src/empathy-status-icon.ui.h:1 msgid "New _Call…" msgstr "_שיחה חדשה…" -#: ../src/empathy-main-window.ui.h:7 +#: ../src/empathy-main-window.ui.h:8 msgid "Normal Size With _Avatars" msgstr "גודל רגיל עם _תמונות אישיות" -#: ../src/empathy-main-window.ui.h:8 +#: ../src/empathy-main-window.ui.h:9 msgid "P_references" msgstr "העד_פות" -#: ../src/empathy-main-window.ui.h:9 +#: ../src/empathy-main-window.ui.h:10 msgid "Show P_rotocols" msgstr "הצגת פ_רוטוקולים" -#: ../src/empathy-main-window.ui.h:10 +#: ../src/empathy-main-window.ui.h:11 msgid "Sort by _Name" msgstr "מיון לפי _שם" -#: ../src/empathy-main-window.ui.h:11 +#: ../src/empathy-main-window.ui.h:12 msgid "Sort by _Status" msgstr "מיון לפי _מצב" -#: ../src/empathy-main-window.ui.h:12 +#: ../src/empathy-main-window.ui.h:13 msgid "_Accounts" msgstr "_חשבונות" -#: ../src/empathy-main-window.ui.h:14 +#: ../src/empathy-main-window.ui.h:15 msgid "_Blocked Contacts" msgstr "אנשי קשר _חסומים" -#: ../src/empathy-main-window.ui.h:16 +#: ../src/empathy-main-window.ui.h:17 msgid "_Compact Size" msgstr "גודל _קומפקטי" -#: ../src/empathy-main-window.ui.h:18 +#: ../src/empathy-main-window.ui.h:19 msgid "_Debug" msgstr "_ניפוי שגיאות" -#: ../src/empathy-main-window.ui.h:20 +#: ../src/empathy-main-window.ui.h:21 msgid "_File Transfers" msgstr "העברות _קבצים" -#: ../src/empathy-main-window.ui.h:22 +#: ../src/empathy-main-window.ui.h:23 msgid "_Join…" msgstr "ה_צטרפות…" -#: ../src/empathy-main-window.ui.h:23 ../src/empathy-status-icon.ui.h:3 +#: ../src/empathy-main-window.ui.h:24 ../src/empathy-status-icon.ui.h:3 msgid "_New Conversation…" msgstr "_שיחה חדשה…" -#: ../src/empathy-main-window.ui.h:24 +#: ../src/empathy-main-window.ui.h:25 msgid "_Offline Contacts" msgstr "אנשי קשר _לא מחוברים" -#: ../src/empathy-main-window.ui.h:25 +#: ../src/empathy-main-window.ui.h:26 msgid "_Personal Information" msgstr "מידע _אישי" -#: ../src/empathy-main-window.ui.h:27 +#: ../src/empathy-main-window.ui.h:28 msgid "_Room" msgstr "_חדר" -#: ../src/empathy-main-window.ui.h:28 +#: ../src/empathy-main-window.ui.h:29 msgid "_Search for Contacts…" msgstr "_חיפוש אחר אנשי קשר…" @@ -3666,7 +3747,7 @@ msgstr "חברים" #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name, #. yes/no, yes/no and a number. -#: ../src/empathy-new-chatroom-dialog.c:560 +#: ../src/empathy-new-chatroom-dialog.c:553 #, c-format msgid "" "%s\n" @@ -3679,16 +3760,16 @@ msgstr "" "נדרשת ססמה: %s\n" "חברים: %s" -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-new-chatroom-dialog.c:555 +#: ../src/empathy-new-chatroom-dialog.c:556 msgid "No" msgstr "לא" -#: ../src/empathy-new-chatroom-dialog.c:591 +#: ../src/empathy-new-chatroom-dialog.c:584 msgid "Could not start room listing" msgstr "לא ניתן להתחיל את הצגת החדרים" -#: ../src/empathy-new-chatroom-dialog.c:601 +#: ../src/empathy-new-chatroom-dialog.c:594 msgid "Could not stop room listing" msgstr "לא ניתן לעצור את הצגת החדרים" @@ -3722,39 +3803,79 @@ msgstr "רשימת חדרים" msgid "_Room:" msgstr "_חדר:" -#: ../src/empathy-preferences.c:139 +#: ../src/empathy-preferences.c:147 msgid "Message received" msgstr "התקבלה הודעה" -#: ../src/empathy-preferences.c:140 +#: ../src/empathy-preferences.c:148 msgid "Message sent" msgstr "הודעה נשלחה" -#: ../src/empathy-preferences.c:141 +#: ../src/empathy-preferences.c:149 msgid "New conversation" msgstr "שיחה חדשה" -#: ../src/empathy-preferences.c:142 +#: ../src/empathy-preferences.c:150 msgid "Contact goes online" msgstr "איש קשר מתחבר" -#: ../src/empathy-preferences.c:143 +#: ../src/empathy-preferences.c:151 msgid "Contact goes offline" msgstr "איש קשר מתנתק" -#: ../src/empathy-preferences.c:144 +#: ../src/empathy-preferences.c:152 msgid "Account connected" msgstr "חשבון מחובר" -#: ../src/empathy-preferences.c:145 +#: ../src/empathy-preferences.c:153 msgid "Account disconnected" msgstr "חשבון נותק" -#: ../src/empathy-preferences.c:446 +#: ../src/empathy-preferences.c:450 msgid "Language" msgstr "שפה" -#: ../src/empathy-preferences.c:875 +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:700 +msgid "Juliet" +msgstr "יוליה" + +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:707 +msgid "Romeo" +msgstr "רומיאו" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:713 +msgid "O Romeo, Romeo, wherefore art thou Romeo?" +msgstr "הו רומיאו, רומיאו, מן אין שבת רומיאו?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:716 +msgid "Deny thy father and refuse thy name;" +msgstr "התכחש לאביך וסרב לשמו;" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:719 +msgid "Or if thou wilt not, be but sworn my love" +msgstr "או אם לא תסכים, אשבע לך באהבתי" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:722 +msgid "And I'll no longer be a Capulet." +msgstr "ולא אהיה עוד בת קפולט." + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:725 +msgid "Shall I hear more, or shall I speak at this?" +msgstr "האם דיברתי די או שמא אוסיף לדבר?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:728 +msgid "Juliet has disconnected" +msgstr "יוליה התנתקה" + +#: ../src/empathy-preferences.c:962 msgid "Preferences" msgstr "העדפות" @@ -3854,43 +3975,47 @@ msgid "" msgstr "ברשימת השפות מוצגות שפות שעבורן מותקנים אצלך מילונים." #: ../src/empathy-preferences.ui.h:24 +msgid "Theme Variant:" +msgstr "הגוון הערכה:" + +#: ../src/empathy-preferences.ui.h:25 msgid "Themes" msgstr "ערכות נושא" -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:26 msgid "_Automatically connect on startup" msgstr "התחברות _אוטומטית עם ההפעלה" -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:27 msgid "_Cellphone" msgstr "טלפון _סלולרי" -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:28 msgid "_Enable bubble notifications" msgstr "ה_פעלת התרעות בתוך בועה" -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:29 msgid "_Enable sound notifications" msgstr "ה_פעלת התרעות קוליות" -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:30 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:31 msgid "_Network (IP, Wi-Fi)" msgstr "_רשת (IP, אלחוטית)" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:32 msgid "_Open new chats in separate windows" msgstr "_פתיחת שיחות חדשות בחלונות נפרדים" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:33 msgid "_Publish location to my contacts" msgstr "_פרסום המיקום שלי לאנשי הקשר שלי" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:35 msgid "_Reduce location accuracy" msgstr "ה_פחתת דיוק המיקום" @@ -3902,7 +4027,7 @@ msgstr "מצב" msgid "_Quit" msgstr "יצי_אה" -#: ../src/empathy-map-view.c:442 +#: ../src/empathy-map-view.c:448 msgid "Contact Map View" msgstr "מפת אנשי קשר" @@ -4038,7 +4163,7 @@ msgstr "סירוב" msgid "Accept" msgstr "אישור" -#: ../src/empathy-notifications-approver.c:223 +#: ../src/empathy-notifications-approver.c:226 msgid "Provide" msgstr "הזנה" @@ -4052,6 +4177,13 @@ msgstr "שיחה שלא נענתה מאת %s" msgid "%s just tried to call you, but you were in another call." msgstr "התקבלה בקשת שיחה מאת %s, אך באותו הזמן כבר היית בשיחה אחרת." +#: ../libempathy-gtk/empathy-search-bar.c:282 +msgid "_Match case" +msgstr "התאמת _רישיות" + +#~ msgid "_Enabled" +#~ msgstr "מו_פעל" + #~ msgid "%s is now offline." #~ msgstr "%s מנותק/ת כעת." @@ -4127,9 +4259,6 @@ msgstr "התקבלה בקשת שיחה מאת %s, אך באותו הזמן כב #~ msgid "%s account" #~ msgstr "חשבון %s" -#~ msgid "Salut account is created" -#~ msgstr "Salut account is created" - #~ msgid "Whether the Salut account has been created on the first Empathy run." #~ msgstr "" #~ "Whether the Salut account has been created on the first Empathy run." @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: empathy 2.92.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-20 11:24+0100\n" -"PO-Revision-Date: 2011-03-17 09:53+0100\n" +"POT-Creation-Date: 2011-05-04 11:11+0200\n" +"PO-Revision-Date: 2011-05-04 11:14+0200\n" "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n" "Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n" "Language: no\n" @@ -441,7 +441,7 @@ msgstr "Håndter meldings- og VoIP-kontoer" #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2242 +#: ../src/empathy-accounts-dialog.c:2340 msgid "Messaging and VoIP Accounts" msgstr "Meldings- og VoIP-kontoer" @@ -489,7 +489,7 @@ msgstr "Feil under overføring av filen" msgid "The other participant is unable to transfer the file" msgstr "Avsender kan ikke overføre filen" -#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:382 +#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:383 msgid "Unknown reason" msgstr "Ukjent årsak" @@ -513,120 +513,117 @@ msgstr "Usynlig" msgid "Offline" msgstr "Frakoblet" -#: ../libempathy/empathy-utils.c:315 -#: ../src/empathy-streamed-media-window.c:1904 -#: ../src/empathy-streamed-media-window.c:1905 -#: ../src/empathy-streamed-media-window.c:1906 -#: ../src/empathy-streamed-media-window.c:1907 -#: ../src/empathy-call-window.ui.h:18 +#. translators: presence type is unknown +#: ../libempathy/empathy-utils.c:316 +msgctxt "presence" msgid "Unknown" msgstr "Ukjent" -#: ../libempathy/empathy-utils.c:354 +#: ../libempathy/empathy-utils.c:355 msgid "No reason specified" msgstr "Ingen årsak oppgitt" -#: ../libempathy/empathy-utils.c:356 ../libempathy/empathy-utils.c:412 +#: ../libempathy/empathy-utils.c:357 ../libempathy/empathy-utils.c:413 msgid "Status is set to offline" msgstr "Status er satt til frakoblet" -#: ../libempathy/empathy-utils.c:358 ../libempathy/empathy-utils.c:392 +#: ../libempathy/empathy-utils.c:359 ../libempathy/empathy-utils.c:393 msgid "Network error" msgstr "Nettverksfeil" -#: ../libempathy/empathy-utils.c:360 ../libempathy/empathy-utils.c:394 +#: ../libempathy/empathy-utils.c:361 ../libempathy/empathy-utils.c:395 msgid "Authentication failed" msgstr "Autentiseringen feilet" -#: ../libempathy/empathy-utils.c:362 ../libempathy/empathy-utils.c:396 +#: ../libempathy/empathy-utils.c:363 ../libempathy/empathy-utils.c:397 msgid "Encryption error" msgstr "Krypteringsfeil" -#: ../libempathy/empathy-utils.c:364 +#: ../libempathy/empathy-utils.c:365 msgid "Name in use" msgstr "Navn i bruk" -#: ../libempathy/empathy-utils.c:366 ../libempathy/empathy-utils.c:398 +#: ../libempathy/empathy-utils.c:367 ../libempathy/empathy-utils.c:399 msgid "Certificate not provided" msgstr "Sertifikat ikke oppgitt" -#: ../libempathy/empathy-utils.c:368 ../libempathy/empathy-utils.c:400 +#: ../libempathy/empathy-utils.c:369 ../libempathy/empathy-utils.c:401 msgid "Certificate untrusted" msgstr "Stoler ikke på sertifikat" -#: ../libempathy/empathy-utils.c:370 ../libempathy/empathy-utils.c:402 +#: ../libempathy/empathy-utils.c:371 ../libempathy/empathy-utils.c:403 msgid "Certificate expired" msgstr "Sertifikat utgått" -#: ../libempathy/empathy-utils.c:372 ../libempathy/empathy-utils.c:404 +#: ../libempathy/empathy-utils.c:373 ../libempathy/empathy-utils.c:405 msgid "Certificate not activated" msgstr "Sertifikat ikke aktivert" -#: ../libempathy/empathy-utils.c:374 ../libempathy/empathy-utils.c:406 +#: ../libempathy/empathy-utils.c:375 ../libempathy/empathy-utils.c:407 msgid "Certificate hostname mismatch" msgstr "Feil vertsnavn i forhold til sertifikat" -#: ../libempathy/empathy-utils.c:376 ../libempathy/empathy-utils.c:408 +#: ../libempathy/empathy-utils.c:377 ../libempathy/empathy-utils.c:409 msgid "Certificate fingerprint mismatch" msgstr "Fingeravtrykk stemmer ikke for sertifikat" -#: ../libempathy/empathy-utils.c:378 ../libempathy/empathy-utils.c:410 +#: ../libempathy/empathy-utils.c:379 ../libempathy/empathy-utils.c:411 msgid "Certificate self-signed" msgstr "Selvsignert sertifikat" -#: ../libempathy/empathy-utils.c:380 +#: ../libempathy/empathy-utils.c:381 msgid "Certificate error" msgstr "Sertifikatsfeil" -#: ../libempathy/empathy-utils.c:414 +#: ../libempathy/empathy-utils.c:415 msgid "Encryption is not available" msgstr "Kryptering er ikke tilgjengelig" -#: ../libempathy/empathy-utils.c:416 +#: ../libempathy/empathy-utils.c:417 msgid "Certificate is invalid" msgstr "Sertifikatet ikke ugyldig" -#: ../libempathy/empathy-utils.c:418 +#: ../libempathy/empathy-utils.c:419 msgid "Connection has been refused" msgstr "Tilkobling nektes" -#: ../libempathy/empathy-utils.c:420 +#: ../libempathy/empathy-utils.c:421 msgid "Connection can't be established" msgstr "Tilkobling kan ikke etableres" -#: ../libempathy/empathy-utils.c:422 +#: ../libempathy/empathy-utils.c:423 msgid "Connection has been lost" msgstr "Tilkobling mistet" -#: ../libempathy/empathy-utils.c:424 +#: ../libempathy/empathy-utils.c:425 msgid "This resource is already connected to the server" msgstr "Denne ressursen er allerede koblet til tjeneren" -#: ../libempathy/empathy-utils.c:426 +#: ../libempathy/empathy-utils.c:427 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "" "Tilkoblingen er erstattet med en ny tilkobling som bruker samme ressurs" -#: ../libempathy/empathy-utils.c:429 +#: ../libempathy/empathy-utils.c:430 msgid "The account already exists on the server" msgstr "Kontoen eksisterer allerede på tjeneren" -#: ../libempathy/empathy-utils.c:431 +#: ../libempathy/empathy-utils.c:432 msgid "Server is currently too busy to handle the connection" msgstr "Tjeneren er for opptatt til å håndtere tilkoblingen" -#: ../libempathy/empathy-utils.c:433 +#: ../libempathy/empathy-utils.c:434 msgid "Certificate has been revoked" msgstr "Sertifikatet er trukket tilbake" -#: ../libempathy/empathy-utils.c:435 +#: ../libempathy/empathy-utils.c:436 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "Sertifikatet bruker en usikker cipher-algoritme eller er kryptografisk svakt" -#: ../libempathy/empathy-utils.c:438 +#: ../libempathy/empathy-utils.c:439 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" @@ -634,66 +631,66 @@ msgstr "" "Lengden på tjenersertifikatet eller dybden på sertifikatkjeden på tjeneren " "oversteg grensen som settes av kryptografibiblioteket" -#: ../libempathy/empathy-utils.c:601 +#: ../libempathy/empathy-utils.c:602 #: ../libempathy-gtk/empathy-contact-list-store.h:73 msgid "People Nearby" msgstr "Personer i nærheten" -#: ../libempathy/empathy-utils.c:606 +#: ../libempathy/empathy-utils.c:607 msgid "Yahoo! Japan" msgstr "Yahoo! Japan" -#: ../libempathy/empathy-utils.c:635 +#: ../libempathy/empathy-utils.c:636 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:636 +#: ../libempathy/empathy-utils.c:637 msgid "Facebook Chat" msgstr "Facebook-prat" -#: ../libempathy/empathy-time.c:137 +#: ../libempathy/empathy-time.c:100 #, c-format msgid "%d second ago" msgid_plural "%d seconds ago" msgstr[0] "%d sekund siden" msgstr[1] "%d sekunder siden" -#: ../libempathy/empathy-time.c:142 +#: ../libempathy/empathy-time.c:105 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minutt siden" msgstr[1] "%d minutter siden" -#: ../libempathy/empathy-time.c:147 +#: ../libempathy/empathy-time.c:110 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d time siden" msgstr[1] "%d timer siden" -#: ../libempathy/empathy-time.c:152 +#: ../libempathy/empathy-time.c:115 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag siden" msgstr[1] "%d dager siden" -#: ../libempathy/empathy-time.c:157 +#: ../libempathy/empathy-time.c:120 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d uke siden" msgstr[1] "%d uker siden" -#: ../libempathy/empathy-time.c:162 +#: ../libempathy/empathy-time.c:125 #, c-format msgid "%d month ago" msgid_plural "%d months ago" msgstr[0] "%d måned siden" msgstr[1] "%d måneder siden" -#: ../libempathy/empathy-time.c:167 +#: ../libempathy/empathy-time.c:130 msgid "in the future" msgstr "i fremtiden" @@ -701,83 +698,67 @@ msgstr "i fremtiden" msgid "All" msgstr "Alle" -#: ../libempathy-gtk/empathy-account-widget.c:682 +#: ../libempathy-gtk/empathy-account-widget.c:678 #: ../libempathy-gtk/empathy-log-window.c:643 #: ../src/empathy-import-widget.c:321 msgid "Account" msgstr "Konto" -#: ../libempathy-gtk/empathy-account-widget.c:683 +#: ../libempathy-gtk/empathy-account-widget.c:679 msgid "Password" msgstr "Passord" -#: ../libempathy-gtk/empathy-account-widget.c:684 +#: ../libempathy-gtk/empathy-account-widget.c:680 #: ../libempathy-gtk/empathy-irc-network-dialog.c:507 msgid "Server" msgstr "Tjener" -#: ../libempathy-gtk/empathy-account-widget.c:685 +#: ../libempathy-gtk/empathy-account-widget.c:681 #: ../libempathy-gtk/empathy-irc-network-dialog.c:522 msgid "Port" msgstr "Port" -#: ../libempathy-gtk/empathy-account-widget.c:757 -#: ../libempathy-gtk/empathy-account-widget.c:814 +#: ../libempathy-gtk/empathy-account-widget.c:753 +#: ../libempathy-gtk/empathy-account-widget.c:810 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1166 +#: ../libempathy-gtk/empathy-account-widget.c:1151 #, c-format msgid "The account %s is edited via My Web Accounts." msgstr "Konto %s er redigert via Mine nettkontoer." -#: ../libempathy-gtk/empathy-account-widget.c:1172 +#: ../libempathy-gtk/empathy-account-widget.c:1157 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "Konto %s kan ikke redigeres i Empathy." -#: ../libempathy-gtk/empathy-account-widget.c:1192 +#: ../libempathy-gtk/empathy-account-widget.c:1177 msgid "Launch My Web Accounts" msgstr "Start Mine nettkontoer" -#: ../libempathy-gtk/empathy-account-widget.c:1530 +#: ../libempathy-gtk/empathy-account-widget.c:1515 msgid "Username:" msgstr "Brukernavn:" -#: ../libempathy-gtk/empathy-account-widget.c:1897 +#: ../libempathy-gtk/empathy-account-widget.c:1833 msgid "A_pply" msgstr "_Bruk" -#: ../libempathy-gtk/empathy-account-widget.c:1927 +#: ../libempathy-gtk/empathy-account-widget.c:1863 msgid "L_og in" msgstr "L_ogg inn" -#. Account and Identifier -#: ../libempathy-gtk/empathy-account-widget.c:1993 -#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:520 -#: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1481 -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 -#: ../src/empathy-chatrooms-window.ui.h:1 -#: ../src/empathy-new-chatroom-dialog.ui.h:1 -msgid "Account:" -msgstr "Konto:" - -#: ../libempathy-gtk/empathy-account-widget.c:2004 -msgid "_Enabled" -msgstr "Slått _på" - -#: ../libempathy-gtk/empathy-account-widget.c:2069 +#: ../libempathy-gtk/empathy-account-widget.c:1937 msgid "This account already exists on the server" msgstr "Denne kontoen eksisterer allerede på tjeneren" -#: ../libempathy-gtk/empathy-account-widget.c:2072 +#: ../libempathy-gtk/empathy-account-widget.c:1940 msgid "Create a new account on the server" msgstr "Lag en ny konto på tjeneren" -#: ../libempathy-gtk/empathy-account-widget.c:2264 +#: ../libempathy-gtk/empathy-account-widget.c:2132 msgid "Ca_ncel" msgstr "A_vbryt" @@ -786,19 +767,19 @@ msgstr "A_vbryt" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2561 +#: ../libempathy-gtk/empathy-account-widget.c:2413 #, c-format msgid "%1$s on %2$s" msgstr "%1$s av %2$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2587 +#: ../libempathy-gtk/empathy-account-widget.c:2439 #, c-format msgid "%s Account" msgstr "%s-konto" -#: ../libempathy-gtk/empathy-account-widget.c:2591 +#: ../libempathy-gtk/empathy-account-widget.c:2443 msgid "New account" msgstr "Ny konto" @@ -1238,23 +1219,23 @@ msgstr "Emne er ikke støttet for denne samtalen" msgid "You are not allowed to change the topic" msgstr "Du har ikke lov til å bytte emne" -#: ../libempathy-gtk/empathy-chat.c:906 +#: ../libempathy-gtk/empathy-chat.c:932 msgid "/clear: clear all messages from the current conversation" msgstr "/clear: tøm alle meldinger fra aktiv samtale" -#: ../libempathy-gtk/empathy-chat.c:909 +#: ../libempathy-gtk/empathy-chat.c:935 msgid "/topic <topic>: set the topic of the current conversation" msgstr "/topic <emne>: sett emne for aktiv samtale" -#: ../libempathy-gtk/empathy-chat.c:912 +#: ../libempathy-gtk/empathy-chat.c:938 msgid "/join <chat room ID>: join a new chat room" msgstr "/join <ID for praterom>: bli med i et nytt praterom" -#: ../libempathy-gtk/empathy-chat.c:915 +#: ../libempathy-gtk/empathy-chat.c:941 msgid "/j <chat room ID>: join a new chat room" msgstr "/j <prateroms-ID>: bli med i et nytt praterom" -#: ../libempathy-gtk/empathy-chat.c:920 +#: ../libempathy-gtk/empathy-chat.c:946 msgid "" "/part [<chat room ID>] [<reason>]: leave the chat room, by default the " "current one" @@ -1262,23 +1243,23 @@ msgstr "" "/part [<praterom-ID>] [<årsak>]: forlat praterommet, forvalg er det aktive " "rommet" -#: ../libempathy-gtk/empathy-chat.c:925 +#: ../libempathy-gtk/empathy-chat.c:951 msgid "/query <contact ID> [<message>]: open a private chat" msgstr "/query <kontakt-ID> [<melding>]: åpne en privat samtale" -#: ../libempathy-gtk/empathy-chat.c:928 +#: ../libempathy-gtk/empathy-chat.c:954 msgid "/msg <contact ID> <message>: open a private chat" msgstr "/msg <kontakt-ID> <melding>: åpne en privat samtale" -#: ../libempathy-gtk/empathy-chat.c:931 +#: ../libempathy-gtk/empathy-chat.c:957 msgid "/nick <nickname>: change your nickname on the current server" msgstr "/nick <kallenavn>: bytt kallenavn på denne tjeneren" -#: ../libempathy-gtk/empathy-chat.c:934 +#: ../libempathy-gtk/empathy-chat.c:960 msgid "/me <message>: send an ACTION message to the current conversation" msgstr "/me <melding>: send en HANDLINGS-melding til aktiv samtale" -#: ../libempathy-gtk/empathy-chat.c:937 +#: ../libempathy-gtk/empathy-chat.c:963 msgid "" "/say <message>: send <message> to the current conversation. This is used to " "send a message starting with a '/'. For example: \"/say /join is used to " @@ -1288,7 +1269,7 @@ msgstr "" "sende en melding som starter med tegnet «/». For eksempel: «/say /join " "brukes til å bli med i et nytt praterom»" -#: ../libempathy-gtk/empathy-chat.c:942 +#: ../libempathy-gtk/empathy-chat.c:968 msgid "" "/help [<command>]: show all supported commands. If <command> is defined, " "show its usage." @@ -1296,98 +1277,103 @@ msgstr "" "/help [<kommando>]: vis alle støttede kommandoer. Vis hjelp for <kommando> " "hvis den er definert." -#: ../libempathy-gtk/empathy-chat.c:952 +#: ../libempathy-gtk/empathy-chat.c:978 #, c-format msgid "Usage: %s" msgstr "Bruk: %s" -#: ../libempathy-gtk/empathy-chat.c:991 +#: ../libempathy-gtk/empathy-chat.c:1017 msgid "Unknown command" msgstr "Ukjent kommando" -#: ../libempathy-gtk/empathy-chat.c:1117 +#: ../libempathy-gtk/empathy-chat.c:1143 msgid "Unknown command; see /help for the available commands" msgstr "Ukjent kommando; se /help for tilgjengelige kommandoer" -#: ../libempathy-gtk/empathy-chat.c:1254 +#: ../libempathy-gtk/empathy-chat.c:1281 msgid "offline" msgstr "frakoblet" -#: ../libempathy-gtk/empathy-chat.c:1257 +#: ../libempathy-gtk/empathy-chat.c:1284 msgid "invalid contact" msgstr "ugyldig kontakt" -#: ../libempathy-gtk/empathy-chat.c:1260 +#: ../libempathy-gtk/empathy-chat.c:1287 msgid "permission denied" msgstr "tilgang nektet" -#: ../libempathy-gtk/empathy-chat.c:1263 +#: ../libempathy-gtk/empathy-chat.c:1290 msgid "too long message" msgstr "meldingen er for lang" -#: ../libempathy-gtk/empathy-chat.c:1266 +#: ../libempathy-gtk/empathy-chat.c:1293 msgid "not implemented" msgstr "ikke implementert" -#: ../libempathy-gtk/empathy-chat.c:1270 +#: ../libempathy-gtk/empathy-chat.c:1297 msgid "unknown" msgstr "ukjent" -#: ../libempathy-gtk/empathy-chat.c:1274 +#: ../libempathy-gtk/empathy-chat.c:1302 #, c-format msgid "Error sending message '%s': %s" msgstr "Feil ved sending av melding «%s»: %s" -#: ../libempathy-gtk/empathy-chat.c:1335 ../src/empathy-chat-window.c:717 +#: ../libempathy-gtk/empathy-chat.c:1306 +#, c-format +msgid "Error sending message: %s" +msgstr "Feil ved sending av melding: %s" + +#: ../libempathy-gtk/empathy-chat.c:1367 ../src/empathy-chat-window.c:717 msgid "Topic:" msgstr "Emne:" -#: ../libempathy-gtk/empathy-chat.c:1347 +#: ../libempathy-gtk/empathy-chat.c:1379 #, c-format msgid "Topic set to: %s" msgstr "Emnet er satt til: %s" -#: ../libempathy-gtk/empathy-chat.c:1349 +#: ../libempathy-gtk/empathy-chat.c:1381 msgid "No topic defined" msgstr "Emne ikke definert" -#: ../libempathy-gtk/empathy-chat.c:1848 +#: ../libempathy-gtk/empathy-chat.c:1888 msgid "(No Suggestions)" msgstr "(Ingen forslag)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:1916 +#: ../libempathy-gtk/empathy-chat.c:1956 #, c-format msgid "Add '%s' to Dictionary" msgstr "Legg til «%s» i ordboken" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:1953 +#: ../libempathy-gtk/empathy-chat.c:1993 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "Legg til «%s» i ordbok for %s" -#: ../libempathy-gtk/empathy-chat.c:2010 +#: ../libempathy-gtk/empathy-chat.c:2050 msgid "Insert Smiley" msgstr "Sett inn smilefjes" #. send button -#: ../libempathy-gtk/empathy-chat.c:2028 +#: ../libempathy-gtk/empathy-chat.c:2068 #: ../libempathy-gtk/empathy-ui-utils.c:1808 msgid "_Send" msgstr "_Send" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2063 +#: ../libempathy-gtk/empathy-chat.c:2103 msgid "_Spelling Suggestions" msgstr "_Staveforslag" -#: ../libempathy-gtk/empathy-chat.c:2152 +#: ../libempathy-gtk/empathy-chat.c:2192 msgid "Failed to retrieve recent logs" msgstr "Klarte ikke å hente siste logger" -#: ../libempathy-gtk/empathy-chat.c:2263 +#: ../libempathy-gtk/empathy-chat.c:2303 #, c-format msgid "%s has disconnected" msgstr "%s har koblet fra" @@ -1395,12 +1381,12 @@ msgstr "%s har koblet fra" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2270 +#: ../libempathy-gtk/empathy-chat.c:2310 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%1$s ble sparket av %2$s" -#: ../libempathy-gtk/empathy-chat.c:2273 +#: ../libempathy-gtk/empathy-chat.c:2313 #, c-format msgid "%s was kicked" msgstr "%s ble sparket" @@ -1408,17 +1394,17 @@ msgstr "%s ble sparket" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2281 +#: ../libempathy-gtk/empathy-chat.c:2321 #, c-format msgid "%1$s was banned by %2$s" msgstr "%1$s ble bannlyst av %2$s" -#: ../libempathy-gtk/empathy-chat.c:2284 +#: ../libempathy-gtk/empathy-chat.c:2324 #, c-format msgid "%s was banned" msgstr "%s ble bannlyst" -#: ../libempathy-gtk/empathy-chat.c:2288 +#: ../libempathy-gtk/empathy-chat.c:2328 #, c-format msgid "%s has left the room" msgstr "%s har forlatt rommet" @@ -1428,62 +1414,62 @@ msgstr "%s har forlatt rommet" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2297 +#: ../libempathy-gtk/empathy-chat.c:2337 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2322 +#: ../libempathy-gtk/empathy-chat.c:2362 #, c-format msgid "%s has joined the room" msgstr "%s har blitt med i rommet" -#: ../libempathy-gtk/empathy-chat.c:2347 +#: ../libempathy-gtk/empathy-chat.c:2387 #, c-format msgid "%s is now known as %s" msgstr "%s er nå kjent som %s" -#: ../libempathy-gtk/empathy-chat.c:2486 -#: ../src/empathy-streamed-media-window.c:1949 -#: ../src/empathy-event-manager.c:1122 +#: ../libempathy-gtk/empathy-chat.c:2526 +#: ../src/empathy-streamed-media-window.c:1957 +#: ../src/empathy-event-manager.c:1126 msgid "Disconnected" msgstr "Koblet fra" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3116 +#: ../libempathy-gtk/empathy-chat.c:3158 msgid "Would you like to store this password?" msgstr "Vil du lagre dette passordet?" -#: ../libempathy-gtk/empathy-chat.c:3122 +#: ../libempathy-gtk/empathy-chat.c:3164 msgid "Remember" msgstr "Husk" -#: ../libempathy-gtk/empathy-chat.c:3132 +#: ../libempathy-gtk/empathy-chat.c:3174 msgid "Not now" msgstr "Ikke nå" -#: ../libempathy-gtk/empathy-chat.c:3176 +#: ../libempathy-gtk/empathy-chat.c:3218 msgid "Retry" msgstr "Prøv igjen" -#: ../libempathy-gtk/empathy-chat.c:3180 +#: ../libempathy-gtk/empathy-chat.c:3222 msgid "Wrong password; please try again:" msgstr "Feil passord; vennligst prøv igjen:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3297 +#: ../libempathy-gtk/empathy-chat.c:3339 msgid "This room is protected by a password:" msgstr "Dette rommet er beskyttet med et passord:" -#: ../libempathy-gtk/empathy-chat.c:3324 +#: ../libempathy-gtk/empathy-chat.c:3366 msgid "Join" msgstr "Bli med" -#: ../libempathy-gtk/empathy-chat.c:3494 ../src/empathy-event-manager.c:1144 +#: ../libempathy-gtk/empathy-chat.c:3536 ../src/empathy-event-manager.c:1147 msgid "Connected" msgstr "Koblet til" -#: ../libempathy-gtk/empathy-chat.c:3547 +#: ../libempathy-gtk/empathy-chat.c:3589 #: ../libempathy-gtk/empathy-log-window.c:650 msgid "Conversation" msgstr "Samtale" @@ -1512,21 +1498,32 @@ msgstr "Kunne ikke blokkere kontakt" msgid "Edit Blocked Contacts" msgstr "Rediger blokkerte kontakter" +#. Account and Identifier +#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:520 +#: ../libempathy-gtk/empathy-contact-widget.ui.h:2 +#: ../libempathy-gtk/empathy-individual-widget.c:1479 +#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 +#: ../src/empathy-chatrooms-window.ui.h:1 +#: ../src/empathy-new-chatroom-dialog.ui.h:1 +msgid "Account:" +msgstr "Konto:" + #. Copy Link Address menu item #: ../libempathy-gtk/empathy-chat-text-view.c:320 -#: ../libempathy-gtk/empathy-theme-adium.c:794 +#: ../libempathy-gtk/empathy-theme-adium.c:1026 msgid "_Copy Link Address" msgstr "_Kopier lenkens adresse" #. Open Link menu item #: ../libempathy-gtk/empathy-chat-text-view.c:327 -#: ../libempathy-gtk/empathy-theme-adium.c:801 +#: ../libempathy-gtk/empathy-theme-adium.c:1033 msgid "_Open Link" msgstr "_Åpne lenke" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:420 +#: ../libempathy-gtk/empathy-chat-text-view.c:415 msgid "%A %B %d %Y" msgstr "%A %d %B %Y" @@ -1544,24 +1541,24 @@ msgstr "Personlig informasjon" msgid "New Contact" msgstr "Ny kontakt" -#: ../libempathy-gtk/empathy-contact-dialogs.c:532 +#: ../libempathy-gtk/empathy-contact-dialogs.c:533 #: ../libempathy-gtk/empathy-individual-dialogs.c:199 #, c-format msgid "Block %s?" msgstr "Blokker %s?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:537 +#: ../libempathy-gtk/empathy-contact-dialogs.c:538 #: ../libempathy-gtk/empathy-individual-dialogs.c:247 #, c-format msgid "Are you sure you want to block '%s' from contacting you again?" msgstr "Er du sikker på at du vil blokkere «%s» fra å kontakte deg igjen?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:542 +#: ../libempathy-gtk/empathy-contact-dialogs.c:543 #: ../libempathy-gtk/empathy-individual-dialogs.c:269 msgid "_Block" msgstr "_Blokker" -#: ../libempathy-gtk/empathy-contact-dialogs.c:552 +#: ../libempathy-gtk/empathy-contact-dialogs.c:559 #: ../libempathy-gtk/empathy-individual-dialogs.c:278 msgid "_Report this contact as abusive" msgid_plural "_Report these contacts as abusive" @@ -1588,34 +1585,34 @@ msgstr "Ikke gruppert" msgid "Favorite People" msgstr "Favorittpersoner" -#: ../libempathy-gtk/empathy-contact-list-view.c:2001 -#: ../libempathy-gtk/empathy-individual-view.c:2336 +#: ../libempathy-gtk/empathy-contact-list-view.c:1987 +#: ../libempathy-gtk/empathy-individual-view.c:2386 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "Vil du virkelig fjerne gruppen «%s»?" -#: ../libempathy-gtk/empathy-contact-list-view.c:2003 -#: ../libempathy-gtk/empathy-individual-view.c:2339 +#: ../libempathy-gtk/empathy-contact-list-view.c:1989 +#: ../libempathy-gtk/empathy-individual-view.c:2389 msgid "Removing group" msgstr "Fjerner gruppe" #. Remove -#: ../libempathy-gtk/empathy-contact-list-view.c:2052 -#: ../libempathy-gtk/empathy-contact-list-view.c:2129 -#: ../libempathy-gtk/empathy-individual-view.c:2394 -#: ../libempathy-gtk/empathy-individual-view.c:2588 +#: ../libempathy-gtk/empathy-contact-list-view.c:2038 +#: ../libempathy-gtk/empathy-contact-list-view.c:2115 +#: ../libempathy-gtk/empathy-individual-view.c:2444 +#: ../libempathy-gtk/empathy-individual-view.c:2637 #: ../src/empathy-accounts-dialog.ui.h:7 msgid "_Remove" msgstr "Fje_rn" -#: ../libempathy-gtk/empathy-contact-list-view.c:2082 -#: ../libempathy-gtk/empathy-individual-view.c:2458 +#: ../libempathy-gtk/empathy-contact-list-view.c:2068 +#: ../libempathy-gtk/empathy-individual-view.c:2508 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "Vil du virkelig fjerne kontakten «%s»?" -#: ../libempathy-gtk/empathy-contact-list-view.c:2084 -#: ../libempathy-gtk/empathy-individual-view.c:2479 +#: ../libempathy-gtk/empathy-contact-list-view.c:2070 +#: ../libempathy-gtk/empathy-individual-view.c:2529 msgid "Removing contact" msgstr "Fjerner kontakt" @@ -1624,68 +1621,68 @@ msgstr "Fjerner kontakt" msgid "_Add Contact…" msgstr "_Legg til kontakt …" -#: ../libempathy-gtk/empathy-contact-menu.c:296 +#: ../libempathy-gtk/empathy-contact-menu.c:299 msgid "_Block Contact" msgstr "_Blokker kontakt" -#: ../libempathy-gtk/empathy-contact-menu.c:325 +#: ../libempathy-gtk/empathy-contact-menu.c:328 #: ../libempathy-gtk/empathy-individual-menu.c:517 #: ../src/empathy-main-window.ui.h:15 msgid "_Chat" msgstr "_Prat" -#: ../libempathy-gtk/empathy-contact-menu.c:356 +#: ../libempathy-gtk/empathy-contact-menu.c:359 #: ../libempathy-gtk/empathy-individual-menu.c:560 msgctxt "menu item" msgid "_Audio Call" msgstr "_Lydsamtale" -#: ../libempathy-gtk/empathy-contact-menu.c:387 +#: ../libempathy-gtk/empathy-contact-menu.c:390 #: ../libempathy-gtk/empathy-individual-menu.c:602 msgctxt "menu item" msgid "_Video Call" msgstr "_Videosamtale" -#: ../libempathy-gtk/empathy-contact-menu.c:433 +#: ../libempathy-gtk/empathy-contact-menu.c:436 #: ../libempathy-gtk/empathy-individual-menu.c:645 #: ../src/empathy-main-window.ui.h:26 msgid "_Previous Conversations" msgstr "_Tidligere samtaler" -#: ../libempathy-gtk/empathy-contact-menu.c:455 +#: ../libempathy-gtk/empathy-contact-menu.c:458 #: ../libempathy-gtk/empathy-individual-menu.c:686 msgid "Send File" msgstr "Send fil" -#: ../libempathy-gtk/empathy-contact-menu.c:478 +#: ../libempathy-gtk/empathy-contact-menu.c:481 #: ../libempathy-gtk/empathy-individual-menu.c:728 msgid "Share My Desktop" msgstr "Del mitt skrivebord" -#: ../libempathy-gtk/empathy-contact-menu.c:518 -#: ../libempathy-gtk/empathy-contact-widget.c:1763 +#: ../libempathy-gtk/empathy-contact-menu.c:521 +#: ../libempathy-gtk/empathy-contact-widget.c:1761 #: ../libempathy-gtk/empathy-individual-menu.c:763 -#: ../libempathy-gtk/empathy-individual-widget.c:1372 +#: ../libempathy-gtk/empathy-individual-widget.c:1370 msgid "Favorite" msgstr "Favoritt" -#: ../libempathy-gtk/empathy-contact-menu.c:547 +#: ../libempathy-gtk/empathy-contact-menu.c:550 #: ../libempathy-gtk/empathy-individual-menu.c:791 msgid "Infor_mation" msgstr "Infor_masjon" -#: ../libempathy-gtk/empathy-contact-menu.c:593 +#: ../libempathy-gtk/empathy-contact-menu.c:596 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "R_ediger" -#: ../libempathy-gtk/empathy-contact-menu.c:647 +#: ../libempathy-gtk/empathy-contact-menu.c:650 #: ../libempathy-gtk/empathy-individual-menu.c:972 #: ../src/empathy-chat-window.c:935 msgid "Inviting you to this room" msgstr "Inviterer deg til dette rommet" -#: ../libempathy-gtk/empathy-contact-menu.c:678 +#: ../libempathy-gtk/empathy-contact-menu.c:681 #: ../libempathy-gtk/empathy-individual-menu.c:1019 msgid "_Invite to Chat Room" msgstr "_Inviter til praterom" @@ -1857,32 +1854,32 @@ msgid "Altitude:" msgstr "Høyde:" #: ../libempathy-gtk/empathy-contact-widget.c:871 -#: ../libempathy-gtk/empathy-contact-widget.c:888 +#: ../libempathy-gtk/empathy-contact-widget.c:886 #: ../libempathy-gtk/empathy-individual-widget.c:616 -#: ../libempathy-gtk/empathy-individual-widget.c:633 +#: ../libempathy-gtk/empathy-individual-widget.c:631 #: ../src/empathy-preferences.ui.h:12 msgid "Location" msgstr "Sted" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:890 -#: ../libempathy-gtk/empathy-individual-widget.c:635 +#: ../libempathy-gtk/empathy-contact-widget.c:888 +#: ../libempathy-gtk/empathy-individual-widget.c:633 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:942 -#: ../libempathy-gtk/empathy-individual-widget.c:684 +#: ../libempathy-gtk/empathy-contact-widget.c:940 +#: ../libempathy-gtk/empathy-individual-widget.c:682 msgid "%B %e, %Y at %R UTC" msgstr "%B %e, %Y, %R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1024 -#: ../libempathy-gtk/empathy-individual-widget.c:919 +#: ../libempathy-gtk/empathy-contact-widget.c:1022 +#: ../libempathy-gtk/empathy-individual-widget.c:917 msgid "Save Avatar" msgstr "Lagre personbilder" -#: ../libempathy-gtk/empathy-contact-widget.c:1080 -#: ../libempathy-gtk/empathy-individual-widget.c:977 +#: ../libempathy-gtk/empathy-contact-widget.c:1078 +#: ../libempathy-gtk/empathy-individual-widget.c:975 msgid "Unable to save avatar" msgstr "Kan ikke lagre personbilde" @@ -1892,7 +1889,7 @@ msgstr "<b>Plassering</b> (dato)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1307 +#: ../libempathy-gtk/empathy-individual-widget.c:1305 msgid "Alias:" msgstr "Alias:" @@ -1912,7 +1909,7 @@ msgstr "Kontaktdetaljer" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1511 +#: ../libempathy-gtk/empathy-individual-widget.c:1509 msgid "Identifier:" msgstr "Identifikator:" @@ -1951,7 +1948,7 @@ msgid "Select" msgstr "Velg" #: ../libempathy-gtk/empathy-groups-widget.c:408 -#: ../src/empathy-main-window.c:1436 +#: ../src/empathy-main-window.c:1439 msgid "Group" msgstr "Gruppe" @@ -2004,11 +2001,11 @@ msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "Koble kontakter …" -#: ../libempathy-gtk/empathy-individual-view.c:2301 +#: ../libempathy-gtk/empathy-individual-view.c:2351 msgid "Delete and _Block" msgstr "Slett og _blokker" -#: ../libempathy-gtk/empathy-individual-view.c:2467 +#: ../libempathy-gtk/empathy-individual-view.c:2517 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2017,7 +2014,7 @@ msgstr "" "Vil du virkelig fjerne lenket kontakt «%s»? Merk at dette vil fjerne alle " "kontaktene den lenkede kontakten består av." -#: ../libempathy-gtk/empathy-individual-widget.c:1652 +#: ../libempathy-gtk/empathy-individual-widget.c:1650 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2285,19 +2282,19 @@ msgstr "Lagre _nye statusmeldinger" msgid "Saved Status Messages" msgstr "Lagrede statusmeldinger" -#: ../libempathy-gtk/empathy-theme-manager.c:67 +#: ../libempathy-gtk/empathy-theme-manager.c:68 msgid "Classic" msgstr "Klassisk" -#: ../libempathy-gtk/empathy-theme-manager.c:68 +#: ../libempathy-gtk/empathy-theme-manager.c:69 msgid "Simple" msgstr "Enkel" -#: ../libempathy-gtk/empathy-theme-manager.c:69 +#: ../libempathy-gtk/empathy-theme-manager.c:70 msgid "Clean" msgstr "Tøm" -#: ../libempathy-gtk/empathy-theme-manager.c:70 +#: ../libempathy-gtk/empathy-theme-manager.c:71 msgid "Blue" msgstr "Blå" @@ -2827,34 +2824,34 @@ msgstr "Det finnes ikke-lagrede endringer for din %s-konto." msgid "Your new account has not been saved yet." msgstr "Din nye konto er ikke lagret ennå." -#: ../src/empathy-accounts-dialog.c:286 +#: ../src/empathy-accounts-dialog.c:345 #: ../src/empathy-streamed-media-window.c:809 msgid "Connecting…" msgstr "Kobler til …" -#: ../src/empathy-accounts-dialog.c:327 +#: ../src/empathy-accounts-dialog.c:386 #, c-format msgid "Offline — %s" msgstr "Frakoblet - %s" -#: ../src/empathy-accounts-dialog.c:339 +#: ../src/empathy-accounts-dialog.c:398 #, c-format msgid "Disconnected — %s" msgstr "Koblet fra - %s" -#: ../src/empathy-accounts-dialog.c:350 +#: ../src/empathy-accounts-dialog.c:409 msgid "Offline — No Network Connection" msgstr "Frakoblet - Ingen nettverkstilkobling" -#: ../src/empathy-accounts-dialog.c:357 +#: ../src/empathy-accounts-dialog.c:416 msgid "Unknown Status" msgstr "Ukjent status" -#: ../src/empathy-accounts-dialog.c:369 +#: ../src/empathy-accounts-dialog.c:428 msgid "Offline — Account Disabled" msgstr "Frakoblet - Konto deaktivert" -#: ../src/empathy-accounts-dialog.c:772 +#: ../src/empathy-accounts-dialog.c:831 msgid "" "You are about to create a new account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2862,16 +2859,16 @@ msgstr "" "Du er i ferd med å lage en ny konto hvilket vil forkaste\n" "dine endringer. Er du sikker på at du vil fortsette?" -#: ../src/empathy-accounts-dialog.c:1133 +#: ../src/empathy-accounts-dialog.c:1192 #, c-format msgid "Do you want to remove %s from your computer?" msgstr "Vil du fjerne %s fra din datamaskin?" -#: ../src/empathy-accounts-dialog.c:1137 +#: ../src/empathy-accounts-dialog.c:1196 msgid "This will not remove your account on the server." msgstr "Dette vil ikke fjerne din konto på tjeneren." -#: ../src/empathy-accounts-dialog.c:1375 +#: ../src/empathy-accounts-dialog.c:1434 msgid "" "You are about to select another account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2880,15 +2877,15 @@ msgstr "" "dine endringer. Er du sikker på at du vil fortsette?" #. Menu items: to enabled/disable the account -#: ../src/empathy-accounts-dialog.c:1571 +#: ../src/empathy-accounts-dialog.c:1652 msgid "_Enable" msgstr "Slå _på" -#: ../src/empathy-accounts-dialog.c:1572 +#: ../src/empathy-accounts-dialog.c:1653 msgid "_Disable" msgstr "Slå _av" -#: ../src/empathy-accounts-dialog.c:2086 +#: ../src/empathy-accounts-dialog.c:2174 msgid "" "You are about to close the window, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2924,11 +2921,11 @@ msgstr "_Legg til …" msgid "_Import…" msgstr "_Importer …" -#: ../src/empathy-auth-client.c:246 +#: ../src/empathy-auth-client.c:250 msgid " - Empathy authentication client" msgstr "- Empathy autentiseringsklient" -#: ../src/empathy-auth-client.c:262 +#: ../src/empathy-auth-client.c:266 msgid "Empathy authentication client" msgstr "Empathy autentiseringsklient" @@ -3013,17 +3010,37 @@ msgstr "IP-adresse for en relay-tjener" msgid "The IP address of the multicast group" msgstr "IP-adresse for multicast-gruppe" +#: ../src/empathy-streamed-media-window.c:1906 +msgctxt "encoding video codec" +msgid "Unknown" +msgstr "Ukjent" + +#: ../src/empathy-streamed-media-window.c:1909 +msgctxt "encoding audio codec" +msgid "Unknown" +msgstr "Ukjent" + +#: ../src/empathy-streamed-media-window.c:1912 +msgctxt "decoding video codec" +msgid "Unknown" +msgstr "Ukjent" + +#: ../src/empathy-streamed-media-window.c:1915 +msgctxt "decoding audio codec" +msgid "Unknown" +msgstr "Ukjent" + #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2266 +#: ../src/empathy-streamed-media-window.c:2274 #, c-format msgid "Connected — %d:%02dm" msgstr "Koblet til - %d:%02dm" -#: ../src/empathy-streamed-media-window.c:2327 +#: ../src/empathy-streamed-media-window.c:2335 msgid "Technical Details" msgstr "Tekniske detaljer" -#: ../src/empathy-streamed-media-window.c:2365 +#: ../src/empathy-streamed-media-window.c:2373 #, c-format msgid "" "%s's software does not understand any of the audio formats supported by your " @@ -3032,7 +3049,7 @@ msgstr "" "Programvaren til %s forstår ikke noen av lydformatene som støttes av din " "datamaskin" -#: ../src/empathy-streamed-media-window.c:2370 +#: ../src/empathy-streamed-media-window.c:2378 #, c-format msgid "" "%s's software does not understand any of the video formats supported by your " @@ -3041,7 +3058,7 @@ msgstr "" "Programvaren til %s forstår ikke noen av videoformatene som støttes av din " "datamaskin" -#: ../src/empathy-streamed-media-window.c:2376 +#: ../src/empathy-streamed-media-window.c:2384 #, c-format msgid "" "Can't establish a connection to %s. One of you might be on a network that " @@ -3050,25 +3067,25 @@ msgstr "" "Kan ikke etablere tilkobling til %s. En av dere kan være på et nettverk som " "ikke tillater direkte tilkoblinger." -#: ../src/empathy-streamed-media-window.c:2382 +#: ../src/empathy-streamed-media-window.c:2390 msgid "There was a failure on the network" msgstr "Det oppsto en feil på nettverket" -#: ../src/empathy-streamed-media-window.c:2386 +#: ../src/empathy-streamed-media-window.c:2394 msgid "" "The audio formats necessary for this call are not installed on your computer" msgstr "" "Lydformatene som kreves for denne samtalen er ikke installert på din " "datamaskin" -#: ../src/empathy-streamed-media-window.c:2389 +#: ../src/empathy-streamed-media-window.c:2397 msgid "" "The video formats necessary for this call are not installed on your computer" msgstr "" "Videoformatene som kreves for denne samtalen er ikke installert på din " "datamaskin" -#: ../src/empathy-streamed-media-window.c:2399 +#: ../src/empathy-streamed-media-window.c:2407 #, c-format msgid "" "Something unexpected happened in a Telepathy component. Please <a href=\"%s" @@ -3079,19 +3096,19 @@ msgstr "" "\">rapporter denne feilen</a> og legg ved loggene som samles inn i " "«Feilsøking»-vinduet i Hjelp-menyen." -#: ../src/empathy-streamed-media-window.c:2407 +#: ../src/empathy-streamed-media-window.c:2415 msgid "There was a failure in the call engine" msgstr "Det oppsto en feil i samtalemotoren" -#: ../src/empathy-streamed-media-window.c:2410 +#: ../src/empathy-streamed-media-window.c:2418 msgid "The end of the stream was reached" msgstr "Slutt på strømmen ble nådd" -#: ../src/empathy-streamed-media-window.c:2450 +#: ../src/empathy-streamed-media-window.c:2458 msgid "Can't establish audio stream" msgstr "Kan ikke etablere lydstrøm" -#: ../src/empathy-streamed-media-window.c:2460 +#: ../src/empathy-streamed-media-window.c:2468 msgid "Can't establish video stream" msgstr "Kan ikke etablere videostrøm" @@ -3163,6 +3180,10 @@ msgstr "Send lyd" msgid "Toggle audio transmission" msgstr "Slå av/på overføring av lyd" +#: ../src/empathy-call-window.ui.h:18 +msgid "Unknown" +msgstr "Ukjent" + #: ../src/empathy-call-window.ui.h:19 msgid "V_ideo" msgstr "V_ideo" @@ -3333,7 +3354,7 @@ msgstr "%s ringer deg med video. Vil du svare?" msgid "%s is calling you. Do you want to answer?" msgstr "%s ringer deg. Vil du svare?" -#: ../src/empathy-event-manager.c:515 ../src/empathy-event-manager.c:660 +#: ../src/empathy-event-manager.c:515 ../src/empathy-event-manager.c:667 #, c-format msgid "Incoming call from %s" msgstr "Innkommende samtale fra %s" @@ -3346,59 +3367,59 @@ msgstr "Av_vis" msgid "_Answer" msgstr "Sv_ar" -#: ../src/empathy-event-manager.c:660 +#: ../src/empathy-event-manager.c:667 #, c-format msgid "Incoming video call from %s" msgstr "Innkommende videosamtale fra %s" -#: ../src/empathy-event-manager.c:737 +#: ../src/empathy-event-manager.c:744 msgid "Room invitation" msgstr "Invitasjon til rom" -#: ../src/empathy-event-manager.c:739 +#: ../src/empathy-event-manager.c:746 #, c-format msgid "Invitation to join %s" msgstr "Invitasjon til å bli med i %s" -#: ../src/empathy-event-manager.c:746 +#: ../src/empathy-event-manager.c:753 #, c-format msgid "%s is inviting you to join %s" msgstr "%s inviterer deg til å bli med i %s" -#: ../src/empathy-event-manager.c:754 +#: ../src/empathy-event-manager.c:761 msgid "_Decline" msgstr "_Avslå" -#: ../src/empathy-event-manager.c:759 +#: ../src/empathy-event-manager.c:766 #: ../src/empathy-new-chatroom-dialog.ui.h:7 msgid "_Join" msgstr "_Bli med" -#: ../src/empathy-event-manager.c:786 +#: ../src/empathy-event-manager.c:793 #, c-format msgid "%s invited you to join %s" msgstr "%s inviterte deg til å bli med i %s" -#: ../src/empathy-event-manager.c:792 +#: ../src/empathy-event-manager.c:799 #, c-format msgid "You have been invited to join %s" msgstr "Du har blitt invitert til å bli med i %s" -#: ../src/empathy-event-manager.c:843 +#: ../src/empathy-event-manager.c:850 #, c-format msgid "Incoming file transfer from %s" msgstr "Innkommende filoverføring fra %s" -#: ../src/empathy-event-manager.c:1013 ../src/empathy-main-window.c:370 +#: ../src/empathy-event-manager.c:1020 ../src/empathy-main-window.c:373 msgid "Password required" msgstr "Passord kreves" -#: ../src/empathy-event-manager.c:1069 +#: ../src/empathy-event-manager.c:1076 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s ønsker rettigheter til å se når du er tilkoblet" -#: ../src/empathy-event-manager.c:1073 +#: ../src/empathy-event-manager.c:1080 #, c-format msgid "" "\n" @@ -3408,105 +3429,105 @@ msgstr "" "Melding: %s" #. Translators: time left, when it is more than one hour -#: ../src/empathy-ft-manager.c:99 +#: ../src/empathy-ft-manager.c:100 #, c-format msgid "%u:%02u.%02u" msgstr "%u:%02u.%02u" #. Translators: time left, when is is less than one hour -#: ../src/empathy-ft-manager.c:102 +#: ../src/empathy-ft-manager.c:103 #, c-format msgid "%02u.%02u" msgstr "%02u.%02u" -#: ../src/empathy-ft-manager.c:178 +#: ../src/empathy-ft-manager.c:179 msgctxt "file transfer percent" msgid "Unknown" msgstr "Ukjent" -#: ../src/empathy-ft-manager.c:273 +#: ../src/empathy-ft-manager.c:274 #, c-format msgid "%s of %s at %s/s" msgstr "%s av %s med %s/s" -#: ../src/empathy-ft-manager.c:274 +#: ../src/empathy-ft-manager.c:275 #, c-format msgid "%s of %s" msgstr "%s av %s" #. translators: first %s is filename, second %s is the contact name -#: ../src/empathy-ft-manager.c:305 +#: ../src/empathy-ft-manager.c:306 #, c-format msgid "Receiving \"%s\" from %s" msgstr "Mottar «%s» fra %s" #. translators: first %s is filename, second %s is the contact name -#: ../src/empathy-ft-manager.c:308 +#: ../src/empathy-ft-manager.c:309 #, c-format msgid "Sending \"%s\" to %s" msgstr "Sender «%s» til %s" #. translators: first %s is filename, second %s #. * is the contact name -#: ../src/empathy-ft-manager.c:338 +#: ../src/empathy-ft-manager.c:339 #, c-format msgid "Error receiving \"%s\" from %s" msgstr "Feil ved mottak av «%s» fra %s" -#: ../src/empathy-ft-manager.c:341 +#: ../src/empathy-ft-manager.c:342 msgid "Error receiving a file" msgstr "Feil ved mottak av en fil" -#: ../src/empathy-ft-manager.c:346 +#: ../src/empathy-ft-manager.c:347 #, c-format msgid "Error sending \"%s\" to %s" msgstr "Feil ved sending av «%s» til %s" -#: ../src/empathy-ft-manager.c:349 +#: ../src/empathy-ft-manager.c:350 msgid "Error sending a file" msgstr "Feil ved sending av en fil" #. translators: first %s is filename, second %s #. * is the contact name -#: ../src/empathy-ft-manager.c:488 +#: ../src/empathy-ft-manager.c:489 #, c-format msgid "\"%s\" received from %s" msgstr "«%s» mottatt fra %s" #. translators: first %s is filename, second %s #. * is the contact name -#: ../src/empathy-ft-manager.c:493 +#: ../src/empathy-ft-manager.c:494 #, c-format msgid "\"%s\" sent to %s" msgstr "«%s» sendt til %s" -#: ../src/empathy-ft-manager.c:496 +#: ../src/empathy-ft-manager.c:497 msgid "File transfer completed" msgstr "Filoverføring fullført" -#: ../src/empathy-ft-manager.c:615 ../src/empathy-ft-manager.c:782 +#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:783 msgid "Waiting for the other participant's response" msgstr "Venter på svar fra motparten" -#: ../src/empathy-ft-manager.c:641 ../src/empathy-ft-manager.c:679 +#: ../src/empathy-ft-manager.c:642 ../src/empathy-ft-manager.c:680 #, c-format msgid "Checking integrity of \"%s\"" msgstr "Sjekker integriteten for «%s»" -#: ../src/empathy-ft-manager.c:644 ../src/empathy-ft-manager.c:682 +#: ../src/empathy-ft-manager.c:645 ../src/empathy-ft-manager.c:683 #, c-format msgid "Hashing \"%s\"" msgstr "Hasher «%s»" -#: ../src/empathy-ft-manager.c:1016 +#: ../src/empathy-ft-manager.c:1029 msgid "%" msgstr "%" -#: ../src/empathy-ft-manager.c:1028 +#: ../src/empathy-ft-manager.c:1041 msgid "File" msgstr "Fil" -#: ../src/empathy-ft-manager.c:1050 +#: ../src/empathy-ft-manager.c:1063 msgid "Remaining" msgstr "Gjenstår" @@ -3541,39 +3562,39 @@ msgstr "Protokoll" msgid "Source" msgstr "Kilde" -#: ../src/empathy-main-window.c:387 +#: ../src/empathy-main-window.c:390 msgid "Provide Password" msgstr "Oppgi passord" -#: ../src/empathy-main-window.c:393 +#: ../src/empathy-main-window.c:396 msgid "Disconnect" msgstr "Koble fra" -#: ../src/empathy-main-window.c:533 +#: ../src/empathy-main-window.c:536 msgid "No match found" msgstr "Ingen treff funnet" -#: ../src/empathy-main-window.c:688 +#: ../src/empathy-main-window.c:691 msgid "Reconnect" msgstr "Koble til på nytt" -#: ../src/empathy-main-window.c:694 +#: ../src/empathy-main-window.c:697 msgid "Edit Account" msgstr "Rediger konto" -#: ../src/empathy-main-window.c:700 +#: ../src/empathy-main-window.c:703 msgid "Close" msgstr "Lukk" -#: ../src/empathy-main-window.c:1418 +#: ../src/empathy-main-window.c:1421 msgid "Contact" msgstr "Kontakt" -#: ../src/empathy-main-window.c:1765 +#: ../src/empathy-main-window.c:1768 msgid "Contact List" msgstr "Kontaktliste" -#: ../src/empathy-main-window.c:1881 +#: ../src/empathy-main-window.c:1884 msgid "Show and edit accounts" msgstr "Vis og rediger kontoer" @@ -3732,39 +3753,79 @@ msgstr "Romliste" msgid "_Room:" msgstr "_Rom:" -#: ../src/empathy-preferences.c:139 +#: ../src/empathy-preferences.c:147 msgid "Message received" msgstr "Melding mottatt" -#: ../src/empathy-preferences.c:140 +#: ../src/empathy-preferences.c:148 msgid "Message sent" msgstr "Melding sendt" -#: ../src/empathy-preferences.c:141 +#: ../src/empathy-preferences.c:149 msgid "New conversation" msgstr "Ny samtale" -#: ../src/empathy-preferences.c:142 +#: ../src/empathy-preferences.c:150 msgid "Contact goes online" msgstr "Kontakt kobler til" -#: ../src/empathy-preferences.c:143 +#: ../src/empathy-preferences.c:151 msgid "Contact goes offline" msgstr "Kontakt kobler fra" -#: ../src/empathy-preferences.c:144 +#: ../src/empathy-preferences.c:152 msgid "Account connected" msgstr "Konto koblet til" -#: ../src/empathy-preferences.c:145 +#: ../src/empathy-preferences.c:153 msgid "Account disconnected" msgstr "Konto koblet fra" -#: ../src/empathy-preferences.c:446 +#: ../src/empathy-preferences.c:454 msgid "Language" msgstr "Språk" -#: ../src/empathy-preferences.c:875 +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:704 +msgid "Juliet" +msgstr "Juliet" + +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:711 +msgid "Romeo" +msgstr "Romeo" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:717 +msgid "O Romeo, Romeo, wherefore art thou Romeo?" +msgstr "O Romeo, Romeo, wherefore art thou Romeo?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:720 +msgid "Deny thy father and refuse thy name;" +msgstr "Deny thy father and refuse thy name;" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:723 +msgid "Or if thou wilt not, be but sworn my love" +msgstr "Or if thou wilt not, be but sworn my love" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:726 +msgid "And I'll no longer be a Capulet." +msgstr "And I'll no longer be a Capulet." + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:729 +msgid "Shall I hear more, or shall I speak at this?" +msgstr "Shall I hear more, or shall I speak at this?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:732 +msgid "Juliet has disconnected" +msgstr "Juliet har koblet fra" + +#: ../src/empathy-preferences.c:966 msgid "Preferences" msgstr "Brukervalg" @@ -3865,43 +3926,47 @@ msgstr "" "Listen med språk viser bare de språkene det er installert ordliste for." #: ../src/empathy-preferences.ui.h:24 +msgid "Theme Variant:" +msgstr "Temavariant:" + +#: ../src/empathy-preferences.ui.h:25 msgid "Themes" msgstr "Temaer" -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:26 msgid "_Automatically connect on startup" msgstr "Koble til _automatisk ved oppstart" -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:27 msgid "_Cellphone" msgstr "_Mobiltelefon" -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:28 msgid "_Enable bubble notifications" msgstr "_Aktiver varsling med bobler" -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:29 msgid "_Enable sound notifications" msgstr "_Aktiver varsling med lyder" -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:30 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:31 msgid "_Network (IP, Wi-Fi)" msgstr "_Nettverk (IP, Wi-Fi)" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:32 msgid "_Open new chats in separate windows" msgstr "_Åpne nye samtaler i egne vinduer" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:33 msgid "_Publish location to my contacts" msgstr "_Publiser plassering til mine kontakter" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:35 msgid "_Reduce location accuracy" msgstr "_Reduser nøyaktighet for plassering" @@ -3913,7 +3978,7 @@ msgstr "Status" msgid "_Quit" msgstr "_Avslutt" -#: ../src/empathy-map-view.c:442 +#: ../src/empathy-map-view.c:448 msgid "Contact Map View" msgstr "Kartvisning for kontakter" @@ -4051,6 +4116,10 @@ msgstr "Avslå" msgid "Accept" msgstr "Godta" +#: ../src/empathy-notifications-approver.c:223 +msgid "Provide" +msgstr "Oppgi" + #: ../src/empathy-call-observer.c:130 #, c-format msgid "Missed call from %s" @@ -4060,3 +4129,7 @@ msgstr "Tapt anrop fra %s" #, c-format msgid "%s just tried to call you, but you were in another call." msgstr "%s prøvde å ringe deg, men du var i en annen samtale." + +#: ../libempathy-gtk/empathy-search-bar.c:282 +msgid "_Match case" +msgstr "Skill _mellom små/store bokstaver" @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: empathy\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=empathy&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-04-21 09:08+0000\n" -"PO-Revision-Date: 2011-04-26 15:19+0300\n" +"POT-Creation-Date: 2011-05-02 12:56+0000\n" +"PO-Revision-Date: 2011-05-03 11:22+0300\n" "Last-Translator: Muhammet Kara <muhammet.k@gmail.com>\n" "Language-Team: Turkish <gnome-turk@gnome.org>\n" "MIME-Version: 1.0\n" @@ -536,7 +536,6 @@ msgstr "Çevrimdışı" #. translators: presence type is unknown #: ../libempathy/empathy-utils.c:316 -#| msgid "Unknown" msgctxt "presence" msgid "Unknown" msgstr "Bilinmiyor" @@ -1338,7 +1337,6 @@ msgstr "'%s' mesajı gönderilirken hata : %s" #: ../libempathy-gtk/empathy-chat.c:1306 #, c-format -#| msgid "Error sending message '%s': %s" msgid "Error sending message: %s" msgstr "Mesaj gönderme hatası: %s" @@ -1355,43 +1353,43 @@ msgstr "Başlık değiştirildi: %s" msgid "No topic defined" msgstr "Başlık belirtilmemiş" -#: ../libempathy-gtk/empathy-chat.c:1880 +#: ../libempathy-gtk/empathy-chat.c:1888 msgid "(No Suggestions)" msgstr "(Öneri Yok)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:1948 +#: ../libempathy-gtk/empathy-chat.c:1956 #, c-format msgid "Add '%s' to Dictionary" msgstr "'%s' kelimesini Sözlüğe ekle" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:1985 +#: ../libempathy-gtk/empathy-chat.c:1993 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "'%s' kelimesini %s Sözlüğe ekle" -#: ../libempathy-gtk/empathy-chat.c:2042 +#: ../libempathy-gtk/empathy-chat.c:2050 msgid "Insert Smiley" msgstr "Gülümseme Ekle" #. send button -#: ../libempathy-gtk/empathy-chat.c:2060 +#: ../libempathy-gtk/empathy-chat.c:2068 #: ../libempathy-gtk/empathy-ui-utils.c:1808 msgid "_Send" msgstr "_Gönder" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2095 +#: ../libempathy-gtk/empathy-chat.c:2103 msgid "_Spelling Suggestions" msgstr "_Yazım Önerileri" -#: ../libempathy-gtk/empathy-chat.c:2184 +#: ../libempathy-gtk/empathy-chat.c:2192 msgid "Failed to retrieve recent logs" msgstr "Son kayıtlara erişme başarısız oldu" -#: ../libempathy-gtk/empathy-chat.c:2295 +#: ../libempathy-gtk/empathy-chat.c:2303 #, c-format msgid "%s has disconnected" msgstr "%s bağlantısını kesti" @@ -1399,12 +1397,12 @@ msgstr "%s bağlantısını kesti" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2302 +#: ../libempathy-gtk/empathy-chat.c:2310 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%2$s tarafından %1$s kanaldan atıldı" -#: ../libempathy-gtk/empathy-chat.c:2305 +#: ../libempathy-gtk/empathy-chat.c:2313 #, c-format msgid "%s was kicked" msgstr "%s kanaldan atıldı" @@ -1412,17 +1410,17 @@ msgstr "%s kanaldan atıldı" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2313 +#: ../libempathy-gtk/empathy-chat.c:2321 #, c-format msgid "%1$s was banned by %2$s" msgstr "%2$s tarafından %1$s yasaklandı" -#: ../libempathy-gtk/empathy-chat.c:2316 +#: ../libempathy-gtk/empathy-chat.c:2324 #, c-format msgid "%s was banned" msgstr "%s yasaklandı" -#: ../libempathy-gtk/empathy-chat.c:2320 +#: ../libempathy-gtk/empathy-chat.c:2328 #, c-format msgid "%s has left the room" msgstr "%s odayı terk etti" @@ -1432,62 +1430,62 @@ msgstr "%s odayı terk etti" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2329 +#: ../libempathy-gtk/empathy-chat.c:2337 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2354 +#: ../libempathy-gtk/empathy-chat.c:2362 #, c-format msgid "%s has joined the room" msgstr "%s odaya katıldı" -#: ../libempathy-gtk/empathy-chat.c:2379 +#: ../libempathy-gtk/empathy-chat.c:2387 #, c-format msgid "%s is now known as %s" msgstr "%s şimdi %s olarak biliniyor" -#: ../libempathy-gtk/empathy-chat.c:2518 +#: ../libempathy-gtk/empathy-chat.c:2526 #: ../src/empathy-streamed-media-window.c:1957 #: ../src/empathy-event-manager.c:1126 msgid "Disconnected" msgstr "Bağlı Değil" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3148 +#: ../libempathy-gtk/empathy-chat.c:3158 msgid "Would you like to store this password?" msgstr "Bu parolayı kaydetmek istiyor musunuz?" -#: ../libempathy-gtk/empathy-chat.c:3154 +#: ../libempathy-gtk/empathy-chat.c:3164 msgid "Remember" msgstr "Hatırla" -#: ../libempathy-gtk/empathy-chat.c:3164 +#: ../libempathy-gtk/empathy-chat.c:3174 msgid "Not now" msgstr "Şimdi değil" -#: ../libempathy-gtk/empathy-chat.c:3208 +#: ../libempathy-gtk/empathy-chat.c:3218 msgid "Retry" msgstr "Yeniden Dene" -#: ../libempathy-gtk/empathy-chat.c:3212 +#: ../libempathy-gtk/empathy-chat.c:3222 msgid "Wrong password; please try again:" msgstr "Yanlış parola: lütfen tekrar deneyin:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3329 +#: ../libempathy-gtk/empathy-chat.c:3339 msgid "This room is protected by a password:" msgstr "Bu oda bir parolayla korunuyor:" -#: ../libempathy-gtk/empathy-chat.c:3356 +#: ../libempathy-gtk/empathy-chat.c:3366 msgid "Join" msgstr "Katıl" -#: ../libempathy-gtk/empathy-chat.c:3526 ../src/empathy-event-manager.c:1147 +#: ../libempathy-gtk/empathy-chat.c:3536 ../src/empathy-event-manager.c:1147 msgid "Connected" msgstr "Bağlı" -#: ../libempathy-gtk/empathy-chat.c:3579 +#: ../libempathy-gtk/empathy-chat.c:3589 #: ../libempathy-gtk/empathy-log-window.c:650 msgid "Conversation" msgstr "Konuşma" @@ -1529,13 +1527,13 @@ msgstr "Hesap:" #. Copy Link Address menu item #: ../libempathy-gtk/empathy-chat-text-view.c:320 -#: ../libempathy-gtk/empathy-theme-adium.c:794 +#: ../libempathy-gtk/empathy-theme-adium.c:1010 msgid "_Copy Link Address" msgstr "Bağ Adresini _Kopyala" #. Open Link menu item #: ../libempathy-gtk/empathy-chat-text-view.c:327 -#: ../libempathy-gtk/empathy-theme-adium.c:801 +#: ../libempathy-gtk/empathy-theme-adium.c:1017 msgid "_Open Link" msgstr "_Bağı Aç" @@ -1605,33 +1603,33 @@ msgid "Favorite People" msgstr "Sık Görüşülen Kişiler" #: ../libempathy-gtk/empathy-contact-list-view.c:1987 -#: ../libempathy-gtk/empathy-individual-view.c:2343 +#: ../libempathy-gtk/empathy-individual-view.c:2386 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "Gerçekten '%s' grubunu kaldırmak istiyor musunuz?" #: ../libempathy-gtk/empathy-contact-list-view.c:1989 -#: ../libempathy-gtk/empathy-individual-view.c:2346 +#: ../libempathy-gtk/empathy-individual-view.c:2389 msgid "Removing group" msgstr "Grup kaldırılıyor" #. Remove #: ../libempathy-gtk/empathy-contact-list-view.c:2038 #: ../libempathy-gtk/empathy-contact-list-view.c:2115 -#: ../libempathy-gtk/empathy-individual-view.c:2401 -#: ../libempathy-gtk/empathy-individual-view.c:2594 +#: ../libempathy-gtk/empathy-individual-view.c:2444 +#: ../libempathy-gtk/empathy-individual-view.c:2637 #: ../src/empathy-accounts-dialog.ui.h:7 msgid "_Remove" msgstr "Kaldı_r" #: ../libempathy-gtk/empathy-contact-list-view.c:2068 -#: ../libempathy-gtk/empathy-individual-view.c:2465 +#: ../libempathy-gtk/empathy-individual-view.c:2508 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "Gerçekten '%s' bağlantısını kaldırmak istiyor musunuz?" #: ../libempathy-gtk/empathy-contact-list-view.c:2070 -#: ../libempathy-gtk/empathy-individual-view.c:2486 +#: ../libempathy-gtk/empathy-individual-view.c:2529 msgid "Removing contact" msgstr "Bağlantı kaldırılıyor" @@ -1967,7 +1965,7 @@ msgid "Select" msgstr "Seç" #: ../libempathy-gtk/empathy-groups-widget.c:408 -#: ../src/empathy-main-window.c:1436 +#: ../src/empathy-main-window.c:1439 msgid "Group" msgstr "Grup" @@ -2018,11 +2016,11 @@ msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "_Kişileri Bağla..." -#: ../libempathy-gtk/empathy-individual-view.c:2308 +#: ../libempathy-gtk/empathy-individual-view.c:2351 msgid "Delete and _Block" msgstr "Sil ve _Engelle" -#: ../libempathy-gtk/empathy-individual-view.c:2474 +#: ../libempathy-gtk/empathy-individual-view.c:2517 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2667,7 +2665,7 @@ msgstr "" "Deniz Koçak <deniz.kocak@linux.org.tr>\n" "Barış Çiçek <baris@teamforce.name.tr>\n" "Muhammet Kara <muhammet.k@gmail.com>\n" -"Ubuntu'yu Türkçe'ye Çevirenler Takımı" +"Launchpad Çevirmenleri" #: ../src/empathy-account-assistant.c:167 msgid "There was an error while importing the accounts." @@ -3027,25 +3025,21 @@ msgid "The IP address of the multicast group" msgstr "Çoklu yayın grubunun IP adresi" #: ../src/empathy-streamed-media-window.c:1906 -#| msgid "Unknown" msgctxt "encoding video codec" msgid "Unknown" msgstr "Bilinmiyor" #: ../src/empathy-streamed-media-window.c:1909 -#| msgid "Unknown" msgctxt "encoding audio codec" msgid "Unknown" msgstr "Bilinmiyor" #: ../src/empathy-streamed-media-window.c:1912 -#| msgid "Unknown" msgctxt "decoding video codec" msgid "Unknown" msgstr "Bilinmiyor" #: ../src/empathy-streamed-media-window.c:1915 -#| msgid "Unknown" msgctxt "decoding audio codec" msgid "Unknown" msgstr "Bilinmiyor" @@ -3423,7 +3417,7 @@ msgstr "%s'e katılmaya davet edildiniz" msgid "Incoming file transfer from %s" msgstr "%s kişisinden gelen dosya transferi" -#: ../src/empathy-event-manager.c:1020 ../src/empathy-main-window.c:370 +#: ../src/empathy-event-manager.c:1020 ../src/empathy-main-window.c:373 msgid "Password required" msgstr "Parola gerekli" @@ -3578,39 +3572,39 @@ msgstr "Protokol" msgid "Source" msgstr "Kaynak" -#: ../src/empathy-main-window.c:387 +#: ../src/empathy-main-window.c:390 msgid "Provide Password" msgstr "Parola Gir" -#: ../src/empathy-main-window.c:393 +#: ../src/empathy-main-window.c:396 msgid "Disconnect" msgstr "Bağlantıyı kes" -#: ../src/empathy-main-window.c:533 +#: ../src/empathy-main-window.c:536 msgid "No match found" msgstr "Eşleşme bulunamadı" -#: ../src/empathy-main-window.c:688 +#: ../src/empathy-main-window.c:691 msgid "Reconnect" msgstr "Yeniden Bağlan" -#: ../src/empathy-main-window.c:694 +#: ../src/empathy-main-window.c:697 msgid "Edit Account" msgstr "Hesabı Düzenle" -#: ../src/empathy-main-window.c:700 +#: ../src/empathy-main-window.c:703 msgid "Close" msgstr "Kapat" -#: ../src/empathy-main-window.c:1418 +#: ../src/empathy-main-window.c:1421 msgid "Contact" msgstr "Bağlantı" -#: ../src/empathy-main-window.c:1765 +#: ../src/empathy-main-window.c:1768 msgid "Contact List" msgstr "Bağlantı Listesi" -#: ../src/empathy-main-window.c:1881 +#: ../src/empathy-main-window.c:1884 msgid "Show and edit accounts" msgstr "Hesapları göster ve düzenle" @@ -4091,7 +4085,6 @@ msgid "Accept" msgstr "Kabul Et" #: ../src/empathy-notifications-approver.c:223 -#| msgid "Preview" msgid "Provide" msgstr "Sağla" @@ -4105,6 +4098,11 @@ msgstr "Cevapsız çağrı %s" msgid "%s just tried to call you, but you were in another call." msgstr "%s sizi aramayı denedi, fakat siz başka bir arama ile meşguldünüz." +#: ../libempathy-gtk/empathy-search-bar.c:282 +#| msgid "Match case" +msgid "_Match case" +msgstr "_BÜYÜK/küçük harf eşleştir" + #~ msgid "_Enabled" #~ msgstr "_Etkin" @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Empathy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-17 19:23+0200\n" -"PO-Revision-Date: 2011-03-17 19:36+0300\n" +"POT-Creation-Date: 2011-05-09 23:16+0300\n" +"PO-Revision-Date: 2011-05-09 23:45+0300\n" "Last-Translator: Korostil Daniel <ted.korostiled@gmail.com>\n" "Language-Team: translation@linux.org.ua\n" "Language: uk\n" @@ -215,107 +215,111 @@ msgid "Pop up notifications when a contact logs out" msgstr "Контекстні сповіщення, коли контакт вийде" #: ../data/org.gnome.Empathy.gschema.xml.in.h:42 +msgid "Show Balance in contact list" +msgstr "Показувати баланс у списку контактів" + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 msgid "Show avatars" msgstr "Показувати аватари" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:43 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 msgid "Show contact list in rooms" msgstr "Показати список співрозмовників у кімнаті" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:44 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 msgid "Show hint about closing the main window" msgstr "Показувати підтвердження про закриття головного вікна" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:45 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 msgid "Show offline contacts" msgstr "Показувати відсутніх співрозмовників" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:46 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 msgid "Show protocols" msgstr "Показати протокол:" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:47 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 msgid "Spell checking languages" msgstr "Перевірка правопису для мов" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:48 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 msgid "The default folder to save file transfers in." msgstr "Типова тека для збереження вхідних файлів." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:49 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 msgid "The last directory that an avatar image was chosen from." msgstr "Останній каталог, з якого обирались зображення аватарів." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:50 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 msgid "The position for the chat window side pane" msgstr "Позиція бокової панелі вікна розмови" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:51 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 msgid "The stored position (in pixels) of the chat window side pane." msgstr "Збережена позиція (в пікселях) бокової панелі вікна балачки." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:52 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 msgid "The theme that is used to display the conversation in chat windows." msgstr "Ця тема використовується для діалогу у вікні бесіди." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:53 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 msgid "Use graphical smileys" msgstr "Використовувати графічні емоційки" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:54 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 msgid "Use notification sounds" msgstr "Використовувати звуки" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:55 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 msgid "Use theme for chat rooms" msgstr "Використовувати тему для бесід" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:56 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 msgid "Whether Empathy can publish the user's location to their contacts." msgstr "Чи показувати місцевості вашим співрозмовникам." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:57 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 msgid "Whether Empathy can use the GPS to guess the location." msgstr "Чи використовувати GPS для визначення місцевості." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:58 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 msgid "Whether Empathy can use the cellular network to guess the location." msgstr "Чи використовувати мобільну мережу для визначення місцевості." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:59 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 msgid "Whether Empathy can use the network to guess the location." msgstr "Чи використовувати комп'ютерну мережу для визначення місцевості." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:60 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 msgid "Whether Empathy has migrated butterfly logs." msgstr "Чи був перенос журналу MSN." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:61 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 msgid "Whether Empathy should automatically log into your accounts on startup." msgstr "Автоматично підключати облікові записи при запуску." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:62 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 msgid "" "Whether Empathy should go into away mode automatically if the user is idle." msgstr "Чи слід іти в режим очікування, коли користувач бездіяльний." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:63 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 msgid "" "Whether Empathy should reduce the location's accuracy for privacy reasons." msgstr "" "Чи слід зменшити точність визначення місцевості задля конфіденційності." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:64 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 msgid "" "Whether Empathy should use the avatar of the contact as the chat window icon." msgstr "Чи використовувати аватари співрозмовників як значки вікон із бесідами" -#: ../data/org.gnome.Empathy.gschema.xml.in.h:65 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 msgid "" "Whether WebKit developer tools, such as the Web Inspector, should be enabled." msgstr "Чи вмикати інструменти розробки WebKit, такі як Web Inspector." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:66 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 msgid "" "Whether connectivity managers should be used to automatically disconnect/" "reconnect." @@ -323,61 +327,61 @@ msgstr "" "Чи використовувати менеджер з'єднань для автоматичного встановлення/розриву " "зв'язку." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:67 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 msgid "" "Whether to check words typed against the languages you want to check with." msgstr "Перевіряти набрані слова за списком мов для перевірки орфографії." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:68 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 msgid "Whether to convert smileys into graphical images in conversations." msgstr "Перетворювати текстові емоційки на графічне представлення." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:69 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 msgid "Whether to play a sound to notify of contacts logging into the network." msgstr "Чи відтворювати звуковий сигнал при вході співрозмовника у мережу." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:70 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 msgid "" "Whether to play a sound to notify of contacts logging out of the network." msgstr "Чи відтворювати звуковий сигнал при виході співрозмовника з мережі." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:71 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 msgid "Whether to play a sound to notify of events." msgstr "Чи відтворювати звукові сигнали при подіях." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:72 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 msgid "Whether to play a sound to notify of incoming messages." msgstr "Чи відтворювати звуковий сигнал при надходженні повідомлення." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:73 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 msgid "Whether to play a sound to notify of new conversations." msgstr "Чи відтворювати звуковий сигнал для нової бесіди." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:74 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 msgid "Whether to play a sound to notify of outgoing messages." msgstr "Чи відтворювати звуковий сигнал при відправленні повідомлення." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:75 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 msgid "Whether to play a sound when logging into a network." msgstr "Чи відтворювати звуковий сигнал при вході у мережу." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:76 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 msgid "Whether to play a sound when logging out of a network." msgstr "Чи відтворювати звуковий сигнал при виході з мережі." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:77 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 msgid "Whether to play sound notifications when away or busy." msgstr "Чи відтворювати звукові сигнали у станах «відійшов» або «зайнятий»." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:78 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 msgid "Whether to show a popup notification when a contact goes offline." msgstr "Чи показувати контекстні сповіщення коли контакт виходить з мережі." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:79 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 msgid "Whether to show a popup notification when a contact goes online." msgstr "Чи показувати контекстні сповіщення коли контакт входить у мережу." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:80 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 msgid "" "Whether to show a popup notification when receiving a new message even if " "the chat is already opened, but not focused." @@ -385,38 +389,42 @@ msgstr "" "Чи показувати контекстні сповіщення при надходженні нового повідомлення, " "коли чат вже відкрито, але він не в фокусі." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:81 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 msgid "Whether to show a popup notification when receiving a new message." msgstr "" "Чи показувати контекстні сповіщення при надходженні нового повідомлення." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:82 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +msgid "Whether to show account balances in the contact list." +msgstr "Чи показувати баланси облікових записів у списку контактів." + +#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 msgid "" "Whether to show avatars for contacts in the contact list and chat windows." msgstr "Чи показувати аватари для співрозмовників у списку та вікні чату." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:83 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 msgid "Whether to show contacts that are offline in the contact list." msgstr "Чи показувати недоступних у мережі користувачів у списку контактів." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:84 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 msgid "Whether to show popup notifications when away or busy." msgstr "" "Чи показувати контекстні сповіщення у станах «відійшов» або «зайнятий»." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:85 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 msgid "Whether to show protocols for contacts in the contact list." msgstr "Чи показувати аватари для співрозмовників у списку та вікні чату." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:86 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 msgid "Whether to show the contact list in chat rooms." msgstr "Чи показувати список контактів у кімнаті." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:87 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 msgid "Whether to show the contact list in compact mode." msgstr "Показувати список контактів стисненим або ні." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:88 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 msgid "" "Whether to show the message dialog about closing the main window with the " "'x' button in the title bar." @@ -424,11 +432,11 @@ msgstr "" "Чи показувати повідомлення про закриття головного вікна кнопкою «x» у " "заголовку." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:89 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:91 msgid "Whether to use the theme for chat rooms." msgstr "Використовувати теми для вікон бесід чи ні." -#: ../data/org.gnome.Empathy.gschema.xml.in.h:90 +#: ../data/org.gnome.Empathy.gschema.xml.in.h:92 msgid "" "Which criterion to use when sorting the contact list. Default is to sort by " "the contact's name with the value \"name\". A value of \"state\" will sort " @@ -444,7 +452,7 @@ msgstr "Керування обліковими записами повідом #. Tweak the dialog #: ../data/empathy-accounts.desktop.in.in.h:2 -#: ../src/empathy-accounts-dialog.c:2242 +#: ../src/empathy-accounts-dialog.c:2320 msgid "Messaging and VoIP Accounts" msgstr "Облікові записи повідомлень та VoIP" @@ -492,144 +500,141 @@ msgstr "Помилка при спробі передати файл" msgid "The other participant is unable to transfer the file" msgstr "Інший учасник не може передати файл" -#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:382 +#: ../libempathy/empathy-tp-file.c:405 ../libempathy/empathy-utils.c:384 msgid "Unknown reason" msgstr "Невідома причина" -#: ../libempathy/empathy-utils.c:304 +#: ../libempathy/empathy-utils.c:305 msgid "Available" msgstr "Доступний" -#: ../libempathy/empathy-utils.c:306 +#: ../libempathy/empathy-utils.c:307 msgid "Busy" msgstr "Зайнятий" -#: ../libempathy/empathy-utils.c:309 +#: ../libempathy/empathy-utils.c:310 msgid "Away" msgstr "Відійшов" -#: ../libempathy/empathy-utils.c:311 +#: ../libempathy/empathy-utils.c:312 msgid "Invisible" msgstr "Невидимий" -#: ../libempathy/empathy-utils.c:313 +#: ../libempathy/empathy-utils.c:314 msgid "Offline" msgstr "Не у мережі" -#: ../libempathy/empathy-utils.c:315 -#: ../src/empathy-streamed-media-window.c:1904 -#: ../src/empathy-streamed-media-window.c:1905 -#: ../src/empathy-streamed-media-window.c:1906 -#: ../src/empathy-streamed-media-window.c:1907 -#: ../src/empathy-call-window.ui.h:18 +#. translators: presence type is unknown +#: ../libempathy/empathy-utils.c:317 +msgctxt "presence" msgid "Unknown" msgstr "Невідомо" -#: ../libempathy/empathy-utils.c:354 +#: ../libempathy/empathy-utils.c:356 msgid "No reason specified" msgstr "Причину не вказано" -#: ../libempathy/empathy-utils.c:356 ../libempathy/empathy-utils.c:412 +#: ../libempathy/empathy-utils.c:358 ../libempathy/empathy-utils.c:414 msgid "Status is set to offline" msgstr "Встановлено статус «не у мережі»" -#: ../libempathy/empathy-utils.c:358 ../libempathy/empathy-utils.c:392 +#: ../libempathy/empathy-utils.c:360 ../libempathy/empathy-utils.c:394 msgid "Network error" msgstr "Помилка мережі" -#: ../libempathy/empathy-utils.c:360 ../libempathy/empathy-utils.c:394 +#: ../libempathy/empathy-utils.c:362 ../libempathy/empathy-utils.c:396 msgid "Authentication failed" msgstr "Аутентифікація завершилась невдало" -#: ../libempathy/empathy-utils.c:362 ../libempathy/empathy-utils.c:396 +#: ../libempathy/empathy-utils.c:364 ../libempathy/empathy-utils.c:398 msgid "Encryption error" msgstr "Помилка шифрування" -#: ../libempathy/empathy-utils.c:364 +#: ../libempathy/empathy-utils.c:366 msgid "Name in use" msgstr "Ім'я вже використовується" -#: ../libempathy/empathy-utils.c:366 ../libempathy/empathy-utils.c:398 +#: ../libempathy/empathy-utils.c:368 ../libempathy/empathy-utils.c:400 msgid "Certificate not provided" msgstr "Сертифікат недоступний" -#: ../libempathy/empathy-utils.c:368 ../libempathy/empathy-utils.c:400 +#: ../libempathy/empathy-utils.c:370 ../libempathy/empathy-utils.c:402 msgid "Certificate untrusted" msgstr "Сертифікат не має довіри" -#: ../libempathy/empathy-utils.c:370 ../libempathy/empathy-utils.c:402 +#: ../libempathy/empathy-utils.c:372 ../libempathy/empathy-utils.c:404 msgid "Certificate expired" msgstr "Сертифіката застарів" -#: ../libempathy/empathy-utils.c:372 ../libempathy/empathy-utils.c:404 +#: ../libempathy/empathy-utils.c:374 ../libempathy/empathy-utils.c:406 msgid "Certificate not activated" msgstr "Сертифікат не активовано" -#: ../libempathy/empathy-utils.c:374 ../libempathy/empathy-utils.c:406 +#: ../libempathy/empathy-utils.c:376 ../libempathy/empathy-utils.c:408 msgid "Certificate hostname mismatch" msgstr "Сертифікат з помилкою у назві вузла" -#: ../libempathy/empathy-utils.c:376 ../libempathy/empathy-utils.c:408 +#: ../libempathy/empathy-utils.c:378 ../libempathy/empathy-utils.c:410 msgid "Certificate fingerprint mismatch" msgstr "Відбитки сертифікатів не збігаються" -#: ../libempathy/empathy-utils.c:378 ../libempathy/empathy-utils.c:410 +#: ../libempathy/empathy-utils.c:380 ../libempathy/empathy-utils.c:412 msgid "Certificate self-signed" msgstr "Самопідписаний сертифікат" -#: ../libempathy/empathy-utils.c:380 +#: ../libempathy/empathy-utils.c:382 msgid "Certificate error" msgstr "Помилка сертифікату" -#: ../libempathy/empathy-utils.c:414 +#: ../libempathy/empathy-utils.c:416 msgid "Encryption is not available" msgstr "Шифрування не доступне" -#: ../libempathy/empathy-utils.c:416 +#: ../libempathy/empathy-utils.c:418 msgid "Certificate is invalid" msgstr "Сертифікат недійсний" -#: ../libempathy/empathy-utils.c:418 +#: ../libempathy/empathy-utils.c:420 msgid "Connection has been refused" msgstr "У з'єднанні відмовлено" -#: ../libempathy/empathy-utils.c:420 +#: ../libempathy/empathy-utils.c:422 msgid "Connection can't be established" msgstr "З'єднання не можливо встановити" -#: ../libempathy/empathy-utils.c:422 +#: ../libempathy/empathy-utils.c:424 msgid "Connection has been lost" msgstr "З'єднання втрачено" -#: ../libempathy/empathy-utils.c:424 +#: ../libempathy/empathy-utils.c:426 msgid "This resource is already connected to the server" msgstr "Цей ресурс уже з'єднано з сервером" -#: ../libempathy/empathy-utils.c:426 +#: ../libempathy/empathy-utils.c:428 msgid "" "Connection has been replaced by a new connection using the same resource" msgstr "З'єднання замінено на нове з'єднання через той самий ресурс" -#: ../libempathy/empathy-utils.c:429 +#: ../libempathy/empathy-utils.c:431 msgid "The account already exists on the server" msgstr "Цей обліковий запис уже існує на сервері" -#: ../libempathy/empathy-utils.c:431 +#: ../libempathy/empathy-utils.c:433 msgid "Server is currently too busy to handle the connection" msgstr "Сервер зараз зайнятий, щоб обробити з'єднання" -#: ../libempathy/empathy-utils.c:433 +#: ../libempathy/empathy-utils.c:435 msgid "Certificate has been revoked" msgstr "Сертифікат анульовано" -#: ../libempathy/empathy-utils.c:435 +#: ../libempathy/empathy-utils.c:437 msgid "" "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgstr "" "Сертифікат використовує небезпечний алгоритм шифрування або криптографічно " "ненадійний." -#: ../libempathy/empathy-utils.c:438 +#: ../libempathy/empathy-utils.c:440 msgid "" "The length of the server certificate, or the depth of the server certificate " "chain, exceed the limits imposed by the cryptography library" @@ -637,24 +642,24 @@ msgstr "" "Довжина сертифіката сервера або глибина ланцюжка сертифіката сервера " "перевищує обмеження криптографічної бібліотеки" -#: ../libempathy/empathy-utils.c:601 +#: ../libempathy/empathy-utils.c:603 #: ../libempathy-gtk/empathy-contact-list-store.h:73 msgid "People Nearby" msgstr "Люди поблизу" -#: ../libempathy/empathy-utils.c:606 +#: ../libempathy/empathy-utils.c:608 msgid "Yahoo! Japan" msgstr "Yahoo! Японія" -#: ../libempathy/empathy-utils.c:635 +#: ../libempathy/empathy-utils.c:637 msgid "Google Talk" msgstr "Google Talk" -#: ../libempathy/empathy-utils.c:636 +#: ../libempathy/empathy-utils.c:638 msgid "Facebook Chat" msgstr "Час Facebook" -#: ../libempathy/empathy-time.c:137 +#: ../libempathy/empathy-time.c:100 #, c-format msgid "%d second ago" msgid_plural "%d seconds ago" @@ -662,7 +667,7 @@ msgstr[0] "%d секунду тому" msgstr[1] "%d секунди тому" msgstr[2] "%d секунд тому" -#: ../libempathy/empathy-time.c:142 +#: ../libempathy/empathy-time.c:105 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" @@ -670,7 +675,7 @@ msgstr[0] "%d хвилину тому" msgstr[1] "%d хвилини тому" msgstr[2] "%d хвилин тому" -#: ../libempathy/empathy-time.c:147 +#: ../libempathy/empathy-time.c:110 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" @@ -678,7 +683,7 @@ msgstr[0] "%d годину тому" msgstr[1] "%d години тому" msgstr[2] "%d годин тому" -#: ../libempathy/empathy-time.c:152 +#: ../libempathy/empathy-time.c:115 #, c-format msgid "%d day ago" msgid_plural "%d days ago" @@ -686,7 +691,7 @@ msgstr[0] "%d день тому" msgstr[1] "%d дні тому" msgstr[2] "%d днів тому" -#: ../libempathy/empathy-time.c:157 +#: ../libempathy/empathy-time.c:120 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -694,7 +699,7 @@ msgstr[0] "%d тиждень тому" msgstr[1] "%d тижня тому" msgstr[2] "%d тижнів тому" -#: ../libempathy/empathy-time.c:162 +#: ../libempathy/empathy-time.c:125 #, c-format msgid "%d month ago" msgid_plural "%d months ago" @@ -702,7 +707,7 @@ msgstr[0] "%d місяць тому" msgstr[1] "%d місяця тому" msgstr[2] "%d місяців тому" -#: ../libempathy/empathy-time.c:167 +#: ../libempathy/empathy-time.c:130 msgid "in the future" msgstr "в майбутньому" @@ -710,83 +715,67 @@ msgstr "в майбутньому" msgid "All" msgstr "Усі" -#: ../libempathy-gtk/empathy-account-widget.c:682 +#: ../libempathy-gtk/empathy-account-widget.c:678 #: ../libempathy-gtk/empathy-log-window.c:643 #: ../src/empathy-import-widget.c:321 msgid "Account" msgstr "Обліковий запис" -#: ../libempathy-gtk/empathy-account-widget.c:683 +#: ../libempathy-gtk/empathy-account-widget.c:679 msgid "Password" msgstr "Пароль" -#: ../libempathy-gtk/empathy-account-widget.c:684 +#: ../libempathy-gtk/empathy-account-widget.c:680 #: ../libempathy-gtk/empathy-irc-network-dialog.c:507 msgid "Server" msgstr "Сервер" -#: ../libempathy-gtk/empathy-account-widget.c:685 +#: ../libempathy-gtk/empathy-account-widget.c:681 #: ../libempathy-gtk/empathy-irc-network-dialog.c:522 msgid "Port" msgstr "Порт" -#: ../libempathy-gtk/empathy-account-widget.c:757 -#: ../libempathy-gtk/empathy-account-widget.c:814 +#: ../libempathy-gtk/empathy-account-widget.c:753 +#: ../libempathy-gtk/empathy-account-widget.c:810 #, c-format msgid "%s:" msgstr "%s:" -#: ../libempathy-gtk/empathy-account-widget.c:1166 +#: ../libempathy-gtk/empathy-account-widget.c:1151 #, c-format msgid "The account %s is edited via My Web Accounts." msgstr "Обліковий запис %s — змінено через сайт." -#: ../libempathy-gtk/empathy-account-widget.c:1172 +#: ../libempathy-gtk/empathy-account-widget.c:1157 #, c-format msgid "The account %s cannot be edited in Empathy." msgstr "Обліковий запис %s неможливо редагувати в Empathy." -#: ../libempathy-gtk/empathy-account-widget.c:1192 +#: ../libempathy-gtk/empathy-account-widget.c:1177 msgid "Launch My Web Accounts" msgstr "Запустити мій обліковий запис із сайту" -#: ../libempathy-gtk/empathy-account-widget.c:1530 +#: ../libempathy-gtk/empathy-account-widget.c:1515 msgid "Username:" msgstr "Користувача:" -#: ../libempathy-gtk/empathy-account-widget.c:1897 +#: ../libempathy-gtk/empathy-account-widget.c:1833 msgid "A_pply" msgstr "_Застосувати" -#: ../libempathy-gtk/empathy-account-widget.c:1927 +#: ../libempathy-gtk/empathy-account-widget.c:1863 msgid "L_og in" msgstr "_Увійти" -#. Account and Identifier -#: ../libempathy-gtk/empathy-account-widget.c:1993 -#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 -#: ../libempathy-gtk/empathy-contact-search-dialog.c:520 -#: ../libempathy-gtk/empathy-contact-widget.ui.h:2 -#: ../libempathy-gtk/empathy-individual-widget.c:1481 -#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 -#: ../src/empathy-chatrooms-window.ui.h:1 -#: ../src/empathy-new-chatroom-dialog.ui.h:1 -msgid "Account:" -msgstr "Обліковий запис:" - -#: ../libempathy-gtk/empathy-account-widget.c:2004 -msgid "_Enabled" -msgstr "Увім_кнено" - -#: ../libempathy-gtk/empathy-account-widget.c:2069 +#: ../libempathy-gtk/empathy-account-widget.c:1937 msgid "This account already exists on the server" msgstr "Цей обліковий запис вже існує на сервері" -#: ../libempathy-gtk/empathy-account-widget.c:2072 +#: ../libempathy-gtk/empathy-account-widget.c:1940 msgid "Create a new account on the server" msgstr "Створити новий обліковий запис на сервері" -#: ../libempathy-gtk/empathy-account-widget.c:2264 +#: ../libempathy-gtk/empathy-account-widget.c:2132 msgid "Ca_ncel" msgstr "_Скасувати" @@ -795,19 +784,19 @@ msgstr "_Скасувати" #. * like: "MyUserName on freenode". #. * You should reverse the order of these arguments if the #. * server should come before the login id in your locale. -#: ../libempathy-gtk/empathy-account-widget.c:2561 +#: ../libempathy-gtk/empathy-account-widget.c:2410 #, c-format msgid "%1$s on %2$s" msgstr "%1$s на %2$s" #. To translators: The parameter is the protocol name. The resulting #. * string will be something like: "Jabber Account" -#: ../libempathy-gtk/empathy-account-widget.c:2587 +#: ../libempathy-gtk/empathy-account-widget.c:2436 #, c-format msgid "%s Account" msgstr "Обліковий запис %s" -#: ../libempathy-gtk/empathy-account-widget.c:2591 +#: ../libempathy-gtk/empathy-account-widget.c:2440 msgid "New account" msgstr "Новий обліковий запис" @@ -1235,58 +1224,58 @@ msgstr "Усі файли" msgid "Click to enlarge" msgstr "Клацніть для збільшення" -#: ../libempathy-gtk/empathy-chat.c:652 +#: ../libempathy-gtk/empathy-chat.c:668 msgid "Failed to open private chat" msgstr "Не вдалось відкрити приватну кімнату" -#: ../libempathy-gtk/empathy-chat.c:717 +#: ../libempathy-gtk/empathy-chat.c:733 msgid "Topic not supported on this conversation" msgstr "Тема не підтримується у цій бесіді" -#: ../libempathy-gtk/empathy-chat.c:723 +#: ../libempathy-gtk/empathy-chat.c:739 msgid "You are not allowed to change the topic" msgstr "У вас немає прав змінювати тему" -#: ../libempathy-gtk/empathy-chat.c:906 +#: ../libempathy-gtk/empathy-chat.c:948 msgid "/clear: clear all messages from the current conversation" msgstr "/clear: очистити всі повідомлення з поточної бесіди" -#: ../libempathy-gtk/empathy-chat.c:909 +#: ../libempathy-gtk/empathy-chat.c:951 msgid "/topic <topic>: set the topic of the current conversation" msgstr "/topic <topic>: встановити тему поточної бесіди" -#: ../libempathy-gtk/empathy-chat.c:912 +#: ../libempathy-gtk/empathy-chat.c:954 msgid "/join <chat room ID>: join a new chat room" msgstr "/join <chat room ID>: приєднатися до нової кімнати розмов" -#: ../libempathy-gtk/empathy-chat.c:915 +#: ../libempathy-gtk/empathy-chat.c:957 msgid "/j <chat room ID>: join a new chat room" msgstr "/j <chat room ID>: приєднатися до нової кімнати розмов" -#: ../libempathy-gtk/empathy-chat.c:920 +#: ../libempathy-gtk/empathy-chat.c:962 msgid "" "/part [<chat room ID>] [<reason>]: leave the chat room, by default the " "current one" msgstr "" "/part [<chat room ID>] [<reason>]: покинути кімнату бесіди, типово теперішню" -#: ../libempathy-gtk/empathy-chat.c:925 +#: ../libempathy-gtk/empathy-chat.c:967 msgid "/query <contact ID> [<message>]: open a private chat" msgstr "/query <contact ID> [<message>]: відкрити приватну бесіду" -#: ../libempathy-gtk/empathy-chat.c:928 +#: ../libempathy-gtk/empathy-chat.c:970 msgid "/msg <contact ID> <message>: open a private chat" msgstr "/msg <contact ID> <message>: відкрити приватну бесіду" -#: ../libempathy-gtk/empathy-chat.c:931 +#: ../libempathy-gtk/empathy-chat.c:973 msgid "/nick <nickname>: change your nickname on the current server" msgstr "/nick <nickname>: змінити назву на поточному сервері" -#: ../libempathy-gtk/empathy-chat.c:934 +#: ../libempathy-gtk/empathy-chat.c:976 msgid "/me <message>: send an ACTION message to the current conversation" msgstr "/me <message>: відправити повідомлення ACTION до поточної бесіди" -#: ../libempathy-gtk/empathy-chat.c:937 +#: ../libempathy-gtk/empathy-chat.c:979 msgid "" "/say <message>: send <message> to the current conversation. This is used to " "send a message starting with a '/'. For example: \"/say /join is used to " @@ -1296,7 +1285,7 @@ msgstr "" "для надсилання нового повідомлення, що починається з '/'. Наприклад: \"/" "скажіть /join щоб приєднатись до нової кімнати розмов\"" -#: ../libempathy-gtk/empathy-chat.c:942 +#: ../libempathy-gtk/empathy-chat.c:984 msgid "" "/help [<command>]: show all supported commands. If <command> is defined, " "show its usage." @@ -1304,98 +1293,113 @@ msgstr "" "/help [<command>]: показати довідку. Якщо визначено <command>, показати " "синтаксис команди." -#: ../libempathy-gtk/empathy-chat.c:952 +#: ../libempathy-gtk/empathy-chat.c:994 #, c-format msgid "Usage: %s" msgstr "Використання: %s" -#: ../libempathy-gtk/empathy-chat.c:991 +#: ../libempathy-gtk/empathy-chat.c:1033 msgid "Unknown command" msgstr "Невідома команда" -#: ../libempathy-gtk/empathy-chat.c:1117 +#: ../libempathy-gtk/empathy-chat.c:1159 msgid "Unknown command; see /help for the available commands" msgstr "Невідома команда; для виводу списку доступних команд введіть /help" -#: ../libempathy-gtk/empathy-chat.c:1254 +#. translators: error used when user doesn't have enough credit on his +#. * account to send the message. +#: ../libempathy-gtk/empathy-chat.c:1299 +msgid "insufficient balance to send message" +msgstr "недостатня збалансованість для надсилання повідомлення" + +#: ../libempathy-gtk/empathy-chat.c:1301 +msgid "not capable" +msgstr "не здатен" + +#: ../libempathy-gtk/empathy-chat.c:1308 msgid "offline" msgstr "не у мережі" -#: ../libempathy-gtk/empathy-chat.c:1257 +#: ../libempathy-gtk/empathy-chat.c:1311 msgid "invalid contact" msgstr "неправильний контакт" -#: ../libempathy-gtk/empathy-chat.c:1260 +#: ../libempathy-gtk/empathy-chat.c:1314 msgid "permission denied" msgstr "відмовлено у доступі" -#: ../libempathy-gtk/empathy-chat.c:1263 +#: ../libempathy-gtk/empathy-chat.c:1317 msgid "too long message" msgstr "надто довге повідомлення" -#: ../libempathy-gtk/empathy-chat.c:1266 +#: ../libempathy-gtk/empathy-chat.c:1320 msgid "not implemented" msgstr "не реалізовано" -#: ../libempathy-gtk/empathy-chat.c:1270 +#: ../libempathy-gtk/empathy-chat.c:1324 msgid "unknown" msgstr "невідомо" -#: ../libempathy-gtk/empathy-chat.c:1274 +#: ../libempathy-gtk/empathy-chat.c:1330 #, c-format msgid "Error sending message '%s': %s" msgstr "Помилка при надсиланні повідомлення «%s»: %s" -#: ../libempathy-gtk/empathy-chat.c:1335 ../src/empathy-chat-window.c:717 +#: ../libempathy-gtk/empathy-chat.c:1334 +#, c-format +msgid "Error sending message: %s" +msgstr "Помилка надсилання повідомлення: %s" + +#: ../libempathy-gtk/empathy-chat.c:1395 ../src/empathy-chat-window.c:760 msgid "Topic:" msgstr "Тема:" -#: ../libempathy-gtk/empathy-chat.c:1347 +#: ../libempathy-gtk/empathy-chat.c:1407 #, c-format msgid "Topic set to: %s" msgstr "Тема: %s" -#: ../libempathy-gtk/empathy-chat.c:1349 +#: ../libempathy-gtk/empathy-chat.c:1409 msgid "No topic defined" msgstr "Тему не встановлено" -#: ../libempathy-gtk/empathy-chat.c:1848 +#: ../libempathy-gtk/empathy-chat.c:1916 msgid "(No Suggestions)" msgstr "(Нема пропозицій)" #. translators: %s is the selected word -#: ../libempathy-gtk/empathy-chat.c:1916 +#: ../libempathy-gtk/empathy-chat.c:1984 #, c-format msgid "Add '%s' to Dictionary" msgstr "Додати «%s» до словника" #. translators: first %s is the selected word, #. * second %s is the language name of the target dictionary -#: ../libempathy-gtk/empathy-chat.c:1953 +#: ../libempathy-gtk/empathy-chat.c:2021 #, c-format msgid "Add '%s' to %s Dictionary" msgstr "Додати «%s» до словника %s" -#: ../libempathy-gtk/empathy-chat.c:2010 +#: ../libempathy-gtk/empathy-chat.c:2078 msgid "Insert Smiley" msgstr "Вставити посмішку" #. send button -#: ../libempathy-gtk/empathy-chat.c:2028 +#: ../libempathy-gtk/empathy-chat.c:2096 #: ../libempathy-gtk/empathy-ui-utils.c:1808 msgid "_Send" msgstr "_Надіслати" #. Spelling suggestions -#: ../libempathy-gtk/empathy-chat.c:2063 +#: ../libempathy-gtk/empathy-chat.c:2131 msgid "_Spelling Suggestions" msgstr "_Пропозиції з правопису" -#: ../libempathy-gtk/empathy-chat.c:2152 +#: ../libempathy-gtk/empathy-chat.c:2220 msgid "Failed to retrieve recent logs" msgstr "Не вдається отримати останні журнали" -#: ../libempathy-gtk/empathy-chat.c:2263 +#: ../libempathy-gtk/empathy-chat.c:2331 #, c-format msgid "%s has disconnected" msgstr "%s від'єднано" @@ -1403,12 +1407,12 @@ msgstr "%s від'єднано" #. translators: reverse the order of these arguments #. * if the kicked should come before the kicker in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2270 +#: ../libempathy-gtk/empathy-chat.c:2338 #, c-format msgid "%1$s was kicked by %2$s" msgstr "%1$s був викинутий користувачем %2$s" -#: ../libempathy-gtk/empathy-chat.c:2273 +#: ../libempathy-gtk/empathy-chat.c:2341 #, c-format msgid "%s was kicked" msgstr "%s був викинутий" @@ -1416,17 +1420,17 @@ msgstr "%s був викинутий" #. translators: reverse the order of these arguments #. * if the banned should come before the banner in your locale. #. -#: ../libempathy-gtk/empathy-chat.c:2281 +#: ../libempathy-gtk/empathy-chat.c:2349 #, c-format msgid "%1$s was banned by %2$s" msgstr "%1$s був заблокований користувачем %2$s" -#: ../libempathy-gtk/empathy-chat.c:2284 +#: ../libempathy-gtk/empathy-chat.c:2352 #, c-format msgid "%s was banned" msgstr "%s заблоковано" -#: ../libempathy-gtk/empathy-chat.c:2288 +#: ../libempathy-gtk/empathy-chat.c:2356 #, c-format msgid "%s has left the room" msgstr "%s покинув кімнату" @@ -1436,105 +1440,123 @@ msgstr "%s покинув кімнату" #. * given by the user living the room. If this poses a problem, #. * please let us know. :-) #. -#: ../libempathy-gtk/empathy-chat.c:2297 +#: ../libempathy-gtk/empathy-chat.c:2365 #, c-format msgid " (%s)" msgstr " (%s)" -#: ../libempathy-gtk/empathy-chat.c:2322 +#: ../libempathy-gtk/empathy-chat.c:2390 #, c-format msgid "%s has joined the room" msgstr "%s приєднався до бесіди" -#: ../libempathy-gtk/empathy-chat.c:2347 +#: ../libempathy-gtk/empathy-chat.c:2415 #, c-format msgid "%s is now known as %s" msgstr "%s тепер відомий як %s" -#: ../libempathy-gtk/empathy-chat.c:2486 -#: ../src/empathy-streamed-media-window.c:1949 -#: ../src/empathy-event-manager.c:1122 +#: ../libempathy-gtk/empathy-chat.c:2554 +#: ../src/empathy-streamed-media-window.c:1957 +#: ../src/empathy-event-manager.c:1116 msgid "Disconnected" msgstr "Від'єднаний" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3116 +#: ../libempathy-gtk/empathy-chat.c:3202 msgid "Would you like to store this password?" msgstr "Зберегти цей пароль?" -#: ../libempathy-gtk/empathy-chat.c:3122 +#: ../libempathy-gtk/empathy-chat.c:3208 msgid "Remember" msgstr "Запам'ятати" -#: ../libempathy-gtk/empathy-chat.c:3132 +#: ../libempathy-gtk/empathy-chat.c:3218 msgid "Not now" msgstr "Не зараз" -#: ../libempathy-gtk/empathy-chat.c:3176 +#: ../libempathy-gtk/empathy-chat.c:3262 msgid "Retry" msgstr "Повторити" -#: ../libempathy-gtk/empathy-chat.c:3180 +#: ../libempathy-gtk/empathy-chat.c:3266 msgid "Wrong password; please try again:" msgstr "Неправильний пароль; введіть пароль ще раз:" #. Add message -#: ../libempathy-gtk/empathy-chat.c:3297 +#: ../libempathy-gtk/empathy-chat.c:3383 msgid "This room is protected by a password:" msgstr "Цю кімнату захищено паролем:" -#: ../libempathy-gtk/empathy-chat.c:3324 +#: ../libempathy-gtk/empathy-chat.c:3410 msgid "Join" msgstr "Увійти" -#: ../libempathy-gtk/empathy-chat.c:3494 ../src/empathy-event-manager.c:1144 +#: ../libempathy-gtk/empathy-chat.c:3602 ../src/empathy-event-manager.c:1137 msgid "Connected" msgstr "З'єднаний" -#: ../libempathy-gtk/empathy-chat.c:3547 +#: ../libempathy-gtk/empathy-chat.c:3657 #: ../libempathy-gtk/empathy-log-window.c:650 msgid "Conversation" msgstr "Бесіда" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:422 +#. Translators: this string is a something like +#. * "Escher Cat (SMS)" +#: ../libempathy-gtk/empathy-chat.c:3662 +#, c-format +msgid "%s (SMS)" +msgstr "%s (SMS)" + +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:423 msgid "Unknown or invalid identifier" msgstr "Невідомий або помилковий ідентифікатор" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:424 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:425 msgid "Contact blocking temporarily unavailable" msgstr "Блокування контакту тимчасово недоступно " -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:426 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:427 msgid "Contact blocking unavailable" msgstr "Блокування контакту недоступне" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:428 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:429 msgid "Permission Denied" msgstr "Відмовлено у доступі" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:432 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:433 msgid "Could not block contact" msgstr "Неможливо заблокувати контакт" -#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:701 +#: ../libempathy-gtk/empathy-contact-blocking-dialog.c:702 msgid "Edit Blocked Contacts" msgstr "Редагувати заблоковані контакти" +#. Account and Identifier +#: ../libempathy-gtk/empathy-contact-blocking-dialog.ui.h:1 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:521 +#: ../libempathy-gtk/empathy-contact-widget.ui.h:2 +#: ../libempathy-gtk/empathy-individual-widget.c:1479 +#: ../libempathy-gtk/empathy-contact-selector-dialog.ui.h:1 +#: ../src/empathy-chatrooms-window.ui.h:1 +#: ../src/empathy-new-chatroom-dialog.ui.h:1 +msgid "Account:" +msgstr "Обліковий запис:" + #. Copy Link Address menu item #: ../libempathy-gtk/empathy-chat-text-view.c:320 -#: ../libempathy-gtk/empathy-theme-adium.c:794 +#: ../libempathy-gtk/empathy-theme-adium.c:996 msgid "_Copy Link Address" msgstr "_Копіювати адресу посилання" #. Open Link menu item #: ../libempathy-gtk/empathy-chat-text-view.c:327 -#: ../libempathy-gtk/empathy-theme-adium.c:801 +#: ../libempathy-gtk/empathy-theme-adium.c:1003 msgid "_Open Link" msgstr "_Відкрити посилання" #. Translators: timestamp displayed between conversations in #. * chat windows (strftime format string) -#: ../libempathy-gtk/empathy-chat-text-view.c:420 +#: ../libempathy-gtk/empathy-chat-text-view.c:415 msgid "%A %B %d %Y" msgstr "%A %B %d %Y" @@ -1552,25 +1574,25 @@ msgstr "Особиста інформація" msgid "New Contact" msgstr "Новий контакт" -#: ../libempathy-gtk/empathy-contact-dialogs.c:532 -#: ../libempathy-gtk/empathy-individual-dialogs.c:198 +#: ../libempathy-gtk/empathy-contact-dialogs.c:533 +#: ../libempathy-gtk/empathy-individual-dialogs.c:199 #, c-format msgid "Block %s?" msgstr "Заблокувати %s?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:537 -#: ../libempathy-gtk/empathy-individual-dialogs.c:239 +#: ../libempathy-gtk/empathy-contact-dialogs.c:538 +#: ../libempathy-gtk/empathy-individual-dialogs.c:247 #, c-format msgid "Are you sure you want to block '%s' from contacting you again?" msgstr "Блокувати «%s» з контактів знову?" -#: ../libempathy-gtk/empathy-contact-dialogs.c:542 -#: ../libempathy-gtk/empathy-individual-dialogs.c:261 +#: ../libempathy-gtk/empathy-contact-dialogs.c:543 +#: ../libempathy-gtk/empathy-individual-dialogs.c:269 msgid "_Block" msgstr "За_блокувати" -#: ../libempathy-gtk/empathy-contact-dialogs.c:552 -#: ../libempathy-gtk/empathy-individual-dialogs.c:270 +#: ../libempathy-gtk/empathy-contact-dialogs.c:559 +#: ../libempathy-gtk/empathy-individual-dialogs.c:278 msgid "_Report this contact as abusive" msgid_plural "_Report these contacts as abusive" msgstr[0] "_Звинуватити цей контакт у образі" @@ -1597,122 +1619,122 @@ msgstr "Без групи" msgid "Favorite People" msgstr "Улюблені люди" -#: ../libempathy-gtk/empathy-contact-list-view.c:2001 -#: ../libempathy-gtk/empathy-individual-view.c:2328 +#: ../libempathy-gtk/empathy-contact-list-view.c:1987 +#: ../libempathy-gtk/empathy-individual-view.c:2386 #, c-format msgid "Do you really want to remove the group '%s'?" msgstr "Вилучити групу «%s»?" -#: ../libempathy-gtk/empathy-contact-list-view.c:2003 -#: ../libempathy-gtk/empathy-individual-view.c:2331 +#: ../libempathy-gtk/empathy-contact-list-view.c:1989 +#: ../libempathy-gtk/empathy-individual-view.c:2389 msgid "Removing group" msgstr "Видалення групи" #. Remove -#: ../libempathy-gtk/empathy-contact-list-view.c:2052 -#: ../libempathy-gtk/empathy-contact-list-view.c:2129 -#: ../libempathy-gtk/empathy-individual-view.c:2386 -#: ../libempathy-gtk/empathy-individual-view.c:2554 +#: ../libempathy-gtk/empathy-contact-list-view.c:2038 +#: ../libempathy-gtk/empathy-contact-list-view.c:2115 +#: ../libempathy-gtk/empathy-individual-view.c:2444 +#: ../libempathy-gtk/empathy-individual-view.c:2637 #: ../src/empathy-accounts-dialog.ui.h:7 msgid "_Remove" msgstr "В_илучити" -#: ../libempathy-gtk/empathy-contact-list-view.c:2082 -#: ../libempathy-gtk/empathy-individual-view.c:2439 +#: ../libempathy-gtk/empathy-contact-list-view.c:2068 +#: ../libempathy-gtk/empathy-individual-view.c:2508 #, c-format msgid "Do you really want to remove the contact '%s'?" msgstr "Вилучити контакт «%s» з вашого списку?" -#: ../libempathy-gtk/empathy-contact-list-view.c:2084 -#: ../libempathy-gtk/empathy-individual-view.c:2460 +#: ../libempathy-gtk/empathy-contact-list-view.c:2070 +#: ../libempathy-gtk/empathy-individual-view.c:2529 msgid "Removing contact" msgstr "Видалення контакту" #: ../libempathy-gtk/empathy-contact-menu.c:219 -#: ../src/empathy-main-window.ui.h:13 +#: ../src/empathy-main-window.ui.h:14 msgid "_Add Contact…" msgstr "_Додати контакт…" -#: ../libempathy-gtk/empathy-contact-menu.c:296 +#: ../libempathy-gtk/empathy-contact-menu.c:299 msgid "_Block Contact" msgstr "За_блокувати контакт" -#: ../libempathy-gtk/empathy-contact-menu.c:325 -#: ../libempathy-gtk/empathy-individual-menu.c:517 -#: ../src/empathy-main-window.ui.h:15 +#: ../libempathy-gtk/empathy-contact-menu.c:328 +#: ../libempathy-gtk/empathy-individual-menu.c:536 +#: ../src/empathy-main-window.ui.h:16 msgid "_Chat" msgstr "_Розмова" -#: ../libempathy-gtk/empathy-contact-menu.c:356 -#: ../libempathy-gtk/empathy-individual-menu.c:560 +#: ../libempathy-gtk/empathy-contact-menu.c:359 +#: ../libempathy-gtk/empathy-individual-menu.c:625 msgctxt "menu item" msgid "_Audio Call" msgstr "_Голосовий виклик" -#: ../libempathy-gtk/empathy-contact-menu.c:387 -#: ../libempathy-gtk/empathy-individual-menu.c:602 +#: ../libempathy-gtk/empathy-contact-menu.c:390 +#: ../libempathy-gtk/empathy-individual-menu.c:667 msgctxt "menu item" msgid "_Video Call" msgstr "_Відео виклик" -#: ../libempathy-gtk/empathy-contact-menu.c:433 -#: ../libempathy-gtk/empathy-individual-menu.c:645 -#: ../src/empathy-main-window.ui.h:26 +#: ../libempathy-gtk/empathy-contact-menu.c:436 +#: ../libempathy-gtk/empathy-individual-menu.c:710 +#: ../src/empathy-main-window.ui.h:27 msgid "_Previous Conversations" msgstr "Переглянути _попередні бесіди" -#: ../libempathy-gtk/empathy-contact-menu.c:455 -#: ../libempathy-gtk/empathy-individual-menu.c:686 +#: ../libempathy-gtk/empathy-contact-menu.c:458 +#: ../libempathy-gtk/empathy-individual-menu.c:751 msgid "Send File" msgstr "Надіслати файл" -#: ../libempathy-gtk/empathy-contact-menu.c:478 -#: ../libempathy-gtk/empathy-individual-menu.c:728 +#: ../libempathy-gtk/empathy-contact-menu.c:481 +#: ../libempathy-gtk/empathy-individual-menu.c:793 msgid "Share My Desktop" msgstr "Оприлюднити мою стільницю" -#: ../libempathy-gtk/empathy-contact-menu.c:518 -#: ../libempathy-gtk/empathy-contact-widget.c:1763 -#: ../libempathy-gtk/empathy-individual-menu.c:763 -#: ../libempathy-gtk/empathy-individual-widget.c:1372 +#: ../libempathy-gtk/empathy-contact-menu.c:521 +#: ../libempathy-gtk/empathy-contact-widget.c:1751 +#: ../libempathy-gtk/empathy-individual-menu.c:828 +#: ../libempathy-gtk/empathy-individual-widget.c:1370 msgid "Favorite" msgstr "Улюблений" -#: ../libempathy-gtk/empathy-contact-menu.c:547 -#: ../libempathy-gtk/empathy-individual-menu.c:791 +#: ../libempathy-gtk/empathy-contact-menu.c:550 +#: ../libempathy-gtk/empathy-individual-menu.c:856 msgid "Infor_mation" msgstr "Інфор_мація" -#: ../libempathy-gtk/empathy-contact-menu.c:593 +#: ../libempathy-gtk/empathy-contact-menu.c:596 msgctxt "Edit contact (contextual menu)" msgid "_Edit" msgstr "_Правка" -#: ../libempathy-gtk/empathy-contact-menu.c:647 -#: ../libempathy-gtk/empathy-individual-menu.c:972 -#: ../src/empathy-chat-window.c:935 +#: ../libempathy-gtk/empathy-contact-menu.c:650 +#: ../libempathy-gtk/empathy-individual-menu.c:1037 +#: ../src/empathy-chat-window.c:986 msgid "Inviting you to this room" msgstr "Запрошення до цієї кімнати" -#: ../libempathy-gtk/empathy-contact-menu.c:678 -#: ../libempathy-gtk/empathy-individual-menu.c:1019 +#: ../libempathy-gtk/empathy-contact-menu.c:681 +#: ../libempathy-gtk/empathy-individual-menu.c:1084 msgid "_Invite to Chat Room" msgstr "_Запросити до кімнати" #. Title -#: ../libempathy-gtk/empathy-contact-search-dialog.c:513 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:514 msgid "Search contacts" msgstr "Пошук контактів" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:543 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:544 msgid "Search: " msgstr "Пошук:" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:601 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:602 msgid "_Add Contact" msgstr "_Додати контакт" -#: ../libempathy-gtk/empathy-contact-search-dialog.c:619 +#: ../libempathy-gtk/empathy-contact-search-dialog.c:620 msgid "No contacts found" msgstr "Не знайдено жодного контакту" @@ -1865,33 +1887,33 @@ msgstr "Широта:" msgid "Altitude:" msgstr "Висота:" -#: ../libempathy-gtk/empathy-contact-widget.c:871 -#: ../libempathy-gtk/empathy-contact-widget.c:888 +#: ../libempathy-gtk/empathy-contact-widget.c:861 +#: ../libempathy-gtk/empathy-contact-widget.c:876 #: ../libempathy-gtk/empathy-individual-widget.c:616 -#: ../libempathy-gtk/empathy-individual-widget.c:633 +#: ../libempathy-gtk/empathy-individual-widget.c:631 #: ../src/empathy-preferences.ui.h:12 msgid "Location" msgstr "Місцевість" #. translators: format is "Location, $date" -#: ../libempathy-gtk/empathy-contact-widget.c:890 -#: ../libempathy-gtk/empathy-individual-widget.c:635 +#: ../libempathy-gtk/empathy-contact-widget.c:878 +#: ../libempathy-gtk/empathy-individual-widget.c:633 #, c-format msgid "%s, %s" msgstr "%s, %s" -#: ../libempathy-gtk/empathy-contact-widget.c:942 -#: ../libempathy-gtk/empathy-individual-widget.c:684 +#: ../libempathy-gtk/empathy-contact-widget.c:930 +#: ../libempathy-gtk/empathy-individual-widget.c:682 msgid "%B %e, %Y at %R UTC" msgstr "%B %e, %Y у %R UTC" -#: ../libempathy-gtk/empathy-contact-widget.c:1024 -#: ../libempathy-gtk/empathy-individual-widget.c:919 +#: ../libempathy-gtk/empathy-contact-widget.c:1012 +#: ../libempathy-gtk/empathy-individual-widget.c:917 msgid "Save Avatar" msgstr "Зберегти аватар" -#: ../libempathy-gtk/empathy-contact-widget.c:1080 -#: ../libempathy-gtk/empathy-individual-widget.c:977 +#: ../libempathy-gtk/empathy-contact-widget.c:1068 +#: ../libempathy-gtk/empathy-individual-widget.c:975 msgid "Unable to save avatar" msgstr "Неможливо зберегти аватар" @@ -1901,7 +1923,7 @@ msgstr "<b>Місцевість</b> у (дата)\t" #. Alias #: ../libempathy-gtk/empathy-contact-widget.ui.h:3 -#: ../libempathy-gtk/empathy-individual-widget.c:1307 +#: ../libempathy-gtk/empathy-individual-widget.c:1305 msgid "Alias:" msgstr "Псевдонім:" @@ -1921,7 +1943,7 @@ msgstr "Подробиці про співрозмовника" #. Identifier to connect to Instant Messaging network #. Translators: Identifier to connect to Instant Messaging network #: ../libempathy-gtk/empathy-contact-widget.ui.h:8 -#: ../libempathy-gtk/empathy-individual-widget.c:1511 +#: ../libempathy-gtk/empathy-individual-widget.c:1509 msgid "Identifier:" msgstr "Ідентифікатор:" @@ -1960,18 +1982,18 @@ msgid "Select" msgstr "Вибрати" #: ../libempathy-gtk/empathy-groups-widget.c:408 -#: ../src/empathy-main-window.c:1436 +#: ../src/empathy-main-window.c:1770 msgid "Group" msgstr "Група" -#: ../libempathy-gtk/empathy-individual-dialogs.c:244 +#: ../libempathy-gtk/empathy-individual-dialogs.c:252 msgid "The following identity will be blocked:" msgid_plural "The following identities will be blocked:" msgstr[0] "Такий ідентифікатор буде заблоковано:" msgstr[1] "Такі ідентифікатори буде заборонено:" msgstr[2] "Такі ідентифікатори буде заборонено:" -#: ../libempathy-gtk/empathy-individual-dialogs.c:251 +#: ../libempathy-gtk/empathy-individual-dialogs.c:259 msgid "The following identity can not be blocked:" msgid_plural "The following identities can not be blocked:" msgstr[0] "Такий ідентифікатор неможливо заборонити:" @@ -2003,23 +2025,29 @@ msgstr "Контакти вибрані в списку зліва буде сп msgid "%s (%s)" msgstr "%s (%s)" -#: ../libempathy-gtk/empathy-individual-menu.c:839 +#. add an SMS button +#: ../libempathy-gtk/empathy-individual-menu.c:582 +#: ../libempathy-gtk/empathy-new-message-dialog.c:248 +msgid "_SMS" +msgstr "_SMS" + +#: ../libempathy-gtk/empathy-individual-menu.c:904 msgctxt "Edit individual (contextual menu)" msgid "_Edit" msgstr "_Редагувати" #. Translators: this is a verb meaning "to connect two contacts together #. * to form a meta-contact". -#: ../libempathy-gtk/empathy-individual-menu.c:865 +#: ../libempathy-gtk/empathy-individual-menu.c:930 msgctxt "Link individual (contextual menu)" msgid "_Link Contacts…" msgstr "_Сполучити контакт…" -#: ../libempathy-gtk/empathy-individual-view.c:2293 +#: ../libempathy-gtk/empathy-individual-view.c:2351 msgid "Delete and _Block" msgstr "Вилучити і за_блокувати" -#: ../libempathy-gtk/empathy-individual-view.c:2448 +#: ../libempathy-gtk/empathy-individual-view.c:2517 #, c-format msgid "" "Do you really want to remove the linked contact '%s'? Note that this will " @@ -2028,7 +2056,7 @@ msgstr "" "Вилучити сполучений контакт «%s»? Зауважте, це вилучить усі контакти, які " "складають список цього сполученого контакту." -#: ../libempathy-gtk/empathy-individual-widget.c:1652 +#: ../libempathy-gtk/empathy-individual-widget.c:1650 #, c-format msgid "Linked contact containing %u contact" msgid_plural "Linked contacts containing %u contacts" @@ -2150,12 +2178,12 @@ msgid "Contact ID:" msgstr "Ідентифікатор контакту:" #. add chat button -#: ../libempathy-gtk/empathy-new-message-dialog.c:171 +#: ../libempathy-gtk/empathy-new-message-dialog.c:258 msgid "C_hat" msgstr "_Розмова" #. Tweak the dialog -#: ../libempathy-gtk/empathy-new-message-dialog.c:181 +#: ../libempathy-gtk/empathy-new-message-dialog.c:277 msgid "New Conversation" msgstr "Нова бесіда" @@ -2297,19 +2325,23 @@ msgstr "Зберегти _новий стан" msgid "Saved Status Messages" msgstr "Збережений стан" -#: ../libempathy-gtk/empathy-theme-manager.c:67 +#: ../libempathy-gtk/empathy-theme-adium.c:1462 +msgid "Normal" +msgstr "Звичайна" + +#: ../libempathy-gtk/empathy-theme-manager.c:68 msgid "Classic" msgstr "Класична" -#: ../libempathy-gtk/empathy-theme-manager.c:68 +#: ../libempathy-gtk/empathy-theme-manager.c:69 msgid "Simple" msgstr "Проста" -#: ../libempathy-gtk/empathy-theme-manager.c:69 +#: ../libempathy-gtk/empathy-theme-manager.c:70 msgid "Clean" msgstr "Ясна" -#: ../libempathy-gtk/empathy-theme-manager.c:70 +#: ../libempathy-gtk/empathy-theme-manager.c:71 msgid "Blue" msgstr "Блакитна" @@ -2698,7 +2730,7 @@ msgstr "" "Правка." #: ../src/empathy-account-assistant.c:220 -#: ../src/empathy-account-assistant.c:1268 +#: ../src/empathy-account-assistant.c:1271 msgid "An error occurred" msgstr "Виникла помилка" @@ -2762,17 +2794,17 @@ msgstr "Ні, я просто хочу бачити людей, які у онл msgid "Select the accounts you want to import:" msgstr "Виберіть обліковий запис для імпорту:" -#: ../src/empathy-account-assistant.c:810 -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-account-assistant.c:813 +#: ../src/empathy-new-chatroom-dialog.c:555 +#: ../src/empathy-new-chatroom-dialog.c:556 msgid "Yes" msgstr "Так" -#: ../src/empathy-account-assistant.c:817 +#: ../src/empathy-account-assistant.c:820 msgid "No, that's all for now" msgstr "Ні, наразі досить" -#: ../src/empathy-account-assistant.c:1082 +#: ../src/empathy-account-assistant.c:1085 msgid "" "Empathy can automatically discover and chat with the people connected on the " "same network as you. If you want to use this feature, please check that the " @@ -2784,16 +2816,16 @@ msgstr "" "інформація є коректною. Ви можете змінити цю інформацію пізніше або вимкнути " "цю можливість, використовуючи діалогове вікно «Облікові записи»." -#: ../src/empathy-account-assistant.c:1088 -#: ../src/empathy-account-assistant.c:1144 +#: ../src/empathy-account-assistant.c:1091 +#: ../src/empathy-account-assistant.c:1147 msgid "Edit->Accounts" msgstr "Pvsyb->Облікові записи" -#: ../src/empathy-account-assistant.c:1104 +#: ../src/empathy-account-assistant.c:1107 msgid "I do _not want to enable this feature for now" msgstr "Ні, я _не хочу зараз вмикати цю функцію" -#: ../src/empathy-account-assistant.c:1140 +#: ../src/empathy-account-assistant.c:1143 msgid "" "You won't be able to chat with people connected to your local network, as " "telepathy-salut is not installed. If you want to enable this feature, please " @@ -2805,23 +2837,23 @@ msgstr "" "встановіть пакет telepathy-salut та створіть обліковий запис «Люди поблизу» " "у діалоговому вікні «Облікові записи»" -#: ../src/empathy-account-assistant.c:1146 +#: ../src/empathy-account-assistant.c:1149 msgid "telepathy-salut not installed" msgstr "не встановлено telepathy-salut" -#: ../src/empathy-account-assistant.c:1192 +#: ../src/empathy-account-assistant.c:1195 msgid "Messaging and VoIP Accounts Assistant" msgstr "Облікові записи обміну повідомленнями та VoIP" -#: ../src/empathy-account-assistant.c:1226 +#: ../src/empathy-account-assistant.c:1229 msgid "Welcome to Empathy" msgstr "Ласкаво просило до Empathy" -#: ../src/empathy-account-assistant.c:1235 +#: ../src/empathy-account-assistant.c:1238 msgid "Import your existing accounts" msgstr "Імпортувати наявні облікові записи" -#: ../src/empathy-account-assistant.c:1253 +#: ../src/empathy-account-assistant.c:1256 msgid "Please enter personal details" msgstr "Введіть персональну інформацію" @@ -2838,34 +2870,34 @@ msgstr "Є незбережені зміни у вашому обліковом msgid "Your new account has not been saved yet." msgstr "Новий обліковий рахунок ще не було збережено." -#: ../src/empathy-accounts-dialog.c:286 +#: ../src/empathy-accounts-dialog.c:345 #: ../src/empathy-streamed-media-window.c:809 msgid "Connecting…" msgstr "З'єднання…" -#: ../src/empathy-accounts-dialog.c:327 +#: ../src/empathy-accounts-dialog.c:386 #, c-format msgid "Offline — %s" msgstr "Поза мережею — %s" -#: ../src/empathy-accounts-dialog.c:339 +#: ../src/empathy-accounts-dialog.c:398 #, c-format msgid "Disconnected — %s" msgstr "Від'єднаний — %s" -#: ../src/empathy-accounts-dialog.c:350 +#: ../src/empathy-accounts-dialog.c:409 msgid "Offline — No Network Connection" msgstr "Не у мережі — Немає з'єднання з мережею" -#: ../src/empathy-accounts-dialog.c:357 +#: ../src/empathy-accounts-dialog.c:416 msgid "Unknown Status" msgstr "Невідомий статус" -#: ../src/empathy-accounts-dialog.c:369 +#: ../src/empathy-accounts-dialog.c:428 msgid "Offline — Account Disabled" msgstr "Не у мережі — Обліковий запис вимкнено" -#: ../src/empathy-accounts-dialog.c:772 +#: ../src/empathy-accounts-dialog.c:831 msgid "" "You are about to create a new account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2873,16 +2905,16 @@ msgstr "" "Ви намагаєтесь створити новий обліковий рахунок, що призведе до\n" "відкидання змін. Дійсно хочете продовжити?" -#: ../src/empathy-accounts-dialog.c:1133 +#: ../src/empathy-accounts-dialog.c:1192 #, c-format msgid "Do you want to remove %s from your computer?" msgstr "Вилучити «%s» з комп'ютера?" -#: ../src/empathy-accounts-dialog.c:1137 +#: ../src/empathy-accounts-dialog.c:1196 msgid "This will not remove your account on the server." msgstr "Це не призведе до видалення облікового запису на сервері." -#: ../src/empathy-accounts-dialog.c:1375 +#: ../src/empathy-accounts-dialog.c:1432 msgid "" "You are about to select another account, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2891,15 +2923,15 @@ msgstr "" "відкидання змін. Ви дійсно хочете продовжити?" #. Menu items: to enabled/disable the account -#: ../src/empathy-accounts-dialog.c:1571 +#: ../src/empathy-accounts-dialog.c:1643 msgid "_Enable" msgstr "_Увімкнено" -#: ../src/empathy-accounts-dialog.c:1572 +#: ../src/empathy-accounts-dialog.c:1644 msgid "_Disable" msgstr "_Вимкнено" -#: ../src/empathy-accounts-dialog.c:2086 +#: ../src/empathy-accounts-dialog.c:2154 msgid "" "You are about to close the window, which will discard\n" "your changes. Are you sure you want to proceed?" @@ -2935,11 +2967,11 @@ msgstr "_Додати…" msgid "_Import…" msgstr "_Імпорт…" -#: ../src/empathy-auth-client.c:246 +#: ../src/empathy-auth-client.c:249 msgid " - Empathy authentication client" msgstr " — клієнт автентифікації Empathy" -#: ../src/empathy-auth-client.c:262 +#: ../src/empathy-auth-client.c:265 msgid "Empathy authentication client" msgstr "Клієнт аутентифікація Empathy" @@ -3024,17 +3056,37 @@ msgstr "Адреса IP сервера ретрансляції" msgid "The IP address of the multicast group" msgstr "Адреса IP групової трансляції" +#: ../src/empathy-streamed-media-window.c:1906 +msgctxt "encoding video codec" +msgid "Unknown" +msgstr "Невідомо" + +#: ../src/empathy-streamed-media-window.c:1909 +msgctxt "encoding audio codec" +msgid "Unknown" +msgstr "Невідомо" + +#: ../src/empathy-streamed-media-window.c:1912 +msgctxt "decoding video codec" +msgid "Unknown" +msgstr "Невідомо" + +#: ../src/empathy-streamed-media-window.c:1915 +msgctxt "decoding audio codec" +msgid "Unknown" +msgstr "Невідомо" + #. Translators: number of minutes:seconds the caller has been connected -#: ../src/empathy-streamed-media-window.c:2266 +#: ../src/empathy-streamed-media-window.c:2274 #, c-format msgid "Connected — %d:%02dm" msgstr "З'єднання — %d:%02dm " -#: ../src/empathy-streamed-media-window.c:2327 +#: ../src/empathy-streamed-media-window.c:2335 msgid "Technical Details" msgstr "Технічні подробиці" -#: ../src/empathy-streamed-media-window.c:2365 +#: ../src/empathy-streamed-media-window.c:2373 #, c-format msgid "" "%s's software does not understand any of the audio formats supported by your " @@ -3043,7 +3095,7 @@ msgstr "" "Програмне забезпечення %s не розуміє формати звуку, що підтримуються вашим " "комп'ютером" -#: ../src/empathy-streamed-media-window.c:2370 +#: ../src/empathy-streamed-media-window.c:2378 #, c-format msgid "" "%s's software does not understand any of the video formats supported by your " @@ -3052,7 +3104,7 @@ msgstr "" "Програмне забезпечення %s не розуміє відеоформати, що підтримуються вашим " "комп'ютером" -#: ../src/empathy-streamed-media-window.c:2376 +#: ../src/empathy-streamed-media-window.c:2384 #, c-format msgid "" "Can't establish a connection to %s. One of you might be on a network that " @@ -3061,25 +3113,25 @@ msgstr "" "Не вдається встановити з'єднання з %s. Один з вас може знаходитися у мережі, " "яка не підтримує прямі з'єднання." -#: ../src/empathy-streamed-media-window.c:2382 +#: ../src/empathy-streamed-media-window.c:2390 msgid "There was a failure on the network" msgstr "Помилка мережі" -#: ../src/empathy-streamed-media-window.c:2386 +#: ../src/empathy-streamed-media-window.c:2394 msgid "" "The audio formats necessary for this call are not installed on your computer" msgstr "" "Формати аудіо, що потрібні для цього виклику, не встановлено на вашому " "комп'ютері" -#: ../src/empathy-streamed-media-window.c:2389 +#: ../src/empathy-streamed-media-window.c:2397 msgid "" "The video formats necessary for this call are not installed on your computer" msgstr "" "Відеоформати, що потрібні для цього виклику, не встановлено на вашому " "комп'ютері" -#: ../src/empathy-streamed-media-window.c:2399 +#: ../src/empathy-streamed-media-window.c:2407 #, c-format msgid "" "Something unexpected happened in a Telepathy component. Please <a href=\"%s" @@ -3090,19 +3142,19 @@ msgstr "" "помилку</a> та прикріпіть журнали, зібрані з вікна налагодження у меню " "«Довідка»." -#: ../src/empathy-streamed-media-window.c:2407 +#: ../src/empathy-streamed-media-window.c:2415 msgid "There was a failure in the call engine" msgstr "Помилка у механізмі виклику" -#: ../src/empathy-streamed-media-window.c:2410 +#: ../src/empathy-streamed-media-window.c:2418 msgid "The end of the stream was reached" msgstr "Досягнуто кінця потоку" -#: ../src/empathy-streamed-media-window.c:2450 +#: ../src/empathy-streamed-media-window.c:2458 msgid "Can't establish audio stream" msgstr "Не вдається встановити аудіопотік" -#: ../src/empathy-streamed-media-window.c:2460 +#: ../src/empathy-streamed-media-window.c:2468 msgid "Can't establish video stream" msgstr "Не вдається встановити відеопотік" @@ -3174,6 +3226,10 @@ msgstr "Надіслати звук" msgid "Toggle audio transmission" msgstr "Вимкнути передачу звуку" +#: ../src/empathy-call-window.ui.h:18 +msgid "Unknown" +msgstr "Невідомо" + #: ../src/empathy-call-window.ui.h:19 msgid "V_ideo" msgstr "_Відео" @@ -3198,11 +3254,11 @@ msgstr "Попередній перегляд відео" msgid "_Call" msgstr "_Виклик" -#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:29 +#: ../src/empathy-call-window.ui.h:25 ../src/empathy-main-window.ui.h:30 msgid "_View" msgstr "_Перегляд" -#: ../src/empathy-chat-window.c:474 ../src/empathy-chat-window.c:494 +#: ../src/empathy-chat-window.c:480 ../src/empathy-chat-window.c:500 #, c-format msgid "%s (%d unread)" msgid_plural "%s (%d unread)" @@ -3210,7 +3266,7 @@ msgstr[0] "%s (%d непрочитане)" msgstr[1] "%s (%d непрочитаних)" msgstr[2] "%s (%d непрочитані)" -#: ../src/empathy-chat-window.c:486 +#: ../src/empathy-chat-window.c:492 #, c-format msgid "%s (and %u other)" msgid_plural "%s (and %u others)" @@ -3218,7 +3274,7 @@ msgstr[0] "%s (та %u інше)" msgstr[1] "%s (та %u інших)" msgstr[2] "%s (та %u інших)" -#: ../src/empathy-chat-window.c:502 +#: ../src/empathy-chat-window.c:508 #, c-format msgid "%s (%d unread from others)" msgid_plural "%s (%d unread from others)" @@ -3226,7 +3282,7 @@ msgstr[0] "%s (%d непрочитане від інших)" msgstr[1] "%s (%d непрочитаних від інших)" msgstr[2] "%s (%d непрочитаний від інших)" -#: ../src/empathy-chat-window.c:511 +#: ../src/empathy-chat-window.c:517 #, c-format msgid "%s (%d unread from all)" msgid_plural "%s (%d unread from all)" @@ -3234,7 +3290,19 @@ msgstr[0] "%s (%d непрочитане від усіх)" msgstr[1] "%s (%d непрочитаних від усіх)" msgstr[2] "%s (%d непрочитаний від усіх)" -#: ../src/empathy-chat-window.c:721 +#: ../src/empathy-chat-window.c:732 +msgid "SMS:" +msgstr "SMS:" + +#: ../src/empathy-chat-window.c:742 +#, c-format +msgid "Sending %d message" +msgid_plural "Sending %d messages" +msgstr[0] "Надсилання %d повідомлення" +msgstr[1] "Надсилання %d повідомлень" +msgstr[2] "Надсилання %d повідомлень" + +#: ../src/empathy-chat-window.c:764 msgid "Typing a message." msgstr "Набирає повідомлення." @@ -3270,7 +3338,7 @@ msgstr "Перемістити закладку _праворуч" msgid "Notify for All Messages" msgstr "Сповіщати на всі повідомлення" -#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:17 +#: ../src/empathy-chat-window.ui.h:9 ../src/empathy-main-window.ui.h:18 msgid "_Contents" msgstr "_Зміст" @@ -3282,7 +3350,7 @@ msgstr "_Бесіда" msgid "_Detach Tab" msgstr "_Відокремити закладку" -#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:19 +#: ../src/empathy-chat-window.ui.h:12 ../src/empathy-main-window.ui.h:20 msgid "_Edit" msgstr "З_міни" @@ -3290,7 +3358,7 @@ msgstr "З_міни" msgid "_Favorite Chat Room" msgstr "_Улюблена кімната" -#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:21 +#: ../src/empathy-chat-window.ui.h:14 ../src/empathy-main-window.ui.h:22 msgid "_Help" msgstr "_Довідка" @@ -3330,90 +3398,90 @@ msgstr "Автоматичне з'єднання" msgid "Manage Favorite Rooms" msgstr "Керування улюбленими кімнатами" -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:504 msgid "Incoming video call" msgstr "Вхідний відео виклик" -#: ../src/empathy-event-manager.c:507 +#: ../src/empathy-event-manager.c:504 msgid "Incoming call" msgstr "Вхідний виклик" -#: ../src/empathy-event-manager.c:511 +#: ../src/empathy-event-manager.c:508 #, c-format msgid "%s is video calling you. Do you want to answer?" msgstr "Відеодзвінок від %s, відповісти?" -#: ../src/empathy-event-manager.c:512 +#: ../src/empathy-event-manager.c:509 #, c-format msgid "%s is calling you. Do you want to answer?" msgstr "Дзвінок від %s, хочете відповісти?" -#: ../src/empathy-event-manager.c:515 ../src/empathy-event-manager.c:660 +#: ../src/empathy-event-manager.c:512 ../src/empathy-event-manager.c:661 #, c-format msgid "Incoming call from %s" msgstr "Вхідний виклик від %s" -#: ../src/empathy-event-manager.c:540 +#: ../src/empathy-event-manager.c:537 msgid "_Reject" msgstr "Від_хилити" -#: ../src/empathy-event-manager.c:546 +#: ../src/empathy-event-manager.c:543 msgid "_Answer" msgstr "_Відповісти" -#: ../src/empathy-event-manager.c:660 +#: ../src/empathy-event-manager.c:661 #, c-format msgid "Incoming video call from %s" msgstr "Вхідний відеовиклик від %s" -#: ../src/empathy-event-manager.c:737 +#: ../src/empathy-event-manager.c:734 msgid "Room invitation" msgstr "Кімната запрошення" -#: ../src/empathy-event-manager.c:739 +#: ../src/empathy-event-manager.c:736 #, c-format msgid "Invitation to join %s" msgstr "Запрошення приєднатись до %s" -#: ../src/empathy-event-manager.c:746 +#: ../src/empathy-event-manager.c:743 #, c-format msgid "%s is inviting you to join %s" msgstr "%s запрошує Вас ввійти у %s" -#: ../src/empathy-event-manager.c:754 +#: ../src/empathy-event-manager.c:751 msgid "_Decline" msgstr "Від_хилити" -#: ../src/empathy-event-manager.c:759 +#: ../src/empathy-event-manager.c:756 #: ../src/empathy-new-chatroom-dialog.ui.h:7 msgid "_Join" msgstr "_Увійти" -#: ../src/empathy-event-manager.c:786 +#: ../src/empathy-event-manager.c:783 #, c-format msgid "%s invited you to join %s" msgstr "%s запросив Вас ввійти у %s" -#: ../src/empathy-event-manager.c:792 +#: ../src/empathy-event-manager.c:789 #, c-format msgid "You have been invited to join %s" msgstr "Вас запрошено приєднатись до %s" -#: ../src/empathy-event-manager.c:843 +#: ../src/empathy-event-manager.c:840 #, c-format msgid "Incoming file transfer from %s" msgstr "Вхідний передача файлу від %s" -#: ../src/empathy-event-manager.c:1013 ../src/empathy-main-window.c:370 +#: ../src/empathy-event-manager.c:1010 ../src/empathy-main-window.c:377 msgid "Password required" msgstr "Потрібно пароль" -#: ../src/empathy-event-manager.c:1069 +#: ../src/empathy-event-manager.c:1066 #, c-format msgid "%s would like permission to see when you are online" msgstr "%s потребує дозволу, щоб знати, коли ви в мережі" -#: ../src/empathy-event-manager.c:1073 +#: ../src/empathy-event-manager.c:1070 #, c-format msgid "" "\n" @@ -3423,105 +3491,105 @@ msgstr "" "Повідомлення: %s" #. Translators: time left, when it is more than one hour -#: ../src/empathy-ft-manager.c:99 +#: ../src/empathy-ft-manager.c:100 #, c-format msgid "%u:%02u.%02u" msgstr "%u:%02u.%02u" #. Translators: time left, when is is less than one hour -#: ../src/empathy-ft-manager.c:102 +#: ../src/empathy-ft-manager.c:103 #, c-format msgid "%02u.%02u" msgstr "%02u.%02u" -#: ../src/empathy-ft-manager.c:178 +#: ../src/empathy-ft-manager.c:179 msgctxt "file transfer percent" msgid "Unknown" msgstr "Невідомо" -#: ../src/empathy-ft-manager.c:273 +#: ../src/empathy-ft-manager.c:274 #, c-format msgid "%s of %s at %s/s" msgstr "%s з %s у %s/с" -#: ../src/empathy-ft-manager.c:274 +#: ../src/empathy-ft-manager.c:275 #, c-format msgid "%s of %s" msgstr "%s з %s" #. translators: first %s is filename, second %s is the contact name -#: ../src/empathy-ft-manager.c:305 +#: ../src/empathy-ft-manager.c:306 #, c-format msgid "Receiving \"%s\" from %s" msgstr "Приймається \"%s\" від %s" #. translators: first %s is filename, second %s is the contact name -#: ../src/empathy-ft-manager.c:308 +#: ../src/empathy-ft-manager.c:309 #, c-format msgid "Sending \"%s\" to %s" msgstr "Відправляється \"%s\" до %s" #. translators: first %s is filename, second %s #. * is the contact name -#: ../src/empathy-ft-manager.c:338 +#: ../src/empathy-ft-manager.c:339 #, c-format msgid "Error receiving \"%s\" from %s" msgstr "Помилка приймання \"%s\" від %s" -#: ../src/empathy-ft-manager.c:341 +#: ../src/empathy-ft-manager.c:342 msgid "Error receiving a file" msgstr "Помилка прийому файлу" -#: ../src/empathy-ft-manager.c:346 +#: ../src/empathy-ft-manager.c:347 #, c-format msgid "Error sending \"%s\" to %s" msgstr "Помилка відправлення \"%s\" до %s" -#: ../src/empathy-ft-manager.c:349 +#: ../src/empathy-ft-manager.c:350 msgid "Error sending a file" msgstr "Помилка відправлення файлу" #. translators: first %s is filename, second %s #. * is the contact name -#: ../src/empathy-ft-manager.c:488 +#: ../src/empathy-ft-manager.c:489 #, c-format msgid "\"%s\" received from %s" msgstr "\"%s\" надійшов від %s" #. translators: first %s is filename, second %s #. * is the contact name -#: ../src/empathy-ft-manager.c:493 +#: ../src/empathy-ft-manager.c:494 #, c-format msgid "\"%s\" sent to %s" msgstr "\"%s\" надіслано до %s" -#: ../src/empathy-ft-manager.c:496 +#: ../src/empathy-ft-manager.c:497 msgid "File transfer completed" msgstr "Передачу файлу завершено" -#: ../src/empathy-ft-manager.c:615 ../src/empathy-ft-manager.c:782 +#: ../src/empathy-ft-manager.c:616 ../src/empathy-ft-manager.c:780 msgid "Waiting for the other participant's response" msgstr "Почекати, поки інший учасник відповість" -#: ../src/empathy-ft-manager.c:641 ../src/empathy-ft-manager.c:679 +#: ../src/empathy-ft-manager.c:642 ../src/empathy-ft-manager.c:680 #, c-format msgid "Checking integrity of \"%s\"" msgstr "Перевірка цілісності \"%s\"" -#: ../src/empathy-ft-manager.c:644 ../src/empathy-ft-manager.c:682 +#: ../src/empathy-ft-manager.c:645 ../src/empathy-ft-manager.c:683 #, c-format msgid "Hashing \"%s\"" msgstr "Хешування \"%s\"" -#: ../src/empathy-ft-manager.c:1016 +#: ../src/empathy-ft-manager.c:1026 msgid "%" msgstr "%" -#: ../src/empathy-ft-manager.c:1028 +#: ../src/empathy-ft-manager.c:1038 msgid "File" msgstr "Файл" -#: ../src/empathy-ft-manager.c:1050 +#: ../src/empathy-ft-manager.c:1060 msgid "Remaining" msgstr "Лишаємось" @@ -3558,39 +3626,55 @@ msgstr "Протокол:" msgid "Source" msgstr "Джерело" -#: ../src/empathy-main-window.c:387 +#: ../src/empathy-main-window.c:394 msgid "Provide Password" msgstr "Вкажіть пароль" -#: ../src/empathy-main-window.c:393 +#: ../src/empathy-main-window.c:400 msgid "Disconnect" msgstr "Від'єднати" -#: ../src/empathy-main-window.c:533 +#: ../src/empathy-main-window.c:540 msgid "No match found" msgstr "Збігів не знайдено" -#: ../src/empathy-main-window.c:688 +#: ../src/empathy-main-window.c:695 msgid "Reconnect" msgstr "Перез'єднати" -#: ../src/empathy-main-window.c:694 +#: ../src/empathy-main-window.c:701 msgid "Edit Account" msgstr "Редагування облікового запису" -#: ../src/empathy-main-window.c:700 +#: ../src/empathy-main-window.c:707 msgid "Close" msgstr "Закрити" -#: ../src/empathy-main-window.c:1418 +#. Translators: this string will be something like: +#. * Top up My Account ($1.23)..." +#: ../src/empathy-main-window.c:849 +#, c-format +msgid "Top up %s (%s)..." +msgstr "Поповнити %s (%s)…" + +#: ../src/empathy-main-window.c:924 +msgid "Top up account credit" +msgstr "Поповнити рахунок" + +#. top up button +#: ../src/empathy-main-window.c:999 +msgid "Top Up..." +msgstr "Поповнити…" + +#: ../src/empathy-main-window.c:1752 msgid "Contact" msgstr "Співрозмовник" -#: ../src/empathy-main-window.c:1765 +#: ../src/empathy-main-window.c:2101 msgid "Contact List" msgstr "Список співрозмовників" -#: ../src/empathy-main-window.c:1881 +#: ../src/empathy-main-window.c:2219 msgid "Show and edit accounts" msgstr "Показати та редагувати облікові записи" @@ -3599,86 +3683,90 @@ msgid "Contacts on a _Map" msgstr "Співрозмовники на _карті" #: ../src/empathy-main-window.ui.h:2 +msgid "Credit Balance" +msgstr "Залишок" + +#: ../src/empathy-main-window.ui.h:3 msgid "Find in Contact _List" msgstr "Знайти у _списку контактів" -#: ../src/empathy-main-window.ui.h:3 +#: ../src/empathy-main-window.ui.h:4 msgid "Join _Favorites" msgstr "Підключити _близьких" -#: ../src/empathy-main-window.ui.h:4 +#: ../src/empathy-main-window.ui.h:5 msgid "Manage Favorites" msgstr "Налаштувати _близьких" -#: ../src/empathy-main-window.ui.h:5 +#: ../src/empathy-main-window.ui.h:6 msgid "N_ormal Size" msgstr "З_вичайний розмір" -#: ../src/empathy-main-window.ui.h:6 ../src/empathy-status-icon.ui.h:1 +#: ../src/empathy-main-window.ui.h:7 ../src/empathy-status-icon.ui.h:1 msgid "New _Call…" msgstr "Новий _виклик…" -#: ../src/empathy-main-window.ui.h:7 +#: ../src/empathy-main-window.ui.h:8 msgid "Normal Size With _Avatars" msgstr "Звичайний розмір _аватарів" -#: ../src/empathy-main-window.ui.h:8 +#: ../src/empathy-main-window.ui.h:9 msgid "P_references" msgstr "_Параметри" -#: ../src/empathy-main-window.ui.h:9 +#: ../src/empathy-main-window.ui.h:10 msgid "Show P_rotocols" msgstr "Показати _протокол:" -#: ../src/empathy-main-window.ui.h:10 +#: ../src/empathy-main-window.ui.h:11 msgid "Sort by _Name" msgstr "Сортувати за _іменем" -#: ../src/empathy-main-window.ui.h:11 +#: ../src/empathy-main-window.ui.h:12 msgid "Sort by _Status" msgstr "Впорядкувати за с_татусом" -#: ../src/empathy-main-window.ui.h:12 +#: ../src/empathy-main-window.ui.h:13 msgid "_Accounts" msgstr "_Облікові записи" -#: ../src/empathy-main-window.ui.h:14 +#: ../src/empathy-main-window.ui.h:15 msgid "_Blocked Contacts" msgstr "За_блоковані контакти" -#: ../src/empathy-main-window.ui.h:16 +#: ../src/empathy-main-window.ui.h:17 msgid "_Compact Size" msgstr "_Компактний розмір" -#: ../src/empathy-main-window.ui.h:18 +#: ../src/empathy-main-window.ui.h:19 msgid "_Debug" msgstr "_Налагодження" -#: ../src/empathy-main-window.ui.h:20 +#: ../src/empathy-main-window.ui.h:21 msgid "_File Transfers" msgstr "Передача _файлів" -#: ../src/empathy-main-window.ui.h:22 +#: ../src/empathy-main-window.ui.h:23 msgid "_Join…" msgstr "_Увійти…" -#: ../src/empathy-main-window.ui.h:23 ../src/empathy-status-icon.ui.h:3 +#: ../src/empathy-main-window.ui.h:24 ../src/empathy-status-icon.ui.h:3 msgid "_New Conversation…" msgstr "_Нова бесіда…" -#: ../src/empathy-main-window.ui.h:24 +#: ../src/empathy-main-window.ui.h:25 msgid "_Offline Contacts" msgstr "_Показувати відсутніх" -#: ../src/empathy-main-window.ui.h:25 +#: ../src/empathy-main-window.ui.h:26 msgid "_Personal Information" msgstr "_Особиста інформація" -#: ../src/empathy-main-window.ui.h:27 +#: ../src/empathy-main-window.ui.h:28 msgid "_Room" msgstr "_Кімната" -#: ../src/empathy-main-window.ui.h:28 +#: ../src/empathy-main-window.ui.h:29 msgid "_Search for Contacts…" msgstr "_Пошук для контактів…" @@ -3692,7 +3780,7 @@ msgstr "Учасники" #. Translators: Room/Join's roomlist tooltip. Parameters are a channel name, #. yes/no, yes/no and a number. -#: ../src/empathy-new-chatroom-dialog.c:560 +#: ../src/empathy-new-chatroom-dialog.c:553 #, c-format msgid "" "%s\n" @@ -3705,16 +3793,16 @@ msgstr "" "Вимога паролю: %s\n" "Учасники: %s" -#: ../src/empathy-new-chatroom-dialog.c:562 -#: ../src/empathy-new-chatroom-dialog.c:563 +#: ../src/empathy-new-chatroom-dialog.c:555 +#: ../src/empathy-new-chatroom-dialog.c:556 msgid "No" msgstr "Ні" -#: ../src/empathy-new-chatroom-dialog.c:591 +#: ../src/empathy-new-chatroom-dialog.c:584 msgid "Could not start room listing" msgstr "Неможливо почати перелічування кімнат" -#: ../src/empathy-new-chatroom-dialog.c:601 +#: ../src/empathy-new-chatroom-dialog.c:594 msgid "Could not stop room listing" msgstr "Неможливо зупинити перелічування кімнат" @@ -3749,39 +3837,79 @@ msgstr "Список бесід" msgid "_Room:" msgstr "_Кімната:" -#: ../src/empathy-preferences.c:139 +#: ../src/empathy-preferences.c:147 msgid "Message received" msgstr "Надійшло повідомлення" -#: ../src/empathy-preferences.c:140 +#: ../src/empathy-preferences.c:148 msgid "Message sent" msgstr "Повідомлення надіслано" -#: ../src/empathy-preferences.c:141 +#: ../src/empathy-preferences.c:149 msgid "New conversation" msgstr "Нова бесіда" -#: ../src/empathy-preferences.c:142 +#: ../src/empathy-preferences.c:150 msgid "Contact goes online" msgstr "Співрозмовник входить у мережу" -#: ../src/empathy-preferences.c:143 +#: ../src/empathy-preferences.c:151 msgid "Contact goes offline" msgstr "Співрозмовник виходить з мережі" -#: ../src/empathy-preferences.c:144 +#: ../src/empathy-preferences.c:152 msgid "Account connected" msgstr "Обліковий запис підключено" -#: ../src/empathy-preferences.c:145 +#: ../src/empathy-preferences.c:153 msgid "Account disconnected" msgstr "Обліковий запис відключено" -#: ../src/empathy-preferences.c:446 +#: ../src/empathy-preferences.c:450 msgid "Language" msgstr "Мова" -#: ../src/empathy-preferences.c:875 +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:700 +msgid "Juliet" +msgstr "Джульєтта" + +#. translators: Contact name for the chat theme preview +#: ../src/empathy-preferences.c:707 +msgid "Romeo" +msgstr "Ромео" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:713 +msgid "O Romeo, Romeo, wherefore art thou Romeo?" +msgstr "Ромео! О, навіщо ти Ромео?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:716 +msgid "Deny thy father and refuse thy name;" +msgstr "Зміни своє ім'я, зречися батька;" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:719 +msgid "Or if thou wilt not, be but sworn my love" +msgstr "Як ні, то присягни мені в коханні," + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:722 +msgid "And I'll no longer be a Capulet." +msgstr "І більше я не буду Капулетті." + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:725 +msgid "Shall I hear more, or shall I speak at this?" +msgstr "Послухать — чи відповісти відразу?" + +#. translators: Quote from Romeo & Julier, for chat theme preview +#: ../src/empathy-preferences.c:728 +msgid "Juliet has disconnected" +msgstr "Джульєтта від'єдналась." + +#: ../src/empathy-preferences.c:962 msgid "Preferences" msgstr "Параметри" @@ -3883,43 +4011,47 @@ msgstr "" "small>" #: ../src/empathy-preferences.ui.h:24 +msgid "Theme Variant:" +msgstr "Варіант теми:" + +#: ../src/empathy-preferences.ui.h:25 msgid "Themes" msgstr "Теми" -#: ../src/empathy-preferences.ui.h:25 +#: ../src/empathy-preferences.ui.h:26 msgid "_Automatically connect on startup" msgstr "_Автоматично з'єднуватись при запуску" -#: ../src/empathy-preferences.ui.h:26 +#: ../src/empathy-preferences.ui.h:27 msgid "_Cellphone" msgstr "_Мобільний телефон" -#: ../src/empathy-preferences.ui.h:27 +#: ../src/empathy-preferences.ui.h:28 msgid "_Enable bubble notifications" msgstr "_Ввімкнути контекстні сповіщення" -#: ../src/empathy-preferences.ui.h:28 +#: ../src/empathy-preferences.ui.h:29 msgid "_Enable sound notifications" msgstr "_Ввімкнути звукові сповіщення" -#: ../src/empathy-preferences.ui.h:29 +#: ../src/empathy-preferences.ui.h:30 msgid "_GPS" msgstr "_GPS" -#: ../src/empathy-preferences.ui.h:30 +#: ../src/empathy-preferences.ui.h:31 msgid "_Network (IP, Wi-Fi)" msgstr "_Мережа (IP, Wi-Fi)" -#: ../src/empathy-preferences.ui.h:31 +#: ../src/empathy-preferences.ui.h:32 msgid "_Open new chats in separate windows" msgstr "_Відкривати нові бесіди у окремому вікні" -#: ../src/empathy-preferences.ui.h:32 +#: ../src/empathy-preferences.ui.h:33 msgid "_Publish location to my contacts" msgstr "_Публікувати місцевості моїм співрозмовникам" #. To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees. -#: ../src/empathy-preferences.ui.h:34 +#: ../src/empathy-preferences.ui.h:35 msgid "_Reduce location accuracy" msgstr "По_низити точність визначення місцевості" @@ -3931,7 +4063,7 @@ msgstr "Стан" msgid "_Quit" msgstr "Ви_йти" -#: ../src/empathy-map-view.c:442 +#: ../src/empathy-map-view.c:448 msgid "Contact Map View" msgstr "Карта співрозмовників" @@ -4071,6 +4203,10 @@ msgstr "Відхилити" msgid "Accept" msgstr "Прийняти" +#: ../src/empathy-notifications-approver.c:226 +msgid "Provide" +msgstr "Надати" + #: ../src/empathy-call-observer.c:130 #, c-format msgid "Missed call from %s" @@ -4081,6 +4217,13 @@ msgstr "Пропущений виклик від %s" msgid "%s just tried to call you, but you were in another call." msgstr "%s намагався зв'язатись з вами, але ви мали розмову з іншим у той час." +#: ../libempathy-gtk/empathy-search-bar.c:282 +msgid "_Match case" +msgstr "_Збіг регістру" + +#~ msgid "_Enabled" +#~ msgstr "Увім_кнено" + #~ msgid "Send and receive messages" #~ msgstr "Отримання та надсилання миттєвих повідомлень" diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c index 734809f80..14de1d3c5 100644 --- a/src/empathy-accounts-dialog.c +++ b/src/empathy-accounts-dialog.c @@ -1209,12 +1209,10 @@ accounts_dialog_button_remove_clicked_cb (GtkWidget *button, { EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); GtkTreeView *view; - GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; view = GTK_TREE_VIEW (priv->treeview); - model = gtk_tree_view_get_model (view); selection = gtk_tree_view_get_selection (view); if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) return; @@ -1491,14 +1489,12 @@ accounts_dialog_get_settings_iter (EmpathyAccountsDialog *dialog, GtkTreeIter *iter) { GtkTreeView *view; - GtkTreeSelection *selection; GtkTreeModel *model; gboolean ok; EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); /* Update the status in the model */ view = GTK_TREE_VIEW (priv->treeview); - selection = gtk_tree_view_get_selection (view); model = gtk_tree_view_get_model (view); for (ok = gtk_tree_model_get_iter_first (model, iter); @@ -1528,14 +1524,12 @@ accounts_dialog_get_account_iter (EmpathyAccountsDialog *dialog, GtkTreeIter *iter) { GtkTreeView *view; - GtkTreeSelection *selection; GtkTreeModel *model; gboolean ok; EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); /* Update the status in the model */ view = GTK_TREE_VIEW (priv->treeview); - selection = gtk_tree_view_get_selection (view); model = gtk_tree_view_get_model (view); for (ok = gtk_tree_model_get_iter_first (model, iter); @@ -1585,11 +1579,8 @@ static void accounts_dialog_model_set_selected (EmpathyAccountsDialog *dialog, EmpathyAccountSettings *settings) { - GtkTreeSelection *selection; GtkTreeIter iter; - EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview)); if (accounts_dialog_get_settings_iter (dialog, settings, &iter)) select_and_scroll_to_iter (dialog, &iter); } @@ -1831,14 +1822,12 @@ accounts_dialog_add_account (EmpathyAccountsDialog *dialog, GtkTreeIter iter; TpConnectionStatus status; const gchar *name; - gboolean enabled; EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); gboolean selected = FALSE; model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->treeview)); status = tp_account_get_connection_status (account, NULL); name = tp_account_get_display_name (account); - enabled = tp_account_is_enabled (account); settings = empathy_account_settings_new_for_account (account); @@ -1968,12 +1957,6 @@ enable_or_disable_account (EmpathyAccountsDialog *dialog, TpAccount *account, gboolean enabled) { - GtkTreeModel *model; - EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); - - /* Update the status in the model */ - model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->treeview)); - /* Update the status-infobar in the details view */ accounts_dialog_update_status_infobar (dialog, account); @@ -2036,11 +2019,8 @@ static void accounts_dialog_set_selected_account (EmpathyAccountsDialog *dialog, TpAccount *account) { - GtkTreeSelection *selection; GtkTreeIter iter; - EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview)); if (accounts_dialog_get_account_iter (dialog, account, &iter)) select_and_scroll_to_iter (dialog, &iter); } diff --git a/src/empathy-auth-client.c b/src/empathy-auth-client.c index 68c4543a8..b7988e07e 100644 --- a/src/empathy-auth-client.c +++ b/src/empathy-auth-client.c @@ -159,7 +159,6 @@ verifier_verify_cb (GObject *source, GAsyncResult *result, gpointer user_data) { - gboolean res; EmpTLSCertificateRejectReason reason; GError *error = NULL; EmpathyTLSCertificate *certificate = NULL; @@ -170,7 +169,7 @@ verifier_verify_cb (GObject *source, "certificate", &certificate, NULL); - res = empathy_tls_verifier_verify_finish (EMPATHY_TLS_VERIFIER (source), + empathy_tls_verifier_verify_finish (EMPATHY_TLS_VERIFIER (source), result, &reason, &details, &error); if (error != NULL) diff --git a/src/empathy-chat-manager.c b/src/empathy-chat-manager.c index 6c92c25cb..a90c2d08c 100644 --- a/src/empathy-chat-manager.c +++ b/src/empathy-chat-manager.c @@ -32,7 +32,7 @@ enum { CLOSED_CHATS_CHANGED, - HANDLED_CHATS_CHANGED, + DISPLAYED_CHATS_CHANGED, LAST_SIGNAL }; @@ -49,7 +49,7 @@ struct _EmpathyChatManagerPriv /* Queue of (ChatData *) representing the closed chats */ GQueue *closed_queue; - guint num_handled_channels; + guint num_displayed_chat; TpBaseClient *handler; }; @@ -100,18 +100,36 @@ chat_data_free (ChatData *data) } static void +chat_destroyed_cb (gpointer data, + GObject *object) +{ + EmpathyChatManager *self = data; + EmpathyChatManagerPriv *priv = GET_PRIV (self); + + priv->num_displayed_chat--; + + DEBUG ("Chat destroyed; we are now displaying %u chats", + priv->num_displayed_chat); + + g_signal_emit (self, signals[DISPLAYED_CHATS_CHANGED], 0, + priv->num_displayed_chat); +} + +static void process_tp_chat (EmpathyChatManager *self, EmpathyTpChat *tp_chat, TpAccount *account, gint64 user_action_time) { + EmpathyChatManagerPriv *priv = GET_PRIV (self); EmpathyChat *chat = NULL; const gchar *id; id = empathy_tp_chat_get_id (tp_chat); if (!tp_str_empty (id)) { - chat = empathy_chat_window_find_chat (account, id); + chat = empathy_chat_window_find_chat (account, id, + empathy_tp_chat_is_sms_channel (tp_chat)); } if (chat != NULL) @@ -124,6 +142,16 @@ process_tp_chat (EmpathyChatManager *self, /* empathy_chat_new returns a floating reference as EmpathyChat is * a GtkWidget. This reference will be taken by a container * (a GtkNotebook) when we'll call empathy_chat_window_present_chat */ + + priv->num_displayed_chat++; + + DEBUG ("Chat displayed; we are now displaying %u chat", + priv->num_displayed_chat); + + g_signal_emit (self, signals[DISPLAYED_CHATS_CHANGED], 0, + priv->num_displayed_chat); + + g_object_weak_ref ((GObject *) chat, chat_destroyed_cb, self); } empathy_chat_window_present_chat (chat, user_action_time); @@ -191,24 +219,6 @@ tp_chat_ready_cb (GObject *object, } static void -channel_invalidated (TpChannel *channel, - guint domain, - gint code, - gchar *message, - EmpathyChatManager *self) -{ - EmpathyChatManagerPriv *priv = GET_PRIV (self); - - priv->num_handled_channels--; - - DEBUG ("Channel closed; we are now handling %u text channels", - priv->num_handled_channels); - - g_signal_emit (self, signals[HANDLED_CHATS_CHANGED], 0, - priv->num_handled_channels); -} - -static void handle_channels (TpSimpleHandler *handler, TpAccount *account, TpConnection *connection, @@ -219,9 +229,7 @@ handle_channels (TpSimpleHandler *handler, gpointer user_data) { EmpathyChatManager *self = (EmpathyChatManager *) user_data; - EmpathyChatManagerPriv *priv = GET_PRIV (self); GList *l; - gboolean handling = FALSE; for (l = channels; l != NULL; l = g_list_next (l)) { @@ -238,7 +246,7 @@ handle_channels (TpSimpleHandler *handler, continue; } - handling = TRUE; + DEBUG ("Now handling channel %s", tp_proxy_get_object_path (channel)); tp_chat = empathy_tp_chat_new (account, channel); @@ -254,23 +262,9 @@ handle_channels (TpSimpleHandler *handler, ctx->sig_id = g_signal_connect (tp_chat, "notify::ready", G_CALLBACK (tp_chat_ready_cb), ctx); } - - priv->num_handled_channels++; - - g_signal_connect (channel, "invalidated", - G_CALLBACK (channel_invalidated), self); } tp_handle_channels_context_accept (context); - - if (handling) - { - DEBUG ("Channels handled; we are now handling %u text channels", - priv->num_handled_channels); - - g_signal_emit (self, signals[HANDLED_CHATS_CHANGED], 0, - priv->num_handled_channels); - } } static void @@ -387,8 +381,8 @@ empathy_chat_manager_class_init ( G_TYPE_NONE, 1, G_TYPE_UINT, NULL); - signals[HANDLED_CHATS_CHANGED] = - g_signal_new ("handled-chats-changed", + signals[DISPLAYED_CHATS_CHANGED] = + g_signal_new ("displayed-chats-changed", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST, 0, @@ -459,11 +453,3 @@ empathy_chat_manager_get_num_closed_chats (EmpathyChatManager *self) return g_queue_get_length (priv->closed_queue); } - -guint -empathy_chat_manager_get_num_handled_chats (EmpathyChatManager *self) -{ - EmpathyChatManagerPriv *priv = GET_PRIV (self); - - return priv->num_handled_channels; -} diff --git a/src/empathy-chat-manager.h b/src/empathy-chat-manager.h index ee43857f4..6d249b3e4 100644 --- a/src/empathy-chat-manager.h +++ b/src/empathy-chat-manager.h @@ -65,8 +65,6 @@ void empathy_chat_manager_closed_chat (EmpathyChatManager *self, void empathy_chat_manager_undo_closed_chat (EmpathyChatManager *self); guint empathy_chat_manager_get_num_closed_chats (EmpathyChatManager *self); -guint empathy_chat_manager_get_num_handled_chats (EmpathyChatManager *self); - G_END_DECLS #endif /* #ifndef __EMPATHY_CHAT_MANAGER_H__*/ diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c index 61a1c5d47..93d9df8d7 100644 --- a/src/empathy-chat-window.c +++ b/src/empathy-chat-window.c @@ -259,7 +259,6 @@ chat_window_create_label (EmpathyChatWindow *window, EmpathyChat *chat, gboolean is_tab_label) { - EmpathyChatWindowPriv *priv; GtkWidget *hbox; GtkWidget *name_label; GtkWidget *status_image; @@ -268,8 +267,6 @@ chat_window_create_label (EmpathyChatWindow *window, PangoAttrList *attr_list; PangoAttribute *attr; - priv = GET_PRIV (window); - /* The spacing between the button and the label. */ hbox = gtk_hbox_new (FALSE, 0); @@ -314,6 +311,15 @@ chat_window_create_label (EmpathyChatWindow *window, if (is_tab_label) { GtkWidget *close_button; + GtkWidget *sending_spinner; + + sending_spinner = gtk_spinner_new (); + + gtk_box_pack_start (GTK_BOX (hbox), sending_spinner, + FALSE, FALSE, 0); + g_object_set_data (G_OBJECT (chat), + "chat-window-tab-sending-spinner", + sending_spinner); close_button = gedit_close_button_new (); g_object_set_data (G_OBJECT (chat), "chat-window-tab-close-button", close_button); @@ -453,14 +459,14 @@ get_all_unread_messages (EmpathyChatWindowPriv *priv) static gchar * get_window_title_name (EmpathyChatWindowPriv *priv) { - const gchar *active_name; + gchar *active_name, *ret; guint nb_chats; guint current_unread_msgs; nb_chats = g_list_length (priv->chats); g_assert (nb_chats > 0); - active_name = empathy_chat_get_name (priv->current_chat); + active_name = empathy_chat_dup_name (priv->current_chat); current_unread_msgs = empathy_chat_get_nb_unread_messages ( priv->current_chat); @@ -468,9 +474,9 @@ get_window_title_name (EmpathyChatWindowPriv *priv) if (nb_chats == 1) { /* only one tab */ if (current_unread_msgs == 0) - return g_strdup (active_name); + ret = g_strdup (active_name); else - return g_strdup_printf (ngettext ( + ret = g_strdup_printf (ngettext ( "%s (%d unread)", "%s (%d unread)", current_unread_msgs), active_name, current_unread_msgs); @@ -482,7 +488,7 @@ get_window_title_name (EmpathyChatWindowPriv *priv) if (all_unread_msgs == 0) { /* no unread message */ - return g_strdup_printf (ngettext ( + ret = g_strdup_printf (ngettext ( "%s (and %u other)", "%s (and %u others)", nb_others), active_name, nb_others); @@ -490,7 +496,7 @@ get_window_title_name (EmpathyChatWindowPriv *priv) else if (all_unread_msgs == current_unread_msgs) { /* unread messages are in the current tab */ - return g_strdup_printf (ngettext ( + ret = g_strdup_printf (ngettext ( "%s (%d unread)", "%s (%d unread)", current_unread_msgs), active_name, current_unread_msgs); @@ -498,7 +504,7 @@ get_window_title_name (EmpathyChatWindowPriv *priv) else if (current_unread_msgs == 0) { /* unread messages are in other tabs */ - return g_strdup_printf (ngettext ( + ret = g_strdup_printf (ngettext ( "%s (%d unread from others)", "%s (%d unread from others)", all_unread_msgs), @@ -507,13 +513,17 @@ get_window_title_name (EmpathyChatWindowPriv *priv) else { /* unread messages are in all the tabs */ - return g_strdup_printf (ngettext ( + ret = g_strdup_printf (ngettext ( "%s (%d unread from all)", "%s (%d unread from all)", all_unread_msgs), active_name, all_unread_msgs); } } + + g_free (active_name); + + return ret; } static void @@ -637,7 +647,7 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, EmpathyChatWindow *window; EmpathyChatWindowPriv *priv; EmpathyContact *remote_contact; - const gchar *name; + gchar *name; const gchar *id; TpAccount *account; const gchar *subject; @@ -648,6 +658,8 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, const gchar *icon_name; GtkWidget *tab_image; GtkWidget *menu_image; + GtkWidget *sending_spinner; + guint nb_sending; window = chat_window_find_chat (chat); if (!window) { @@ -656,7 +668,7 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, priv = GET_PRIV (window); /* Get information */ - name = empathy_chat_get_name (chat); + name = empathy_chat_dup_name (chat); account = empathy_chat_get_account (chat); subject = empathy_chat_get_subject (chat); remote_contact = empathy_chat_get_remote_contact (chat); @@ -675,6 +687,9 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, else if (remote_contact && empathy_chat_is_composing (chat)) { icon_name = EMPATHY_IMAGE_TYPING; } + else if (empathy_chat_is_sms_channel (chat)) { + icon_name = EMPATHY_IMAGE_SMS; + } else if (remote_contact) { icon_name = empathy_icon_name_for_contact (remote_contact); } else { @@ -693,6 +708,16 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, gtk_widget_hide (menu_image); } + /* Update the sending spinner */ + nb_sending = empathy_chat_get_n_messages_sending (chat); + sending_spinner = g_object_get_data (G_OBJECT (chat), + "chat-window-tab-sending-spinner"); + + g_object_set (sending_spinner, + "active", nb_sending > 0, + "visible", nb_sending > 0, + NULL); + /* Update tab tooltip */ tooltip = g_string_new (NULL); @@ -703,11 +728,29 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, id = name; } + if (empathy_chat_is_sms_channel (chat)) { + append_markup_printf (tooltip, "%s ", _("SMS:")); + } + append_markup_printf (tooltip, "<b>%s</b><small> (%s)</small>", id, tp_account_get_display_name (account)); + if (nb_sending > 0) { + char *tmp = g_strdup_printf ( + ngettext ("Sending %d message", + "Sending %d messages", + nb_sending), + nb_sending); + + g_string_append (tooltip, "\n"); + g_string_append (tooltip, tmp); + + gtk_widget_set_tooltip_text (sending_spinner, tmp); + g_free (tmp); + } + if (!EMP_STR_EMPTY (status)) { append_markup_printf (tooltip, "\n<i>%s</i>", status); } @@ -738,6 +781,8 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, if (priv->current_chat == chat) { chat_window_update (window, update_contact_menu); } + + g_free (name); } static void @@ -865,21 +910,24 @@ chat_window_favorite_toggled_cb (GtkToggleAction *toggle_action, EmpathyChatWindowPriv *priv = GET_PRIV (window); gboolean active; TpAccount *account; + gchar *name; const gchar *room; EmpathyChatroom *chatroom; active = gtk_toggle_action_get_active (toggle_action); account = empathy_chat_get_account (priv->current_chat); room = empathy_chat_get_id (priv->current_chat); + name = empathy_chat_dup_name (priv->current_chat); chatroom = empathy_chatroom_manager_ensure_chatroom ( priv->chatroom_manager, account, room, - empathy_chat_get_name (priv->current_chat)); + name); empathy_chatroom_set_favorite (chatroom, active); g_object_unref (chatroom); + g_free (name); } static void @@ -889,21 +937,24 @@ chat_window_always_urgent_toggled_cb (GtkToggleAction *toggle_action, EmpathyChatWindowPriv *priv = GET_PRIV (window); gboolean active; TpAccount *account; + gchar *name; const gchar *room; EmpathyChatroom *chatroom; active = gtk_toggle_action_get_active (toggle_action); account = empathy_chat_get_account (priv->current_chat); room = empathy_chat_get_id (priv->current_chat); + name = empathy_chat_dup_name (priv->current_chat); chatroom = empathy_chatroom_manager_ensure_chatroom ( priv->chatroom_manager, account, room, - empathy_chat_get_name (priv->current_chat)); + name); empathy_chatroom_set_always_urgent (chatroom, active); g_object_unref (chatroom); + g_free (name); } static void @@ -1086,7 +1137,6 @@ chat_window_tabs_next_activate_cb (GtkAction *action, EmpathyChatWindow *window) { EmpathyChatWindowPriv *priv; - EmpathyChat *chat; gint index_, numPages; gboolean wrap_around; @@ -1095,7 +1145,6 @@ chat_window_tabs_next_activate_cb (GtkAction *action, g_object_get (gtk_settings_get_default (), "gtk-keynav-wrap-around", &wrap_around, NULL); - chat = priv->current_chat; index_ = gtk_notebook_get_current_page (GTK_NOTEBOOK (priv->notebook)); numPages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (priv->notebook)); @@ -1112,7 +1161,6 @@ chat_window_tabs_previous_activate_cb (GtkAction *action, EmpathyChatWindow *window) { EmpathyChatWindowPriv *priv; - EmpathyChat *chat; gint index_, numPages; gboolean wrap_around; @@ -1121,7 +1169,6 @@ chat_window_tabs_previous_activate_cb (GtkAction *action, g_object_get (gtk_settings_get_default (), "gtk-keynav-wrap-around", &wrap_around, NULL); - chat = priv->current_chat; index_ = gtk_notebook_get_current_page (GTK_NOTEBOOK (priv->notebook)); numPages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (priv->notebook)); @@ -1335,8 +1382,9 @@ chat_window_show_or_update_notification (EmpathyChatWindow *window, G_CALLBACK (chat_window_notification_closed_cb), window, 0); if (has_x_canonical_append) { + /* We have to set a not empty string to keep libnotify happy */ notify_notification_set_hint_string (notification, - EMPATHY_NOTIFY_MANAGER_CAP_X_CANONICAL_APPEND, ""); + EMPATHY_NOTIFY_MANAGER_CAP_X_CANONICAL_APPEND, "1"); } } @@ -1356,15 +1404,16 @@ chat_window_show_or_update_notification (EmpathyChatWindow *window, static void chat_window_set_highlight_room_labels (EmpathyChat *chat) { - gchar *markup; + gchar *markup, *name; GtkWidget *widget; if (!empathy_chat_is_room (chat)) return; + name = empathy_chat_dup_name (chat); markup = g_markup_printf_escaped ( "<span color=\"red\" weight=\"bold\">%s</span>", - empathy_chat_get_name (chat)); + name); widget = g_object_get_data (G_OBJECT (chat), "chat-window-tab-label"); gtk_label_set_markup (GTK_LABEL (widget), markup); @@ -1372,6 +1421,7 @@ chat_window_set_highlight_room_labels (EmpathyChat *chat) widget = g_object_get_data (G_OBJECT (chat), "chat-window-menu-label"); gtk_label_set_markup (GTK_LABEL (widget), markup); + g_free (name); g_free (markup); } @@ -1810,7 +1860,7 @@ chat_window_drag_data_received (GtkWidget *widget, account = tp_account_manager_ensure_account (account_manager, account_id); if (account != NULL) - chat = empathy_chat_window_find_chat (account, contact_id); + chat = empathy_chat_window_find_chat (account, contact_id, FALSE); } if (account == NULL) { @@ -1821,7 +1871,7 @@ chat_window_drag_data_received (GtkWidget *widget, if (!chat) { empathy_chat_with_contact_id ( - account, contact_id, gtk_get_current_event_time ()); + account, contact_id, empathy_get_current_action_time ()); g_strfreev (strv); return; @@ -2176,13 +2226,11 @@ empathy_chat_window_get_default (gboolean room) } for (l = chat_windows; l; l = l->next) { - EmpathyChatWindowPriv *priv; EmpathyChatWindow *chat_window; GtkWidget *dialog; guint nb_rooms, nb_private; chat_window = l->data; - priv = GET_PRIV (chat_window); dialog = empathy_chat_window_get_dialog (chat_window); @@ -2272,6 +2320,12 @@ empathy_chat_window_add_chat (EmpathyChatWindow *window, g_signal_connect (chat, "notify::remote-contact", G_CALLBACK (chat_window_chat_notify_cb), NULL); + g_signal_connect (chat, "notify::sms-channel", + G_CALLBACK (chat_window_chat_notify_cb), + NULL); + g_signal_connect (chat, "notify::n-messages-sending", + G_CALLBACK (chat_window_chat_notify_cb), + NULL); chat_window_chat_notify_cb (chat); gtk_notebook_append_page_menu (GTK_NOTEBOOK (priv->notebook), child, label, popup_label); @@ -2375,7 +2429,8 @@ empathy_chat_window_switch_to_chat (EmpathyChatWindow *window, EmpathyChat * empathy_chat_window_find_chat (TpAccount *account, - const gchar *id) + const gchar *id, + gboolean sms_channel) { GList *l; @@ -2395,7 +2450,8 @@ empathy_chat_window_find_chat (TpAccount *account, chat = ll->data; if (account == empathy_chat_get_account (chat) && - !tp_strdiff (id, empathy_chat_get_id (chat))) { + !tp_strdiff (id, empathy_chat_get_id (chat)) && + sms_channel == empathy_chat_is_sms_channel (chat)) { return chat; } } @@ -2421,6 +2477,11 @@ empathy_chat_window_present_chat (EmpathyChat *chat, window = empathy_chat_window_get_default (empathy_chat_is_room (chat)); if (!window) { window = empathy_chat_window_new (); + + /* we want to display the newly created window even if we don't present + * it */ + priv = GET_PRIV (window); + gtk_widget_show (priv->dialog); } empathy_chat_window_add_chat (window, chat); diff --git a/src/empathy-chat-window.h b/src/empathy-chat-window.h index 5477479ac..2112b6647 100644 --- a/src/empathy-chat-window.h +++ b/src/empathy-chat-window.h @@ -59,7 +59,8 @@ struct _EmpathyChatWindowClass { GType empathy_chat_window_get_type (void); EmpathyChat * empathy_chat_window_find_chat (TpAccount *account, - const gchar *id); + const gchar *id, + gboolean sms_channel); void empathy_chat_window_present_chat (EmpathyChat *chat, gint64 timestamp); diff --git a/src/empathy-chat.c b/src/empathy-chat.c index 73d8ce87c..43ab00270 100644 --- a/src/empathy-chat.c +++ b/src/empathy-chat.c @@ -52,7 +52,7 @@ static gboolean use_timer = TRUE; static EmpathyChatManager *chat_mgr = NULL; static void -handled_chats_changed_cb (EmpathyChatManager *mgr, +displayed_chats_changed_cb (EmpathyChatManager *mgr, guint nb_chats, gpointer user_data) { @@ -81,8 +81,8 @@ activate_cb (GApplication *application) g_assert (chat_mgr == NULL); chat_mgr = empathy_chat_manager_dup_singleton (); - g_signal_connect (chat_mgr, "handled-chats-changed", - G_CALLBACK (handled_chats_changed_cb), GUINT_TO_POINTER (1)); + g_signal_connect (chat_mgr, "displayed-chats-changed", + G_CALLBACK (displayed_chats_changed_cb), GUINT_TO_POINTER (1)); } int diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c index 6125ec895..00d2c8ab8 100644 --- a/src/empathy-event-manager.c +++ b/src/empathy-event-manager.c @@ -43,6 +43,7 @@ #include <libempathy-gtk/empathy-images.h> #include <libempathy-gtk/empathy-contact-dialogs.h> #include <libempathy-gtk/empathy-sound-manager.h> +#include <libempathy-gtk/empathy-ui-utils.h> #include "empathy-event-manager.h" #include "empathy-main-window.h" @@ -316,7 +317,7 @@ event_manager_approval_approve (EventManagerApproval *approval) } else { - timestamp = tp_user_action_time_from_x11 (gtk_get_current_event_time ()); + timestamp = empathy_get_current_action_time (); } g_assert (approval->operation != NULL); @@ -335,9 +336,6 @@ static void event_text_channel_process_func (EventPriv *event) { EmpathyTpChat *tp_chat; - gint64 timestamp; - - timestamp = tp_user_action_time_from_x11 (gtk_get_current_event_time ()); if (event->approval->handler != 0) { @@ -566,7 +564,6 @@ event_manager_chat_message_received_cb (EmpathyTpChat *tp_chat, EmpathyContact *sender; const gchar *header; const gchar *msg; - TpChannel *channel; EventPriv *event; EmpathyEventManagerPriv *priv = GET_PRIV (approval->manager); @@ -583,8 +580,6 @@ event_manager_chat_message_received_cb (EmpathyTpChat *tp_chat, header = empathy_contact_get_alias (sender); msg = empathy_message_get_body (message); - channel = empathy_tp_chat_get_channel (tp_chat); - if (event != NULL) event_update (approval->manager, event, EMPATHY_IMAGE_NEW_MESSAGE, header, msg); @@ -703,13 +698,9 @@ invite_dialog_response_cb (GtkDialog *dialog, gint response, EventManagerApproval *approval) { - EmpathyTpChat *tp_chat; - gtk_widget_destroy (GTK_WIDGET (approval->dialog)); approval->dialog = NULL; - tp_chat = EMPATHY_TP_CHAT (approval->handler_instance); - if (response != GTK_RESPONSE_OK) { /* close channel */ diff --git a/src/empathy-ft-manager.c b/src/empathy-ft-manager.c index edb470cbb..e23b0b45a 100644 --- a/src/empathy-ft-manager.c +++ b/src/empathy-ft-manager.c @@ -696,11 +696,8 @@ static void ft_manager_start_transfer (EmpathyFTManager *manager, EmpathyFTHandler *handler) { - EmpathyFTManagerPriv *priv; gboolean is_outgoing; - priv = GET_PRIV (manager); - is_outgoing = !empathy_ft_handler_is_incoming (handler); DEBUG ("Start transfer, is outgoing %s", diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c index b4c1254df..0ac08c856 100644 --- a/src/empathy-main-window.c +++ b/src/empathy-main-window.c @@ -145,6 +145,10 @@ struct _EmpathyMainWindowPriv { GtkWidget *edit_context; GtkWidget *edit_context_separator; + GtkActionGroup *balance_action_group; + GtkAction *view_balance_show_in_roster; + GtkWidget *balance_vbox; + guint size_timeout_id; /* reffed TpAccount* => visible GtkInfoBar* */ @@ -220,6 +224,8 @@ main_window_flash_foreach (GtkTreeModel *model, pixbuf = empathy_individual_store_get_individual_status_icon ( GET_PRIV (data->window)->individual_store, individual); + if (pixbuf != NULL) + g_object_ref (pixbuf); } gtk_tree_store_set (GTK_TREE_STORE (model), iter, @@ -240,6 +246,7 @@ main_window_flash_foreach (GtkTreeModel *model, g_object_unref (individual); tp_clear_object (&contact); + tp_clear_object (&pixbuf); return FALSE; } @@ -780,6 +787,294 @@ main_window_update_status (EmpathyMainWindow *window) g_list_free (children); } +static char * +main_window_account_to_action_name (TpAccount *account) +{ + char *r; + + /* action names can't have '/' in them, replace it with '.' */ + r = g_strdup (tp_account_get_path_suffix (account)); + r = g_strdelimit (r, "/", '.'); + + return r; +} + +static void +main_window_balance_activate_cb (GtkAction *action, + EmpathyMainWindow *window) +{ + const char *uri; + + uri = g_object_get_data (G_OBJECT (action), "manage-credit-uri"); + + if (!tp_str_empty (uri)) { + DEBUG ("Top-up credit URI: %s", uri); + empathy_url_show (GTK_WIDGET (window), uri); + } else { + DEBUG ("unknown protocol for top-up"); + } +} + +static void +main_window_balance_update_balance (GtkAction *action, + GValueArray *balance) +{ + TpAccount *account = g_object_get_data (G_OBJECT (action), "account"); + GtkWidget *label; + int amount = 0; + guint scale = G_MAXINT32; + const char *currency = ""; + char *money, *str; + + if (balance != NULL) + tp_value_array_unpack (balance, 3, + &amount, + &scale, + ¤cy); + + if (amount == 0 && + scale == G_MAXINT32 && + tp_str_empty (currency)) { + /* unknown balance */ + money = g_strdup ("--"); + } else { + char *tmp = empathy_format_currency (amount, scale, currency); + + money = g_strdup_printf ("%s %s", currency, tmp); + g_free (tmp); + } + + /* Translators: this string will be something like: + * Top up My Account ($1.23)..." */ + str = g_strdup_printf (_("Top up %s (%s)..."), + tp_account_get_display_name (account), + money); + + gtk_action_set_label (action, str); + g_free (str); + + /* update the money label in the roster */ + label = g_object_get_data (G_OBJECT (action), "money-label"); + + gtk_label_set_text (GTK_LABEL (label), money); + g_free (money); +} + +static void +main_window_setup_balance_got_balance_props (TpProxy *conn, + GHashTable *props, + const GError *in_error, + gpointer user_data, + GObject *action) +{ + GValueArray *balance = NULL; + const char *uri; + + if (in_error != NULL) { + DEBUG ("Failed to get account balance properties: %s", + in_error->message); + goto finally; + } + + balance = tp_asv_get_boxed (props, "AccountBalance", + TP_STRUCT_TYPE_CURRENCY_AMOUNT); + uri = tp_asv_get_string (props, "ManageCreditURI"); + + g_object_set_data_full (action, "manage-credit-uri", + g_strdup (uri), g_free); + gtk_action_set_sensitive (GTK_ACTION (action), !tp_str_empty (uri)); + +finally: + main_window_balance_update_balance (GTK_ACTION (action), balance); +} + +static void +main_window_balance_changed_cb (TpConnection *conn, + const GValueArray *balance, + gpointer user_data, + GObject *action) +{ + main_window_balance_update_balance (GTK_ACTION (action), + (GValueArray *) balance); +} + +static GtkAction * +main_window_setup_balance_create_action (EmpathyMainWindow *window, + TpAccount *account) +{ + EmpathyMainWindowPriv *priv = GET_PRIV (window); + GtkAction *action; + char *name, *ui; + guint merge_id; + GError *error = NULL; + + /* create the action group if required */ + if (priv->balance_action_group == NULL) { + priv->balance_action_group = + gtk_action_group_new ("balance-action-group"); + + gtk_ui_manager_insert_action_group (priv->ui_manager, + priv->balance_action_group, -1); + } + + /* create the action */ + name = main_window_account_to_action_name (account); + action = gtk_action_new (name, + tp_account_get_display_name (account), + _("Top up account credit"), + NULL); + g_object_bind_property (account, "icon-name", action, "icon-name", + G_BINDING_SYNC_CREATE); + + g_object_set_data (G_OBJECT (action), "account", account); + g_signal_connect (action, "activate", + G_CALLBACK (main_window_balance_activate_cb), window); + + gtk_action_group_add_action (priv->balance_action_group, action); + g_object_unref (action); + + ui = g_strdup_printf ( + "<ui>" + " <menubar name='menubar'>" + " <menu action='view'>" + " <placeholder name='view_balance_placeholder'>" + " <menuitem action='%s'/>" + " </placeholder>" + " </menu>" + " </menubar>" + "</ui>", + name); + + merge_id = gtk_ui_manager_add_ui_from_string (priv->ui_manager, + ui, -1, &error); + if (error != NULL) { + DEBUG ("Failed to add balance UI for %s: %s", + tp_account_get_display_name (account), + error->message); + g_error_free (error); + } + + g_object_set_data (G_OBJECT (action), + "merge-id", GUINT_TO_POINTER (merge_id)); + + g_free (name); + g_free (ui); + + return action; +} + +static GtkWidget * +main_window_setup_balance_create_widget (EmpathyMainWindow *window, + GtkAction *action) +{ + EmpathyMainWindowPriv *priv = GET_PRIV (window); + TpAccount *account; + GtkWidget *hbox, *image, *label, *button; + + account = g_object_get_data (G_OBJECT (action), "account"); + g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL); + + hbox = gtk_hbox_new (FALSE, 6); + + /* protocol icon */ + image = gtk_image_new (); + gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0); + g_object_bind_property (action, "icon-name", image, "icon-name", + G_BINDING_SYNC_CREATE); + + /* account name label */ + label = gtk_label_new (""); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); + g_object_bind_property (account, "display-name", label, "label", + G_BINDING_SYNC_CREATE); + + /* balance label */ + label = gtk_label_new (""); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); + g_object_set_data (G_OBJECT (action), "money-label", label); + + /* top up button */ + button = gtk_button_new_with_label (_("Top Up...")); + gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0); + g_signal_connect_swapped (button, "clicked", + G_CALLBACK (gtk_action_activate), action); + + gtk_box_pack_start (GTK_BOX (priv->balance_vbox), hbox, FALSE, TRUE, 0); + gtk_widget_show_all (hbox); + + /* tie the lifetime of the widget to the lifetime of the action */ + g_object_weak_ref (G_OBJECT (action), + (GWeakNotify) gtk_widget_destroy, hbox); + + return hbox; +} + +static void +main_window_setup_balance_conn_ready (GObject *conn, + GAsyncResult *result, + gpointer user_data) +{ + EmpathyMainWindow *window = user_data; + EmpathyMainWindowPriv *priv = GET_PRIV (window); + TpAccount *account = g_object_get_data (conn, "account"); + GtkAction *action; + GError *error = NULL; + + if (!tp_proxy_prepare_finish (conn, result, &error)) { + DEBUG ("Failed to prepare connection: %s", error->message); + + g_error_free (error); + return; + } + + if (!tp_proxy_has_interface_by_id (conn, + TP_IFACE_QUARK_CONNECTION_INTERFACE_BALANCE)) { + return; + } + + DEBUG ("Setting up balance for acct: %s", + tp_account_get_display_name (account)); + + /* create the action */ + action = main_window_setup_balance_create_action (window, account); + + if (action == NULL) + return; + + gtk_action_set_visible (priv->view_balance_show_in_roster, TRUE); + + /* create the display widget */ + main_window_setup_balance_create_widget (window, action); + + /* request the current balance and monitor for any changes */ + tp_cli_dbus_properties_call_get_all (conn, -1, + TP_IFACE_CONNECTION_INTERFACE_BALANCE, + main_window_setup_balance_got_balance_props, + window, NULL, G_OBJECT (action)); + + tp_cli_connection_interface_balance_connect_to_balance_changed ( + TP_CONNECTION (conn), main_window_balance_changed_cb, + window, NULL, G_OBJECT (action), NULL); +} + +static void +main_window_setup_balance (EmpathyMainWindow *window, + TpAccount *account) +{ + TpConnection *conn = tp_account_get_connection (account); + + if (conn == NULL) + return; + + /* need to prepare the connection: + * store the account on the connection */ + g_object_set_data (G_OBJECT (conn), "account", account); + tp_proxy_prepare_async (conn, NULL, + main_window_setup_balance_conn_ready, window); +} + static void main_window_connection_changed_cb (TpAccount *account, guint old_status, @@ -801,6 +1096,44 @@ main_window_connection_changed_cb (TpAccount *account, if (current == TP_CONNECTION_STATUS_DISCONNECTED) { empathy_sound_manager_play (priv->sound_mgr, GTK_WIDGET (window), EMPATHY_SOUND_ACCOUNT_DISCONNECTED); + + /* remove balance action if required */ + if (priv->balance_action_group != NULL) { + GtkAction *action; + char *name; + GList *a; + + name = main_window_account_to_action_name (account); + + action = gtk_action_group_get_action ( + priv->balance_action_group, name); + + if (action != NULL) { + guint merge_id; + + DEBUG ("Removing action"); + + merge_id = GPOINTER_TO_UINT (g_object_get_data ( + G_OBJECT (action), + "merge-id")); + + gtk_ui_manager_remove_ui (priv->ui_manager, + merge_id); + gtk_action_group_remove_action ( + priv->balance_action_group, action); + } + + g_free (name); + + a = gtk_action_group_list_actions ( + priv->balance_action_group); + + gtk_action_set_visible ( + priv->view_balance_show_in_roster, + g_list_length (a) > 0); + + g_list_free (a); + } } if (current == TP_CONNECTION_STATUS_CONNECTED) { @@ -809,6 +1142,7 @@ main_window_connection_changed_cb (TpAccount *account, /* Account connected without error, remove error message if any */ main_window_remove_error (window, account); + main_window_setup_balance (window, account); } } @@ -1250,7 +1584,7 @@ main_window_favorite_chatroom_join (EmpathyChatroom *chatroom) join_fav_account_sig_ctx *ctx; ctx = join_fav_account_sig_ctx_new (account, chatroom, - gtk_get_current_event_time ()); + empathy_get_current_action_time ()); ctx->sig_id = g_signal_connect_data (account, "status-changed", G_CALLBACK (account_status_changed_cb), ctx, @@ -1261,7 +1595,7 @@ main_window_favorite_chatroom_join (EmpathyChatroom *chatroom) return; } - join_chatroom (chatroom, gtk_get_current_event_time ()); + join_chatroom (chatroom, empathy_get_current_action_time ()); } static void @@ -1674,6 +2008,8 @@ account_manager_prepared_cb (GObject *source_object, window); g_hash_table_insert (priv->status_changed_handlers, account, GUINT_TO_POINTER (handler_id)); + + main_window_setup_balance (window, account); } g_signal_connect (manager, "account-validity-changed", @@ -1770,6 +2106,7 @@ empathy_main_window_init (EmpathyMainWindow *window) filename = empathy_file_lookup ("empathy-main-window.ui", "src"); gui = empathy_builder_get_file (filename, "main_vbox", &priv->main_vbox, + "balance_vbox", &priv->balance_vbox, "errors_vbox", &priv->errors_vbox, "auth_vbox", &priv->auth_vbox, "ui_manager", &priv->ui_manager, @@ -1787,6 +2124,7 @@ empathy_main_window_init (EmpathyMainWindow *window) "notebook", &priv->notebook, "no_entry_label", &priv->no_entry_label, "roster_scrolledwindow", &sw, + "view_balance_show_in_roster", &priv->view_balance_show_in_roster, NULL); g_free (filename); @@ -1947,6 +2285,14 @@ empathy_main_window_init (EmpathyMainWindow *window) /* Set window size. */ empathy_geometry_bind (GTK_WINDOW (window), GEOMETRY_NAME); + /* bind view_balance_show_in_roster */ + g_settings_bind (priv->gsettings_ui, "show-balance-in-roster", + priv->view_balance_show_in_roster, "active", + G_SETTINGS_BIND_DEFAULT); + g_object_bind_property (priv->view_balance_show_in_roster, "active", + priv->balance_vbox, "visible", + G_BINDING_SYNC_CREATE); + /* Enable event handling */ priv->call_observer = empathy_call_observer_dup_singleton (); priv->event_manager = empathy_event_manager_dup_singleton (); diff --git a/src/empathy-main-window.ui b/src/empathy-main-window.ui index 864be1d28..b21a07bac 100644 --- a/src/empathy-main-window.ui +++ b/src/empathy-main-window.ui @@ -70,6 +70,13 @@ </object> </child> <child> + <object class="GtkToggleAction" id="view_balance_show_in_roster"> + <property name="name">view_balance_show_in_roster</property> + <property name="label" translatable="yes">Credit Balance</property> + <property name="visible">False</property> + </object> + </child> + <child> <object class="GtkAction" id="view_show_map"> <property name="name">view_show_map</property> <property name="label" translatable="yes">Contacts on a _Map</property> @@ -265,6 +272,9 @@ <menuitem action="view_show_offline"/> <menuitem action="view_show_protocols"/> <separator/> + <menuitem action="view_balance_show_in_roster"/> + <placeholder name="view_balance_placeholder"/> + <separator/> <menuitem action="view_sort_by_name"/> <menuitem action="view_sort_by_status"/> <separator/> @@ -317,7 +327,8 @@ </packing> </child> <child> - <object class="GtkVBox" id="errors_vbox"> + <object class="GtkVBox" id="balance_vbox"> + <property name="spacing">3</property> <child> <placeholder/> </child> @@ -329,7 +340,7 @@ </packing> </child> <child> - <object class="GtkVBox" id="auth_vbox"> + <object class="GtkVBox" id="errors_vbox"> <child> <placeholder/> </child> @@ -341,6 +352,18 @@ </packing> </child> <child> + <object class="GtkVBox" id="auth_vbox"> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">4</property> + </packing> + </child> + <child> <object class="GtkNotebook" id="notebook"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -372,7 +395,7 @@ </child> </object> <packing> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> </object> diff --git a/src/empathy-new-chatroom-dialog.c b/src/empathy-new-chatroom-dialog.c index f27e8de03..a09a5f710 100644 --- a/src/empathy-new-chatroom-dialog.c +++ b/src/empathy-new-chatroom-dialog.c @@ -386,11 +386,8 @@ out: static void new_chatroom_dialog_update_widgets (EmpathyNewChatroomDialog *dialog) { - EmpathyAccountChooser *account_chooser; const gchar *protocol; - account_chooser = EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser); - if (dialog->account == NULL) return; @@ -535,8 +532,6 @@ new_chatroom_dialog_new_room_cb (EmpathyTpRoomlist *room_list, EmpathyChatroom *chatroom, EmpathyNewChatroomDialog *dialog) { - GtkTreeView *view; - GtkTreeSelection *selection; GtkListStore *store; GtkTreeIter iter; gchar *members; @@ -550,8 +545,6 @@ new_chatroom_dialog_new_room_cb (EmpathyTpRoomlist *room_list, empathy_chatroom_get_room (chatroom)); /* Add to model */ - view = GTK_TREE_VIEW (dialog->treeview); - selection = gtk_tree_view_get_selection (view); store = GTK_LIST_STORE (dialog->model); members = g_strdup_printf ("%d", empathy_chatroom_get_members_count (chatroom)); tmp = g_strdup_printf ("<b>%s</b>", empathy_chatroom_get_name (chatroom)); @@ -690,8 +683,8 @@ new_chatroom_dialog_join (EmpathyNewChatroomDialog *dialog) g_strstrip (room_name); DEBUG ("Requesting channel for '%s'", room_name); - empathy_join_muc (account, room_name, - gtk_get_current_event_time ()); + + empathy_join_muc (account, room_name, empathy_get_current_action_time ()); g_free (room_name); } diff --git a/src/empathy-notifications-approver.c b/src/empathy-notifications-approver.c index a87a6d30e..af6c139d2 100644 --- a/src/empathy-notifications-approver.c +++ b/src/empathy-notifications-approver.c @@ -219,6 +219,9 @@ add_notification_actions (EmpathyNotificationsApprover *self, break; case EMPATHY_EVENT_TYPE_AUTH: + /* translators: the 'Provide' button is displayed in a notification + * bubble when Empathy is asking for an account password; clicking on it + * brings the password popup. */ notify_notification_add_action (notification, "provide", _("Provide"), (NotifyActionCallback) notification_approve_cb, self, NULL); @@ -335,8 +338,9 @@ update_notification (EmpathyNotificationsApprover *self) NOTIFY_EXPIRES_DEFAULT); if (has_x_canonical_append) + /* We have to set a not empty string to keep libnotify happy */ notify_notification_set_hint_string (notification, - EMPATHY_NOTIFY_MANAGER_CAP_X_CANONICAL_APPEND, ""); + EMPATHY_NOTIFY_MANAGER_CAP_X_CANONICAL_APPEND, "1"); if (empathy_notify_manager_has_capability (self->priv->notify_mgr, EMPATHY_NOTIFY_MANAGER_CAP_ACTIONS)) diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c index 813637dca..f90724c7f 100644 --- a/src/empathy-preferences.c +++ b/src/empathy-preferences.c @@ -48,6 +48,9 @@ #include "empathy-preferences.h" +#define DEBUG_FLAG EMPATHY_DEBUG_OTHER +#include <libempathy/empathy-debug.h> + G_DEFINE_TYPE (EmpathyPreferences, empathy_preferences, GTK_TYPE_DIALOG); #define GET_PRIV(self) ((EmpathyPreferencesPriv *)((EmpathyPreferences *) self)->priv) @@ -57,7 +60,6 @@ struct _EmpathyPreferencesPriv { GtkWidget *checkbutton_show_smileys; GtkWidget *checkbutton_show_contacts_in_rooms; - GtkWidget *combobox_chat_theme; GtkWidget *checkbutton_separate_chat_windows; GtkWidget *checkbutton_events_notif_area; GtkWidget *checkbutton_autoconnect; @@ -81,6 +83,12 @@ struct _EmpathyPreferencesPriv { GtkWidget *checkbutton_location_resource_cell; GtkWidget *checkbutton_location_resource_gps; + GtkWidget *vbox_chat_theme; + GtkWidget *combobox_chat_theme; + GtkWidget *sw_chat_theme_preview; + EmpathyChatView *chat_theme_preview; + EmpathyThemeManager *theme_manager; + GSettings *gsettings; GSettings *gsettings_chat; GSettings *gsettings_loc; @@ -115,11 +123,11 @@ enum { }; enum { - COL_COMBO_IS_ADIUM, - COL_COMBO_VISIBLE_NAME, - COL_COMBO_NAME, - COL_COMBO_PATH, - COL_COMBO_COUNT + COL_THEME_VISIBLE_NAME, + COL_THEME_NAME, + COL_THEME_IS_ADIUM, + COL_THEME_ADIUM_PATH, + COL_THEME_COUNT }; enum { @@ -312,7 +320,7 @@ preferences_sound_cell_toggled_cb (GtkCellRendererToggle *toggle, { EmpathyPreferencesPriv *priv = GET_PRIV (preferences); GtkTreePath *path; - gboolean toggled, instore; + gboolean instore; GtkTreeIter iter; GtkTreeView *view; GtkTreeModel *model; @@ -322,7 +330,6 @@ preferences_sound_cell_toggled_cb (GtkCellRendererToggle *toggle, model = gtk_tree_view_get_model (view); path = gtk_tree_path_new_from_string (path_string); - toggled = gtk_cell_renderer_toggle_get_active (toggle); gtk_tree_model_get_iter (model, &iter, path); gtk_tree_model_get (model, &iter, COL_SOUND_KEY, &key, @@ -411,7 +418,6 @@ preferences_languages_setup (EmpathyPreferences *preferences) GtkTreeView *view; GtkListStore *store; GtkTreeSelection *selection; - GtkTreeModel *model; GtkTreeViewColumn *column; GtkCellRenderer *renderer; guint col_offset; @@ -428,8 +434,6 @@ preferences_languages_setup (EmpathyPreferences *preferences) selection = gtk_tree_view_get_selection (view); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); - model = GTK_TREE_MODEL (store); - renderer = gtk_cell_renderer_toggle_new (); g_signal_connect (renderer, "toggled", G_CALLBACK (preferences_languages_cell_toggled_cb), @@ -646,6 +650,124 @@ preferences_languages_cell_toggled_cb (GtkCellRendererToggle *cell, } static void +preferences_preview_theme_append_message (EmpathyChatView *view, + EmpathyContact *sender, + EmpathyContact *receiver, + const gchar *text) +{ + EmpathyMessage *message; + + message = g_object_new (EMPATHY_TYPE_MESSAGE, + "sender", sender, + "receiver", receiver, + "body", text, + NULL); + + empathy_chat_view_append_message (view, message); + g_object_unref (message); +} + +static void +preferences_preview_theme_changed_cb (EmpathyThemeManager *manager, + EmpathyPreferences *preferences) +{ + EmpathyPreferencesPriv *priv = GET_PRIV (preferences); + TpDBusDaemon *dbus; + TpAccount *account; + EmpathyContact *juliet; + EmpathyContact *romeo; + + DEBUG ("Theme changed, update preview widget"); + + if (priv->chat_theme_preview != NULL) { + gtk_widget_destroy (GTK_WIDGET (priv->chat_theme_preview)); + } + priv->chat_theme_preview = empathy_theme_manager_create_view (manager); + gtk_container_add (GTK_CONTAINER (priv->sw_chat_theme_preview), + GTK_WIDGET (priv->chat_theme_preview)); + gtk_widget_show (GTK_WIDGET (priv->chat_theme_preview)); + + /* FIXME: It is ugly to add a fake conversation like that. + * Would be cool if we could request a TplLogManager for a fake + * conversation */ + dbus = tp_dbus_daemon_dup (NULL); + account = tp_account_new (dbus, + TP_ACCOUNT_OBJECT_PATH_BASE "cm/jabber/account", NULL); + juliet = g_object_new (EMPATHY_TYPE_CONTACT, + "account", account, + "id", "juliet", + /* translators: Contact name for the chat theme preview */ + "alias", _("Juliet"), + "is-user", FALSE, + NULL); + romeo = g_object_new (EMPATHY_TYPE_CONTACT, + "account", account, + "id", "romeo", + /* translators: Contact name for the chat theme preview */ + "alias", _("Romeo"), + "is-user", TRUE, + NULL); + + preferences_preview_theme_append_message (priv->chat_theme_preview, + /* translators: Quote from Romeo & Julier, for chat theme preview */ + juliet, romeo, _("O Romeo, Romeo, wherefore art thou Romeo?")); + preferences_preview_theme_append_message (priv->chat_theme_preview, + /* translators: Quote from Romeo & Julier, for chat theme preview */ + juliet, romeo, _("Deny thy father and refuse thy name;")); + preferences_preview_theme_append_message (priv->chat_theme_preview, + /* translators: Quote from Romeo & Julier, for chat theme preview */ + juliet, romeo, _("Or if thou wilt not, be but sworn my love")); + preferences_preview_theme_append_message (priv->chat_theme_preview, + /* translators: Quote from Romeo & Julier, for chat theme preview */ + juliet, romeo, _("And I'll no longer be a Capulet.")); + preferences_preview_theme_append_message (priv->chat_theme_preview, + /* translators: Quote from Romeo & Julier, for chat theme preview */ + romeo, juliet, _("Shall I hear more, or shall I speak at this?")); + + /* translators: Quote from Romeo & Julier, for chat theme preview */ + empathy_chat_view_append_event (priv->chat_theme_preview, _("Juliet has disconnected")); + + g_object_unref (juliet); + g_object_unref (romeo); + g_object_unref (account); + g_object_unref (dbus); +} + +static void +preferences_theme_changed_cb (GtkComboBox *combo, + EmpathyPreferences *preferences) +{ + EmpathyPreferencesPriv *priv = GET_PRIV (preferences); + GtkTreeIter iter; + + if (gtk_combo_box_get_active_iter (combo, &iter)) { + GtkTreeModel *model; + gboolean is_adium; + gchar *name; + gchar *path; + + model = gtk_combo_box_get_model (combo); + gtk_tree_model_get (model, &iter, + COL_THEME_IS_ADIUM, &is_adium, + COL_THEME_NAME, &name, + COL_THEME_ADIUM_PATH, &path, + -1); + + g_settings_set_string (priv->gsettings_chat, + EMPATHY_PREFS_CHAT_THEME, + name); + if (is_adium) { + g_settings_set_string (priv->gsettings_chat, + EMPATHY_PREFS_CHAT_ADIUM_PATH, + path); + } + + g_free (name); + g_free (path); + } +} + +static void preferences_theme_notify_cb (GSettings *gsettings, const gchar *key, gpointer user_data) @@ -658,38 +780,34 @@ preferences_theme_notify_cb (GSettings *gsettings, GtkTreeModel *model; GtkTreeIter iter; gboolean found = FALSE; + gboolean ok; conf_name = g_settings_get_string (gsettings, EMPATHY_PREFS_CHAT_THEME); conf_path = g_settings_get_string (gsettings, EMPATHY_PREFS_CHAT_ADIUM_PATH); combo = GTK_COMBO_BOX (priv->combobox_chat_theme); model = gtk_combo_box_get_model (combo); - if (gtk_tree_model_get_iter_first (model, &iter)) { + for (ok = gtk_tree_model_get_iter_first (model, &iter); + ok && !found; + ok = gtk_tree_model_iter_next (model, &iter)) { gboolean is_adium; gchar *name; gchar *path; - do { - gtk_tree_model_get (model, &iter, - COL_COMBO_IS_ADIUM, &is_adium, - COL_COMBO_NAME, &name, - COL_COMBO_PATH, &path, - -1); - - if (!tp_strdiff (name, conf_name)) { - if (tp_strdiff (name, "adium") || - !tp_strdiff (path, conf_path)) { - found = TRUE; - gtk_combo_box_set_active_iter (combo, &iter); - g_free (name); - g_free (path); - break; - } - } - - g_free (name); - g_free (path); - } while (gtk_tree_model_iter_next (model, &iter)); + gtk_tree_model_get (model, &iter, + COL_THEME_IS_ADIUM, &is_adium, + COL_THEME_NAME, &name, + COL_THEME_ADIUM_PATH, &path, + -1); + + if (!tp_strdiff (name, conf_name) && + (!is_adium || !tp_strdiff (path, conf_path))) { + found = TRUE; + gtk_combo_box_set_active_iter (combo, &iter); + } + + g_free (name); + g_free (path); } /* Fallback to the first one. */ @@ -704,38 +822,6 @@ preferences_theme_notify_cb (GSettings *gsettings, } static void -preferences_theme_changed_cb (GtkComboBox *combo, - EmpathyPreferences *preferences) -{ - EmpathyPreferencesPriv *priv = GET_PRIV (preferences); - GtkTreeModel *model; - GtkTreeIter iter; - gboolean is_adium; - gchar *name; - gchar *path; - - if (gtk_combo_box_get_active_iter (combo, &iter)) { - model = gtk_combo_box_get_model (combo); - - gtk_tree_model_get (model, &iter, - COL_COMBO_IS_ADIUM, &is_adium, - COL_COMBO_NAME, &name, - COL_COMBO_PATH, &path, - -1); - - g_settings_set_string (priv->gsettings_chat, - EMPATHY_PREFS_CHAT_THEME, - name); - if (is_adium == TRUE) - g_settings_set_string (priv->gsettings_chat, - EMPATHY_PREFS_CHAT_ADIUM_PATH, - path); - g_free (name); - g_free (path); - } -} - -static void preferences_themes_setup (EmpathyPreferences *preferences) { EmpathyPreferencesPriv *priv = GET_PRIV (preferences); @@ -751,22 +837,21 @@ preferences_themes_setup (EmpathyPreferences *preferences) cell_layout = GTK_CELL_LAYOUT (combo); /* Create the model */ - store = gtk_list_store_new (COL_COMBO_COUNT, - G_TYPE_BOOLEAN, /* Is an Adium theme */ - G_TYPE_STRING, /* Display name */ - G_TYPE_STRING, /* Theme name */ - G_TYPE_STRING); /* Theme path */ + store = gtk_list_store_new (COL_THEME_COUNT, + G_TYPE_STRING, /* Display name */ + G_TYPE_STRING, /* Theme name */ + G_TYPE_BOOLEAN, /* Is an Adium theme */ + G_TYPE_STRING); /* Adium theme path */ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store), - COL_COMBO_VISIBLE_NAME, GTK_SORT_ASCENDING); + COL_THEME_VISIBLE_NAME, GTK_SORT_ASCENDING); /* Fill the model */ themes = empathy_theme_manager_get_themes (); for (i = 0; themes[i]; i += 2) { gtk_list_store_insert_with_values (store, NULL, -1, - COL_COMBO_IS_ADIUM, FALSE, - COL_COMBO_VISIBLE_NAME, _(themes[i + 1]), - COL_COMBO_NAME, themes[i], - COL_COMBO_PATH, NULL, + COL_THEME_VISIBLE_NAME, _(themes[i + 1]), + COL_THEME_NAME, themes[i], + COL_THEME_IS_ADIUM, FALSE, -1); } @@ -782,10 +867,10 @@ preferences_themes_setup (EmpathyPreferences *preferences) if (name != NULL && path != NULL) { gtk_list_store_insert_with_values (store, NULL, -1, - COL_COMBO_IS_ADIUM, TRUE, - COL_COMBO_VISIBLE_NAME, name, - COL_COMBO_NAME, "adium", - COL_COMBO_PATH, path, + COL_THEME_VISIBLE_NAME, name, + COL_THEME_NAME, "adium", + COL_THEME_IS_ADIUM, TRUE, + COL_THEME_ADIUM_PATH, path, -1); } g_hash_table_unref (info); @@ -796,7 +881,7 @@ preferences_themes_setup (EmpathyPreferences *preferences) renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (cell_layout, renderer, TRUE); gtk_cell_layout_set_attributes (cell_layout, renderer, - "text", COL_COMBO_VISIBLE_NAME, NULL); + "text", COL_THEME_VISIBLE_NAME, NULL); gtk_combo_box_set_model (combo, GTK_TREE_MODEL (store)); g_object_unref (store); @@ -832,6 +917,8 @@ empathy_preferences_finalize (GObject *self) { EmpathyPreferencesPriv *priv = GET_PRIV (self); + g_object_unref (priv->theme_manager); + g_object_unref (priv->gsettings); g_object_unref (priv->gsettings_chat); g_object_unref (priv->gsettings_loc); @@ -883,7 +970,9 @@ empathy_preferences_init (EmpathyPreferences *preferences) "notebook", &priv->notebook, "checkbutton_show_smileys", &priv->checkbutton_show_smileys, "checkbutton_show_contacts_in_rooms", &priv->checkbutton_show_contacts_in_rooms, + "vbox_chat_theme", &priv->vbox_chat_theme, "combobox_chat_theme", &priv->combobox_chat_theme, + "sw_chat_theme_preview", &priv->sw_chat_theme_preview, "checkbutton_separate_chat_windows", &priv->checkbutton_separate_chat_windows, "checkbutton_events_notif_area", &priv->checkbutton_events_notif_area, "checkbutton_autoconnect", &priv->checkbutton_autoconnect, @@ -918,6 +1007,13 @@ empathy_preferences_init (EmpathyPreferences *preferences) priv->gsettings_ui = g_settings_new (EMPATHY_PREFS_UI_SCHEMA); priv->gsettings_logger = g_settings_new (EMPATHY_PREFS_LOGGER_SCHEMA); + /* Create chat theme preview, and track changes */ + priv->theme_manager = empathy_theme_manager_dup_singleton (); + tp_g_signal_connect_object (priv->theme_manager, "theme-changed", + G_CALLBACK (preferences_preview_theme_changed_cb), + preferences, 0); + preferences_preview_theme_changed_cb (priv->theme_manager, preferences); + preferences_themes_setup (preferences); preferences_setup_widgets (preferences); diff --git a/src/empathy-preferences.ui b/src/empathy-preferences.ui index 4acc6f3c7..6bc17b761 100644 --- a/src/empathy-preferences.ui +++ b/src/empathy-preferences.ui @@ -1,308 +1,606 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <interface> <requires lib="gtk+" version="2.16"/> - <!-- interface-naming-policy toplevel-contextual --> - <object class="GtkNotebook" id="notebook"> + <object class="GtkNotebook" id="notebook"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">5</property> + <child> + <object class="GtkBox" id="vbox197"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkFrame" id="frame3"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="border_width">5</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkBox" id="vbox197"> + <object class="GtkAlignment" id="alignment11"> <property name="visible">True</property> - <property name="border_width">12</property> - <property name="spacing">18</property> - <property name="orientation">vertical</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> <child> - <object class="GtkFrame" id="frame3"> + <object class="GtkBox" id="vbox199"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> - <object class="GtkAlignment" id="alignment11"> + <object class="GtkCheckButton" id="checkbutton_show_smileys"> + <property name="label" translatable="yes">Show _smileys as images</property> <property name="visible">True</property> - <property name="top_padding">6</property> - <property name="left_padding">12</property> - <child> - <object class="GtkBox" id="vbox199"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkCheckButton" id="checkbutton_show_smileys"> - <property name="label" translatable="yes">Show _smileys as images</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="checkbutton_show_contacts_in_rooms"> - <property name="label" translatable="yes">Show contact _list in rooms</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> - </child> - </object> - </child> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> </child> - <child type="label"> - <object class="GtkLabel" id="label611"> + <child> + <object class="GtkCheckButton" id="checkbutton_show_contacts_in_rooms"> + <property name="label" translatable="yes">Show contact _list in rooms</property> <property name="visible">True</property> - <property name="label" translatable="yes">Appearance</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label611"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Appearance</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment12"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> <child> - <object class="GtkFrame" id="frame4"> + <object class="GtkBox" id="vbox218"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> - <object class="GtkAlignment" id="alignment12"> + <object class="GtkCheckButton" id="checkbutton_separate_chat_windows"> + <property name="label" translatable="yes">_Open new chats in separate windows</property> <property name="visible">True</property> - <property name="top_padding">6</property> - <property name="left_padding">12</property> - <child> - <object class="GtkBox" id="vbox218"> - <property name="orientation">vertical</property> - <property name="visible">True</property> - <child> - <object class="GtkCheckButton" id="checkbutton_separate_chat_windows"> - <property name="label" translatable="yes">_Open new chats in separate windows</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="checkbutton_events_notif_area"> - <property name="label" translatable="yes">Display incoming events in the notification area</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="checkbutton_autoconnect"> - <property name="label" translatable="yes">_Automatically connect on startup</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="checkbutton_logging"> - <property name="label" translatable="yes">Log conversations</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="position">3</property> - </packing> - </child> - </object> - </child> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> - <child type="label"> - <object class="GtkLabel" id="label612"> + <child> + <object class="GtkCheckButton" id="checkbutton_events_notif_area"> + <property name="label" translatable="yes">Display incoming events in the notification area</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="checkbutton_autoconnect"> + <property name="label" translatable="yes">_Automatically connect on startup</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="checkbutton_logging"> + <property name="label" translatable="yes">Log conversations</property> <property name="visible">True</property> - <property name="label" translatable="yes">Behavior</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> </child> </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label612"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Behavior</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="label602"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">General</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkBox" id="vbox2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkCheckButton" id="checkbutton_notifications_enabled"> + <property name="label" translatable="yes">_Enable bubble notifications</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="left_padding">12</property> + <child> + <object class="GtkBox" id="vbox3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkCheckButton" id="checkbutton_notifications_disabled_away"> + <property name="label" translatable="yes">Disable notifications when _away or busy</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="checkbutton_notifications_focus"> + <property name="label" translatable="yes">Enable notifications when the _chat is not focused</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> <packing> <property name="expand">False</property> - <property name="fill">False</property> + <property name="fill">True</property> <property name="position">1</property> </packing> </child> + <child> + <object class="GtkCheckButton" id="checkbutton_notifications_contact_signin"> + <property name="label" translatable="yes">Enable notifications when a contact comes online</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="checkbutton_notifications_contact_signout"> + <property name="label" translatable="yes">Enable notifications when a contact goes offline</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> </object> </child> - <child type="tab"> - <object class="GtkLabel" id="label602"> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Notifications</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkBox" id="outer_vbox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkBox" id="vbox219"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkCheckButton" id="checkbutton_sounds_enabled"> + <property name="label" translatable="yes">_Enable sound notifications</property> <property name="visible">True</property> - <property name="label" translatable="yes">General</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> </object> <packing> - <property name="tab_fill">False</property> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> - <object class="GtkBox" id="vbox2"> + <object class="GtkAlignment" id="alignment32"> <property name="visible">True</property> - <property name="border_width">12</property> - <property name="spacing">6</property> - <property name="orientation">vertical</property> + <property name="can_focus">False</property> + <property name="left_padding">12</property> <child> - <object class="GtkCheckButton" id="checkbutton_notifications_enabled"> - <property name="label" translatable="yes">_Enable bubble notifications</property> + <object class="GtkCheckButton" id="checkbutton_sounds_disabled_away"> + <property name="label" translatable="yes">Disable sounds when _away or busy</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="vbox221"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label645"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Play sound for events</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkAlignment" id="alignment33"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="left_padding">12</property> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow19"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="treeview_sounds"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection1"/> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label607"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Sounds</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkBox" id="vbox1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkCheckButton" id="checkbutton_location_publish"> + <property name="label" translatable="yes">_Publish location to my contacts</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> <child> - <object class="GtkAlignment" id="alignment1"> + <object class="GtkBox" id="vbox4"> <property name="visible">True</property> - <property name="left_padding">12</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> <child> - <object class="GtkBox" id="vbox3"> + <object class="GtkBox" id="hbox1"> <property name="visible">True</property> + <property name="can_focus">False</property> <property name="spacing">6</property> - <property name="orientation">vertical</property> <child> - <object class="GtkCheckButton" id="checkbutton_notifications_disabled_away"> - <property name="label" translatable="yes">Disable notifications when _away or busy</property> + <object class="GtkImage" id="image1"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> + <property name="can_focus">False</property> + <property name="yalign">0</property> + <property name="stock">gtk-dialog-info</property> </object> <packing> + <property name="expand">False</property> + <property name="fill">True</property> <property name="position">0</property> </packing> </child> <child> - <object class="GtkCheckButton" id="checkbutton_notifications_focus"> - <property name="label" translatable="yes">Enable notifications when the _chat is not focused</property> + <object class="GtkLabel" id="label6"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Reduced location accuracy means that nothing more precise than your city, state and country will be published. GPS coordinates will be accurate to 1 decimal place.</property> + <property name="wrap">True</property> + <attributes> + <attribute name="scale" value="0.80000000000000004"/> + </attributes> </object> <packing> + <property name="expand">False</property> + <property name="fill">True</property> <property name="position">1</property> </packing> </child> - <child> - <object class="GtkCheckButton" id="checkbutton_notifications_contact_signin"> - <property name="label" translatable="yes">Enable notifications when a contact comes online</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="checkbutton_notifications_contact_signout"> - <property name="label" translatable="yes">Enable notifications when a contact goes offline</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="position">3</property> - </packing> - </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="checkbutton_location_reduce_accuracy"> + <property name="label" translatable="yes" comments="To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.">_Reduce location accuracy</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> </child> </object> - <packing> - <property name="position">1</property> - </packing> </child> - <child type="tab"> - <object class="GtkLabel" id="label1"> + <child type="label"> + <object class="GtkLabel" id="label3"> <property name="visible">True</property> - <property name="label" translatable="yes">Notifications</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Privacy</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> - <packing> - <property name="position">1</property> - <property name="tab_fill">False</property> - </packing> </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkBox" id="outer_vbox"> + <object class="GtkAlignment" id="alignment4"> <property name="visible">True</property> - <property name="border_width">12</property> - <property name="spacing">18</property> - <property name="orientation">vertical</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> <child> - <object class="GtkBox" id="vbox219"> + <object class="GtkBox" id="vbox5"> <property name="visible">True</property> - <property name="spacing">6</property> + <property name="can_focus">False</property> <property name="orientation">vertical</property> <child> - <object class="GtkCheckButton" id="checkbutton_sounds_enabled"> - <property name="label" translatable="yes">_Enable sound notifications</property> + <object class="GtkCheckButton" id="checkbutton_location_resource_gps"> + <property name="label" translatable="yes">_GPS</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> </object> @@ -313,500 +611,355 @@ </packing> </child> <child> - <object class="GtkAlignment" id="alignment32"> + <object class="GtkCheckButton" id="checkbutton_location_resource_cell"> + <property name="label" translatable="yes">_Cellphone</property> <property name="visible">True</property> - <property name="left_padding">12</property> - <child> - <object class="GtkCheckButton" id="checkbutton_sounds_disabled_away"> - <property name="label" translatable="yes">Disable sounds when _away or busy</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - </object> - </child> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> </object> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkBox" id="vbox221"> - <property name="visible">True</property> - <property name="spacing">6</property> - <property name="orientation">vertical</property> <child> - <object class="GtkLabel" id="label645"> + <object class="GtkCheckButton" id="checkbutton_location_resource_network"> + <property name="label" translatable="yes">_Network (IP, Wi-Fi)</property> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Play sound for events</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkAlignment" id="alignment33"> - <property name="visible">True</property> - <property name="left_padding">12</property> - <child> - <object class="GtkScrolledWindow" id="scrolledwindow19"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">automatic</property> - <property name="vscrollbar_policy">automatic</property> - <property name="shadow_type">in</property> - <child> - <object class="GtkTreeView" id="treeview_sounds"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - </object> - </child> - </object> - </child> - </object> - <packing> - <property name="position">1</property> - <property name="expand">True</property> + <property name="position">2</property> </packing> </child> </object> - <packing> - <property name="position">1</property> - </packing> </child> </object> - <packing> - <property name="position">2</property> - </packing> </child> - <child type="tab"> - <object class="GtkLabel" id="label607"> + <child type="label"> + <object class="GtkLabel" id="label5"> <property name="visible">True</property> - <property name="label" translatable="yes">Sounds</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Location sources:</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> - <packing> - <property name="position">2</property> - <property name="tab_fill">False</property> - </packing> </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">3</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Location</property> + </object> + <packing> + <property name="position">3</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkBox" id="vbox168"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkFrame" id="frame7"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkBox" id="vbox1"> + <object class="GtkAlignment" id="alignment15"> <property name="visible">True</property> - <property name="border_width">12</property> - <property name="orientation">vertical</property> - <property name="spacing">18</property> - <child> - <object class="GtkCheckButton" id="checkbutton_location_publish"> - <property name="label" translatable="yes">_Publish location to my contacts</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> <child> - <object class="GtkFrame" id="frame1"> + <object class="GtkBox" id="vbox201"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> <child> - <object class="GtkAlignment" id="alignment2"> + <object class="GtkScrolledWindow" id="scrolledwindow18"> <property name="visible">True</property> - <property name="top_padding">6</property> - <property name="left_padding">12</property> + <property name="can_focus">False</property> + <property name="shadow_type">in</property> <child> - <object class="GtkBox" id="vbox4"> + <object class="GtkTreeView" id="treeview_spell_checker"> <property name="visible">True</property> - <property name="orientation">vertical</property> - <property name="spacing">6</property> - <child> - <object class="GtkBox" id="hbox1"> - <property name="visible">True</property> - <property name="spacing">6</property> - <property name="orientation">horizontal</property> - <child> - <object class="GtkImage" id="image1"> - <property name="visible">True</property> - <property name="yalign">0</property> - <property name="stock">gtk-dialog-info</property> - </object> - <packing> - <property name="expand">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label6"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="wrap">True</property> - <property name="label" translatable="yes">Reduced location accuracy means that nothing more precise than your city, state and country will be published. GPS coordinates will be accurate to 1 decimal place.</property> - <attributes> - <attribute name="scale" value="0.8"/> - </attributes> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="checkbutton_location_reduce_accuracy"> - <property name="label" translatable="yes" comments="To translators: The longitude and latitude are rounded to closest 0,1 degrees, so for example 146,2345° is rounded to round(146,2345*10)/10 = 146,2 degrees.">_Reduce location accuracy</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="treeview-selection2"/> </child> </object> </child> </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> </child> - <child type="label"> - <object class="GtkLabel" id="label3"> - <property name="visible">True</property> - <property name="label" translatable="yes">Privacy</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="frame5"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> <child> - <object class="GtkAlignment" id="alignment4"> + <object class="GtkBox" id="hbox155"> <property name="visible">True</property> - <property name="top_padding">6</property> - <property name="left_padding">12</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> <child> - <object class="GtkBox" id="vbox5"> + <object class="GtkImage" id="image422"> <property name="visible">True</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkCheckButton" id="checkbutton_location_resource_gps"> - <property name="label" translatable="yes">_GPS</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="checkbutton_location_resource_cell"> - <property name="label" translatable="yes">_Cellphone</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="checkbutton_location_resource_network"> - <property name="label" translatable="yes">_Network (IP, Wi-Fi)</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> + <property name="can_focus">False</property> + <property name="yalign">0</property> + <property name="stock">gtk-dialog-info</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label616"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">The list of languages reflects only the languages for which you have a dictionary installed.</property> + <property name="wrap">True</property> + <attributes> + <attribute name="scale" value="0.80000000000000004"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> </child> </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label5"> - <property name="visible">True</property> - <property name="label" translatable="yes">Location sources:</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="position">2</property> - </packing> </child> </object> - <packing> - <property name="position">3</property> - </packing> </child> - <child type="tab"> - <object class="GtkLabel" id="label2"> + <child type="label"> + <object class="GtkLabel" id="label615"> <property name="visible">True</property> - <property name="label" translatable="yes">Location</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Enable spell checking for languages:</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> - <packing> - <property name="position">3</property> - <property name="tab_fill">False</property> - </packing> </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">4</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label567"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Spell Checking</property> + </object> + <packing> + <property name="position">4</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkBox" id="vbox206"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkFrame" id="frame11"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> <child> - <object class="GtkBox" id="vbox168"> + <object class="GtkAlignment" id="alignment19"> <property name="visible">True</property> - <property name="border_width">12</property> - <property name="spacing">18</property> - <property name="orientation">vertical</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> <child> - <object class="GtkFrame" id="frame7"> + <object class="GtkBox" id="vbox_chat_theme"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> <child> - <object class="GtkAlignment" id="alignment15"> + <object class="GtkBox" id="hbox139"> <property name="visible">True</property> - <property name="top_padding">6</property> - <property name="left_padding">12</property> + <property name="can_focus">False</property> + <property name="spacing">12</property> <child> - <object class="GtkBox" id="vbox201"> + <object class="GtkLabel" id="label586"> <property name="visible">True</property> - <property name="spacing">6</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkScrolledWindow" id="scrolledwindow18"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hscrollbar_policy">automatic</property> - <property name="vscrollbar_policy">automatic</property> - <property name="shadow_type">in</property> - <child> - <object class="GtkTreeView" id="treeview_spell_checker"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - </object> - </child> - </object> - <packing> - <property name="position">0</property> - <property name="expand">True</property> - </packing> - </child> - <child> - <object class="GtkBox" id="hbox155"> - <property name="visible">True</property> - <property name="spacing">6</property> - <property name="orientation">horizontal</property> - <child> - <object class="GtkImage" id="image422"> - <property name="visible">True</property> - <property name="yalign">0</property> - <property name="stock">gtk-dialog-info</property> - </object> - <packing> - <property name="expand">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label616"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="wrap">True</property> - <property name="label" translatable="yes">The list of languages reflects only the languages for which you have a dictionary installed.</property> - <attributes> - <attribute name="scale" value="0.8"/> - </attributes> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Chat Th_eme:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">combobox_chat_theme</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="combobox_chat_theme"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> </child> - <child type="label"> - <object class="GtkLabel" id="label615"> - <property name="visible">True</property> - <property name="label" translatable="yes">Enable spell checking for languages:</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="position">4</property> - </packing> - </child> - <child type="tab"> - <object class="GtkLabel" id="label567"> - <property name="visible">True</property> - <property name="label" translatable="yes">Spell Checking</property> - </object> - <packing> - <property name="position">4</property> - <property name="tab_fill">False</property> - </packing> - </child> - <child> - <object class="GtkBox" id="vbox206"> - <property name="visible">True</property> - <property name="border_width">12</property> - <property name="spacing">18</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkFrame" id="frame11"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> <child> - <object class="GtkAlignment" id="alignment19"> - <property name="visible">True</property> - <property name="top_padding">6</property> - <property name="left_padding">12</property> + <object class="GtkBox" id="hbox_chat_theme_variant"> + <property name="visible">False</property> + <property name="can_focus">False</property> + <property name="spacing">12</property> <child> - <object class="GtkBox" id="vbox207"> + <object class="GtkLabel" id="label4"> <property name="visible">True</property> - <property name="spacing">6</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkBox" id="hbox139"> - <property name="visible">True</property> - <property name="spacing">12</property> - <property name="orientation">horizontal</property> - <child> - <object class="GtkLabel" id="label586"> - <property name="visible">True</property> - <property name="label" translatable="yes">Chat Th_eme:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">combobox_chat_theme</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkComboBox" id="combobox_chat_theme"> - <property name="visible">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Theme Variant:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">combobox_chat_theme_variant</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="combobox_chat_theme_variant"> + <property name="visible">True</property> + <property name="can_focus">False</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> </child> - <child type="label"> - <object class="GtkLabel" id="label626"> + <child> + <object class="GtkScrolledWindow" id="sw_chat_theme_preview"> <property name="visible">True</property> - <property name="label" translatable="yes">Appearance</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> + <property name="can_focus">True</property> + <property name="shadow_type">in</property> + <child> + <placeholder/> + </child> </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> </child> </object> - <packing> - <property name="position">5</property> - </packing> </child> - <child type="tab"> - <object class="GtkLabel" id="label624"> + <child type="label"> + <object class="GtkLabel" id="label626"> <property name="visible">True</property> - <property name="label" translatable="yes">Themes</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Appearance</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> - <packing> - <property name="position">5</property> - <property name="tab_fill">False</property> - </packing> </child> </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="position">5</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label624"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Themes</property> + </object> + <packing> + <property name="position">5</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> </interface> diff --git a/src/empathy-streamed-media-window.c b/src/empathy-streamed-media-window.c index 50d3f8ace..100a6b9f1 100644 --- a/src/empathy-streamed-media-window.c +++ b/src/empathy-streamed-media-window.c @@ -2713,7 +2713,7 @@ start_call (EmpathyStreamedMediaWindow *self) priv->call_started = TRUE; empathy_streamed_media_handler_start_call (priv->handler, - gtk_get_current_event_time ()); + empathy_get_current_action_time ()); if (empathy_streamed_media_handler_has_initial_video (priv->handler)) { diff --git a/src/ev-sidebar.c b/src/ev-sidebar.c index d0dd2b615..9c805372d 100644 --- a/src/ev-sidebar.c +++ b/src/ev-sidebar.c @@ -64,10 +64,8 @@ static void ev_sidebar_class_init (EvSidebarClass *ev_sidebar_class) { GObjectClass *g_object_class; - GtkWidgetClass *widget_class; g_object_class = G_OBJECT_CLASS (ev_sidebar_class); - widget_class = GTK_WIDGET_CLASS (ev_sidebar_class); g_type_class_add_private (g_object_class, sizeof (EvSidebarPrivate)); diff --git a/tests/interactive/contact-manager.c b/tests/interactive/contact-manager.c index 7793b44d9..e391df634 100644 --- a/tests/interactive/contact-manager.c +++ b/tests/interactive/contact-manager.c @@ -12,7 +12,6 @@ int main (int argc, char **argv) { EmpathyContactManager *manager; - GMainLoop *main_loop; EmpathyContactListStore *store; GtkWidget *combo; GtkWidget *window; @@ -22,7 +21,7 @@ main (int argc, char **argv) empathy_gtk_init (); empathy_debug_set_flags (g_getenv ("EMPATHY_DEBUG")); - main_loop = g_main_loop_new (NULL, FALSE); + g_main_loop_new (NULL, FALSE); manager = empathy_contact_manager_dup_singleton (); store = empathy_contact_list_store_new (EMPATHY_CONTACT_LIST (manager)); empathy_contact_list_store_set_is_compact (store, TRUE); |