changeset 26806:9b7b8ee25af4

merge of '654444067285909ecd842c1a5b06f16f773abe49' and 'ad057b7532610edb11caffebfa98068b6239d787'
author Ka-Hing Cheung <khc@hxbc.us>
date Sun, 03 May 2009 17:59:12 +0000
parents 8b40c704de71 (diff) bf7b3cd5ed25 (current diff)
children 8d47c0d594dc
files
diffstat 11 files changed, 455 insertions(+), 566 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun May 03 17:58:21 2009 +0000
+++ b/ChangeLog	Sun May 03 17:59:12 2009 +0000
@@ -16,37 +16,21 @@
 	* Report idle time 'From last message sent' should work properly.
 
 	XMPP:
-	* Add voice & video support with Jingle (XEP-0166, 0167, 0176, & 0177),
-	  and voice support with GTalk and GMail. (Mike "Maiku" Ruprecht)
-	* Add support for in-band bytestreams for file transfers (XEP-0047).
-	* Add support for sending and receiving attentions (equivalent to "buzz"
+	* Voice & Video support with Jingle (XEP-0166, 0167, 0176, & 0177), and
+	  voice support with GTalk and GMail. (Mike "Maiku" Ruprecht)
+	* Support for in-band bytestreams for file transfers (XEP-0047).
+	* Support for sending and receiving attentions (equivalent to "buzz"
 	  and "nudge") using the command /buzz. (XEP-0224)
 	* Support for connecting using BOSH. (Tobias Markmann)
 	* A buddy's local time is displayed in the Get Info dialog if the remote
 	  client supports it.
 	* The set_chat_topic function can unset the chat topic.
-	* Fix crash on connection with recent gstreamer0.10-plugins-bad.
-	* Don't create a new conversation window for incoming messages of
-	  type 'headline'.
 	* The Ad-Hoc commands associated with our server are now always shown at
 	  login.
 	* Support showing and reporting idle times in the buddy list. (XEP-0256)
 	* Support most recent version of User Avatar. (XEP-0084 v1.1)
 	* Updated Entity Capabilities support. (Tobias Markmann)
-	* Support receiving user nicknames in presence packets and subscriptions.
-	  (XEP-0172)
-
-	IRC:
-	* Correctly handle WHOIS for users who are joined to a large number of
-	  channels.
-	* Notify the user if a /nick command fails, rather than trying
-	  fallback nicks.
-
-	MSN:
-	* Fix a race condition in the SOAP code that caused mysterious crashes.
-	  (Thanks to Florian Quèze for noticing the cause)
-	* Fix a regression in 2.5.5 that caused numerous "Friendly name changes
-	  too rapidly" pop-ups at login.
+	* Better support for receiving remote users' nicknames.
 
 	Yahoo:
 	* P2P file transfers. (Sulabh Mahajan)
--- a/libpurple/mime.c	Sun May 03 17:58:21 2009 +0000
+++ b/libpurple/mime.c	Sun May 03 17:59:12 2009 +0000
@@ -403,7 +403,7 @@
 	char *b = (char *) buf;
 	gsize n = len;
 
-	const char *bnd;
+	char *bnd;
 	gsize bl;
 
 	bnd = g_strdup_printf("--%s", boundary);
--- a/libpurple/protocols/jabber/caps.c	Sun May 03 17:58:21 2009 +0000
+++ b/libpurple/protocols/jabber/caps.c	Sun May 03 17:59:12 2009 +0000
@@ -826,8 +826,13 @@
 		JabberIdentity *id = (JabberIdentity*)node->data;
 		char *category = g_markup_escape_text(id->category, -1);
 		char *type = g_markup_escape_text(id->type, -1);
-		char *lang = g_markup_escape_text(id->lang, -1);
-		char *name = g_markup_escape_text(id->name, -1);
+		char *lang = NULL;
+		char *name = NULL;
+		
+		if (id->lang)
+			lang = g_markup_escape_text(id->lang, -1);
+		if (id->name)
+			name = g_markup_escape_text(id->name, -1);
 
 		g_string_append_printf(verification, "%s/%s/%s/%s<", category,
 		        type, lang ? lang : "", name ? name : "");
--- a/libpurple/protocols/jabber/pep.c	Sun May 03 17:58:21 2009 +0000
+++ b/libpurple/protocols/jabber/pep.c	Sun May 03 17:59:12 2009 +0000
@@ -67,12 +67,15 @@
                                 JabberIqType type, const char *id,
                                 xmlnode *packet, gpointer data)
 {
-	xmlnode *pubsub = xmlnode_get_child_with_namespace(packet,"pubsub","http://jabber.org/protocol/pubsub");
+	xmlnode *pubsub;
 	xmlnode *items = NULL;
 	JabberPEPHandler *cb = data;
 
-	if(pubsub)
-		items = xmlnode_get_child(pubsub, "items");
+	if (type == JABBER_IQ_RESULT) {
+		pubsub = xmlnode_get_child_with_namespace(packet, "pubsub", "http://jabber.org/protocol/pubsub");
+		if(pubsub)
+			items = xmlnode_get_child(pubsub, "items");
+	}
 
 	cb(js, from, items);
 }
--- a/libpurple/protocols/jabber/presence.c	Sun May 03 17:58:21 2009 +0000
+++ b/libpurple/protocols/jabber/presence.c	Sun May 03 17:59:12 2009 +0000
@@ -340,7 +340,7 @@
                           xmlnode *packet, gpointer blah)
 {
 	JabberBuddy *jb = NULL;
-	xmlnode *vcard, *photo, *binval;
+	xmlnode *vcard, *photo, *binval, *fn, *nick;
 	char *text;
 
 	if(!from)
@@ -352,6 +352,29 @@
 
 	if((vcard = xmlnode_get_child(packet, "vCard")) ||
 			(vcard = xmlnode_get_child_with_namespace(packet, "query", "vcard-temp"))) {
+		/* The logic here regarding the nickname and full name is copied from
+		 * buddy.c:jabber_vcard_parse. */
+		gchar *nickname = NULL;
+		if ((fn = xmlnode_get_child(vcard, "FN")))
+			nickname = xmlnode_get_data(fn);
+
+		if ((nick = xmlnode_get_child(vcard, "NICKNAME"))) {
+			char *tmp = xmlnode_get_data(nick);
+			char *bare_jid = jabber_get_bare_jid(from);
+			if (strstr(bare_jid, tmp) == NULL) {
+				g_free(nickname);
+				nickname = tmp;
+			} else
+				g_free(tmp);
+
+			g_free(bare_jid);
+		}
+
+		if (nickname) {
+			serv_got_alias(js->gc, from, nickname);
+			g_free(nickname);
+		}
+
 		if((photo = xmlnode_get_child(vcard, "PHOTO")) &&
 				(( (binval = xmlnode_get_child(photo, "BINVAL")) &&
 				(text = xmlnode_get_data(binval))) ||
@@ -643,9 +666,11 @@
 		if(type && !strcmp(type, "unavailable")) {
 			gboolean nick_change = FALSE;
 
-			/* If we haven't joined the chat yet, we don't care that someone
-			 * left, or it was us leaving after we closed the chat */
-			if (!chat->conv || chat->left) {
+			/* If the chat nick is invalid, we haven't yet joined, or we've
+			 * already left (it was probably us leaving after we closed the
+			 * chat), we don't care.
+			 */
+			if (!jid->resource || !chat->conv || chat->left) {
 				if (chat->left &&
 						jid->resource && chat->handle && !strcmp(jid->resource, chat->handle))
 					jabber_chat_destroy(chat);
@@ -706,6 +731,19 @@
 				}
 			}
 		} else {
+			/*
+			 * XEP-0045 mandates the presence to include a resource (which is
+			 * treated as the chat nick). Some non-compliant servers allow
+			 * joining without a nick.
+			 */
+			if (!jid->resource) {
+				jabber_id_free(jid);
+				g_free(avatar_hash);
+				g_free(nickname);
+				g_free(status);
+				return;
+			}
+
 			if(!chat->conv) {
 				char *room_jid = g_strdup_printf("%s@%s", jid->node, jid->domain);
 				chat->id = i++;
--- a/libpurple/protocols/jabber/useravatar.c	Sun May 03 17:58:21 2009 +0000
+++ b/libpurple/protocols/jabber/useravatar.c	Sun May 03 17:59:12 2009 +0000
@@ -33,9 +33,6 @@
 
 void jabber_avatar_init(void)
 {
-	jabber_pep_register_handler(NS_AVATAR_0_12_METADATA,
-	                            update_buddy_metadata);
-
 	jabber_add_feature(NS_AVATAR_1_1_METADATA,
 	                   jabber_pep_namespace_only_when_pep_enabled_cb);
 	jabber_add_feature(NS_AVATAR_1_1_DATA,
@@ -48,8 +45,32 @@
 static void
 remove_avatar_0_12_nodes(JabberStream *js)
 {
+	/* Publish an empty avatar according to the XEP-0084 v0.12 semantics */
+	xmlnode *publish, *item, *metadata;
+	/* publish the metadata */
+	publish = xmlnode_new("publish");
+	xmlnode_set_attrib(publish, "node", NS_AVATAR_0_12_METADATA);
+
+	item = xmlnode_new_child(publish, "item");
+	xmlnode_set_attrib(item, "id", "stop");
+
+	metadata = xmlnode_new_child(item, "metadata");
+	xmlnode_set_namespace(metadata, NS_AVATAR_0_12_METADATA);
+
+	xmlnode_new_child(metadata, "stop");
+
+	/* publish */
+	jabber_pep_publish(js, publish);
+
+	/*
+	 * This causes ejabberd 2.0.0 to RST our connection unceremoniously,
+	 * so disable it for now (we publish a <stop/> to the metadata node
+	 * instead.
+	 */
+#if 0
 	jabber_pep_delete_node(js, NS_AVATAR_0_12_METADATA);
 	jabber_pep_delete_node(js, NS_AVATAR_0_12_DATA);
+#endif
 }
 
 void jabber_avatar_set(JabberStream *js, PurpleStoredImage *img)
@@ -59,6 +80,7 @@
 	if (!js->pep)
 		return;
 
+	/* Hmmm, not sure if this is worth the traffic, but meh */
 	remove_avatar_0_12_nodes(js);
 
 	if (!img) {
@@ -169,35 +191,29 @@
 }
 
 static void
+do_got_own_avatar_0_12_cb(JabberStream *js, const char *from, xmlnode *items)
+{
+	if (items)
+		/* It wasn't an error (i.e. 'item-not-found') */
+		remove_avatar_0_12_nodes(js);
+}
+
+static void
 do_got_own_avatar_cb(JabberStream *js, const char *from, xmlnode *items)
 {
 	xmlnode *item = NULL, *metadata = NULL, *info = NULL;
 	PurpleAccount *account = purple_connection_get_account(js->gc);
 	const char *server_hash = NULL;
-	const char *ns;
 
-	if ((item = xmlnode_get_child(items, "item")) &&
+	if (items && (item = xmlnode_get_child(items, "item")) &&
 	     (metadata = xmlnode_get_child(item, "metadata")) &&
 	     (info = xmlnode_get_child(metadata, "info"))) {
 		server_hash = xmlnode_get_attrib(info, "id");
 	}
 
-	if (!metadata)
-		return;
-
-	ns = xmlnode_get_namespace(metadata);
-	if (!ns)
+	if (items && !metadata)
 		return;
 
-	/*
-	 * We no longer publish avatars to the older namespace. If there is one
-	 * there, delete it.
-	 */
-	if (g_str_equal(ns, NS_AVATAR_0_12_METADATA) && server_hash) {
-		remove_avatar_0_12_nodes(js);
-		return;
-	}
-
 	/* Publish ours if it's different than the server's */
 	if (!purple_strequal(server_hash, js->initial_avatar_hash)) {
 		PurpleStoredImage *img = purple_buddy_icons_find_account_icon(account);
@@ -210,7 +226,7 @@
 {
 	char *jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain);
 	jabber_pep_request_item(js, jid, NS_AVATAR_0_12_METADATA, NULL,
-	                        do_got_own_avatar_cb);
+	                        do_got_own_avatar_0_12_cb);
 	jabber_pep_request_item(js, jid, NS_AVATAR_1_1_METADATA, NULL,
 	                        do_got_own_avatar_cb);
 	g_free(jid);
@@ -247,7 +263,7 @@
 do_buddy_avatar_update_data(JabberStream *js, const char *from, xmlnode *items)
 {
 	xmlnode *item, *data;
-	const char *checksum, *ns;
+	const char *checksum;
 	char *b64data;
 	void *img;
 	size_t size;
@@ -262,12 +278,6 @@
 	if(!data)
 		return;
 
-	ns = xmlnode_get_namespace(data);
-	/* Make sure the namespace is one of the two valid possibilities */
-	if (!ns || (!g_str_equal(ns, NS_AVATAR_0_12_DATA) &&
-	            !g_str_equal(ns, NS_AVATAR_1_1_DATA)))
-		return;
-
 	checksum = xmlnode_get_attrib(item,"id");
 	if(!checksum)
 		return;
@@ -290,7 +300,7 @@
 update_buddy_metadata(JabberStream *js, const char *from, xmlnode *items)
 {
 	PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(js->gc), from);
-	const char *checksum, *ns;
+	const char *checksum;
 	xmlnode *item, *metadata;
 	if(!buddy)
 		return;
@@ -306,15 +316,9 @@
 	if(!metadata)
 		return;
 
-	ns = xmlnode_get_namespace(metadata);
-	/* Make sure the namespace is one of the two valid possibilities */
-	if (!ns || (!g_str_equal(ns, NS_AVATAR_0_12_METADATA) &&
-	            !g_str_equal(ns, NS_AVATAR_1_1_METADATA)))
-		return;
-
 	checksum = purple_buddy_icons_get_checksum_for_user(buddy);
 
-	/* check if we have received a stop */
+	/* <stop/> was the pre-v1.1 method of publishing an empty avatar */
 	if(xmlnode_get_child(metadata, "stop")) {
 		purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, NULL, 0, NULL);
 	} else {
@@ -347,10 +351,7 @@
 
 			/* the avatar might either be stored in a pep node, or on a HTTP(S) URL */
 			if(!url) {
-				const char *data_ns;
-				data_ns = (g_str_equal(ns, NS_AVATAR_0_12_METADATA) ?
-				               NS_AVATAR_0_12_DATA : NS_AVATAR_1_1_DATA);
-				jabber_pep_request_item(js, from, data_ns, id,
+				jabber_pep_request_item(js, from, NS_AVATAR_1_1_DATA, id,
 				                        do_buddy_avatar_update_data);
 			} else {
 				PurpleUtilFetchUrlData *url_data;
--- a/libpurple/protocols/jabber/usernick.c	Sun May 03 17:58:21 2009 +0000
+++ b/libpurple/protocols/jabber/usernick.c	Sun May 03 17:59:12 2009 +0000
@@ -65,7 +65,10 @@
 
 static void do_nick_got_own_nick_cb(JabberStream *js, const char *from, xmlnode *items) {
 	char *oldnickname = NULL;
-	xmlnode *item = xmlnode_get_child(items,"item");
+	xmlnode *item = NULL;
+	
+	if (items)
+		item = xmlnode_get_child(items,"item");
 
 	if(item) {
 		xmlnode *nick = xmlnode_get_child_with_namespace(item,"nick","http://jabber.org/protocol/nick");
--- a/libpurple/protocols/msn/notification.c	Sun May 03 17:58:21 2009 +0000
+++ b/libpurple/protocols/msn/notification.c	Sun May 03 17:59:12 2009 +0000
@@ -612,8 +612,19 @@
 static void
 update_contact_network(MsnSession *session, const char *passport, MsnNetwork network)
 {
-	MsnUser *user = msn_userlist_find_user(session->userlist, passport);
+	MsnUser *user;
+
+	if (network == MSN_NETWORK_UNKNOWN)
+	{
+		purple_debug_warning("msn",
+		                     "Ignoring user %s about which server knows nothing.\n",
+		                     passport);
+		session->adl_fqy--;
+		return;
+	}
+
 	/* TODO: Also figure out how to update membership lists */
+	user = msn_userlist_find_user(session->userlist, passport);
 	if (user) {
 		xmlnode *adl_node;
 		char *payload;
@@ -774,13 +785,17 @@
 		purple_debug_info("msn", "Invalid XML in ADL!\n");
 		return;
 	}
-	for (domain_node = xmlnode_get_child(root, "d"); domain_node; domain_node = xmlnode_get_next_twin(domain_node)) {
+	for (domain_node = xmlnode_get_child(root, "d");
+	     domain_node;
+	     domain_node = xmlnode_get_next_twin(domain_node)) {
 		const gchar * domain = NULL;
 		xmlnode *contact_node = NULL;
 
 		domain = xmlnode_get_attrib(domain_node, "n");
 
-		for (contact_node = xmlnode_get_child(domain_node, "c"); contact_node; contact_node = xmlnode_get_next_twin(contact_node)) {
+		for (contact_node = xmlnode_get_child(domain_node, "c");
+		     contact_node;
+		     contact_node = xmlnode_get_next_twin(contact_node)) {
 			const gchar *list;
 			gint list_op = 0;
 
@@ -942,10 +957,10 @@
 
 			passport = g_strdup_printf("%s@%s", local, domain);
 
-			if (type != NULL)
+			if (!g_ascii_isdigit(cmd->command[0]) && type != NULL)
 				network = (MsnNetwork)strtoul(type, NULL, 10);
 			else
-				network = MSN_NETWORK_PASSPORT;
+				network = MSN_NETWORK_UNKNOWN;
 
 			purple_debug_info("msn", "FQY response says %s is from network %d\n",
 			                  passport, network);
@@ -960,6 +975,26 @@
 }
 
 static void
+fqy_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
+{
+	MsnCommand *cmd = cmdproc->last_cmd;
+
+	purple_debug_warning("msn", "FQY error %d\n", error);
+	if (cmd->param_count > 1) {
+		cmd->payload_cb = fqy_cmd_post;
+		cmd->payload_len = atoi(cmd->params[1]);
+		cmd->payload_cbdata = GINT_TO_POINTER(error);
+	}
+#if 0
+	/* If the server didn't send us a corresponding email address for this
+	   FQY error, it's probably going to disconnect us. So it isn't necessary
+	   to tell the handler about it. */
+	else if (trans->data)
+		((MsnFqyCb)trans->data)(session, NULL, MSN_NETWORK_UNKNOWN); */
+#endif
+}
+
+static void
 fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	purple_debug_info("msn", "Process FQY\n");
@@ -2153,6 +2188,7 @@
 
 	msn_table_add_error(cbs_table, "ADD", add_error);
 	msn_table_add_error(cbs_table, "ADL", adl_error);
+	msn_table_add_error(cbs_table, "FQY", fqy_error);
 	msn_table_add_error(cbs_table, "REG", reg_error);
 	msn_table_add_error(cbs_table, "RMG", rmg_error);
 	msn_table_add_error(cbs_table, "USR", usr_error);
--- a/libpurple/protocols/msnp9/slplink.c	Sun May 03 17:58:21 2009 +0000
+++ b/libpurple/protocols/msnp9/slplink.c	Sun May 03 17:59:12 2009 +0000
@@ -510,7 +510,7 @@
 {
 	MsnSlpMessage *slpmsg;
 	const char *data;
-	gsize offset;
+	guint64 offset;
 	gsize len;
 
 #ifdef MSN_DEBUG_SLP
@@ -581,6 +581,7 @@
 			if (slpmsg->buffer == NULL)
 			{
 				purple_debug_error("msn", "Failed to allocate buffer for slpmsg\n");
+				msn_slpmsg_destroy(slpmsg);
 				return;
 			}
 		}
--- a/pidgin/gtksavedstatuses.c	Sun May 03 17:58:21 2009 +0000
+++ b/pidgin/gtksavedstatuses.c	Sun May 03 17:59:12 2009 +0000
@@ -390,7 +390,7 @@
 
 	gtk_widget_set_sensitive(dialog->use_button, (num_selected == 1) && can_use);
 	gtk_widget_set_sensitive(dialog->modify_button, (num_selected > 0));
-	gtk_widget_set_sensitive(dialog->delete_button, can_delete);
+	gtk_widget_set_sensitive(dialog->delete_button, num_selected > 0 && can_delete);
 
     g_list_free(sel_paths);
 }
@@ -648,6 +648,7 @@
 	button = pidgin_dialog_add_button(GTK_DIALOG(win), PIDGIN_STOCK_MODIFY,
 			G_CALLBACK(status_window_modify_cb), dialog);
 	dialog->modify_button = button;
+	gtk_widget_set_sensitive(button, FALSE);
 
 	/* Delete button */
 	button = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_DELETE,
--- a/po/ca.po	Sun May 03 17:58:21 2009 +0000
+++ b/po/ca.po	Sun May 03 17:59:12 2009 +0000
@@ -33,8 +33,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-04-30 10:37-0400\n"
-"PO-Revision-Date: 2009-03-05 22:37+0100\n"
+"POT-Creation-Date: 2009-05-03 18:12+0200\n"
+"PO-Revision-Date: 2009-05-03 18:15+0200\n"
 "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
 "Language-Team: Catalan <tradgnome@softcatala.net>\n"
 "MIME-Version: 1.0\n"
@@ -639,6 +639,19 @@
 msgid "Send To"
 msgstr "Envia a"
 
+msgid "Invite message"
+msgstr "Missatge d'invitació"
+
+msgid "Invite"
+msgstr "Convida"
+
+msgid ""
+"Please enter the name of the user you wish to invite,\n"
+"along with an optional invite message."
+msgstr ""
+"Introduïu el nom de l'usuari que vulgueu convidar,\n"
+"així com un missatge d'invitació opcional."
+
 msgid "Conversation"
 msgstr "Conversa"
 
@@ -902,41 +915,6 @@
 msgid "System Log"
 msgstr "Registre del sistema"
 
-#, fuzzy
-msgid "Calling ... "
-msgstr "S'està calculant..."
-
-msgid "Hangup"
-msgstr ""
-
-#. Number of actions
-msgid "Accept"
-msgstr "Accepta"
-
-msgid "Reject"
-msgstr "Rebutja"
-
-msgid "Call in progress."
-msgstr ""
-
-msgid "The call has been terminated."
-msgstr ""
-
-#, c-format
-msgid "%s wishes to start an audio session with you."
-msgstr ""
-
-#, c-format
-msgid "%s is trying to start an unsupported media session type with you."
-msgstr ""
-
-#, fuzzy
-msgid "You have rejected the call."
-msgstr "Heu sortit del canal%s%s"
-
-msgid "call: Make an audio call."
-msgstr ""
-
 msgid "Emails"
 msgstr "Correus electrònics"
 
@@ -971,9 +949,6 @@
 msgid "IM"
 msgstr "MI"
 
-msgid "Invite"
-msgstr "Convida"
-
 msgid "(none)"
 msgstr "(cap)"
 
@@ -1589,28 +1564,6 @@
 msgid "Lastlog plugin."
 msgstr "Connector lastlog."
 
-#, c-format
-msgid ""
-"\n"
-"Fetching TinyURL..."
-msgstr ""
-
-msgid "Only create TinyURL for urls of this length or greater"
-msgstr ""
-
-msgid "TinyURL (or other) address prefix"
-msgstr ""
-
-#, fuzzy
-msgid "TinyURL"
-msgstr "URL de la melodia"
-
-msgid "TinyURL plugin"
-msgstr ""
-
-msgid "When receiving a message with URL(s), TinyURL for easier copying"
-msgstr ""
-
 msgid "accounts"
 msgstr "comptes"
 
@@ -1712,6 +1665,13 @@
 msgid "SSL Certificate Verification"
 msgstr "Verificació d'un certificat SSL"
 
+#. Number of actions
+msgid "Accept"
+msgstr "Accepta"
+
+msgid "Reject"
+msgstr "Rebutja"
+
 msgid "_View Certificate..."
 msgstr "_Mostra el certificat..."
 
@@ -1860,18 +1820,6 @@
 msgid "%s left the room (%s)."
 msgstr "%s ha sortit de la sala (%s)."
 
-#, fuzzy
-msgid "Invite to chat"
-msgstr "Convida a la conferència"
-
-#. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Introduïu el nom de l'usuari que vulgueu convidar, així com un missatge "
-"d'invitació opcional."
-
 #, c-format
 msgid "Failed to get connection: %s"
 msgstr "No s'ha pogut obtenir la connexió: %s"
@@ -2705,32 +2653,6 @@
 msgid "Do not ask. Always save in pounce."
 msgstr "No ho demanis, desa-ho sempre en un avís."
 
-#, fuzzy
-msgid "One Time Password"
-msgstr "Introduïu la contrasenya"
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-msgid "One Time Password Support"
-msgstr ""
-
-#. *< name
-#. *< version
-#. *  summary
-msgid "Enforce that passwords are used only once."
-msgstr ""
-
-#. *  description
-msgid ""
-"Allows you to enforce on a per-account basis that passwords not being saved "
-"are only used in a single successful connection.\n"
-"Note: The account password must not be saved for this to work."
-msgstr ""
-
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -3133,7 +3055,6 @@
 msgid "Add to chat..."
 msgstr "Afegeix al xat..."
 
-#. Global
 msgid "Available"
 msgstr "Disponible"
 
@@ -3480,17 +3401,6 @@
 "El servidor ha rebutjat el nom del compte que heu triat. Possiblement conté "
 "caràcters invàlids."
 
-#. We only want to do the following dance if the connection
-#. has not been successfully completed.  If it has, just
-#. notify the user that their /nick command didn't go.
-#, fuzzy, c-format
-msgid "The nickname \"%s\" is already being used."
-msgstr "Aquest nom de xat ja existeix"
-
-#, fuzzy
-msgid "Nickname in use"
-msgstr "Sobrenom: %s\n"
-
 msgid "Cannot change nick"
 msgstr "No es pot canviar el sobrenom"
 
@@ -3763,41 +3673,6 @@
 msgid "SASL error"
 msgstr "Error en el SASL"
 
-msgid "The BOSH connection manager terminated your session."
-msgstr ""
-
-#, fuzzy
-msgid "No session ID given"
-msgstr "No s'ha indicat cap motiu"
-
-#, fuzzy
-msgid "Unsupported version of BOSH protocol"
-msgstr "Aquesta versió no està implementada"
-
-#, fuzzy
-msgid "Unable to establish a connection with the server"
-msgstr ""
-"No s'ha pogut establir una connexió amb al servidor:\n"
-"%s"
-
-#, c-format
-msgid ""
-"Could not establish a connection with the server:\n"
-"%s"
-msgstr ""
-"No s'ha pogut establir una connexió amb al servidor:\n"
-"%s"
-
-#, fuzzy
-msgid "Unable to establish SSL connection"
-msgstr "No s'ha pogut inicialitzar la connexió"
-
-msgid "Unable to create socket"
-msgstr "No s'ha pogut crear el sòcol"
-
-msgid "Write error"
-msgstr "Error d'escriptura"
-
 msgid "Full Name"
 msgstr "Nom"
 
@@ -3864,10 +3739,6 @@
 msgid "Operating System"
 msgstr "Sistema operatiu"
 
-#, fuzzy
-msgid "Local Time"
-msgstr "Fitxer local:"
-
 msgid "Last Activity"
 msgstr "Darrera activitat"
 
@@ -4211,6 +4082,9 @@
 msgid "You require encryption, but it is not available on this server."
 msgstr "Requeriu xifratge, però no està disponible en aquest servidor."
 
+msgid "Write error"
+msgstr "Error d'escriptura"
+
 msgid "Ping timeout"
 msgstr "Temps d'espera del ping"
 
@@ -4219,9 +4093,14 @@
 
 #, c-format
 msgid ""
-"Could not find alternative XMPP connection methods after failing to connect "
-"directly.\n"
-msgstr ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"No s'ha pogut establir una connexió amb al servidor:\n"
+"%s"
+
+msgid "Unable to create socket"
+msgstr "No s'ha pogut crear el sòcol"
 
 msgid "Invalid XMPP ID"
 msgstr "ID de l'XMPP invàlid"
@@ -4229,10 +4108,6 @@
 msgid "Invalid XMPP ID. Domain must be set."
 msgstr "L'ID de l'XMPP no és vàlid. Cal especificar un domini."
 
-#, fuzzy
-msgid "Malformed BOSH Connect Server"
-msgstr "No s'ha pogut connectar al servidor."
-
 #, c-format
 msgid "Registration of %s@%s successful"
 msgstr "S'ha registrat %s a %s amb èxit"
@@ -4323,13 +4198,6 @@
 msgid "Not Authorized"
 msgstr "No autoritzat"
 
-msgid "Mood"
-msgstr "Estat d'ànim"
-
-# FIXME?
-msgid "Now Listening"
-msgstr "Ara escoltant"
-
 msgid "Both"
 msgstr "Ambdós"
 
@@ -4351,6 +4219,13 @@
 msgid "Subscription"
 msgstr "Subscripció"
 
+msgid "Mood"
+msgstr "Estat d'ànim"
+
+# FIXME?
+msgid "Now Listening"
+msgstr "Ara escoltant"
+
 msgid "Mood Text"
 msgstr "Text sobre l'estat d'ànim"
 
@@ -4600,12 +4475,13 @@
 msgstr ""
 "No s'ha pogut botzinar possiblement perquè l'usuari %s està desconnectat."
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Unable to buzz, because %s does not support it or does not wish to receive "
 "buzzes now."
 msgstr ""
-"No s'ha pogut botzinar perquè no és pot, o bé l'usuari %s no ho permet."
+"No s'ha pogut botzinar l'usuari %s perquè no ho implementa, o bé ara mateix "
+"no ho permet."
 
 #, c-format
 msgid "Buzzing %s..."
@@ -4620,38 +4496,6 @@
 msgid "%s has buzzed you!"
 msgstr "%s us ha botzinat!"
 
-#, fuzzy, c-format
-msgid "Unable to initiate media with %s: invalid JID"
-msgstr "No s'ha pogut enviar el fitxer a %s, el JID no és vàlid"
-
-#, fuzzy, c-format
-msgid "Unable to initiate media with %s: user is not online"
-msgstr "No s'ha pogut enviar el fitxer a %s, l'usuari no està connectat"
-
-# FIXME: uh?
-#, fuzzy, c-format
-msgid "Unable to initiate media with %s: not subscribed to user presence"
-msgstr ""
-"No s'ha pogut enviar el fitxer a %s, no esteu subscrit a la presència de "
-"l'usuari"
-
-#, fuzzy
-msgid "Media Initiation Failed"
-msgstr "Ha fallat el registre"
-
-#, fuzzy, c-format
-msgid ""
-"Please select the resource of %s with which you would like to start a media "
-"session."
-msgstr "Escolliu a quin recurs de %s voleu enviar un fitxer"
-
-msgid "Select a Resource"
-msgstr "Seleccioneu un recurs"
-
-#, fuzzy
-msgid "Initiate Media"
-msgstr "Inicia un _xat"
-
 msgid "config:  Configure a chat room."
 msgstr "config:  configura la sala de xat."
 
@@ -4846,6 +4690,9 @@
 msgid "Please select the resource of %s to which you would like to send a file"
 msgstr "Escolliu a quin recurs de %s voleu enviar un fitxer"
 
+msgid "Select a Resource"
+msgstr "Seleccioneu un recurs"
+
 msgid "Edit User Mood"
 msgstr "Edita l'estat d'ànim"
 
@@ -5977,7 +5824,7 @@
 
 #, c-format
 msgid "%s has whacked you!"
-msgstr "%s us ha bufetejat [%s]"
+msgstr "%s us ha bufetejat!"
 
 #, c-format
 msgid "Whacking %s..."
@@ -6063,17 +5910,16 @@
 #. We're not entirely sure what the MySpace people mean by
 #. * this... but we think it's the equivalent of "prank."  Or, for
 #. * someone to perform a mischievous trick or practical joke.
-#, fuzzy
 msgid "Punk"
-msgstr "Enredar"
-
-#, fuzzy, c-format
+msgstr "Pren el pèl"
+
+#, c-format
 msgid "%s has punk'd you!"
-msgstr "%s us ha enredat!"
-
-#, fuzzy, c-format
+msgstr "%s us ha près el pèl!"
+
+#, c-format
 msgid "Punking %s..."
-msgstr "S'està enredant %s..."
+msgstr "S'està prenent el pèl a %s..."
 
 #. Raspberry is a slang term for the vibrating sound made
 #. * when you stick your tongue out of your mouth with your
@@ -6082,17 +5928,16 @@
 #. * gesture, so it does not carry a harsh negative
 #. * connotation.  It is generally used in a playful tone
 #. * with friends.
-#, fuzzy
 msgid "Raspberry"
 msgstr "Llengoteja"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s has raspberried you!"
-msgstr "%s s'ha connectat."
-
-#, fuzzy, c-format
+msgstr "%s us ha fet una llengota!"
+
+#, c-format
 msgid "Raspberrying %s..."
-msgstr "Morrejant"
+msgstr "S'està fent una llengota a %s..."
 
 msgid "Required parameters not passed in"
 msgstr "No s'han passat tots els paràmetres requerits"
@@ -7820,9 +7665,6 @@
 msgid "<p><b>Scrupulous Testers</b>:<br>\n"
 msgstr "<p><b>Comprovadors del codi</b>:<br>\n"
 
-msgid "and more, please let me know... thank you!))"
-msgstr ""
-
 # FIXME: ush... traducció lliure... 
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr "<p><i>I tothom que ho ha fet possible...<i><br>\n"
@@ -7962,6 +7804,7 @@
 "No s'ha reconegut el codi de resposta en entrar (0x%02X):\n"
 "%s"
 
+#. we didn't successfully connect. tdt->toc_fd is valid here
 msgid "Unable to connect."
 msgstr "No s'ha pogut connectar."
 
@@ -9563,13 +9406,202 @@
 msgstr "Domini Auth"
 
 #, c-format
+msgid "Looking up %s"
+msgstr "S'està cercant %s"
+
+#, c-format
+msgid "Connect to %s failed"
+msgstr "Ha fallat la connexió a %s"
+
+#, c-format
+msgid "Signon: %s"
+msgstr "Entrada: %s"
+
+#, c-format
+msgid "Unable to write file %s."
+msgstr "No s'ha pogut escriure el fitxer %s."
+
+#, c-format
+msgid "Unable to read file %s."
+msgstr "No s'ha pogut llegir el fitxer %s."
+
+#, c-format
+msgid "Message too long, last %s bytes truncated."
+msgstr "El missatge és massa llarg, s'han retallat els darrers %s octets."
+
+#, c-format
+msgid "%s not currently logged in."
+msgstr "%s no està connectat."
+
+#, c-format
+msgid "Warning of %s not allowed."
+msgstr "Avís de %s no permès."
+
+#, c-format
+msgid "A message has been dropped, you are exceeding the server speed limit."
+msgstr ""
+"S'ha ignorat un missatge. Esteu excedint el límit de velocitat del servidor."
+
+#, c-format
+msgid "Chat in %s is not available."
+msgstr "El xat a %s no està disponible."
+
+#, c-format
+msgid "You are sending messages too fast to %s."
+msgstr "Esteu enviant missatges massa de pressa a %s."
+
+#, c-format
+msgid "You missed an IM from %s because it was too big."
+msgstr "Us heu perdut un missatge instantani de %s perquè era massa gran."
+
+#, c-format
+msgid "You missed an IM from %s because it was sent too fast."
+msgstr ""
+"Heu perdut un missatge instantani de %s perquè s'ha enviat massa de pressa."
+
+#, c-format
+msgid "Failure."
+msgstr "Fallada."
+
+#, c-format
+msgid "Too many matches."
+msgstr "Massa coincidències."
+
+#, c-format
+msgid "Need more qualifiers."
+msgstr "Es necessiten més qualificadors."
+
+#, c-format
+msgid "Dir service temporarily unavailable."
+msgstr "Servei de directori no disponible temporalment."
+
+#, c-format
+msgid "Email lookup restricted."
+msgstr "Recerca per adreça de correu electrònic restringida."
+
+#, c-format
+msgid "Keyword ignored."
+msgstr "S'ha ignorat la paraula clau."
+
+#, c-format
+msgid "No keywords."
+msgstr "No hi ha paraules clau."
+
+#, c-format
+msgid "User has no directory information."
+msgstr "L'usuari no té informació al directori."
+
+# FIXME
+#, c-format
+msgid "Country not supported."
+msgstr "Aquest país no està disponible."
+
+#, c-format
+msgid "Failure unknown: %s."
+msgstr "Fallada desconeguda: %s."
+
+#, c-format
+msgid "Incorrect username or password."
+msgstr "El nom d'usuari o la contrasenya no són correctes."
+
+#, c-format
+msgid "The service is temporarily unavailable."
+msgstr "El servei està temporalment no disponible."
+
+#, c-format
+msgid "Your warning level is currently too high to log in."
+msgstr "El vostre nivell d'avisos és massa alt per a connectar-se."
+
+#, c-format
+msgid ""
+"You have been connecting and disconnecting too frequently.  Wait ten minutes "
+"and try again.  If you continue to try, you will need to wait even longer."
+msgstr ""
+"Us heu estat connectant i desconnectant amb massa freqüència. Espereu deu "
+"minuts i torneu-ho a provar. Si continueu intentant-ho, haureu d'esperar "
+"encara més."
+
+#, c-format
+msgid "An unknown signon error has occurred: %s."
+msgstr "Hi ha hagut un error de connexió desconegut: %s."
+
+#, c-format
+msgid "An unknown error, %d, has occurred.  Info: %s"
+msgstr "S'ha produït un error desconegut, %d. Informació: %s"
+
+msgid "Invalid Groupname"
+msgstr "El nom del grup no és vàlid"
+
+msgid "Connection Closed"
+msgstr "Connexió tancada"
+
+msgid "Waiting for reply..."
+msgstr "S'està esperant una resposta..."
+
+msgid "TOC has come back from its pause. You may now send messages again."
+msgstr "TOC ha tornat de la pausa. Ja podeu enviar missatges de nou."
+
+msgid "Password Change Successful"
+msgstr "S'ha canviat la contrasenya amb èxit"
+
+msgid "_Group:"
+msgstr "_Grup:"
+
+msgid "Get Dir Info"
+msgstr "Aconsegueix informació del directori"
+
+msgid "Set Dir Info"
+msgstr "Estableix informació del directori"
+
+#, c-format
+msgid "Could not open %s for writing!"
+msgstr "No s'ha pogut obrir %s per a escriure-hi."
+
+msgid "File transfer failed; other side probably canceled."
+msgstr ""
+"Ha fallat la transferència de fitxers. Probablement s'ha cancel·lat a "
+"l'altra banda."
+
+msgid "Could not connect for transfer."
+msgstr "No s'ha pogut connectar per realitzar la transferència."
+
+msgid "Could not write file header.  The file will not be transferred."
+msgstr "No s'ha pogut escriure la capçalera del fitxer. No s'enviarà."
+
+msgid "Save As..."
+msgstr "Anomena i desa..."
+
+#, c-format
+msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+msgstr[0] "%s demana a %s que accepti %d fitxer: %s (%.2f %s)%s%s"
+msgstr[1] "%s demana a %s que accepti %d fitxers: %s (%.2f %s)%s%s"
+
+#, c-format
+msgid "%s requests you to send them a file"
+msgstr "%s us demana que li envieu un fitxer"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "TOC Protocol Plugin"
+msgstr "Connector per al protocol TOC"
+
+#, c-format
 msgid "%s has sent you a webcam invite, which is not yet supported."
 msgstr ""
 "%s us ha enviat una invitació a la seva càmera web, però això encara no està "
 "implementat."
 
 msgid "Your SMS was not delivered"
-msgstr ""
+msgstr "No s'ha enviat l'SMS"
 
 msgid "Your Yahoo! message did not get sent."
 msgstr "No s'ha pogut enviar el vostre missatge de Yahoo!"
@@ -10300,13 +10332,13 @@
 msgid "Unable to connect to %s: %s"
 msgstr "No s'ha pogut connectar a %s: %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support was "
 "found."
 msgstr ""
-"El servidor requereix TLS/SSL per entrar. No s'ha trobat suport per a TLS/"
-"SSL."
+"No s'ha pogut connectar a %s: el servidor requereix TLS/SSL, però no s'ha "
+"trobat cap implementació de TLS/SSL."
 
 #, c-format
 msgid " - %s"
@@ -10395,8 +10427,10 @@
 msgid "Use this buddy _icon for this account:"
 msgstr "Utilitza aquesta _icona d'amic per a aquest compte:"
 
-msgid "_Advanced"
-msgstr "_Avançat"
+#. Build the protocol options frame.
+#, c-format
+msgid "%s Options"
+msgstr "Opcions de %s"
 
 msgid "Use GNOME Proxy Settings"
 msgstr "Empra la configuració del servidor intermediari del Gnome"
@@ -10431,6 +10465,9 @@
 msgid "you can see the butterflies mating"
 msgstr "podreu veure les papallones aparellant-se"
 
+msgid "Proxy Options"
+msgstr "Opcions del servidor intermediari"
+
 msgid "Proxy _type:"
 msgstr "_Tipus de servidor intermediari"
 
@@ -10458,9 +10495,8 @@
 msgid "Create _this new account on the server"
 msgstr "Crea _aquest compte nou al servidor"
 
-#, fuzzy
-msgid "_Proxy"
-msgstr "Servidor intermediari"
+msgid "_Advanced"
+msgstr "_Avançat"
 
 msgid "Enabled"
 msgstr "Habilitat"
@@ -10539,17 +10575,6 @@
 msgid "I_M"
 msgstr "_MI"
 
-#, fuzzy
-msgid "_Audio Call"
-msgstr "Finalitza la trucada"
-
-msgid "Audio/_Video Call"
-msgstr ""
-
-#, fuzzy
-msgid "_Video Call"
-msgstr "Xat de vídeo"
-
 msgid "_Send File..."
 msgstr "_Envia un fitxer..."
 
@@ -10832,7 +10857,7 @@
 msgstr "Rehabilita"
 
 msgid "SSL FAQs"
-msgstr ""
+msgstr "PMF sobre SSL"
 
 msgid "Welcome back!"
 msgstr "Ben tornat!"
@@ -10922,9 +10947,6 @@
 msgid "A_lias:"
 msgstr "Àl_ies:"
 
-msgid "_Group:"
-msgstr "_Grup:"
-
 msgid "Auto_join when account becomes online."
 msgstr "_Entra automàticament quant el compte estigui connectat."
 
@@ -10975,6 +10997,14 @@
 msgid "Invite Buddy Into Chat Room"
 msgstr "Convida l'amic a una sala de xat"
 
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Introduïu el nom de l'usuari que vulgueu convidar, així com un missatge "
+"d'invitació opcional."
+
 msgid "_Buddy:"
 msgstr "_Amic:"
 
@@ -11050,22 +11080,6 @@
 msgid "/Conversation/Clea_r Scrollback"
 msgstr "/Conversa/_Neteja la finestra"
 
-#, fuzzy
-msgid "/Conversation/M_edia"
-msgstr "/Conversa/_Més"
-
-#, fuzzy
-msgid "/Conversation/Media/_Audio Call"
-msgstr "/Conversa/_Més"
-
-#, fuzzy
-msgid "/Conversation/Media/_Video Call"
-msgstr "/Conversa/_Més"
-
-#, fuzzy
-msgid "/Conversation/Media/Audio\\/Video _Call"
-msgstr "/Conversa/Visualitza el _registre"
-
 msgid "/Conversation/Se_nd File..."
 msgstr "/Conversa/Envia un _fitxer..."
 
@@ -11138,18 +11152,6 @@
 msgid "/Conversation/View Log"
 msgstr "/Conversa/Visualitza el registre"
 
-#, fuzzy
-msgid "/Conversation/Media/Audio Call"
-msgstr "/Conversa/Més"
-
-#, fuzzy
-msgid "/Conversation/Media/Video Call"
-msgstr "/Conversa/Visualitza el registre"
-
-#, fuzzy
-msgid "/Conversation/Media/Audio\\/Video Call"
-msgstr "/Conversa/Més"
-
 msgid "/Conversation/Send File..."
 msgstr "/Conversa/Envia un fitxer..."
 
@@ -11336,9 +11338,6 @@
 msgid "Ka-Hing Cheung"
 msgstr "Ka-Hing Cheung"
 
-msgid "voice and video"
-msgstr ""
-
 msgid "support"
 msgstr "suport"
 
@@ -11481,9 +11480,8 @@
 msgid "Ubuntu Georgian Translators"
 msgstr "Traductors al georgià de l'Ubuntu"
 
-#, fuzzy
 msgid "Khmer"
-msgstr "Altres"
+msgstr "Khmer"
 
 msgid "Kannada"
 msgstr "Kannada"
@@ -12324,24 +12322,6 @@
 "Ara se sortirà atès que ja hi ha un altre client del libpurple executant-"
 "se.\n"
 
-msgid "/_Media"
-msgstr ""
-
-msgid "/Media/_Hangup"
-msgstr ""
-
-#, fuzzy
-msgid "Calling..."
-msgstr "S'està calculant..."
-
-#, c-format
-msgid "%s wishes to start an audio/video session with you."
-msgstr ""
-
-#, c-format
-msgid "%s wishes to start a video session with you."
-msgstr ""
-
 #, c-format
 msgid "%s has %d new message."
 msgid_plural "%s has %d new messages."
@@ -12376,20 +12356,19 @@
 msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
 msgstr "<span weight=\"bold\" size=\"larger\">Teniu correu electrònic.</span>"
 
-#, fuzzy
 msgid "New Pounces"
-msgstr "Avís nou per a l'amic"
-
+msgstr "Avisos nous"
+
+# FIXME: Cancel·la?
 msgid "Dismiss"
-msgstr ""
-
-#, fuzzy
+msgstr "Rebutja"
+
+# FIXME: pounced -> envestir?
 msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Teniu correu electrònic.</span>"
-
-#, fuzzy
+msgstr "<span weight=\"bold\" size=\"larger\">Us han envestit!</span>"
+
 msgid "No message"
-msgstr "(1 missatge)"
+msgstr "Cap missatge"
 
 msgid "The following plugins will be unloaded."
 msgstr "Es descarregaran els connectors següents."
@@ -12517,47 +12496,47 @@
 msgid "Pounce Target"
 msgstr "Objectiu de l'avís"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Started typing"
-msgstr "Comenci a escriure"
-
-#, fuzzy, c-format
+msgstr "Hagi començat a escriure"
+
+#, c-format
 msgid "Paused while typing"
 msgstr "S'aturi mentre tecleja"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Signed on"
 msgstr "Es connecti"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Returned from being idle"
-msgstr "Tor_na a estar actiu"
-
-#, fuzzy, c-format
+msgstr "Torna a estar actiu"
+
+#, c-format
 msgid "Returned from being away"
 msgstr "Torni a estar present"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Stopped typing"
 msgstr "Pari d'escriure"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Signed off"
 msgstr "Es desconnecti"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Became idle"
 msgstr "Passi a inactiu"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Went away"
 msgstr "En estar absent"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Sent a message"
 msgstr "Envia un missatge"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unknown.... Please report this!"
 msgstr "Esdeveniment d'avís desconegut, informeu-nos-en."
 
@@ -12700,6 +12679,9 @@
 msgid "Cannot start browser configuration program."
 msgstr "No s'ha pogut iniciar el programa de configuració del navegador."
 
+msgid "ST_UN server:"
+msgstr "Servidor ST_UN:"
+
 msgid "<span style=\"italic\">Example: stunserver.org</span>"
 msgstr "<span style=\"italic\">Exemple: stunserver.org</span>"
 
@@ -12724,10 +12706,6 @@
 msgid "_End port:"
 msgstr "Port _final:"
 
-#. TURN server
-msgid "Relay Server (TURN)"
-msgstr ""
-
 msgid "Proxy Server &amp; Browser"
 msgstr "Servidor intermediari i navegador"
 
@@ -14289,173 +14267,6 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
 
-#~ msgid "Invite message"
-#~ msgstr "Missatge d'invitació"
-
-#~ msgid ""
-#~ "Please enter the name of the user you wish to invite,\n"
-#~ "along with an optional invite message."
-#~ msgstr ""
-#~ "Introduïu el nom de l'usuari que vulgueu convidar,\n"
-#~ "així com un missatge d'invitació opcional."
-
-#~ msgid "Looking up %s"
-#~ msgstr "S'està cercant %s"
-
-#~ msgid "Connect to %s failed"
-#~ msgstr "Ha fallat la connexió a %s"
-
-#~ msgid "Signon: %s"
-#~ msgstr "Entrada: %s"
-
-#~ msgid "Unable to write file %s."
-#~ msgstr "No s'ha pogut escriure el fitxer %s."
-
-#~ msgid "Unable to read file %s."
-#~ msgstr "No s'ha pogut llegir el fitxer %s."
-
-#~ msgid "Message too long, last %s bytes truncated."
-#~ msgstr "El missatge és massa llarg, s'han retallat els darrers %s octets."
-
-#~ msgid "%s not currently logged in."
-#~ msgstr "%s no està connectat."
-
-#~ msgid "Warning of %s not allowed."
-#~ msgstr "Avís de %s no permès."
-
-#~ msgid ""
-#~ "A message has been dropped, you are exceeding the server speed limit."
-#~ msgstr ""
-#~ "S'ha ignorat un missatge. Esteu excedint el límit de velocitat del "
-#~ "servidor."
-
-#~ msgid "Chat in %s is not available."
-#~ msgstr "El xat a %s no està disponible."
-
-#~ msgid "You are sending messages too fast to %s."
-#~ msgstr "Esteu enviant missatges massa de pressa a %s."
-
-#~ msgid "You missed an IM from %s because it was too big."
-#~ msgstr "Us heu perdut un missatge instantani de %s perquè era massa gran."
-
-#~ msgid "You missed an IM from %s because it was sent too fast."
-#~ msgstr ""
-#~ "Heu perdut un missatge instantani de %s perquè s'ha enviat massa de "
-#~ "pressa."
-
-#~ msgid "Failure."
-#~ msgstr "Fallada."
-
-#~ msgid "Too many matches."
-#~ msgstr "Massa coincidències."
-
-#~ msgid "Need more qualifiers."
-#~ msgstr "Es necessiten més qualificadors."
-
-#~ msgid "Dir service temporarily unavailable."
-#~ msgstr "Servei de directori no disponible temporalment."
-
-#~ msgid "Email lookup restricted."
-#~ msgstr "Recerca per adreça de correu electrònic restringida."
-
-#~ msgid "Keyword ignored."
-#~ msgstr "S'ha ignorat la paraula clau."
-
-#~ msgid "No keywords."
-#~ msgstr "No hi ha paraules clau."
-
-#~ msgid "User has no directory information."
-#~ msgstr "L'usuari no té informació al directori."
-
-# FIXME
-#~ msgid "Country not supported."
-#~ msgstr "Aquest país no està disponible."
-
-#~ msgid "Failure unknown: %s."
-#~ msgstr "Fallada desconeguda: %s."
-
-#~ msgid "Incorrect username or password."
-#~ msgstr "El nom d'usuari o la contrasenya no són correctes."
-
-#~ msgid "The service is temporarily unavailable."
-#~ msgstr "El servei està temporalment no disponible."
-
-#~ msgid "Your warning level is currently too high to log in."
-#~ msgstr "El vostre nivell d'avisos és massa alt per a connectar-se."
-
-#~ msgid ""
-#~ "You have been connecting and disconnecting too frequently.  Wait ten "
-#~ "minutes and try again.  If you continue to try, you will need to wait "
-#~ "even longer."
-#~ msgstr ""
-#~ "Us heu estat connectant i desconnectant amb massa freqüència. Espereu deu "
-#~ "minuts i torneu-ho a provar. Si continueu intentant-ho, haureu d'esperar "
-#~ "encara més."
-
-#~ msgid "An unknown signon error has occurred: %s."
-#~ msgstr "Hi ha hagut un error de connexió desconegut: %s."
-
-#~ msgid "An unknown error, %d, has occurred.  Info: %s"
-#~ msgstr "S'ha produït un error desconegut, %d. Informació: %s"
-
-#~ msgid "Invalid Groupname"
-#~ msgstr "El nom del grup no és vàlid"
-
-#~ msgid "Connection Closed"
-#~ msgstr "Connexió tancada"
-
-#~ msgid "Waiting for reply..."
-#~ msgstr "S'està esperant una resposta..."
-
-#~ msgid "TOC has come back from its pause. You may now send messages again."
-#~ msgstr "TOC ha tornat de la pausa. Ja podeu enviar missatges de nou."
-
-#~ msgid "Password Change Successful"
-#~ msgstr "S'ha canviat la contrasenya amb èxit"
-
-#~ msgid "Get Dir Info"
-#~ msgstr "Aconsegueix informació del directori"
-
-#~ msgid "Set Dir Info"
-#~ msgstr "Estableix informació del directori"
-
-#~ msgid "Could not open %s for writing!"
-#~ msgstr "No s'ha pogut obrir %s per a escriure-hi."
-
-#~ msgid "File transfer failed; other side probably canceled."
-#~ msgstr ""
-#~ "Ha fallat la transferència de fitxers. Probablement s'ha cancel·lat a "
-#~ "l'altra banda."
-
-#~ msgid "Could not connect for transfer."
-#~ msgstr "No s'ha pogut connectar per realitzar la transferència."
-
-#~ msgid "Could not write file header.  The file will not be transferred."
-#~ msgstr "No s'ha pogut escriure la capçalera del fitxer. No s'enviarà."
-
-#~ msgid "Save As..."
-#~ msgstr "Anomena i desa..."
-
-#~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
-#~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
-#~ msgstr[0] "%s demana a %s que accepti %d fitxer: %s (%.2f %s)%s%s"
-#~ msgstr[1] "%s demana a %s que accepti %d fitxers: %s (%.2f %s)%s%s"
-
-#~ msgid "%s requests you to send them a file"
-#~ msgstr "%s us demana que li envieu un fitxer"
-
-#~ msgid "TOC Protocol Plugin"
-#~ msgstr "Connector per al protocol TOC"
-
-#~ msgid "%s Options"
-#~ msgstr "Opcions de %s"
-
-#~ msgid "Proxy Options"
-#~ msgstr "Opcions del servidor intermediari"
-
-#~ msgid "ST_UN server:"
-#~ msgstr "Servidor ST_UN:"
-
 #~ msgid "By log size"
 #~ msgstr "Per la mida del registre"
 
@@ -15175,6 +14986,9 @@
 #~ "\n"
 #~ "Inactiu: %s"
 
+#~ msgid "Nickname: %s\n"
+#~ msgstr "Sobrenom: %s\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "<b>Nickname:</b> %s"
@@ -15646,6 +15460,9 @@
 #~ msgid "Call ended."
 #~ msgstr "Ha finalitzat la trucada."
 
+#~ msgid "End Call"
+#~ msgstr "Finalitza la trucada"
+
 #~ msgid "Receiving call from %s"
 #~ msgstr "S'està rebent una trucada de %s"